Обработка неудачного звонка
При разработке сценария нужно учитывать, что бот не всегда может дозвониться до клиента. Например, клиент может не ответить или может возникнуть техническая ошибка.
Такие звонки попадают в статистику по телефонии, но по умолчанию не обрабатываются в сценарии.
События для неудачных звонков
В 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будет запланирован повторный звонок через час.