FreePBX SIP Trunk

SIP транк определяет набор свойств, требуемых для совершения внешних вызовов по протоколу SIP. Таких как, аутентификация, callerid, кол-во каналов, наличие сетевых трансляций (NAT) и другие свойства для формирования правильных SIP запросов, используемые кодеки, контекст для обработки входящих вызовов и др..

Настройки поделены на три основных секции:

General

Определяет основные параметры SIP транка: freepbx13-sip-trunk-general

Trunk name

Имя транка для веб интерфейса. Сугубо описательное значение, для идентификации транка в веб интерфейсе FreePBX. Не используется непосредственно для вызовов. Назначьте удобное для вас имя, для легкого распознавания среди других транков.

Hide CallerID

Не сообщать удаленной стороне исходящий CallerID.
В большинстве случаев требуется передавать CallerID, но если вдруг понадобиться…
YesNo

Outbound CallerID

Задайте исходящий CallerID для данного транка. Во FreePBX Outbound CallerID может быть задан или модифицирован, в нескольких местах по пути обработки исходящего вызова.

  1. Outbound CallerID екстеншена. Когда внутренний номер инициирует вызов, если задан параметр Outbound CallerID для этого екстеншена, он используется как исходящий CID.
  2. Далее вызов обрабатывается в Outbound Routes. Если параметр Override Extension = No (по умолчанию), исходящий CID ектеншена, используется и далее.
  3. Затем вызов попадает в транк, если CID Options = Allow Any CID, то Outbound CalleID екстеншена, используется для данного вызова, через транк.

CID Options

Но если выбрано другое значение CID Options, то Outbound CallerID внутреннего номера, или переназначенный в Outbound Routes, может быть модифицирован одним из перечисленных ниже значений в настройках транка.

  • Allow Any CID - пропускать любой CallerID
  • Block Foreign CIDs - блокировать любой внешний CallerID. Под внешним подразумевается пришедший извне, из-за пределов системы. Outbound CID абонентов это не затронет.
  • Remove CNAM - Удалять имена из CallerID, не трогая номер.
  • Force Trunk CID - Принудительно подставлять CallerID заданный в данном транке.

Maximum Channels

Максимальное количество одновременных соединений через данный транк.

Asterisk Trunk Dial Options

Опции команды Dial для исходящих вызовов, через транк. По умолчанию, значение заданное в Asterisk Dial Options. Переопределяет системные опции, если выбрано override на заданные здесь.
OverrideSystem

Continue if Busy

Искать следующий доступный транк, если этот переполнен.
YesNo

Disable Trunk

Выключить, т.е. вывести транк из обслуживания. Обратите внимание, что на Register String этот триггер не распространяется.
YesNo

Dial Number Manipulation Rules

Преобразование набираемого номера
freepbx13-sip-trunk-dial-number-manipulation-rules Преобразование набираемого номера в транке, происходит по тем же правилам, что и в Dial Patterns исходящей маршрутизации. Сначала выполняется преобразование в Outbound Routes, затем вызов попадает в модуль транка и выполняется последнее преобразование, если задано. Рассмотрим пример использования двух-этапного преобразования: Задан маршрут с шаблоном _8[09]XXXXXXXXX, который обслуживают несколько транков от разных провайдеров.
Один требует набирать '8', а в другом надо отправлять '+7'.
Оставим транк требующий '8', без преобразования.
В транке же, требующем '+7', заменим 8-ку.

PrependPrefixMatch PatternCaller ID
+78[09]XXXXXXXXX

Вариантов может быть масса, но общий принцип, надеюсь ясен.

sip Settings

И, наконец, ключевые наcтройки sip пира. Во FreepBX они разделены на Outgoing и Incoming
Которые отвечают за исходящие type=peer и входящие вызовы type=user, соответственно.
Подробно с настройками sip.conf в Asterisk вы можете ознакомиться по ссылке
Здесь же рассмотрим основные параметры.

Outgoing

Большинство параметров указываются здесь. freepbx13-sip-trunk-sip-settings-outgoing

host

Хост или IP адрес SIP сервера, на котором мы хотим зарегистрироваться или завязать доверенные отношения. Если удаленная система сама регистрируется на нашем сервере, может принимать значение - dynamic. Но как правило, это адрес SIP сервера, которому мы будем отправлять Options и Invite. Адрес для Register задается отдельно, в разделе Incoming.

username и secret

Основные параметры sip аутентификации, имя пользователя и пароль, как правило сообщаются провайдером.

type

Предполагается, что здесь должно быть peer - набор свойств для исходящих вызовов.
Однако можно написать и friend и не назначать никакие параметры в секции Incoming (кроме register string, которая хоть и расположена во FreePBX в секции incoming настроек транка, прямой связи с ним не имеет и может существовать вообще без sip пира, хоть и нуждается в нем, для аутентификации входящего вызова, как доверенного, а не анонимного).
Так тоже будет работать.

