Автоматический обзвон клиентов с ИИ требует управления всем списком контактов, а не только сценарием разговора. Разберите состояния каждого контакта и звонка, правила параллельной очереди, повтор при недозвоне, обработку ответного вызова, остановку после результата и безопасный перезапуск кампании после сбоя.
Автоматический обзвон клиентов с ИИ становится управляемым, когда система хранит состояние каждого контакта и каждой попытки отдельно. До запуска определите, кого можно включить в список по правилам вашей компании, какой результат закрывает задачу, когда допустим повтор и какие события останавливают дальнейшие вызовы. Сценарий разговора описывает отдельный звонок; этот материал — про очередь контактов во времени.
Подготовьте список и идентификатор кампании
Сохраните отдельную запись кампании: цель, период запуска, сценарий, правила попыток, ответственного и источник списка. Для каждого контакта храните устойчивый ID, телефон в нормализованном виде, статус, время последней попытки, запланированный следующий шаг и итог разговора. Если один номер есть у нескольких контактов, предусмотрьте проверку дублей до постановки в очередь.
До старта проверьте, что в список попали только контакты, соответствующие выбранной задаче и внутренним правилам компании. Исключите записи без нужного номера, завершённые обращения и тех, кому уже не требуется звонок. Не копируйте базу в несколько независимых очередей без единого статуса: одна копия может не знать, что вопрос уже решён в другой.
Сначала проверьте систему на небольшом тестовом списке. Сверьте формат номера, порядок приветствия, реакцию на просьбу остановить разговор, распознавание результата и запись события в CRM. Объём параллельных звонков настройте по ограничениям используемой телефонии и системы; универсального безопасного значения для разных подключений нет.
Разделите статусы контакта и попытки
Храните состояние контакта отдельно от результата конкретного звонка. Контакт может быть готов к вызову, стоять в очереди, иметь выполняющуюся попытку, ожидать подтверждения результата, иметь запланированный повтор, ожидать сотрудника, быть завершённым или остановленным. У каждой попытки храните свой исход: разговор завершён, ответа не было, линия занята, вызов завершился подтверждённой ошибкой или итог пока неизвестен.
Не приравнивайте команду на вызов к состоявшемуся разговору. В документации Azure Communication Services исходящий вызов создаётся запросом, а событие подключения приходит отдельно; у конкретного поставщика телефонии события и названия будут отличаться. Это иллюстрация событийной архитектуры, а не готовая настройка для любой АТС. Посмотрите руководство Microsoft по исходящему вызову Call Automation.
Записывайте ID кампании, контакта, попытки и вызова, чтобы связать действие с результатом. Повторно пришедшее уведомление не должно создавать новую попытку или возвращать закрытый контакт в активную очередь. Проверьте это правило на выбранной телефонии и CRM.
Задайте правила повтора и остановки
До запуска задайте правила для каждого списка контактов: допустимые дни и местное время вызова, исключённые даты, минимальный интервал между попытками и предел попыток. Уточните эти значения по правилам компании и применимым к кампании требованиям; универсального расписания для всех баз нет.
Для каждого контакта храните его часовой пояс. Не подменяйте его часовым поясом сервера или кампании. Если часовой пояс неизвестен, не выпускайте попытку, пока его не уточнят или пока ответственный не задаст подтверждённое правило для этого контакта. Время следующей попытки рассчитывайте по местному времени контакта. Если интервал истекает за пределами разрешённого окна или приходится на исключённую дату, перенесите попытку на ближайшее следующее разрешённое окно.
Непосредственно перед каждым вызовом повторно проверьте кампанию и контакт: кампания активна, срок попытки наступил, местное время контакта находится внутри допустимого окна, дата не исключена, контакт не завершён и не остановлен, нет активного вызова, лимит попыток не исчерпан и доступен заданный предел параллельных звонков. Если проверка окна не пройдена, вызов не выпускайте: сохраните новое время следующей попытки. Эти проверки выполняйте и для первого звонка, и для каждого повтора.
Таблица задаёт переходы контакта после события. Типовой подтверждённый результат — например, вопрос решён или заказ оформлен в пределах сценария — закрывается автоматически. Передавайте контекст сотруднику, только если клиент попросил человека, случай требует решения или выходит за утверждённые правила. Сам факт состоявшегося разговора не означает передачу.
| Текущее состояние | Событие | Действие | Новое состояние | Повтор исходящего вызова |
|---|---|---|---|---|
| Готов или повтор запланирован | Наступил срок; проверка окна и остальных условий пройдена | Создать ID попытки, зафиксировать вызов и выдать его один раз | Попытка выполняется | Нет, пока текущая попытка не закрыта |
| Попытка выполняется | Подтверждён типовой итог: вопрос решён или заказ оформлен | Сохранить итог и отменить будущие попытки | Завершён | Нет |
| Попытка выполняется | Клиент просит сотрудника, сценарий не позволяет решить запрос или требуется согласование исключения | Сохранить контекст, поставить задачу и приостановить исходящие вызовы | Ожидает сотрудника | Нет до решения задачи и разрешённого возобновления |
| Попытка выполняется или повтор запланирован | Клиент просит прекратить звонки | Записать отказ и отменить все запланированные попытки | Остановлен | Нет |
| Попытка выполняется | Подтверждены занято, недозвон или ошибка вызова | Если правила кампании разрешают и лимит не исчерпан, назначить следующий срок; иначе закрыть попытки по лимиту | Повтор запланирован или остановлен по лимиту | Только по правилам кампании и в разрешённом окне |
| Попытка выполняется | Нет итогового события, событие задержано или данные противоречат друг другу | Приостановить повтор и сверить ID вызова у поставщика и в CRM | Результат неизвестен | Нет до подтверждения исхода |
| Результат неизвестен | Поставщик подтвердил итог или то, что вызов не был начат | Применить переход для подтверждённого исхода; если вызов не был начат, вернуть контакт в очередь после проверки и устранения дубля; при неясном результате оставить на паузе | Состояние по подтверждённому исходу, готов или результат неизвестен | Только если вызов подтверждённо не начался либо неуспешный исход позволяет повтор по правилам |
| Повтор запланирован | Клиент сам позвонил, и звонок связан с контактом кампании | Отменить исходящий повтор и зарегистрировать входящий разговор | Входящий разговор | Исходящий вызов приостановлен до результата входящего разговора |
| Входящий разговор | Вопрос решён по типовому сценарию | Сохранить результат и закрыть контакт | Завершён | Нет |
| Входящий разговор | Клиент просит сотрудника или требуется решение вне сценария | Сохранить контекст и поставить задачу; исходящие попытки оставить на паузе | Ожидает сотрудника | Нет до решения задачи и разрешённого возобновления |
| Попытка выполнялась при сбое процесса | Кампания восстановлена | Остановить новые вызовы, сверить каждый активный ID попытки с телефонией и CRM; неизвестный итог не считать недозвоном | Подтверждённый исход или результат неизвестен | Нет до сверки; затем применить правила выше |
Ограничьте очередь и восстановление после сбоя
Очередь должна выпускать только попытки, срок которых наступил и которые прошли проверку часового пояса, окна вызова, статуса контакта и предела параллельных звонков. Перед выдачей сохраните состояние и ID попытки так, чтобы повторный запуск задания не создавал второй звонок.
После сбоя остановите новые вызовы и сохраните состояния уже начатых. Сверьте незавершённые попытки с поставщиком телефонии и CRM по ID вызова. Подтверждённый итог обработайте по таблице переходов; если итог пока неизвестен, оставьте контакт на паузе. Возвращайте в очередь только те записи, для которых повтор подтверждён правилами кампании и перенесён в допустимое местное окно. Не сбрасывайте исходный список в состояние «готов».
Документация Microsoft по обработке событий Call Automation отмечает, что последующие изменения состояния вызова приходят отдельными callback-событиями; обработчик связывает их с конкретным звонком. Это платформенный пример, но он показывает, почему результат попытки следует подтверждать событием и журналом, а не фактом запуска. Подробности приведены в руководстве Microsoft по обработке событий вызова.
Проверьте сценарии до старта
- Типовой подтверждённый результат закрывает контакт автоматически и отменяет повторы.
- Недозвон создаёт повтор только при разрешённом лимите и назначает его на допустимое местное окно.
- Перед каждой попыткой проверяются часовой пояс контакта, дата и окно вызова.
- Запрос сотрудника или исключение ставит задачу и приостанавливает исходящие попытки; типовой исход не уходит человеку без причины.
- Отказ клиента отменяет все будущие попытки.
- Ответный звонок связывается с кампанией и отменяет исходящий повтор на время обработки.
- Задержанное или повторное событие не создаёт лишний звонок; неизвестный итог не считается недозвоном.
- После сбоя завершённые контакты не возвращаются в очередь, а неизвестные попытки сверяются до повтора.
Ограничения и следующий шаг
Телефония может задержать событие, неверно классифицировать итог или потерять связь с CRM. Пока исход вызова неизвестен, не делайте предположений о результате и не отправляйте повтор автоматически. Подключение телефонии и поддерживаемые события нужно проверить в выбранном проекте: документация Microsoft предупреждает о текущих изменениях в Azure Communication Services, поэтому конкретные версии и API следует сверять перед реализацией.
Для сценария первого разговора и подготовки данных используйте отдельный материал об обзвоне заявок с ИИ; связь событий с карточкой клиента рассмотрена в статье об интеграции ИИ и CRM. На странице внедрения можно обсудить исходный список, правила очереди, исходы попытки и проверку перезапуска до запуска кампании.
Частые вопросы
Нужно ли повторять звонок, если система не получила ответ от телефонии?
Сначала проверьте состояние попытки у поставщика связи и в журнале событий. Отсутствие callback не подтверждает, что вызов не состоялся, поэтому автоматический повтор может создать дубликат.
Что делать с контактом после успешного разговора?
Сохраните итог и следующий шаг. Если вопрос решён, отмените будущие попытки; если требуется сотрудник, передайте контекст и приостановите контакт до обработки.
Как перезапустить кампанию после сбоя?
Сверьте активные попытки, результаты телефонии и последние записи CRM. Затем возобновляйте очередь по сохранённым статусам, не сбрасывая завершённые контакты в начало.
