Interactive Voice Response SIP UserAgent (ivr)

Описание

Сервис автообслуживания SIP-звонков с помощью преднастроенных администратором IVR-сценариев. Также обеспечивает функционал инициации звонка изнутри системы.

Резервируется и масштабируется в режиме Active-Active.

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

Код

ivr

Режим работы

Сервис

Режим резервирования

Active-Active

Типы сайтов

Любые

Слой

Бизнес-логика

Размещение

Внутренний

Сохранение и восстановление состояния при перезагрузке

Нет

Приложение

era_sip

Ограничения

  • Исполняет только те сценарии, что принадлежат обслуживаемым на текущем сайте доменам.

Параметры

Table 2. Параметры
Имя Тип Умолчание Описание

name

str

required

Имя. Может состоять из латинских букв и цифр, должно начинаться с буквы.

roletype

str

required

Тип роли. Возможные значения: "ivr".

iface

str

required

Алиас сетевого интерфейса сервера, на котором будет происходить внутреннее взаимодействие ролей между собой.

ext

json

empty

Дополнительные опции роли. Содержит json объект или список.

enabled

bool

empty

Флаг активности роли. При установке в false роль не участвует в валидации и не запускается.

roleid

int

required

Идентификатор роли.
Уникален для всей системы, независимо от сайта или сервера. Не подлежит изменению.
Целое число от 1 до 9999.

separate

bool

required

Признак выделения роли в отдельную ноду.

udp

int

required

Локальный порт UDP для SIP. Этот же порт одновременно обрабатывает и TCP.
Например: 5095.
Используется для внутреннего взаимодействия с другими микросервисами системы по протоколу SIP.
Поднимается только на локальном интерфейсе, к которому привязана нода.
Не должен использоваться другими микросервисами, исполняемыми на том же самом сервере.

tcp

int

required

Локальный порт TCP для SIP. Если указано значение, отличное от UDP, то будет поднят дополнительно.
Например: 5095.
Используется для внутреннего взаимодействия с другими микросервисами системы по протоколу SIP.
Поднимается только на локальном интерфейсе, к которому привязана нода.
Не должен использоваться другими микросервисами, исполняемыми на том же самом сервере.

log_cdr

bool

true

Выключатель логирования событий в лог cdr.

log_media

bool

true

Выключатель логирования медиа-функций media.

log_mgct

bool

true

Выключатель логирования протокола взаимодействия с MGC-контроллером в лог mgct.

log_sip

bool

true

Выключатель логирования трейса машины состояний диалога в лог sip.

log_trn

bool

true

Выключатель логирования SIP-трафика в лог trn.

b2bmedia

bool

true

Выключатель применения медиа-шлюза ролью b2b для звонков, инициированных текущим экземпляром роли ivr.

usemedia

bool

true

Служебное поле. Использование медиа-шлюза ролью ivr.
Применяется при организации нагрузочного автотестирования с инициацией звонков ролью ivr.

payloads_audio_offer

array<str>

["PCMA/8000", "PCMU/8000", "telephone-event/8000"]

Список имен аудиокодеков, используемых для инициации звонка (вызове плеча).
В качестве значения список, содержащий имена аудио-кодеков в формате "Name/Freq".
Поддерживаются следующие кодеки (case-sensitive):

  • telephone-event/8000,

  • PCMU/8000,

  • PCMA/8000,

  • GSM/8000,

  • G722/8000,

  • G729/8000,

  • CN/8000,

  • speex/8000,

  • speex/16000,

  • speex/32000,

  • G726-16/8000,

  • G726-24/8000,

  • G726-32/8000,

  • G726-40/8000,

  • iLBC/8000,

  • opus/48000/2.

Три основных формата: PCMA/8000, PCMU/8000 и telephone-event/8000 автоматически добавляются в инициируемые вызовы при любом значении поля.

payloads_video_offer

array<str>

empty

Список имен видеокодеков, используемых для инициации звонка (вызове плеча).
Фактически не применяется.

В качестве значения список, содержащий имена видео-кодеков в формате "Name/Freq".
Поддерживаются следующие кодеки (case-sensitive):

  • H263/90000,

  • H263-1998/90000,

  • H264/90000,

  • VP8/90000,

  • VP9/90000.

local_mg_lower_priority

bool

true

Выключатель понижения приоритета локальных медиашлюзов MG, расположенных на том же сервере, где и текущий активный сервер сигнализации.
При выключении локальные медиашлюзы участвуют наравне с другими.
По умолчанию включено - локальные медиашлюзы используются только если не обнаружено других, способных обслужить новый контекст.
Применяется в многосерверных системах для преимущественного разнесения ответственности за обслуживание вызова по разным серверам.
При падении сервера с медиа-шлюзом, обслуживающего медиа-трафик, разговор может быть сохранен только при условии, что все серверы, обслуживающие сигнализацию вызова, остаются доступными.

default_ivrscriptcode

str

empty`

Включает режим эмулятора вызываемых абонентов.
Экземпляр перестает блокировать входящие INVITE-запросы с произвольных адресов, и инициирует для них сценарий IVR с указанным здесь кодом.
В оппозитных нагружаемых системах заводится учетная запись без регистрации (предположительно учетная запись провайдера), где в качестве домена указывается домен данной системы, где находится сценарий IVR.
С помощью указанного сценария можно реализовывать статистическую обработку - например, часть вызовов отбивать сразу, часть через некоторое время, часть озвучивать early-media, часть обслуживать.
Следует учитывать, что переводы напрямую отправляются в систему-инициатора, минуя обычный маршрут, когда оппозитной стороной любого плеча является экземпляр B2B текущей же системы.

Пример конфигурации

Управление конфигурацией производится в приложении, доступном для администраторов мастер-домена. Приложение скрывает полное содержание конфигурации, однако тем не менее оно доступно через API.

Конфигурация содержит раздел для описания всех экземпляров всех ролей. Параметры определяются для каждого конкретного экземпляра роли.

Пример узла
{
  "name": "ivr1",
  "roletype": "ivr",
  "iface": "eth0",

  "roleid": 11270,
  "separate": true,
  "tcp": 5085,
  "udp": 5085,

  "log_cdr": true,
  "log_trn": true,
  "log_sip": true,
  "log_media": true,
  "log_mgct": true,

  "b2bmedia": true,

  "payloads_audio_offer": [
    "PCMU/8000", "CN/8000", "G722/8000"
  ]
}

См. также