Back to back UserAgent (b2b)

Описание

Роль организующая коммутацию между SIP устройствами, путем создания двусторонних диалогов.
Производит маршрутизацию и вызов соответствующих устройств с организацией медиа-потока между ними посредством ролей mgc и mg.

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

Сервисы:
- Организация и обслуживание SIP-диалогов
- Управление бизнес-логикой медиа-контекста.
- Маршрутизация во внутреннем номерном плане.
- Расчет представления абонентов.
- Форкинг (вызов нескольких зарегистрированных устройств или в нескольких направлениях).
- Абонентские функции: переадресация, групповой номер, перехват, интерком, вторжение, перевод, подмена плеча, множественный вызов…​
- Группы типа шеф-секретарь.
- Генерация CDR-событий.
- Авторизация SIP-вызовов.
- Обслуживание регистраций.
- Обслуживание подписок (BLF, голосовая почта) и отправка уведомлений.
- Балансировщик SIP сервисов.
- …​

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

Код

b2b

Режим работы

Сервис

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

Active-Active

Типы сайтов

Любые

Слой

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

Размещение

Внутренний

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

Нет

Приложение

era_sip

Параметры

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

name

str

required

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

roletype

str

required

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

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.
Например: 5090.
Используется для внутреннего взаимодействия с другими микросервисами системы по протоколу SIP.
Поднимается только на локальном интерфейсе, к которому привязана нода.
Не должен использоваться другими микросервисами, исполняемыми на том же самом сервере.

tcp

int

required

Локальный порт TCP для SIP. Если указано значение, отличное от UDP, то будет поднят дополнительно.
Например: 5090.
Используется для внутреннего взаимодействия с другими микросервисами системы по протоколу 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.

use_srtp

bool

false

По умолчанию при инициации звонков на адреса, подключенные по TLS, отправляется SDP-offer для нешифрованного медиа потока (rtp). С помощью параметра можно для TLS адресов включить режим инициации отправки SDP-offerа с шифрованным медиа-потоком.

allow_ac_set

bool

true

Выключатель режима отправки набора кодеков в ответах на INVITE.

  • false – в ответе отправляется не более одного кодека из полученных в Offer SDP.

  • true – в ответе может быть отправлено подмножество кодеков из списка полученных в Offer SDP.

save_rtp_stat

bool

false

Размещать в событии о завершении разговора статистику по RTP пакетам

send_reinvite_on_ack

bool

false

Выключатель режима отправки re-INVITE инициатору звонка сразу после установки диалога (получен подтверждающий SIP-запрос ACK).
Может использоваться для обновления данных на дисплее в случае, если устройства не обрабатывают SIP-заголовок Remote-Party-Id.
Также может применяться для выравнивания кодеков с целью увеличить вероятность прямой передачи трафика без транскодинга.

check_by_options_on_limit

bool

false

Выключатель режима проверки устройств с помощью отправки SIP-запроса OPTIONS при получении запроса REGISTER, превышающего лимит по лицензии.

  • false – отказывать в регистрации;

  • true – проверять доступность зарегистрированных устройств, и в случае обнаружения недоступности автоматически заменять регистрацию.

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.

use_video_transcoding

bool

false

Использовать транскодинг видео.

  • false – все видео-кодеки из SDP INVITE-запроса, полученного от инициатора, транслируются без изменений в SDP INVITE-запросов на вызываемые устройства. В этом случае система не применяет ни свои знания о кодеках, ни транскодинг, икодек неизвестен системе, то прямая трансляция тем не менее остается возможной.

  • true – все видео-кодеки приводятся в соответствии с известными системе видео-кодеками, система предлагает вызываемой стороне все известные ей кодеки (с фильтром из payloads_video_offer), и при несовпадении выбранных устройствами кодеков осуществляется транскодинг на видео-стриме.

record_ivr

bool

false

Выключатель записи диалогов с IVR.
При указании false медиа-трафик звонков в IVR, включая очереди, принудительно не записывается, вне зависимости от установок правил записи.

record_conf

bool

false

Выключатель записи диалогов с конференциями.
При указании false медиа-трафик звонков в конференц-комнаты принудительно не записывается, вне зависимости от установок правил записи.

record_prompt

bool

false

Выключатель записи диалогов подслушивания и суфлирования.
При указании false медиа-трафик звонков на подслушивание и суфлирование принудительно не записывается, вне зависимости от установок правил записи.

fwd_headers

array<object>

empty

Проброс заголовков.
B2B обслуживает вызовы таким образом, что для каждого участника создается отдельное плечо с уникальным Call-ID.
Формируя исходящий INVITE-запрос B2B по умолчанию не добавляет в него кастомные заголовки из входящего INVITE-запроса.
Чтобы обеспечить добавление в исходящий INVITE-запрос определенных кастомных заголовков из входящего INVITE-запроса, необходимо сообщить список их имен.

Формат:
["X-Header-1", "header-2", ...]

По умолчанию пусто.

local_mg_lower_priority

bool

true

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

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

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

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

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

    "roleid": 11240,
    "separate": true,
    "udp": 5090,
    "tcp": 5090,

    "send_reinvite_on_ack": false,
    "allow_ac_set": false,
    "check_by_options_on_limit": true,
    "record_conf": false,
    "record_ivr": false,

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

    "fwd_headers": [
        "X-Header-1",
        "X-Header-2"
    ],

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

См. также