Не совсем обычная телефонизация

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

     Задачи были следующие:

 - организовать собственную трёхзначную нумерацию

 - организовать возможность прозвона на четырёхзначные номера вышестоящей организации

 - настроить автоматическую переадресацию входящих вызовов с определённых четырёхзначных номеров (которые раньше принадлежали компании, прим.) на определённые внутренние трёхзначные

 - организовать приём звонков по прямым городским аналоговым линиям

 - подключить 2 многоканальные SIP-линии и организовать приём и совершение звонков по ним

 - максимальная «прозрачность» (без обязательного набора дополнительных кодов)

     Техзадание было весьма куцым и содержало, по сути, только сопоставление «четырёхзначный -> трёхзначные номера» и «линия -> трёхзначные номера», набросанное от руки. Поэтому сперва я решил систематизировать всю информацию, чтобы увидеть, что мы имеем.

    Итак, по номерам:

 - порядка 25 трёхзначных внутренних номеров (с перспективой расширения)

 - 12 четырёхзначных номеров вышестоящей организации

 - 4 аналоговые городские линии

 - 2 многоканальных SIP-номера

    Из оборудования имеем следующее:

 - аналоговые телефоны

 - VoIP FXS шлюз Grandstream на 48 портов

 - VoIP FXO шлюз NeoGate на 16 портов

 - виртуальная машина с возможностью развернуть на ней Астериск

    Местный сисадмин предоставил мне доступ к этой виртуалке, а также к VoIP-шлюзам. Начал я с того, что закачал на виртуалку образ Эластикса и развернул его. 

    Весёлости начались уже на этапе подключения сип-транков от провайдера. Дело в том, что у Дом.РУ не совпадает UserID и AuthID, таким образом, строка регистрации выглядит вот таким вот диким образом:

[UserID]:[Password]:[AuthID]@[sip-server]:[sip-port]/[семизначный городской номер]

    Кроме того, значение type в свойствах пира - обязательно «peer», указание «fromuser=[UserID]» - обязательно.

    Наконец транки завелись, звонки пошли. А дальше переходим к самому интересному.

    Сперва немного расскажу о том, что такое FXS и FXO, и чем они различаются. FXS-порт – это активный порт, к которому можно подключить пассивный порт телефонного оборудования (например СО аналоговой АТС или обычный телефонный аппарат). FXO-порт – это пассивный порт, к которому, соответственно, можно подключить активный порт телефонного оборудования (например городскую линию или JACK аналоговой АТС). То есть в телефонии FXS-порт всегда соединяется с FXO-портом и наоборот.

    Таким образом, наш FXS-шлюз будет играть роль преобразователя IP-телефонии в аналоговую, и к нему будут подключены внутренние телефоны компании. FXO-шлюз, наоборот, будет преобразователем «аналога» в «цифру», и к нему будут подключены аналоговые городские линии и четырёхзначные номера компании от вышестоящей АТС. С точки же зрения Астериска, на FXS-шлюзе будут регистрироваться extensions, а FXO-шлюз будет сип-сервером и источником транков.

    Примерная схема коммутации:

 

 

 

    Теперь стало примерно понятно, что, куда и откуда должно входить и выходить. Приступим к настройке.

    Сперва заведём 48 внутренних номеров на Астериске (по максимальной ёмкости FXS-шлюза, так сказать, «на вырост»). Затем подключимся к шлюзу и методично перенесём туда 48 логинов и паролей.

    Затем идём в настройку первого профиля и указываем внутренний адрес нашего Астериска

    Если всё сделали правильно – то в операторской панели Эластикса увидим радующую глаз картину:

     Тёмно-оранжевый цвет означает, что номер успешно зарегистрирован. Теперь настроим FXO-шлюз. Первые 12 портов отведём под четырёхзначные номера вышестоящей АТС, порты 13-16 – под городские линии. Это делается в меню «VoIP-линии» (пароль придумываем сами)

 

    Не удивляйтесь, что вначале идут городские линии, потом внутренние – тут порядок неважен, просто на момент начала настройки про внутренние номера ещё не было ничего известно точно, поэтому их я «добивал» позже. Кстати, позже одна из городских линий также была заменена на четырёхзначный номер.

    Теперь настроим маршрутизацию. Сперва направление «VoIP -> порт FXO»

