Как запланировать повторный звонок
Во время разговора бота с клиентом может потребоваться запланировать новый звонок — например, если клиент просит перезвонить ему позже. Это можно предусмотреть в сценарии для обзвона:
- Добавьте интент, распознающий просьбу перезвонить.
- Добавьте интенты, чтобы уточнить у клиента время, в которое ему будет удобно принять звонок.
- Добавьте блок Код, чтобы бот перезвонил клиенту в указанное время.
Распознавание просьбы перезвонить
В сценарии вашего бота добавьте экран с блоком Интенты. ? > Вы можете добавить экран в любое место сценария и активировать опцию Сделать доступным из любой точки сценария в настройках блока, чтобы бот распознавал интент в любой момент диалога.
Нажмите Выбрать готовый интент и выберите Запрос на повторный звонок. При помощи этого интента бот будет распознавать просьбы клиентов перезвонить. ? > Перечень шаблонов фраз в интенте Запрос на повторный звонок
При желании дополните интент своими шаблонами или примерами фраз и сохраните блок.
У вас получится такой экран:
Уточнение времени повторного звонка
От интента Запрос на повторный звонок создайте новый экран и добавьте на него блок Синтез речи с текстом
Когда вам перезвонить?
.На тот же экран добавьте блок Интенты.
Добавьте шаблоны фраз, при помощи которых бот будет распознавать ответ клиента. Например, чтобы бот распознал просьбу перезвонить через час, добавьте фразу
* через час* *
.Нажмите напротив фразы. Иконка изменится на — это сделает фразу шаблоном.
Сохраните блок.
Настройка повторного звонка
Чтобы запланировать повторный звонок, бот должен выполнить определенный 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 для звонков.