JAICP

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


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


Синтаксис

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

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

Параметр Тип Описание
phoneNumber string Номер телефона, на который будет переведен звонок.

Перевод на добавочный номер не поддерживается.
headers оbject При переводе на оператора для телефонного канала можно установить SIP заголовки, которые будут передаваться в invite сообщении на указанный номер. Данная возможность, как правило, используется для передачи АОН информации клиента.
transferChannel string Укажите в поле botId для перевода вызова через SIP-транк, который относится к данному каналу. При этом будут применены параметры подключенного SIP-транка.
continueCall boolean При true, абонент будет возвращен к диалогу с ботом после разговора со оператором, а также, если оператор недоступен.

По умолчанию false.
continueRecording boolean При 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":"12345",
           "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":"12345"}
17:14:40.482 [main] INFO  js - {"status":"FAIL","hangup":true,"number":"12345"}

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

При неуспешном переводе на оператора, например, номер для перевода занят, абонент может быть возвращен в диалог с ботом. Для этого укажите в $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":"12345",
           "continueCall":true,
           "continueRecording":true
            });

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

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


Отображение номера телефона при переводе на оператора

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

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

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