Перейти к основному содержимому

Обработка неудачного звонка

При разработке сценария нужно учитывать, что бот не всегда может дозвониться до клиента. Например, клиент не взял трубку или номер был занят. Такие звонки попадают в статистику по телефонии, но не обрабатываются в сценарии.

подсказка
Для того чтобы обработать неудачный звонок и, например, запланировать новый, нужно предусмотреть в сценарии обработчик события onCallNotConnected.

Настройка chatbot.yaml

Прежде чем использовать обработчик события в сценарии, укажите флаг onCallNotConnected в файле chatbot.yaml:

additionalEvents:
- onCallNotConnected

Теперь при неудачном звонке в сценарий бота будет приходить событие onCallNotConnected.

Пример использования

Рассмотрим пример, в котором боту не удалось дозвониться до клиента.

state: OnCallNotConnected
event: onCallNotConnected
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, метод $dialer.getCallNotConnectedReason вернет причину неудавшегося звонка, а $dialer.setCallResult проставит его результат в отчетах по обзвону и сессиям. Например, Не дозвонился. Причина: NO_ANSWER.

подсказка
Для определения причины, по которой бот не дозвонился клиенту, используйте метод $dialer.getCallNotConnectedReason. Метод вернет одну из двух строк: BUSY, если абонент занят, или NO_ANSWER, если не ответил.

Затем с помощью метода $dialer.redial будет запланирован повторный звонок через час.