Транк

Транки используются для взаимодействия АТС со сторонними SIP-серверами. Под взаимодействием подразумевается маршрутизация исходящих вызовов и прием входящих вызовов через DID.

Транки авторизуются двумя путями:

  • Если вызов пришел с адреса из списка "Транк#super_trunk_ip" то в зависимости от параметров "any_extension/any_did" вызов сразу уходит на нужный добавочный.
  • Если адрес отсутствует в "super_trunk_ip" и вызов пришел на DID, то проверяется принадлежит ли этот DID данному транку (согласно "network_permission_group_id") и пропускается на добавочных только в этом случае.

Описание полей ресурса

Имя

Тип

Описание

Обязательное

Значение по умолчанию

name

string

Имя транка

да


direction

string("in","out","all")

Направление транка. Транк может быть входящий (значение in), в это случае через транк могут быть приняты входящие вызовы на DID, исходящий (значение out), в этом случае через транк могут быть направлены исходящие вызовы, и двунаправенный (значение all).

да


idintegerУникальный идентификатор транка. Поле только для чтения.--

network_permission_group_id

integer

Идентификатор группы доверенных сетей, запросы из которых разрешены для данного транка. Применяется для транков с направлением in и all

да, если направление транка in или all

null

address

string

Адрес SIP-сервера, на который будет отправлен вызов согласно правилам маршрутизации. Применяется для транков с направлением out и all. Указывается в виде host:port. В качестве host может быть доменное имя, ":port" опционален (5060 в случае отсутствия). Если необходимо использвать протокол tcp, то  "host:port;tranport=tcp"

да, если направление транка out или all

null

status_in

string("active","blocked")

Статус транка на приём входящих вызовов. Если параметр имеет значение blocked, то на попытку вызова DID данного транка система вернет ошибку.

нет

blocked

status_out

string("active","blocked"

Статус транка на приём исходящих вызовов. Если параметр имеет значение blocked, то попытка внешнего вызова через данный транк завершится ошибкой.

нет

blocked

sbc_mode

string

Включить (значение yes) или отключить (значение no) режим sbc для транка. Если режим SBC включен, то медиаданные для вызовов, идущих через транк, будут проходить через тот же адрес, что и SIP-сообщения.

нет


strip

integer

Количество символов, которые будут удалены из начала номера при отправке исходящего вызова через данный транк.

нет

null

pri_prefix

string

Префикс, который будет добавлен в начало номера при отправке исходящего вызова через данный транк.

нет

null

auth_username

string

Имя пользователя для авторизации при отправке исходящего вызова через данный транк.

нет

null

auth_pass

string

Пароль пользователя для авторизации при отправке исходящего вызова через данный транк.

нет

null

from_username

string

Имя пользователя в поле From при отправке исходящего вызова через данный транк.

нет

null

from_domain

string

Домен в поле From при отправке исходящего вызова через данный транк.

нет

null

insert_internal_user

string("yes","no")

Если параметр имеет значение "yes", то при отправке исходящего вызова через транк на внешний SIP-сервер в пакет INVITE будет добавлен заголовок Ringme-user, который будет содержать полное имя добавочного, с которого осуществляется вызов, в формате с префиксом домена: префикс_домена*префикс_клиента*номер_добавочного

нет

yes
super_trunk_ip array(string)Список адресов в виде ip[:port] для проверки, могут ли вызовы с них использоваться для вызова на любой DID или добавочный. Адреса уникальны в пределах всей АТС.нет[]
any_extensionstring("yes","no")Если вызов из "super_trunk_ip", на глобальный номер добавочного (xxxx*xxx*xxx), то он разрешел при значении параметра "yes".нетno
any_didstring("yes","no")Если вызов из "super_trunk_ip", на номер DID, то он разрешел при значении параметра "yes".нетno
channel_limitintegerМаксимально количество одновременных каналов, используемых транком. Суммируются входящие/исходящие. При значении "0" ограничение отсутствует.нет0
in_anumber_rule_idintegerПри входящем вызове из транка, преобразует А-номер согласно соответствующим правилам  наборанетnull
out_anumber_rule_idintegerПри вызове, уходящем в транк, преобразует A-номер (From field) согласно соответствующим правилам  наборанетnull
use_dns_srv boolean

При включении опции "use_dns_srv", если параметр "address" транка указан в виде домена без порта, то анализируются SRV записи этого домена и в случае неудачи исходящего вызова по одному адресу (таймаут), вызов будет отправлен на другой. Таймаут доступности каждого адреса устанавливается в 6 секунд (вместо 30 при use_dns_srv=false

Например, "address" srvtest.ucom4b.com 

1.  для srvtest.ucom4b.com
$ host -t srv _sip._udp.srvtest.ucom4b.com
_sip._udp.srvtest.ucom4b.com has SRV record 10 50 5067 srvpbx1.ucom4b.com.
_sip._udp.srvtest.ucom4b.com has SRV record 20 50 5068 srvpbx2.ucom4b.com.
Тогда в случае недоступности srvpbx1.ucom4b.com:5067 вызов будет направлен на srvpbx1.ucom4b.com:5068 (Priority 10 и 20 соответственно)

2.  для srvtest.ucom4b.com
$ host -t srv _sip._udp.srvtest.ucom4b.com
_sip._udp.srvtest.ucom4b.com has SRV record 20 50 5067 srvpbx1.ucom4b.com.
_sip._udp.srvtest.ucom4b.com has SRV record 20 50 5068 srvpbx2.ucom4b.com.
вызовы будут уходить и резервироваться по SRV записям случайным образом (Priority одинаковый)

3. для srvtest.ucom4b.com есть более одной A записи, но нет SRV записей: вызовы будут уходить и резервироваться по А записям случайным образом


Важно: если "address" указан с портом, то логика резервирования никак не работает: вызов отправляется на первую попавшуюся А запись домена.

нетfalse
history_infoboolean

Cвойство транка: при посылке инвайта в транк заменять поле Diversion (если есть) на History-info вида:
History-Info: <sip:+79785550032@10.50.150.57:5061;transport=udp?reason=SIP%3Bcause%3D408%3Btext%3D%22User%20No%20Reply%22&Privacy=none>;index=1

History-Info: <sip:D25019183706818@10.50.150.52:6000;transport=udp>;index=1.1

нетfalse

Ресурсы раздела "Администратор"

POST /admin/trunk/

Добавить транк

Параметры JSON

Поля транка

Поля ответа

Поля транка

GET /admin/trunk/

Получить список транков

Параметры запроса

Имя

Тип

name

array [string]

id

array [integer]

Поля ответа

Поля транка


PUT /admin/trunk/{id}

Обновить транк

Поля транка

Параметры URL

Имя

Тип

id

integer

Параметры JSON

Поля транка

Поля ответа

Поля транка

GET /admin/trunk/{id}

Получить транк по идентификатору

Параметры URL

Имя

Тип

id

integer

Поля ответа

Поля транка

DELETE /admin/trunk/{id}

Удалить транк

Параметры URL

Имя

Тип

id

integer