Соединяем Communigate Pro c PSTN шлюзами и SIP провайдерами

в 15:53, , рубрики: ip-телефония, pbx, PSTN, sip, Блог компании Сталкер Софт, метки: , ,

Соединяем Communigate Pro c PSTN шлюзами и SIP провайдерами

Несмотря на то, что значительная часть людей все чаще пользуется интернет сервисами вместо телефона или факса, телефонная линия еще долго будет обязательным элементом офиса. Поэтому для любого SIP/PBX решения важно знать как к нему подключить PSTN (ТФОП) шлюз.
В этом посте разберем:

  1. Подключение локального PSTN шлюза
  2. Подключение SIP провайдера, как второго «шлюза» для более дешевых международных звонков
  3. Маршрутизацию исходящих звонков между шлюзами


PSTN шлюзы обычно являются довольно стандартными SIP устройствами. Но из-за особенностей классических телефонных сетей при подключении к устройству напрямую у пользователей могут возникнуть проблемы:

  • В PSNT сети используется формат адресов E.164 (например +7901234567) а не account@domain как в SIP
  • Для исходящего звонка в большинстве случаев нужна аутентификация
  • Не все шлюзы поддерживают перевод звонков
  • Некоторые PSTN шлюзы и SIP провайдеры настроены на работу с отдельным SIP устройством и требуют периодических REGISTER запросов для перенаправления на него входящих звонков

Для решения этих проблем в Communigate Pro есть два PBX приложения, предназначенные для отправления и приема звонков с шлюзов — gatewaycaller и gatewayincomming. Кроме того, популярным приложением для приема звонков из PSTN сетей является приложение pbx, которое реализует функции авто-секретаря.

PBX приложение на сервере Communigate Pro это программа на интерпретируемом языке CG/PL, которая может выступать в качестве B2BUA. Тексты стандартных программ открыты и их можно найти на странице Пользователи->PBX:
Соединяем Communigate Pro c PSTN шлюзами и SIP провайдерами
В этой статье глубокое понимание работы PBX приложений не понадобится, мы будем ими просто пользоваться и нужно только уметь их запускать.

Основной способ запуска приложений это перенапрвление сигнала (например SIP INVITE) на адрес вида «appName#account@domain» с помощью правила или в маршрутизаторе.

Основы функционирования PBX приложений в Communigate Pro можно посмотреть в предыдущем посте.

Прием звонков от PSTN шлюза

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

Допустим шлюз присылает входящий звонок с SIP полем To: +74951234567@gateway.company.dom (gateway.company.dom — фиктивный домен, используется только для маршрутизации звонков от шлюза), тогда такая запись в маршрутизаторе

<+74951234567@gateway.company.dom> = pbx#pbx@localhost

Отправит все звонки из телефонной сети в голосовое меню авто-секретаря.

У некоторых моделей шлюзов есть еще один режим приема звонков из PSTN сети. При звонке из PSTN на SIP АТС, звонящему отправляется продолжительный гудок (как при простом поднятии трубки) и ему надо донабрать номер конкретного пользователя для дальнейшего соединения.
Конечно такая функциональность обычно нужна только при отсутствии полноценного IVR и в принципе лучше ее отключить.
Но и в этом случае можно настроить удобную маршрутизацию. Поле To: звонка имеет формат nnn@gateway.company.dom, где «nnn» это набранные цифры.

;звонки на адрес (3 цифры)@gateway.company.dom уходят в gatewayincomming, 
;цифры передаются в приложение в качестве параметра
<(3d)@gateway.company.dom> = gatewayincomming{*}#pbx@localhost
;все остальные звонки идут в IVR
<*@gateway.company.dom> = pbx#pbx@localhost

Прием звонков от SIP провайдера

SIP провайдеры и некоторые старыепростые PSTN шлюзы требуют SIP регистрации для отправки на устройство входящих звонков. В этом случае на стороне CGPro нужно выбрать пользователя, который будет принимать звонки (обычно это аккаунт pbx, так как по-умолчанию все входящие звонки этого пользователя попадают в IVR). И настроить ему RSIP:
Соединяем Communigate Pro c PSTN шлюзами и SIP провайдерами
RSIP настройки абсолютно аналогичны настройкам обычного SIP клиента.

Исходящие звонки

Маршрутизация исходящих звонков может быть очень сложной. Для большей наглядности рассмотрим упрощенную ситуацию:

  • Если номер начинается с 7 и состоит из 11 цифр — роутим на PSTN шлюз 10.1.1.1
  • Если номер начинается с 1 и состоит из 11 цифр — роутим на (вымышленный) SIP провайдер sipprov.net
  • Оба сервиса требуют аутентификацию

Первым делом добавим настройки аутентификации на обоих шлюзах для всех аккаунтов на сервере:
Соединяем Communigate Pro c PSTN шлюзами и SIP провайдерами
Так как шлюзов несколько, каждая настройка записывается в виде словаря настроек, где ключом является имя шлюза. "$" в поле CallerID подставляется на имя аккаунта.

Записи маршрутизатора при такой постановке задачи и настройках аутентификации выглядят так:

Signal:<7(10d)@*>=gatewaycaller{+7*,gwru}#pbx
Signal:<1(10d)@*>=gatewaycaller{+1*,gwus}#pbx

Поясним работу данных настроек на примере звонка в Россию.
Допустим пользователь набрал номер 7(123)456-78-90.
При применении записи, маршрутизатор выделит 10 последних цифр, добавит +7 в качестве первых символов (телефон в формате E.164, понятный любому оператору PSTN сетей) и передаст получившийся номер как первый параметр в приложение gatewaycaller.
После этого gatewaycaller смотрит PSTN настройки звонящего пользователя и ищет там группу настроек с ключом «gwru», который передали в программу вторым параметром.

Запись PSTN настроек в виде настроек учетной записи позволяет с одной стороны быстро изменять настройки для большинства (по-умолчанию), с другой, позволяет каждому пользователю иметь свой набор шлюзов.

Краткие итоги

Конечно все возможные варианты конфигурации PSTN шлюзов и соответствующих настроек сервера Communigate Pro в короткой статье рассмотреть не получится, но я постарался затронуть все основные и стандартные случаи.

Автор: stalkersoft

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js