Перевод на оператора


Для перевода звонка на оператора используйте $response.replies с типом switch.

Синтаксис

$response.replies
     .push({
        type: "switch",
        phoneNumber: "79123456789",                    // номер телефона для перевода
        // sipUri: "79123456789@sip.voximplant.com",   // вместо телефона можно передать SIP URI
        headers: {                                     // SIP-заголовки
            "Remote-Party-ID": remotePartyId,
            testheader: "header"
        },
        transferChannel: "237-test-237-VDQ-28334674",  // botId
        continueCall: false,
        continueRecording: false
    });

Параметры перевода на оператора для телефонного канала:

Параметр Тип Описание
phoneNumber Строка Номер телефона, на который будет переведен звонок.
Перевод на добавочный номер не поддерживается.
sipUri Строка Номер SIP-телефона, на который нужно перевести звонок.
Если вы передаете sipUri, то передавать phoneNumber не нужно.
headers Объект При переводе на оператора для телефонного канала можно установить SIP-заголовки, которые будут передаваться в сообщении SIP INVITE на указанный номер.
Данная возможность, как правило, используется для передачи АОН-информации клиента.
transferChannel Строка Укажите в поле botId для маршрутизации вызова через SIP-транк, который подключен к данному каналу. При этом будут применены параметры подключенного SIP-транка.
continueCall Логический Если true, абонент будет возвращен к диалогу с ботом после разговора с оператором, а также, если оператор недоступен.
Значение по умолчанию — false.
continueRecording Логический Если true, разговор продолжает записываться, в том числе с оператором и при повторном возвращении абонента в диалог с ботом. Запись звонка будет доступна в логах диалогов.
Значение по умолчанию — false.

Статус перевода на оператора

При помощи метода $dialer.getTransferStatus() вы можете отслеживать статус перевода абонента на оператора.

Метод $dialer.getTransferStatus() возвращает объект с полями:

  • status: "SUCCESS" | "FAIL" — статус перевода на оператора.
  • hangup: true | false — при true абонент завершил звонок. При false абонент ещё на линии и возвращен в диалог с ботом, если continueCall: true.
  • number — номер телефона, на который переводился звонок.

Например:

theme: /

    state: Start
        q!: *start
        a: Start new call

    state: SwitchStateContinue
       q!: перевод на оператора
       script:
        $response.replies.push({
            "type": "switch",
            "phoneNumber": "79123456789",
            "continueCall": true,
            "continueRecording": true
        });

    state: TransferEvent
        event: transfer
        script:
            var status = $dialer.getTransferStatus();
            log(status);

В лог будет добавлена запись формата:

17:14:40.459 [main] INFO  js - {"status":"SUCCESS","hangup":false,"number":"79123456789"}
17:14:40.482 [main] INFO  js - {"status":"FAIL","hangup":true,"number":"79123456789"}

Оператор недоступен

При неуспешном переводе на оператора, например, номер для перевода занят, абонент может быть возвращен в диалог с ботом. Для этого укажите в $response.replies параметр continueCall: true и отслеживайте event: transfer в сценарии.

Например:

theme: /

    state: Start
        q!: *start
        a: Start new call

    state: SwitchStateContinue
        q!: перевод на оператора
        script:
            $response.replies.push({
                "type": "switch",
                "phoneNumber": "79123456789",
                "continueCall": true,
                "continueRecording": true
            });

    state: TransferEvent
        event: transfer
        if: $dialer.getTransferStatus().status === 'FAIL'
            a: Оператор сейчас не может ответить на ваш вопрос. Мы обязательно свяжемся с вами позже.
        else:
            a: Спасибо, что связались с нами. Оцените, пожалуйста, качество обслуживания.

Обратите внимание, что абонент будет возвращен в стейт, где отслеживается событие event: transfer. Здесь вы можете добавить реплики или реакции бота.

Отображение номера

При переводе звонка на оператора можно настроить отображение фактического номера клиента, а не номера бота. Для этого необходимо создать телефонное подключение и настроить SIP-транк без регистрации и пароля:

  • перейдите на вкладку Настройка телефонии в боковом меню > Создать новое подключение;
  • в меню Общие настройки > Пароль оставьте поле пустым;
  • в меню Расширенные настройки > Требуется регистрация переведите переключатель в неактивное положение;
  • заполните остальные поля в соответствии с инструкцией.

Обратите внимание, что SIP-транки провайдера Билайн не позволяют использовать настройки в таком виде. Поэтому отображение фактического номера клиента для них недоступно.