Как запланировать повторный звонок
Во время разговора бота с клиентом может потребоваться запланировать новый звонок — например, если клиент просит перезвонить ему позже. Это можно предусмотреть в сценарии для обзвона:
- Добавьте интент, распознающий просьбу перезвонить.
- Добавьте интенты, чтобы уточнить у клиента время, в которое ему будет удобно принять звонок.
- Добавьте блок Код, чтобы бот перезвонил клиенту в указанное время.
Распознавание просьбы перезвонить
-
В сценарии вашего бота добавьте экран с блоком Интенты. ? > Вы можете добавить экран в любое место сценария и активировать опцию Сделать доступным из любой точки сценария в настройках блока, чтобы бот распознавал интент в любой момент диалога.
-
Нажмите Выбрать готовый интент и выберите Запрос на повторный звонок. При помощи этого интента бот будет распознавать просьбы клиентов перезвонить. ? > Перечень шаблонов фраз в интенте Запрос на повторный звонок
-
При желании дополните интент своими шаблонами или примерами фраз и сохраните блок.
У вас получится такой экран:
Уточнение времени повторного звонка
-
От интента Запрос на повторный звонок создайте новый экран и добавьте на него блок Синтез речи с текстом
Когда вам перезвонить?
. -
На тот же экран добавьте блок Интенты.
-
Добавьте шаблоны фраз, при помощи которых бот будет распознавать ответ клиента. Например, чтобы бот распознал просьбу перезвонить через час, добавьте фразу
* через час* *
. -
Нажмите напротив фразы. Иконка изменится на — это сделает фразу шаблоном.
-
Сохраните блок.
Настройка повторного звонка
Чтобы запланировать повторный звонок, бот должен выполнить определенный JavaScript-код.
-
От шаблона
* через час* *
создайте новый экран с блоком Код. -
Бот будет использовать метод
$dialer.redial
. Этот метод позволяет запланировать новую серию попыток дозвониться до абонента, а также переопределить политику звонков на данный номер из сценария.Чтобы бот перезвонил клиенту через час, вставьте в блок следующий код:
var now = new Date();
$dialer.redial({
startDateTime: new Date(now.getTime() + 60 * 60000), // Повторный звонок через час
finishDateTime: new Date(now.getTime() + 75 * 60000), // В течение 15 минут
maxAttempts: 2, // 2 попытки дозвониться
retryIntervalInMinutes: 5 // Пауза между попытками 5 минут
});В данном случае бот будет звонить клиенту через 60 минут. Бот сделает две попытки дозвониться с паузой не менее 5 минут между попытками и не будет звонить позднее, чем через 75 минут от текущего момента, — то есть будет звонить в течение 15 минут.
Вы можете отредактировать параметры объекта для метода
$dialer.redial
самостоятельно. -
Чтобы бот попрощался с клиентом, добавьте на экран блок Переход и создайте от него новый экран с блоком Синтез речи:
Я перезвоню вам позже. До свидания!
. -
На тот же экран добавьте блок Завершение сценария.
В итоге у вас получится такой участок сценария:
Параметры
Метод $dialer.redial
принимает в качестве аргумента объект со следующими полями:
Поле | Тип | Описание | Пример |
---|---|---|---|
startDateTime | Дата | Начальное время звонка. Звонок будет совершен в интервале от startDateTime до finishDateTime . | new Date("2020-03-23T00:00:00") |
finishDateTime | Дата | Конечное время звонка. После finishDateTime звонки совершаться не будут. | new Date("2020-03-23T00:00:00") |
allowedDays | Массив | Дни недели, в которые звонок может быть совершен. | ["mon", "wed", "fri"] |
allowedTime | Объект | Временные интервалы для каждого дня недели, в которые может быть совершен звонок. | {"default": [{"localTimeFrom": "10:00", "localTimeTo": "18:00"}]} |
retryIntervalInMinutes | Число | Пауза между попытками дозвониться в минутах. | 120 |
maxAttempts | Число | Количество попыток дозвониться в новой серии. | 1 |
dialerPriority | Число | Приоритет номера телефона. | 2 |
startDateTime
или allowedTime
. Если прочие поля не указаны, их значения будут взяты из настроек обзвона.allowedDays
и allowedTime
полностью аналогичен одноименным полям в теле запроса к методу POST /addPhones
API для звонков.