Към съдържанието
N1
Интеграции · Bitrix24 · гласов робот

Автоматично обаждане от гласов робот по „заседнали“ онлайн заявки

Клиент: Финансова компания, NDA Категория: Интеграции Стек: PHP 8, Bitrix24 D7 и REST, история на етапите в CRM, REST API на гласовия робот, webhook, cron, flock Срок: внедрявано поетапно
Проблем

Клиентите започваха онлайн заявка и спираха на някоя от стъпките — регистрация, доходи, данни за автомобила, подписване. Мениджърите не смогваха да се обадят на всеки ръчно, а изпращането на всички подред към робота би означавало повторни обаждания до един и същ човек и обаждания до хора, които вече са се отказали.

Ограничения

Роботът работи с кампании — отделна за всяка стъпка на заявката; един клиент може да има няколко карти; повторното стартиране на cron не бива да води до второ обаждане, а обаждания са разрешени само в дневен прозорец.

Какво направих
  • Cron на всеки 15 минути избира сделки без движение от 30+ минути по стандартната история на етапите: смяната на етапа нулира таймера
  • Карта на етапите на фунията: всяка стъпка от заявката води към своя кампания на робота, крайните, отказните и служебните етапи не се изпращат; прозорец за обаждания 08:00–21:00
  • „Един клиент — едно обаждане“: картите се обединяват по телефон, за обаждане се изпраща най-новата, а негативен изход сваля от обаждане всички карти с този номер
  • Идемпотентност на три нива: flock срещу паралелни стартирания, полета на поръчката в сделката и стабилен import_id на страната на робота
  • Уебхукът за резултата от обаждането намира сделката, записва изхода, без да изтрива полета с празни стойности, и стартира бизнес процес; има тестов режим с отделна кампания
  • Логиката за подбор е изнесена в чисти функции без ядрото на Bitrix и е покрита с 66 smoke проверки
Архитектура
История на етапите в CRM → Cron: подбор и дедупликация → API на гласовия робот → Уебхук за резултата → Сделка и бизнес процес
Резултат

Заседналите заявки отиват към робота автоматично, без ръчно обаждане, и клиентът не получава две обаждания по различни карти. Всеки прогон записва в лога причината за пропускане на всяка карта.

Какво може да се преизползва
Подбор на „заседнали“ сделки по историята на етапите Идемпотентност на три нива при изпращане към външна услуга Дедупликация на обажданията по телефон