Провайдер SIP-телефонии (provider)

Описание

Учетная запись провайдера SIP-телефонии, посредством которой система «Era» присоединяется к внешним SIP-сетям.
Это может быть внешняя телефонная сеть, подключаемая через провайдеров, или корпоративные АТС, находящиеся выше или на одном уровне иерархии в номерном плане, что и система «Era».
Роль ESG производит регистрацию и поддержание канала связи с внешним оборудованием, указанным в учетной записи провайдера. Любой вызов, приводящий к звонку наружу, всегда происходит через нее. Любой вызов, поступающий снаружи в систему, может быть принят, авторизован и обслужен только той ролью ESG, которая определена в учетной записи провайдера.

Определение того, какой учетной записи соответствует поступивший снаружи вызов, определяется по совокупности условий:
- учетная запись с регистрацией в заголовке "To:" или "Contact:" SIP-запроса INVITE содержит "username@domain", где "username" соответствует значению поля "username" учетной записи, а "domain" соответствует одному из адресов учетной записи;
- учетная запись без регистрации в заголовке "Contact:" SIP-запроса INVITE содержит "username@domain", где "username" соответствует значению поля "username" учетной записи, а "domain" соответствует одному из адресов учетной записи;
- учетная запись без регистрации в заголовке "Contact:" SIP-запроса INVITE содержит "username@domain", где "domain" соответствует одному из адресов учетной записи, а значение поля "username" учетной записи пусто.

В любом случае адрес отправителя, откуда запрос поступил на SIP-порт роли ESG, должен быть известен из описания учетной записи (совокупность полей "domain", "proxyaddr"/"alternative_proxies", "extaddrs").

Ограничения

  • Коллекция недоступна в мастер-домене.

  • При изменении поля лицензии в БД после перезагрузки домена объект не будет загружен, действует проверка по hash.

  • Лицензируется количественным параметром: расходуется лицензия на допустимое одновременное количество активных транков.

Поля

Структура сущности
{
  "id": uuid,
  "code": str,
  "enabled": intbool,
  "username": str,
  "login": str,
  "pwd": str,
  "domain": str,
  "proxyaddr": str,
  "proxyport": int,
  "transport": str,
  "alternative_proxies": str,
  "extaddrs": array<str>,
  "serveridx": int,
  "reg": bool,
  "expires": int,
  "pingmode": str,
  "pingsrv": str,
  "pingtimeout": int,
  "localdomain": str,
  "media": intbool,
  "reinvite": intbool,
  "translit": intbool,
  "lic": object,
  "trunksout": int,
  "opts": {
    "title": str,
    "comment": str,
    "agat_port_id": uuid,
    "agat_chassis_id": uuid,
    "agat_lm_id": uuid
  },
  "ext": {
    "ct": date,
    "lwt": date
  }
}
Table 1. Поля
Спецификация Описание

Поле: id
Режим: inout
Тип: uuid
По умолчанию: generated

Идентификатор. Может быть задан при создании, иначе генерируется системой.

Поле: code
Режим: in
Тип: str
По умолчанию: required

Код учетной записи.
Используется для указания в правилах маршрутизации.

Поле: enabled
Режим: in
Тип: intbool
По умолчанию: 1

Выключатель учетной записи.
В случае выключения роль esg не обладает данными об учетной записи и не обрабатывает звонки по ней.

Поле: username
Режим: in
Тип: str
По умолчанию: required

Имя пользователя.
Подставляется в заголовок From при использовании регистрации.
Используется в качестве ключа для связывания поступающего снаружи запроса INVITE с учетной записью провайдера.
Подробнее про связывание.

Поле: login
Режим: in
Тип: str
По умолчанию: empty

Логин для авторизации.

Если отсутствует, то авторизация производится на основе username.
При этом в качестве username во время INVITE и re-INVITE подставляется username из From URI текущего запроса, что может повлечь неожиданный отказ.

Чтобы не получить отказ в ответ на запросы INVITE и re-INVITE, можно воспользоваться одним из методов:

  • Установить в качестве 'login' значения, совпадающего с 'username' учетной записи. Это обеспечит корректную авторизацию по инициативе провайдера во время INVITE.

  • Использовать режим 'reinvite'=0 и оппозитный ему 'media'=1 с добавлением в конфигурацию экземпляров bgmg. Это исключит отправку reinvite с измененным значением From URI.

  • Настроить правило нормализации для этой учетной записи провайдера, где 'dir' = 'inner', а в 'modfromnumber' значение идентичное 'username' учетной записи. Это обеспечит подстановку всегда одинакового username в заголовок From запросов INVITE в сторону провайдера, что обеспечит корректную авторизацию по инициативе провайдера во время INVITE.

Поле: pwd
Режим: in
Тип: str
По умолчанию: required

Пароль для авторизации.
Обязательное поле если учетная запись с регистрацией.
Используется также в учетных записях без регистрации в случае, если внешнее оборудование требует авторизации путем отправки ответов 401 или 407.

Поле: domain
Режим: in
Тип: str
По умолчанию: required

SIP сервер. Доменное имя, подставляемое в заголовок To при отправке запросов из системы к внешнему оборудованию.
Также используется для идентификации учетной записи при получении запросов извне.

