Перейти к основному содержимому

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

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

Синтаксис

state: TransferToAgent
intent!: /TransferToAgent
random:
a: Перевожу вас на оператора. Пожалуйста, оставайтесь на линии.
a: Соединяю вас с оператором. Ожидайте, пожалуйста, на линии.
script:
$response.replies = $response.replies || [];
$response.replies.push({
type: "switch", // Тип ответа бота.
phoneNumber: "79123456789", // Номер телефона, на который будет переведен звонок.
// Вместо телефона можно передать SIP URI — номер SIP-телефона:
// sipUri: "79123456789@sip.voximplant.com",
timeout: "30", // Время ожидания ответа от оператора.
headers: { // SIP-заголовки.
"callReason": "support",
"crmClientId": $client.id || "none"
},
transferChannel: "237-test-237-VDQ-28334674", // botId канала. Вызов будет переведен через SIP-транк, который подключен к каналу.
continueCall: true, // Возвращаем абонента к диалогу с ботом после разговора с оператором.
continueRecording: true // Продолжаем запись разговора.
});

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

При помощи метода $dialer.getTransferStatus вы можете отслеживать статус перевода звонка на оператора. Например:

theme: /

state: Start
q!: $regex</start>
a: Здравствуйте! Чем могу помочь?

state: Switch
q!: перевод на оператора
script:
$response.replies = $response.replies || [];
$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!: $regex</start>
a: Здравствуйте! Чем могу помочь?

state: Switch
q!: перевод на оператора
script:
$response.replies = $response.replies || [];
$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-транки провайдера Билайн не позволяют использовать настройки в таком виде. Поэтому отображение фактического номера клиента для них недоступно.