Автообзвон «застрявших» онлайн-заявок голосовым роботом
Клиенты начинали онлайн-заявку и останавливались на одном из шагов — регистрация, доходы, данные авто, подписание. Прозвонить каждого вручную менеджеры не успевали, а отправка всех подряд роботу означала бы повторные звонки одному человеку и звонки тем, кто уже отказался.
Робот работает кампаниями — своя на каждый шаг заявки; у одного клиента бывает несколько карточек; повторный запуск cron не должен давать второй звонок, а звонить можно только в дневное окно.
- Cron каждые 15 минут выбирает сделки без движения 30+ минут по штатной истории стадий: смена стадии сбрасывает таймер
- Карта стадий воронки: каждый шаг заявки ведёт в свою кампанию робота, финальные, отказные и служебные стадии не отправляются; окно звонков 08:00–21:00
- «Один клиент — один звонок»: карточки сводятся по телефону, в обзвон уходит самая свежая, а негативный исход снимает с обзвона все карточки этого номера
- Идемпотентность в три слоя: flock от параллельных запусков, поля заказа на сделке и стабильный import_id на стороне робота
- Вебхук результата звонка находит сделку, пишет исход без затирания полей пустыми значениями и запускает бизнес-процесс; есть тестовый режим на отдельной кампании
- Логика отбора вынесена в чистые функции без ядра Bitrix и покрыта 66 smoke-проверками
Застрявшие заявки уходят роботу автоматически, без ручного прозвона, и клиент не получает двух звонков по разным карточкам. Каждый прогон пишет в лог причину пропуска по каждой карточке.