Перевод на оператора
Для перевода звонка на оператора используйте $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-транки провайдера Билайн не позволяют использовать настройки в таком виде. Поэтому отображение фактического номера клиента для них недоступно.