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

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

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

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

События для неудачных звонков

В 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:

  1. Метод $dialer.getCallNotConnectedReason вернет причину неудачного звонка: BUSY, NO_ANSWER или TECHNICAL_ERROR.
  2. Метод $dialer.setCallResult проставит причину в отчетах по обзвону и сессиям. Например: Не дозвонился. Причина: NO_ANSWER.
  3. Затем с помощью метода $dialer.redial будет запланирован повторный звонок через час.