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

В общем имеем идею сделать из FusionPBX телефонную станцию провайдера, хотя бы частично. Задача возможно и тривиальная, но делаю я это первый раз, руки кривые поэтому забывать и пропускать некоторые моменты не хочется.

Что желательно получить на выходе:

  • Телефонная станция способная обслуживать около 10к телефонных аппаратов (GPON авторизуются через ONT, аналоги через IADы, SIP телефоны).

  • SIP номера для АТС клиентов.

  • Маршрутизация вызовов по более выгодным направлениям.

  • Гибкая и удобная система как для нас так и для клиентов.

  • По ходу дело тут будут дополнения.

Что имеем и на чем будем тренироваться:

Серверная сторона: FusionPBX на виртуальной машине, транк наш со станции на 30 каналов и 4 внешними номерами.

Тестовые клиенты: IssabelPBX(16 Asterisk), FreePBX(18 Asterisk), 2шт Yealink t21,4шт Atcom A10, 3cx Phone на 2 ПК.

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

В общем, вперед, начнем

Установку расписывать смысла нет. Сразу к настройкам.

  1. Так как все в локальной сети, то я завел сразу записи на внутреннем DNS sip001.domain.my sip002, sip003, sip004 по аналогии. После создал соответвующие домены на FusionPBX.

Вкладка Advanced- Domains
Вкладка Advanced- Domains

В основном работа будет в домене sip001 значит переходим в него, остальные до некоторой поры не трогаем.

  1. Теперь настраиваем транк (Gateway), у нас он в отдельном VLANe, на второй сетевой карте, поэтому есть свои нюансы.

Переходим Accounts- Gateways и нажимаем add

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

По пунктам и подробнее:

Gateway - жирный, просто имя шлюза.

Username - вообще по задумке тут вроде как должен быть номер, если оставить пустым то в поле from будет подставляться Freeswitch@proxy в качестве исходящего номера. Сначала я вставлял туда внешний номер и вроде как работало, но только с 1 номером. Не подходит поэтому в итоге оказалось что Caller ID In From True решает данные вопрос и в данном поле можно писать что угодно.

Password- у нас шлюз без регистрации, поэтому данное поле мы оставляем пустым.

From User | From Domain- так же пустые, нам не нужны.

Proxy- важный пункт. Тут указывается адрес сип сервера провайдера.

Register- в нашем случае регистрация не требуется, при значении false поля Username и Password станут не обязательными, но жизными останутся.

Отальное не трогаем до поля Caller ID In From

Caller ID In From- подставляет в поле From внешний номер, вот это то что нам просто необходимо.

Все остальные поля остаются по умолчанию, на данный момент.

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

  1. Переходим в внутренним номерам (Extensions)

В последствии внутренний номер будет соответствовать внешнему номеру, то есть внутренний 7значный городской номер вида 2XXXXXX или 3XXXXXX. Поэтому заводить будем такие же. Так как номера подаются пачками заведением проблем не будет.

Важных пунтов в настройках Exstension особо нет, всё создается автоматически. Дописывать только поле Toll Allow которое в будущем пригодится для разрешения вызовов на определённые направления.

Из не понятного Limit Max который не работает или работает но не так.

Теперь можно подключить SIP аппараты для проверки внутренних вызовов и дальнейшей работы.

  1. Sip Profiles

Важный пункт без которого внешние звонки у нас работать не будут это Advanced- Sip Profiles

Первое что просто необходимо сделать это бэкап этих самых профилей.

Заходим в профиль, нажимаем Copy, пишем имя и отключаем его что бы не мешал. Важно потому что после каких то манипуляций у меня профиль internal куда то потерял все настройки что было неожиданно и очень неприятно.

1-2-3
1-2-3

Профиль для внутренних вызовов Internal остается без изменений, изменения вносим в external.

Нас интересуют поля:

ext-rtp-ip наш IP адрес второй сетевой карты

