Конфигурация популярных PBX

Раздел содержит практические инструкции по интеграции SIP Trunk с популярными программными АТС — FreePBX (Asterisk) и FusionPBX (Freeswitch).

Для FreePBX подробно описана пошаговая настройка SIP транка: заполнение параметров во вкладках General и SIP Settings, настройка исходящих и входящих вызовов, работа с типами клиентов (peer, user, friend), проверка доступности и маршрутизация через шаблоны Dial Pattern.

Для FusionPBX изложен процесс создания SIP Gateway, назначение параметров и организация маршрутизации исходящих вызовов. Информация ориентирована на системных администраторов и специалистов по IP-телефонии, знакомых с интерфейсами управления указанными PBX.

Также приведены пояснения по настройке маршрутов и формированию шаблонов номеров.

Создание SIP trunk для FreePBX (Asterisk)

Откройте меню администрирования транков во вкладке Trunks раздела Connectivity.

Меню Trunks в разделе Connectivity

Нажмите кнопку «Add Trunk» и выберите тип создаваемого транка.

Кнопка Add Trunk

Выбор типа транка

Выберите вариант Add SIP (chan_sip) Trunk.

Вкладка General

На вкладке задаются основные параметры транка.

Вкладка General

Заполните поля формы:

  • Trunk Name – название транка. В примере используем имя mango. Назначьте удобное для вас имя, для легкого распознавания среди других транков;
  • Hide CallerID – опция скрытия CID при исходящем вызове;
  • Outbound CallerID CID, который будет передаваться при исходящем вызове;
  • CID Options – настройки передачи CID – разрешить все, запретить иностранные и т.д.;
  • Maximum Channels – максимальное количество одновременных разговоров вне локальной сети;
  • Asterisk Trunk Dial Options – модификация Dial options, в данном случае оставим опцию дефолтной;
  • Continue if Busy – опция направления вызова на следующий транк даже если канал сообщает «BUSY» или «INVALID NUMBER»;
  • Disable Trunk – опция выключения транка.

Далее необходимо выполнить настройку во вкладке sip Settings.

Вкладка «sip Settings»

Устанавливаем ключевые настройки SIP-пира. Во FreePBX они разделены на Outgoing и Incoming, которые отвечают за исходящие type=peer и входящие вызовы type=user соответственно.

Настройка исходящих вызовов в закладке «Outgoing»

Дублируете название транка в поле "Trunk Name".

В поле Peer Details размещаются настройки:

Настройки Peer Details

На скриншоте приведены наиболее распространенные параметры. Точная настройка делается администратором пользователя, в зависимости от конфигурации PBX. Очередность параметров не является обязательной.

type=friend

  • peer: SIP-запись, которую Asterisk может использовать для совершения исходящих вызовов (например, SIP-провайдер). А также для входящих вызовов, если Вам необходимо сопоставить эту запись не с именем пользователя из поля FROM, а с IP-адресом, указанным для этой записи. Для записи этого типа, для входящих вызовов, никогда не будет проверяться соответствие имени пользователя и пароля, а только соответствие с IP-адресом и номером порта источника вызова. SIP-клиент, типа peer, при совершении исходящих вызовов использует авторизацию, если она будет затребована вызываемой стороной.
  • user: SIP-запись, через которую вызовы могут поступать извне в Asterisk (телефон, который может только совершать вызовы). Пользователи, для которых назначены доступные им сервисы в определенных для них контекстах.
  • friend: Запись, которая одновременно user и peer. Этот тип наиболее подходит для телефонов и других устройств. Для SIP пользователей этого типа Asterisk создаст два объекта: один типа peer и один типа user, с одинаковыми именами.

qualify=yes – Посылать SIP запросы OPTIONS для проверки доступности устройства
host= – SIP сервер провайдера, предоставляется Mango Office
port= – Порт сигнализации SIP сервера, предоставляется Mango Office
transport=udp – Транспорт для SIP протокола

insecure=port,invite
port – Не требовать совпадения порта в инвайте
invite – Не требовать аутентификации в инвайте

dtmfmode=rfc2833 – Использовать спецификацию RFC2833 для передачи DTMF сигналов
disallow=all – Запретить использование всех кодеков, чтобы затем разрешить определенные.
allow=alaw – Разрешить использование кодеков.

