Обработка неудачного звонка
При разработке сценария нужно учитывать, что бот не всегда может дозвониться до клиента. Например, клиент может не ответить или может возникнуть техническая ошибка.
Такие звонки попадают в статистику по телефонии, но по умолчанию не обрабатываются в сценарии.
События для неудачных звонков
В JAICP предусмотрены два события, которые позволяют обрабатывать неудачные звонки в сценарии:
-
onCallNotConnected
— абонент не отвечает или номер занят. -
onCallNotConnectedTechnical
— не удалось позвонить из-за технической ошибки. Примеры:- Неправильный номер.
- Проблемы с соединением.
- Нет свободных линий в телефонном канале.
Подключение событий
По умолчанию события недоступны в сценарии.
Чтобы использовать события, перечислите их в файле chatbot.yaml
:
additionalEvents:
- onCallNotConnected
- onCallNotConnectedTechnical
Пример
Рассмотрим пример, в котором боту не удалось дозвониться до клиента.
state: NotConnected
# Стейт срабатывает по любому из двух событий
event: onCallNotConnected
event: onCallNotConnectedTechnical
script:
$dialer.setCallResult("Не дозвонился. Причина: " + $dialer.getCallNotConnectedReason());
var now = new Date();
$dialer.redial({
startDateTime: new Date(now.getTime() + 60 * 60000), // Повторный звонок через час
maxAttempts: 2, // 2 попытки дозвониться
retryIntervalInMinutes: 5 // Пауза между попытками 5 минут
});
Если сработает событие onCallNotConnected
или onCallNotConnectedTechnical
:
- Метод
$dialer.getCallNotConnectedReason
вернет причину неудачного звонка:BUSY
,NO_ANSWER
илиTECHNICAL_ERROR
. - Метод
$dialer.setCallResult
проставит причину в отчетах по обзвону и сессиям. Например: Не дозвонился. Причина: NO_ANSWER. - Затем с помощью метода
$dialer.redial
будет запланирован повторный звонок через час.