Appearance
Mejor hora para llamar: ranking del feed de marcación por tasa de contacto
English: Best time to call.
Esta guía explica cómo la plataforma usa la tasa de contacto histórica por día de la semana y hora local para ordenar los leads que marca. Es solo configuración y comportamiento; no añade ninguna ruta de API.
Disponibilidad
| Capacidad | Disponibilidad |
|---|---|
| Ranking por mejor hora del feed de marcación, activo por defecto | Publicado en core v0.101.0 |
Interruptor best_time_ranking_enabled | Publicado en core v0.101.0 |
El ranking y su interruptor entraron a core en v0.101.0 (core#1979, ADR #238 en el ADR.md de core); un core anterior no los tiene.
Qué hace
Cuando el marcador elige los siguientes leads a llamar, ya tiene un lote de candidatos. El ranking reordena ese lote según qué tan bien contactó a la gente antes el día de la semana y la hora locales actuales del lead:
text
weight = clamp(cell_rate / level_rate, 0.5, 1.5)cell_ratees la tasa de contacto del día de la semana y la hora locales del lead.level_ratees la tasa de contacto promedio del mismo nivel.- El peso se limita a [0.5, 1.5], así que es un empujón al orden, no un veredicto: un buen número no queda enterrado por una hora débil, y una hora con unas cuantas respuestas afortunadas no puede subir a un lead por encima de todo el lote.
El historial sale de call_attempts, mediante la misma consulta del reporte GET /v1/stats/contact-windows, así que el reporte y el ranking no pueden contradecirse. Una celda solo habla cuando acumula al menos contact_window_min_attempts intentos (el mismo piso que ese reporte). Gana el primer nivel que habla: el historial de la propia campaña, luego todo el portafolio del tenant, luego sin datos. Sin datos el peso es 1.0 y el orden es exactamente el que el feed siempre tuvo.
Activo por defecto
El ranking está activo para todos los tenants sin necesidad de hacer nada. Un operador de la plataforma puede apagarlo por tenant con best_time_ranking_enabled; el feed vuelve entonces, byte por byte, a su orden anterior. La clave es independiente de contact_score_ranking_enabled, que sigue apagada por defecto.
Nunca saca una llamada de la ventana legal
El peso solo ordena los leads dentro del lote que ya estaba permitido. No cambia cuáles leads son candidatos ni las horas en que pueden marcarse. Cada lead sigue teniendo que pasar la puerta de cumplimiento previa a la marcación (horario de silencio [08:00, 21:00) en cada zona horaria candidata, la regla de 7 en 7 y la matriz por estado). Un lead en una hora débil baja dentro del lote; no sale de él, y una hora que la puerta rechazaría nunca se premia:
- Un lead que la puerta bloqueará ahora mismo (un número o una zona horaria que no se puede resolver, o cualquier zona candidata fuera de
[08:00, 21:00)) pesa el piso, 0.5. - Cuando un número tiene varias zonas candidatas, todas dentro de la ventana, el peso es 1.0: la regla no adivina cuál zona es la correcta.
No es un modelo opaco
El ranking que se entrega es la fórmula fija de arriba, calculada a partir de conteos que puedes leer en GET /v1/stats/contact-windows. No es un modelo aprendido. El motor está detrás de una interfaz que permitirá enchufar otro método por tenant más adelante, pero hoy no se entrega ninguno.
Costo y refresco
El historial es una agregación de 90 días de call_attempts por tenant, en caché y refrescada fuera del tick de marcación. Un fallo o una caché vacía produce un peso de 1.0, así que el ranking nunca puede retrasar ni bloquear una marcación.