peer – SIP-запись, которую Asterisk может использовать для совершения исходящих вызовов (например, SIP-провайдер). А также для входящих вызовов, если Вам необходимо сопоставить эту запись не с именем пользователя из поля FROM, а с IP-адресом, указанным для этой записи. Для записи этого типа, для входящих вызовов, никогда не будет проверяться соответствие имени пользователя и пароля, а только соответствие с IP-адресом и номером порта источника вызова.

SIP-клиент, типа peer, при совершении исходящих вызовов использует авторизацию, если она будет затребована вызываемой стороной.

Если клиент типа peer (тип friends включает в себя peer) определен с параметром host=dynamic, то он должен зарегистрироваться на Asterisk, для того, чтобы сервер мог найти его (IP-адрес или имя хоста), и для того, чтобы сервер знал, что данный клиент доступен для совершения вызовов в его сторону.

Сопоставление входящих вызовов с клиентами и пирами

Обычно, Asterisk ищет подходящего SIP-клиента, при поступлении входящего вызова, по полю From: username (без доменной части). Однако, если Asterisk не смог найти подходящего пользователя для поступившего вызова, то он будет использовать IP-адрес звонящего для поиска подходящего SIP пира с соответствующим адресом. Если же и после этого нет совпадений, тогда вызов будет отправлен на обработку в контекст, определенный в секции [general] файла sip.conf.

Проверка правильности заполнения полей

Нажмите Submit и Apply Config

ПОЯСНЕНИЕ: Для простоты можно сказать, что контекст транка определяет, как обрабатывать входящие вызовы, а контекст внутреннего номера - исходящие. Когда внутренний абонент куда-то звонит, в назначенном ему контексте определяется, через какие транки и куда он может позвонить. Исходящая связь через транк определяется в контекстах внутренних номеров и никак не упоминается в контексте, назначенном непосредственно транку.

Настройка входящих вызовов в закладке «Incoming»

Закладка Incoming остается пустой.

Вкладка Incoming

Как проверить состояние транка

Проверить состояние транка можно через меню Reports-Asterisk Info: Иконка Reports-Asterisk Info

Исходящая маршрутизация

Outbound Routes – исходящая маршрутизация FreePBX.

На основании набранного номера выбирается направление (транк) для исходящего вызова. Набираемый номер делится на префикс и паттерн и может модифицироваться после набора.

Connectivity → Outbound Routes (Подключения → Исходящая Маршрутизация)

Меню Outbound Routes

Настройка маршрута 1

Настройка маршрута 2

Настройка маршрута 3

Route name – имя маршрута

Trunk Sequence for Matched Routes – выбор транка для данного маршрута

Вкладка Dial Pattern

Шаблон набора номера (Dial Pattern) – это уникальный набор цифр, который позволяет отправить вызов в нужный SIP–транк. Если шаблон совпадает, то вызов отправляется через SIP–транк в сторону провайдера.

Шаблон набора номера имеет 4 поля настройки: Prepend, Prefix, Match Pattern и CallerID.

Формат шаблона: (prepend) prefix | [ match pattern / caller ID ], где

  • X – любое целое число от 0 до 9
  • Z – любое целое число от 1 до 9
  • N – любое целое число от 2 до 9
  • [#####] – любое целое число в скобках. Например, перечисление – [1.2.7], или диапазон чисел –[1.2.6-9], в который попадают числа 1,2,6,7,8,9
  • .(точка) - любой набор символов

Вкладка Dial Pattern

Поля, доступные для заполнения:

  • Prepend – данная часть будет добавлена к номеру, перед отправкой в SIP-транк в случае совпадения шаблона.
  • Prefix – префикс – это часть шаблона, которая будет удалена
  • Match Pattern – Набранный номер.

Важно

Asterisk ищет совпадения сопоставляя поле Prefix и Match Pattern.

CallerID – данный звонок будет выполнен только в случае, если звонок инициирован с указанного CallerID. В данном поле можно использовать шаблоны. Полезно, если компания имеет несколько офисов с нумерацией виду 1XXX, 2XXX и так далее.

Указанный на скриншоте шаблон 795ХХХХХХХ соответствует номерам из 10 цифр начинающимся на 795.