Компонент Внешнее управление через API

Описание

Переводит сценарий во время своей активности под внешнее управление через API (HTTP/WebSocket). +

Если диалог еще не установлен (в событии `api_start` поле `state` имеет значение, отличное от `dialog`), то от управляющей системы требуется соблюдение SIP workflow. То есть необходимо отправлять соответствующие ответов прежде, чем использовать функционал воспроизведения, записи, переводов.
Событие `api_start` может сообщить о следующих состояниях: `dialog`, `early`, `ringing`, `incoming`. В соответствии с ними, а также пользуясь передаваемыми параметрами, внешняя система может определить текущее состояние и выбрать правильное поведение.

До момента отправки ответа 2хх следует: а) Перевод (203, refer) заменять отправкой ответа 3хх (202, `answer`). б) Завершение разговора (201, bye) следует заменять отправкой ответа 4хх-6хх (202, `answer`). в) Не использовать компоненты перевода. г) Не использовать компоненты по работе с медиа-трафиком (воспроизведение, запись и т.д.), за исключением случая, когда текущее состояние диалога - `early`, то есть последний отправленный ответ был `183 Session Progress`.

О начале и завершении работы компонента генерируются события типов `ivrevents.api_start` и `ivrevents.api_stop`. Они отправляются в том числе по подписке в websocket-подключения (сообщение `notify` в рамках token-api `subscribe`).
Управление может перехватить только одна из подключенных систем - та, которая первой отправит сообщение `"ivrapi_accept"` в рамках своего websocket-подключения (token-api: `ivrapi`).
Дальнейшее управление производится через websocket token-api `ivrapi`.

Table 1. Системные характеристики

Индекс

224

Краткое название

api

Типы сценариев

IVR

Стартовый модуль

r_sip_ivr_script_component_api

Режим

Асинхронный

Иконка

224

Характер разветвления

Разветвляющий, замыкающий

Свойства

Table 2. Свойства
Спецификация Описание

Название: Ключ
Код: key
Усл. видимости: нет
По умолчанию: — 

Аргумент, содержащий ключ. Передается внешней системе в сообщении о начале работы компонента (событие ivrevents.api_start) и завершении работы компонента (событие ivrevents.api_stop).
Внешняя система должна указывать этот ключ рядом с указанием идентификатора IVR-диалога в каждом запросе, отправляемом в рамках websocket token-api ivrapi с целью осуществления внешнего управления этим компонентом.

Название: Параметры
Код: params
Усл. видимости: нет
По умолчанию: — 

Аргумент, содержащий дополнительные параметры для внешней системы.
Указанные параметры передаются в сообщении о начале работы компонента (событие ivrevents.api_start).

Название: Таймаут подтверждения взятия управления
Код: reportTimeoutMs
Усл. видимости: нет
По умолчанию: 3000

Аргумент, определяющий таймаут ожидания подтверждения от одной из подключенных по websocket token api внешних систем.

Название: Причина выхода в переменную
Код: varReason
Усл. видимости: нет
По умолчанию: — 

Переменная, куда заносится причина завершения работы компонента.

Название: Переход
Код: transfer
Усл. видимости: нет
По умолчанию: — 

Компонент, которому передается управление при завершении операции по набору нужного числа символов.

Название: Переход, время
Код: transferTimeout
Усл. видимости: нет
По умолчанию: — 

Компонент, которому передается управление при завершении по таймауту.

Название: Переход, ошибка
Код: transferError
Усл. видимости: нет
По умолчанию: — 

Компонент, которому передается управление в случае возникновения ошибки.

См. также

  • Функциональная роль ivr

  • Websocket token-api: ivrapi