Несмотря на то, что значительная часть людей все чаще пользуется интернет сервисами вместо телефона или факса, телефонная линия еще долго будет обязательным элементом офиса. Поэтому для любого SIP/PBX решения важно знать как к нему подключить PSTN (ТФОП) шлюз.
В этом посте разберем:
- Подключение локального PSTN шлюза
- Подключение SIP провайдера, как второго «шлюза» для более дешевых международных звонков
- Маршрутизацию исходящих звонков между шлюзами
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:
В этой статье глубокое понимание работы 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:
RSIP настройки абсолютно аналогичны настройкам обычного SIP клиента.
Исходящие звонки
Маршрутизация исходящих звонков может быть очень сложной. Для большей наглядности рассмотрим упрощенную ситуацию:
- Если номер начинается с 7 и состоит из 11 цифр — роутим на PSTN шлюз 10.1.1.1
- Если номер начинается с 1 и состоит из 11 цифр — роутим на (вымышленный) SIP провайдер sipprov.net
- Оба сервиса требуют аутентификацию
Первым делом добавим настройки аутентификации на обоих шлюзах для всех аккаунтов на сервере:
Так как шлюзов несколько, каждая настройка записывается в виде словаря настроек, где ключом является имя шлюза. "$" в поле 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