JAICP

$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 полностью аналогичен одноименным полям в теле запроса к методу Calls API POST /addPhones.


Ограничения

  1. В одном диалоге можно запланировать повторную серию попыток дозвониться только один раз. Последующие вызовы $dialer.redial в этом диалоге будут проигнорированы.

  2. Число повторных попыток дозвониться на каждый номер в рамках одного обзвона ограничено значением параметра Максимальное количество, указанного при создании обзвона.


Использование в сценарии

Рассмотрим пример, как можно обработать просьбу перезвонить через час:

state: CallbackInAnHour
    q!: * перезвони* * через час* *
    a: Хорошо! Я перезвоню вам через час.
    script:
        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 минут
        });
        $dialer.hangUp();

Вы можете извлекать из запроса произвольное время при помощи сущностей Duckling, а также использовать слот-филлинг для обязательного уточнения у клиента времени повторного звонка.