Колл-центр тратит до 40% времени операторов на ожидание соединения, а средний agent utilization составляет 60–70%. Предиктивный дайлер (англ. predictive dialer) решает эту проблему — при условии правильно настроенного алгоритма и ML-модели. Мы разрабатываем AI-системы предиктивного набора, которые повышают productive talk time до 90% и удерживают abandoned calls в пределах 3%. Окупаемость такой системы — 6–12 месяцев за счёт роста утилизации операторов. Получите консультацию по оптимизации обзвона: оценим потенциал роста и подготовим КП.
Алгоритм предиктивного набора
from dataclasses import dataclass
from typing import Callable
import asyncio
import numpy as np
@dataclass
class DialerMetrics:
active_calls: int
available_agents: int
avg_call_duration: float
avg_answer_rate: float
avg_ring_time: float
abandonment_rate: float = 0
class PredictiveDialer:
MAX_ABANDONMENT_RATE = 0.03
PACING_ADJUSTMENT_STEP = 0.05
def __init__(self):
self.pacing_factor = 1.2
self.metrics_window = []
def calculate_calls_to_initiate(self, metrics: DialerMetrics) -> int:
available = metrics.available_agents - metrics.active_calls
if available <= 0:
return 0
predicted = int(available * self.pacing_factor / metrics.avg_answer_rate)
if metrics.abandonment_rate > self.MAX_ABANDONMENT_RATE:
self.pacing_factor = max(1.0, self.pacing_factor - self.PACING_ADJUSTMENT_STEP)
elif metrics.abandonment_rate < self.MAX_ABANDONMENT_RATE * 0.5:
self.pacing_factor = min(3.0, self.pacing_factor + self.PACING_ADJUSTMENT_STEP)
return max(0, predicted - metrics.active_calls)
async def run_dialing_loop(self, contacts: list[dict], get_metrics: Callable[[], DialerMetrics], initiate_call: Callable[[dict], None]):
contact_index = 0
while contact_index < len(contacts):
metrics = await get_metrics()
calls_to_make = self.calculate_calls_to_initiate(metrics)
for _ in range(calls_to_make):
if contact_index >= len(contacts):
break
contact = contacts[contact_index]
if await self.should_call(contact):
await initiate_call(contact)
contact_index += 1
await asyncio.sleep(1)
ML-предикция answer rate
class AnswerRatePredictor:
FEATURES = [
"hour_of_day",
"day_of_week",
"previous_attempts",
"last_contact_days",
"phone_type",
"timezone_offset",
"segment",
]
def predict_answer_probability(self, contact: dict, now: datetime) -> float:
features = self.extract_features(contact, now)
return self.model.predict_proba([features])[0][1]
ML-модель обучается на исторических логах звонков: минимум 50 000 записей для стабильной работы. Используем градиентный бустинг (CatBoost/LightGBM) — он даёт прирост answer rate на 15–20% по сравнению с эвристиками. Feature engineering включает не только перечисленные признаки, но и скользящие метрики по оператору: средняя длительность разговора за последний час, частота перезвонов.
Как алгоритм избегает нарушения норм abandoned rate?
FCC ограничивает процент брошенных звонков — не более 3%. Наш алгоритм динамически регулирует pacing factor на основе текущего abandonment rate. Если показатель превышает 3%, коэффициент снижается, чтобы уменьшить количество одновременных звонков. Если показатель ниже 1.5%, коэффициент увеличивается, максимизируя продуктивность. Такая адаптация гарантирует соблюдение регуляторных требований без ручной настройки. В случае сбоя телеметрии алгоритм автоматически переходит в консервативный режим (pacing factor = 1.0).
Почему важна ML-предикция answer rate?
Answer rate — вероятность ответа контакта. Её точное предсказание позволяет набирать ровно столько номеров, чтобы занятые операторы не ждали. Мы используем градиентный бустинг (CatBoost/LightGBM) и исторические данные для обучения модели с признаками времени дня, дня недели, истории попыток и сегмента клиента. Это даёт прирост answer rate на 15–20% по сравнению с простыми правилами и снижает количество незавершённых вызовов. В продакшене модель переобучается еженедельно с автоматическим откатом на предыдущую версию при просадке метрик.
Сравнение типов дайлеров
| Характеристика | Preview Dialer | Progressive Dialer | Predictive Dialer (наш) |
|---|---|---|---|
| Ожидание оператора | + (оператор видит профиль) | – (автоматический набор после освобождения) | – (набор до освобождения) |
| Утилизация операторов | 40–60% | 70–80% | 85–95% |
| Abandoned calls | 0% | 1–2% | <3% |
| Сложность ML | нет | низкая | высокая |
Predictive dialer в среднем в 1,5 раза увеличивает productive talk time по сравнению с progressive dialer и в 2 раза — по сравнению с preview dialer — при соблюдении abandoned rate <3%.
Ключевые метрики для бизнеса
| Метрика | До внедрения | После внедрения |
|---|---|---|
| Agent utilization | 60–70% | 85–95% |
| Abandoned calls | 5–10% | <3% |
| Productive talk time | 30–40% | 60–70% |
| Среднее время ожидания оператора | 10–15 сек | 1–2 сек |
Процесс разработки
- Аналитика: сбор требований, аудит текущей инфраструктуры, замеры метрик (talk time, abandon rate, answer rate).
- Проектирование: архитектура системы, выбор стека (Python, asyncio, PostgreSQL + Redis, Kafka для очередей), проектирование ML-пайплайна.
- Разработка: реализация алгоритма предиктивного набора, обучение ML-модели, интеграция с CRM и IP-телефонией (Asterisk, FreeSWITCH).
- Тестирование: симуляция нагрузки, A/B-тестирование с контрольной группой.
- Деплой: контейнеризация (Docker, Kubernetes), мониторинг (Prometheus, Grafana), развёртывание на bare-metal или облаке.
- Поддержка: SLA 99.9%, доработка модели по результатам эксплуатации.
Что входит в работу
- Разработка алгоритма предиктивного набора и ML-модели.
- Интеграция с вашей телефонией и CRM.
- Документация (архитектура, API, инструкция по эксплуатации).
- Обучение операторов и администраторов.
- Гарантийная поддержка 6 месяцев.
Экономия от внедрения составляет 30–50% операционных затрат на обзвон за счёт роста утилизации операторов. FCC regulations on autodialers
Метрики компании
Мы — команда AI-инженеров с 5+ годами опыта в продакшене. Реализовали 20+ проектов для колл-центров в банковской и телеком-отраслях.
Сроки
Базовый predictive dialer с простыми правилами — от 6 до 8 недель. Полноценная система с ML-оптимизацией (предсказание answer rate, time-to-call) — 3–4 месяца. Стоимость рассчитывается индивидуально.
Закажите аудит текущих метрик — оценим потенциал роста productive talk time и подготовим коммерческое предложение. Свяжитесь с нами для консультации.







