Провайдер 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
}
}
| Спецификация | Описание |
|---|---|
Идентификатор. Может быть задан при создании, иначе генерируется системой. |
|
Код учетной записи. |
|
Выключатель учетной записи. |
|
Имя пользователя. |
|
Логин для авторизации. Если отсутствует, то авторизация производится на основе Чтобы не получить отказ в ответ на запросы INVITE и re-INVITE, можно воспользоваться одним из методов:
|
|
Пароль для авторизации. |
|
SIP сервер. Доменное имя, подставляемое в заголовок To при отправке запросов из системы к внешнему оборудованию. |
|
Адрес Outbound Proxy-сервера, куда фактически отправляются запросы из системы к внешнему оборудованию. При использовании режима параллельного обслуживания учетной записи на нескольких экземплярах esg, значение применяется только для избыточных экземпляров, для которых нет значений в списке opts.edge_proxies. |
|
Порт Outbound Proxy-сервера, куда фактически отправляются запросы из системы к внешнему оборудованию. При использовании режима параллельного обслуживания учетной записи на нескольких экземплярах esg, значение применяется только для избыточных экземпляров, для которых нет значений в списке opts.edge_proxies. |
|
Транспортный протокол для основного прокси. Допустимые значения При использовании режима параллельного обслуживания учетной записи на нескольких экземплярах esg, значение применяется только для избыточных экземпляров, для которых нет значений в списке opts.edge_proxies. |
|
Сертификат для подключения к провайдеру по TLS. |
|
Список альтернативных Proxy-серверов. Используется: При использовании режима параллельного обслуживания учетной записи на нескольких экземплярах esg, значение применяется только для избыточных экземпляров, для которых нет значений в списке opts.edge_proxies. |
|
Дополнительные возможные адреса или маски адресов для идентификации учетной записи и валидации отправителя при получении запросов извне, через запятую. В качестве масок могут использоваться значения в форматах Применение масок влечет дополнительные затраты вычислительных мощностей. Поэтому во всех случаях проверка масок применяется только если не проходят другие более простые проверки:
|
|
Список экземпляров роли esg в порядке убывания приоритета, которые ответственны за работу с учетной записью. Роли указываются с помощью значений RoleId из конфигурации ролей. |
|
Режим работы с регистрацией ( |
|
Период перерегистрации в секундах |
|
Адрес внешнего оборудования для проверки доступности. При использовании режима параллельного обслуживания учетной записи на нескольких экземплярах esg, значение применяется только для избыточных экземпляров, для которых нет значений в списке opts.edge_proxies. |
|
Период проверки доступности, в секундах |
|
Значение поля domain в заголовке From при отправке запросов из системы к внешнему оборудованию. |
|
Выключатель режима использования пограничного media-шлюза. |
|
Переключатель режима прозрачного проброса re-INVITE наружу. Может быть выключен только в случае, если включен режим
|
|
Переключатель режима обработки REFER на пограничном шлюзе, обслуживающем учетную запись провайдера.
Режим 'forward' применяется для тестовых кейсов эмуляции системой абонентов. |
|
Выключатель транслитерации отображаемого имени при отправке запросов и ответов наружу |
|
Набор лицензий переданных из домена. Среди параметров ожидается максимальное количество одновременных звонков с использованием учетной записи, например |
|
Максимальное количество транков, используемых для исходящих звонков. |
|
Поле: |
|
Поле: |
Произвольный заголовок |
Поле: |
Произвольный комментарий |
Список дополнительных имен провайдера, идентифицирующих учетную запись. |
|
Поддержка учетной записью режима мягкого вывода сервера из эксплуатации. Если учетная запись с регистрацией, то экземпляры микросервиса esg, переключенные в режим мягкого вывода из эксплуатации, прекращают регистрацию. Если учетная запись без регистрации, то экземпляры микросервиса esg, переключенные в режим мягкого вывода из эксплуатации, отклоняют первичные вызовы INVITE от провайдера с кодом ответа 'deservice_sipcode'. |
|
Код ответа, отправляемый микросервисом esg на первичные запросы INVITE от провайдера. |
|
Количество экземпляров микросервиса ESG, обслуживающих одновременно учетную запись. Например, параметр можно применить, если учетная P2P (без регистрации) предполагает возможность получения INVITE на один из нескольких адресов многосерверной системы. Если при этом часть серверов находится в режиме мягкого вывода из эксплуатации, то поведение и распределение обслуживающих экземпляров соовтетствует описанию параметра 'deservice_response'. |
|
Список альтернативных Proxy-серверов для параллельных экземпляров esg, при одновременном обслуживании учетной записи на нескольких экземплярах (instance_count). Каждый элемент списка - это строка формата: Первый элемент списка применяется для первого из параллельных экземпляров, второй элемент списка для второго и т.д. Указанный адрес используется также:
Каждый параллельный экземпляр esg, обслуживающий учетную запись, может иметь различный состав и количество edge proxies. |
|
Выключатель применения Diversion при вызовах из upstream, переадресованных или смаршрутизированных обратно в upstream (RFC-5806). Если вызов поступил не из upstream, или учетная запись имеет выключенный режим Diversion, то параметры INVITE-запроса формируются на общих основаниях от имени учетной записи системы в соответствии с правилами нормализации. Когда вызов поступает от абонента A из upstream в рамках учетной записи c включенным режимом Diversion на номер B, то каждый запрос INVITE, отправляемый в upstream на номер C через любую учетную запись с включенным режимом Diversion, размещает в качестве From URI абонента A, и дополнительно размещает заголовок Diversion с URI номера B. |
|
Выключатель применения биллинга к вызовам, производимым в любую из сторон через текущую учетную запись. |
|
Переключатель режима восстановления диалога при обрушении ноды с микросервисом esg, обслуживающим сигнализацию вызова. Возможные варианты:
Сервис восстановления активируется в конфигурационной настройке sip_restore_enabled микросервиса callstore. |
|
Дополнительный фильтр для входящих снаружи запросов INVITE. Формат значения соответствует формату параметра 'filter' при выборке из коллекции (подробнее). Фильтр применяется к объекту, сформированному из ключевых параметров запроса INVITE и объекта текущей учетной записи. {
"ruri": {
"user": username from INVITE's request line,
"domain": domain from INVITE's request line
},
"from": {
"user": username from INVITE's From header,
"domain": domain from INVITE's From header
},
"to": {
"user": username from INVITE's To header,
"domain": domain from INVITE's To header
},
"contact": {
"user": username from INVITE's Contact header,
"domain": domain from INVITE's Contact header,
"port": port from INVITE's Contact header
},
"proto": "tcp" | "udp" | "tls",
"remote": {
"addr": ip-address of INVITE's sender,
"port": port of INVITE's sender
},
"local": {
"addr": ...,
"port": ...
},
"account": {
"id": ...,
"code": ...,
...
}
}
С помощью дополнительного фильтра можно решить, например, следующую задачу. Одним экземпляром esg обслуживаются несколько учетных записей. Эти учетные записи P2P (без регистрации) для одного и того же провайдера, но с разными учетными данными. Каждая из учетных записей мультиномерная, то есть может поставлять вызовы на большое количество различных номеров. При этом адрес сервера провайдера одинаков, а порты на сервере провайдера для разных учетных записей назначены разные. Один из способов решения этой задачи — прописывание всего перечня возможных номеров в свойство opts.extusernames этих учетных записей. Второй способ - привязать эти учетные записи к разным экземплярам esg. Тем самым входящие INVITE от провайдера не будут пересекаться. Однако если таких учетных записей не две-три, а десятки или сотни, то размножать роли под них становится неудобным и перестает быть оптимальным в поддержке при модификациях. С помощью дополнительного фильтра [
"equals",
["property", "remote", "port"],
["property", "account", "proxyport"]
]
можно разграничить учетные записи, сопоставив порт отправителя с портом, заданным в учетной записи. В этом случае не обязательно разделять по разным экземплярам esg, а также не обязательно перечислять весь пул номеров в 'opts.extusernames'. Достаточно оставить username пустым, чтобы каждая из этих учетных записей в соответствии с алгоритмом привязки (этап 2.2.) подходила под условия базовой проверки, а фильтр делал остальную часть работы. |
|
Выключатель режима отправки набора кодеков в ответах на INVITE.
|
|
Список имен аудиокодеков, используемых для инициации звонка (вызове плеча). Если список пустой, то применяется значение одноименного параметра роли esg. Особенность применения именно значения, заданного в учетной записи провайдера, в том, что оно осуществляет замену списка форматов из SDP инициатора (в том числе возможно изменение порядка элементов). В качестве значения - список, содержащий имена аудио-кодеков в формате
|
|
Поле: |
Позволяет расширять состав произвольными ключами и значениями |
Поле: |
Время создания объекта |
Поле: |
Время последней модификации объекта |
Режимы проверки доступности
| Значение | Описание |
|---|---|
|
Отключить проверку доступности |
|
Отправлять пустой запрос |
|
Отправлять SIP-запрос OPTIONS, ожидая в ответ SIP-ответ 200 OK |
|
Отправлять внеочередной SIP-запрос REGISTER, ожидая в ответ SIP-ответ 200 OK |
|
Отправлять STUN-запрос |
См. также
-
Статья: Провайдеры телефонии
-
Коллекция: Правила нормализации номеров