…а затем обратное, «порт FXO -> VoIP»

 

    Порядок, наш шлюз настроен. Пришло время «подружить» его с Астериском.

    Заходим в раздел транков и создаём новый транк.

    В качестве названия используем тот же четырёхзначный или семизначный городской номер, чтобы избежать путаницы, а в качестве сип-сервера – адрес нашего FXO-шлюза. Аналогичным образом заводим оставшиеся 15 транков. Да, Астериску абсолютно всё равно, чем по сути является транк – внутренним номером вышестоящей АТС или городской линией. Разница будет лишь в роутинге исходящих звонков, но об этом чуть позже. Сперва настроим роутинг входящих.

 

    Опять же, чтобы не путаться, назовём маршрут по номеру FXO-порта, а в качестве DID укажем вызывающий номер (четырёхзначный для первых 12 FXO-портов и семизначный городской для оставшихся четырёх). В назначении укажем принимающего звонки по этому маршруту (в моём случае это был либо трёхзначный номер или группа обзвона, но теоретически можно назначить что угодно, хоть автооператора). По аналогии настроим остальные 15 маршрутов (не забудем также настроить маршруты для двух sip-номеров Дома.РУ) и плавно перейдём к исходящей маршрутизации. А вот тут всё немного сложнее.

    Дело в том, что при наборе четырёхзначного номера звонок не должен идти через первый свободный транк. Почему? Очень просто. Допустим, есть на вышестоящей АТС номера 2222 и 3333. Звонки с них переадресовываются на внутренние номера, например, 101 и 102 соответственно. Если я наберу, например, номер 4444 с номера 102 – меня без проблем соединит с ним, только вот у принимающего высветится номер звонящего – 2222 (т.к. это был первый свободный транк). И если человек захочет перезвонить – он, разумеется, его и наберёт, а Астериск, в полном соответствии с роутингом, переведёт вызов на внутренний номер 101, который «ни сном, ни духом». Что же сделать? Можно, конечно, написать для каждого трёхзначного номера свой исходящий маршрут, но мне это показалось чересчур (их 48! Будет 48 исходящих маршрутов, Карл!).

    Поэтому я пошёл другим путём и установил дополнительный модуль «Custom Context». Устанавливается он через Unembedded FreePBX, раздел «Admin – Module Admin». Предварительно нужно скачать сам модуль (гугл поможет). Жмём кнопку «Upload Module», выбираем скачанный модуль и жмём «Upload». Потом в списке проверяем, что он загрузился и активировался.

 

     Перезагружаем Астериск. Модуль готов к работе. Создадим исходящий маршрут «External» (через него будут ходить звонки в город), а в шаблоне набора укажем следующее:

 

    Это значит, что звонок по маршруту пойдёт в том случае, если набрано 7 или 11 цифр. В качестве транков, через которые пойдут звонки, указываем SIP-номера Дома-РУ. Далее создадим 12 исходящих маршрутов (по одному на каждый четырёхзначный номер вышестоящей АТС), привяжем его к транку с соответствующим названием, а в шаблоне набора укажем вот что:

 

    То есть звонок по маршруту пойдет, если набрано четыре цифры. С маршрутизацией всё, идём настраивать контексты.

    В Unembedded FreePBX идём в меню «Other – Custom contexts» и создаём новый контекст.

 

    В пункте «Set All To» выбираем «Allow» (то есть все параметры перейдут в состояние «Разрешено»). Азатемзапретимнекоторыеизних:

 - ENTIRE Basic Internal Dialplan

 -ALL OUTBOUND ROUTES

     А также поставим «Deny» на всех маршрутах, через которые вызовы с этим контекстом ходить не должны (а должны они ходить только через External и тот маршрут, за которым закреплён соответствующий четырёхзначный номер). Аналогично создадим остальные 11 контекстов.

     Теперь идём в раздел «Extensions». Можем заметить, что там появилась дополнительная опция:

 

    Теперь нам нужно для внутренних номеров, на которые идёт переадресация с четырёхзначных номеров вышестоящей АТС, задать соответствующий контекст. Для остальных можно оставить контекст по умолчанию («Allow All») так как подразумевается, что они не будут звонить на вышестоящую АТС (хотя такая возможность у них будет, и вызов в этом случае пойдёт через первый свободный «четырёхзначный» транк).

    Фактически, настройка закончена, осталось всё тщательно протестировать.

    Примечательно, что вся работа была выполнена исключительно удалённо, на место выезжать не потребовалось.

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

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA на основе изображений
Введите код с картинки