Перевод звонка на оператора
Для перевода звонка на оператора используйте $response.replies
с типом switch
или тег действия TransferCallToOperator
.
Синтаксис
- Тип ответа 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 // Продолжаем запись разговора.
});
state: TransferToAgent
intent!: /TransferToAgent
random:
a: Перевожу вас на оператора. Пожалуйста, оставайтесь на линии.
a: Соединяю вас с оператором. Ожидайте, пожалуйста, на линии.
TransferCallToOperator:
phoneNumber = 79123456789
timeout = 30
timeoutState = /Switch/Timeout
errorState = /Switch/Error
state: Timeout
a: К сожалению, все операторы сейчас заняты. Я могу вам чем-нибудь помочь?
state: Error
a: К сожалению, мы не можем соединить вас с оператором. Мы обязательно свяжемся с вами позже.
script:
$dialer.hangUp();
Статус перевода на оператора
При помощи метода $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-транк без регистрации и пароля:
- перейдите на вкладку Настройка телефонии в боковом меню > Создать новое подключение;
- в меню Общие настройки > Пароль оставьте поле пустым;
- в меню Расширенные настройки > Требуется регистрация переведите переключатель в неактивное положение;
- заполните остальные поля в соответствии с инструкцией.