ext-sip-ip наш IP адрес второй сетевой карты

rtp-ip наш IP адрес второй сетевой карты

sip-ip наш IP адрес второй сетевой карты

sip-port 5060, по умолчанию 5080, но нам через него подать не могут.

Теперь важный момент ACL, переходим в Advanced- Access Controls

Выбираем providers
Выбираем providers

Разрешаем ip нашего провайдера и сохраняем.

Теперь можно перейти в Status-SIP Status и посмотреть поднялся ли транк и запустились ли профили.

Если всё хорошо то можно переходить непосредственно к маршрутизации вызовов.

  1. Inbound Routes / входящие маршруты

Входящий маршрут у нас не так прост как на обычных АТС, мы точно не знаем какой на какой номер на прилетит звонок.

Поэтому будем делать так: переходим в Dialplan - Inbound Routes и жмём Add

Дальше нас интересует кнопка Advanced, жмём её

Выбираем advanced
Выбираем advanced
Любое имя, любое условие, любое действие, нажимаем Save
Любое имя, любое условие, любое действие, нажимаем Save

и заходим в созданный маршрут видим что тут получилось

теперь делаем то что нужно нам
теперь делаем то что нужно нам

Объясняю, к нам из транка потенциально прилетают DID семизначные цифры, то есть вида 2XXXXXX и 3XXXXXX, если такой номер есть то мы его принимаем и отправляем на соответвующий Exstension. Возможно это криво и не правильно, пока другого варианта максимально безкостыльно и не сложно сделать это я не нашел.

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

  1. Outbound Routes / Исходящие маршруты

Для исходящих переходим в Dialplan- Outbound Routes

Добавляем маршрут

Нас тут не все устраивает
Нас тут не все устраивает

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

И для удобства я добавлю ещё и вариант когда человек звонит с кодом города или с 727 впереди (для примера звонок на телефон приходит с кодом города 727XXXXXXX если нажать кнопку перезвонить то 727 тоже улетят в транк и вызов не пройдёт, может это у нас только так, хз).

В общем финально должно получиться так:

аналогично делается для мобильных, междугородних и международных

звонки на городские Алматы ^(?:8727|727|)(\d{7})$

звонки межгород ^(?:8|7)(7[12]0-8)(\d{7}))$

мобильные ^(?:8|7)(704567)(\d{8}))$

международные ^(810\d+)$

На этом моменте должны работать вызовы в обе стороны и продолжение будет в следующей серии.

Напоминаю, что это больше инструкция для себя, критика и советы приветствуются.