Поле: proxyaddr
Режим: in
Тип: str
По умолчанию: empty

Адрес Outbound Proxy-сервера, куда фактически отправляются запросы из системы к внешнему оборудованию.
Если не указан, то адресом выступает результат определения адреса по значению поля domain, в том числе у DNS-серверов.
Также используется для идентификации учетной записи при получении запросов извне.

Поле: proxyport
Режим: in
Тип: int
По умолчанию: 0

Порт Outbound Proxy-сервера, куда фактически отправляются запросы из системы к внешнему оборудованию

Поле: transport
Режим: in
Тип: str
По умолчанию: "udp"

Транспортный протокол для основного прокси. Допустимые значения "udp", "tcp", "tls".

Поле: alternative_proxies
Режим: in
Тип: str
По умолчанию: empty

Список альтернативных Proxy-серверов.
Формат: Proto:IP-address:Port через запятую, где Prototcp | udp | tls, IP-address – IPV4, Port – натуральное число до 65535.
Например tcp:192.168.220.135:5060, udp:187.12.124.55:33985

Поле: extaddrs
Режим: in
Тип: str
По умолчанию: empty

Дополнительные возможные адреса провайдера или маски адресов для идентификации учетной записи при получении запросов извне, через запятую.
В качестве масок могут использоваться значения в форматах /reg/REGEX, а также целевые значения со спец-символами ?, * для указания соответственно произвольной цифры и жадной комбинации от одной до трех цифр.
Например, /reg/^*.*.*.*$, 144.76.?0?.*
Применение масок влечет дополнительные затраты вычислительных мощностей.

Поле: serveridxs
Режим: in
Тип: array(int)
По умолчанию: empty

Список экземпляров роли esg в порядке убывания приоритета, которые ответственны за работу с учетной записью. Роли указываются с помощью значений RoleId из конфигурации ролей.
После того, как приоритетный сервер становится недоступен, то в течение 30 секунд работу с учетной записью начинает следующий по списку сервер. При восстановлении более приоритетного сервера возможна ситуация, когда учетная запись обслуживается (зарегистрирована) обоими серверами.
Если в списке находится лишь одно значение, то именно этот сервер отвечает за учетную запись, и при его недоступности учетная запись неактивна.
Если список пуст (по умолчанию), то работа с учетной записью определяется по правилам, установленным в настройках домена (settings.ext.default_provider_serveridxs), ожидается что там находится число RoleId или их список.
При отсутствии указанного ключа работу с учетной записью начинает сервер с самым низким значением RoleId на сайтах, где обслуживается домен.

Поле: reg
Режим: in
Тип: bool
По умолчанию: true

Режим работы с регистрацией (true) или без регистрации (false)

Поле: expires
Режим: in
Тип: int
По умолчанию: 3600

Период перерегистрации в секундах

Поле: pingmode
Режим: in
Тип: str
По умолчанию: "none"

Поле: pingsrv
Режим: in
Тип: str
По умолчанию: empty

Адрес внешнего оборудования для проверки доступности.
Если не указан, то проверка доступности происходит по тому же адресу, который выбран для отправки INVITE-запросов.

Поле: pingtimeout
Режим: in
Тип: int
По умолчанию: 10

Период проверки доступности, в секундах

Поле: localdomain
Режим: in
Тип: str
По умолчанию: empty

Значение поля domain в заголовке From при отправке запросов из системы к внешнему оборудованию

Поле: media
Режим: in
Тип: intbool
По умолчанию: 0

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

Поле: reinvite
Режим: in
Тип: intbool
По умолчанию: 1

Выключатель режима прозрачного проброса re-INVITE наружу. Может быть выключен только в случае, если включен режим media.

Поле: translit
Режим: in
Тип: intbool
По умолчанию: 0

Выключатель транслитерации отображаемого имени при отправке запросов и ответов наружу

Поле: lic
Режим: in
Тип: object
По умолчанию: empty

Набор лицензий переданных из домена. Среди параметров ожидается максимальное количество одновременных звонков с использованием учетной записи, например {"siptrunks":5}.

Поле: trunksout
Режим: in
Тип: int
По умолчанию: -1

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

Поле: opts
Режим: in
Тип: object
Составное поле

Поле: opts.title
Режим: in
Тип: str
По умолчанию: empty

Произвольный заголовок

Поле: opts.comment
Режим: in
Тип: str
По умолчанию: empty

Произвольный комментарий

Поле: ext
Режим: inout
Тип: object
Составное поле

Позволяет расширять состав произвольными ключами и значениями

Поле: ext.ct
Режим: out
Тип: date
По умолчанию: generated

Время создания объекта

Поле: ext.lwt
Режим: out
Тип: date
По умолчанию: generated

Время последней модификации объекта

Режимы проверки доступности

Table 2. Режимы проверки доступности
Значение Описание

"none"

Отключить проверку доступности

"rn"

Отправлять пустой запрос CR LF, ожидая в ответ CR LF CR LF

"options"

Отправлять SIP-запрос OPTIONS, ожидая в ответ SIP-ответ 200 OK

"register"

Отправлять внеочередной SIP-запрос REGISTER, ожидая в ответ SIP-ответ 200 OK

"stun"

Отправлять STUN-запрос

См. также