Также здесь могут быть заданы любые параметры, доступные SIP пиру:

context

- контекст обработки входящих вызовов. Стандартный контекст входящих вызовов Freepbx для цифровых транков- from-trunk. Вызовы из него обрабатываются в модуле FreePBX 13 входящая маршрутизация. Но вы можете указать собственный контекст и написать его в extensions_custom.conf. См. также FreePBX custom context

Для многих новичков значение контекста по отношению к транку и к внутреннему номеру вызывает некоторую путаницу. Для простоты можно сказать, что контекст транка определяет, как обрабатывать входящие вызовы, а контекст внутреннего номера - исходящие. Когда внутренний абонент куда-то звонит, в назначенном ему контексте определяется, через какие транки и на какие екстеншены он может позвонить. Исходящая связь через транк определяется в контекстах внутренних номеров и никак не упоминается в контексте, назначенном непосредственно транку. Напротив, когда внешняя система, связанная с транком, вызывает некий екстеншен (расширение), тогда и используется контекст, назначенный транку.

Но если несколько углубиться в данный вопрос, можно вспомнить, что для Asterisk, по сути, нет разницы между внутренним номером и транком. Когда внешняя система вызывает некий номер, она является sip устройством, которое совершает исходящий вызов через контекст, назначенный транку, так же, как телефон совершает исходящий вызов через контекст, назначенный пиру. Поэтому, как нет разницы между sip транком и внутренним номером, так нет разницы и между использованием контекстов, им назначенных.

insecure

- параметры аутентификации

  • insecure=port - Проверять совпадение IP адреса, но не порта
  • insecure=invite - Не требовать аутентификации в инвайте (INVITE)
  • insecure=port,invite - И то, и другое.

insecure=invite - практически обязательное условие, для приема входящих вызовов.

disallow

- запретить использование кодеков, чтобы назначить разрешенные в параметром allow.

allow

- разрешить перечисленные через запятую кодеки.

  • allow=alaw,ulaw,g729
nat

- задать свойства использования rport , media при работе за nat. Если не указано, будут использованы настройки из модуля FreePBX Asterisk SIP Settings.

  • nat = no - без NAT RFC3581
  • nat = force_rport - использовать rport, даже если его нет
  • nat = comedia - отправить медиа поток на порт Asterisk, независимо от указаний SDP.
  • nat = auto_force_rport - установить 'force_rport' параметр если Asterisk обнаружил NAT.
  • nat = auto_comedia - установить 'comedia' параметр если Asterisk обнаружил NAT
qualify

- Посылать запросы Options = yes/no

qualifyfreq

- частота запросов в секундах. и тд.

Incoming

Данная секция должна иметь уникальное название, т.к. является, в некотором роде, независимым объектом, не пиром, но часовым пира, который требует пароль (secret) и указывает путь (context), если проверка пройдена. Не отображается в консоли, при вводе команды sip show peers, так как type=user. Как и следует из названия, отвечает за входящие вызовы. Основные параметры: context и secret те же, что указаны в outgoing.

Здесь же задается строка регистрации, которая в чистом Asterisk, вынесена в категорию sip.conf - [general].
Это очень важный параметр, отвечающий за посылку Register SIP серверу регистраций. Если вы подключаетесь к SIP серверу провайдера и требуется получать входящие вызовы, в большинстве случаев, надо посылать Register. freepbx13-sip-trunk-sip-settings-incoming.png

Register String

user[:authuser]:secret@host:port/extension

 sip_user_name[:authuser]:sip_password@sip.itsp.tld:5060/1234567
  • user - идентификатор пользователя, используемый для SIP сервера.
  • authuser - необязательное имя пользователя для авторизации на SIP сервере (authuser). Обычно то же, что и 'user'.
  • secret - пароль пользователя
  • host - имя домена или хоста SIP сервера.
  • port - номер порта на сервере host для запросов регисрации. Если не указано, то по умолчанию - 5060.
  • /extension - Расширение для приема вызовов в Вашем Asterisk (extension). 'extension' - вставляется в SIP заголовок contact запроса на регистрацию. Этот екстеншен используется удаленным SIP сервером, когда ему необходимо совершить вызов в сторону вашего Asterisk. Данный екстеншен (расширение) будет вызван Asterisk в контексте транка ( в модуле Inbound Routes, например). Если не указывать расширение, SIP сервер провайдера сам определит вызываемый номер, обычно это значение 'user'. Если Asterisk не найдет вызываемый екстеншен в контексте транка, то будет искать раширение 'i' (invalid). К транку могут быть привязаны несколько номеров. В таком случае, лучше не указывать этот параметр. Возможно также, что SIP сервер провайдера вообще проигнорирует указанное здесь значение.

Скрин Outgoing и Incoming Settings FreePBX12

FreePBX

  • freepbx/sip_trunk.txt
  • Последние изменения: 2018/05/11