Комментарии (11)


  1. scruff
    28.11.2022 19:47

    Всем привет. Подскажите по девайсу - даже не знаю пока как его назвать. В общем - имеется старая ламповая Офисная миниАТС, у которой все порты аналоговые, что на городских линиях, что на экстеншнах. Никакой многоканальности и конференц-звонков вам. В перспективе хочу заменить данного динозавра чем-нибудь более современным из мира VoIP - Asterisk, FreePBX и тд. Но есть проблема - аналоговые городские линии в количестве 10+ не принадлежат клиенту, а являются собственностью Арендодателя здания. Арендодатель абсолютно не собирается "чесаться" о том чтобы перевести аналог в цифру. Поэтому единственный путь - найти девайс, в который на вход можно было бы воткнуть эти аналоговые городские "медные" линии, а на выходе получить готовый SIP-транк и отдать его будущему Asterisk-y, так чтобы через данный девайс этот Asterisk мог как звонить во вне, так и принимать входящие звонки извне с городских линий. Спасибо.


    1. mapnik
      29.11.2022 01:53

      Это называется FXO.
      Что-то примерно такое.

      Задача поддержки аналоговых стыков такова, что задача "заставить арендодателя чесаться о переводе аналога в цифру" вам в дальнейшем будет казаться плёвым делом. Подумайте ещё раз, прежде чем лезть в эту тему: может, всё-таки попробовать убедить арендодателя сначала одну линию перевести в ISDN BRI, принять его астериском, соединив его со старой АТС через FXS шлюз, обкатать технологию etc.?


      1. enamchuk
        29.11.2022 09:01

        ISDN BRI - это тоже сложности с настройкой и поиском оборудования. В России эта технология не прижилась, хотя в нашем регионе было несколько станций, предлагавших эту услугу. Лучше уж все номера перевести на ISDN PRI (Е1), в отличие от BRI там и голосовых каналов больше (тридцать вместо двух) и большой выбор оборудования, но ещё лучше - попросить эти номера по SIP, тогда не нужно будет покупать дополнительное оборудование, резервировать его.


        1. mapnik
          30.11.2022 03:59

          С BRI тесты дешевле, чем с PRI (при доступности обоих), вот о чём я.
          А сип — фигня по сравнению с православным E1, потому что задержки на порядок больше, а доступность обычно ниже.
          Оборудование E1 на ебее сто́ит от сорока долларов на порт (PCI/PCIe) с эходавом.


          1. enamchuk
            30.11.2022 22:15

            Вы, наверное, из Чехии :-)

            BRI можно найти в Европе, но в России он никогда не был популярной услугой.

            Оборудование под BRI также днём с огнём искать.

            Не знаю, в какой стране проживает человек, задавший вопрос, но в России на Авито можно за копейки найти Cisco 2811 или аналогичную с модулями E1 PRI.

            И на счёт SIP не соглашусь, т.к. многие операторы своим абонентам уже не тянут настоящий Е1, а ставят подобную Cisco возле абонента, а до Cisco идёт всё тот же SIP.


      1. scruff
        30.11.2022 08:49

        Убедить арендодателя к сожалению никак. А какие риски вы видите в FXO? У многих партнеров именно так и работает. Никто не жаловался что что-то глючит или сложно настраивалось.


        1. enamchuk
          30.11.2022 10:20

          Из основных проблем, первое - "зависание" линии (абонент положил трубку, но аналоговая АТС выдаёт "гудки", которые шлюз не распознаёт и не освобождает линию. Может помочь переполюсовка, если оператор это сделает, или придётся ставить "отбойник" - он анализирует гудки и самостоятельно разрывает линию).
          Вторая проблема - возможное эхо в голосовых каналах. В хороших шлюзах есть программные и аппаратные подавители эха, но качество работы у всех разное. И этот эходав влияет на качество звука.
          Третья проблема - вызов поступает на АТС (обычно) не сразу, а после второго вызова, т.к. шлюзу нужно между вызовами получить номер вызываемого абонента и передать его далее на вашу АТС.


    1. vanechek233
      29.11.2022 07:41

      Вам нужен sip шлюз с FXO портами


    1. CrazyTux
      29.11.2022 07:41

      Железка обзывается FXO-шлюз, их полно, я предпочитал модульные AddPac, но по факту производелей туева куча.... Сейчас к счастью мне это не требуется. Что до настройки связки с Астером - мануалов по шлюзам горы. Из опыта работы с этим барахлом, а FXO-шлюзы, даже от Циси, априори барахло, могут потребоваться еще отбойники, это отдельная тема, но тож в продаже есть у многих. Чего точно не советую связаться с чисто китайским барахлом типа AllVoip и прочими фанвилами, а вот Yalink брать можно.


    1. otkydadengi Автор
      29.11.2022 18:06

      А зачем плясать под провайдера? Очень ценный номер?

      Есть же множество вариантов получить как готовую АТС в облаке или транка sip через интернет.


  1. enamchuk
    29.11.2022 09:41
    +1

    Спасибо автору за статью. Большинство людей знают или хотя бы слышали об Asterisk (и сборках на её основе FreePBX, Issabel), но мало кто знает о Freeswitch (и Fusion).