Как настроить Мультифон на Ubuntu Bionic

Posted by

Порой на меня находит, озарение или сказать, вот все посвящаю себя полностью разбору различной темы для расширения своего кругозора в области системного администрирования. На этот раз мой выбор пал на телефонию на базе консольного использования типа Asterisk без какой либо графической составляющей и кстати это правильное решение. Кто бы что ни говорил. В сегодняшней заметке я попробую разобраться, а актуально ли еще использовать опцию «Мультифон» на мобильном номере от «Мегафона». Ранее я использовал, даже применял на работе в качестве средства через которого мониторил баланс корпоративных SIM карт.

Отправная точка эта заметка: tips_ubuntu_18_04_asterisk_v1.odt

На SIM карте Megafon выполняю с телефона USSD запрос подключения услуги «Мультифон Бизнес»

* 137 * 1 #

  • 1. Получить или изменить пароль
  • 2. Настроить режим входящих
  • 0. Отключить

Отправил 1 и мне пришел ответ «Неполадки подключения или неверный код MMI», попробовал еще раз и пришел логин и пароль:

  • Логин: 7926XXXXXXX
  • Пароль: PASSWORD

Отлично.

Чтобы получить код текущего режима приема входящих вызовов:

ekzorchik@srv-bionic:~$ curl --silent "https://sm.megafon.ru/sm/client/routing?login=7926XXXXXXX@multifon.ru&password=PASSWORD"

<?xml version="1.0" encoding="UTF-8"?>

<response>

<result>

<code>200</code>

<description>OK</description>

</result>

<routing>2</routing>

</response>

На заметку: для подробного вывода можно и нужно указывать ключ «-v» после curl -v http

Так у меня код 200, а роутинг в значении 2 — это значит: прием звонков, как на телефон так и SIP телефон.

Установите режим приема входящих вызовов «только SIP» с помощью HTTPS запроса:

curl --silent https://sm.megafon.ru/sm/client/routing/set?login=7926XXXXXXX@multifon.ru&password=PASSWORD&routing=1

Проверьте правильность установки режима приема входящих вызовов с помощью HTTPS запроса:

curl --silent https://sm.megafon.ru/sm/client/routing?login=7926XXXXXXX@multifon.ru&password=PASSWORD

ekzorchik@srv-bionic:~$ sudo mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.backup

ekzorchik@srv-bionic:~$ sudo mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.backup

ekzorchik@srv-bionic:~$ sudo mv /etc/asterisk/modules.conf /etc/asterisk/modules.conf.backup

Посредством конфигуратора (https://multifon.megafon.ru/config/?type=%D0%90%D0%A2%D0%A1&id=8) от Мегафон формирую конфигурационный файл:

  • Сетевые настройки оборудования: DHCP — автоматическое назначение IP — адреса (по умолчанию)
  • Данные Вашей учетной записи «Мультифон»: указываю свой мобильный в формате (+7(926)XXX-XXXX)
  • Пароль: указываю пароль полученный при подключении услуги Мультифон
  • Выбор кодека: G.711

и нажимаю «Скачать файл-конфигуратор».

Но для себя я должен его разобрать и прокомментировать скрипт файл полученный через конфигуратор:

ekzorchik@srv-bionic:~$ sudo nano /etc/asterisk/sip.conf

[general]

;Включить поддержку TCP транспорта chan_sip Asterisk.

tcpenable=yes

;использовать все кодеки

allow=all

;строка регистрации транка

;

register => 7926XXXXXXX@multifon.ru:PASSWORD:7926XXXXXXX@sbc.megafon.ru:5060/7926XXXXXXX

;Чтобы совершать исходящие звонки

[multifon-out]

;использовать спецификацию rfc2833 или inband для передачи DTMF сигналов

dtmfmode=inband

username=7926XXXXXXX

;объект, через который совершаются вызовы. Формирует запросы OPTIONS, INVITE и тд.

type=peer

secret=PASSWORD

host=sbc.megafon.ru

fromuser=7926XXXXXXX

fromdomain=multifon.ru

;порт сигнализации sip сервера

port=5060

;политика использования NAT

;nat=yes

nat=force_rport,comedia

;правило обработки вызовов

context=incoming

insecure=port,invite

;транспорт для sip протокола

transport=tcp

;Настройка SIP телефонов

[1000]

;запись через которую совершаются входящие и исходящие соединения

type=friend

;это поле будет использовано для авторизации в сообщениях "SIP INVITE", которые наш Asterisk будет отправлять удаленному SIP серверу

username=1000

;пароль для поля авторизации

secret=pbx1000

;план обработки звонков, описывается в файле плана набора - extensions.conf.

context=phones

;самостоятельная регистрация телефона

host=dynamic

;образ действия сервера Asterisk для клиентов находящихся за NAT

nat=no

[1001]

type=friend

username=1001

secret=pbx1001

context=phones

host=dynamic

nat=no

;или лучше использовать шаблон настроек и подключать его

;настраиваю peer(ов)

;Настройка SIP телефонов

[template-sip](!)

type=friend

host=dynamic

srvlookup=yes

nat=no

disallow=all

allow=alaw

qualify=yes

context=phones

[1000](template-sip)

username=1000

secret=pbx1000

[1001](template-sip)

username=1001

secret=pbx1001

[1002](template-sip)

username=1002

secret=pbx1002

ekzorchik@srv-bionic:~$ sudo nano /etc/asterisk/extensions.conf

[general]

[globals]

[default]

;Вешаем трубку

[handup-sip]

exten => _X!,1,HangUp()

;Контекст для входящих вызовов на номер 7926XXXXXXX

[incoming]

;r → Указывает генерировать сигналы вызова вызывающему абоненту

;t → Разрешает вызываемой стороне переадресовать звонок, нажав кнопку #.

exten => 7926XXXXXXX,1,Dial(SIP/1000,60,rt)

;Контекст для исходящих вызовов

[outgoing]

;exten => _7XXXXXXXXXX,1,Dial(SIP/@multifon-out,30,r) - при исходящих звонках на номер начинающийся с 7 и содержащий (XXX)XXX-XX-XX, звонок будет идти через multifon-out имя SIP пира,

;exten => _7XXXXXXXXXX,1,Dial(SIP/@multifon-out,30,r)

exten => _7XXXXXXXXXX,1,Dial(SIP/${EXTEN}/@multifon-out)

include => handup-sip

;Локальный звонки между абонентами моей АТС

[local]

;при звонке начинающегося с единицы и после три символа, звонок идет через SIP протокол, ожидает 60 секунд и

;exten => _1XXX,1,Dial(SIP/$,60,rt)

;выше правило не работает, внутренние вызовы не проходят, нужно вот такое

exten => _1XXX,1,Dial(SIP/${EXTEN})

;Контекст (Правила работы с вызовами)

[phones]

include => incoming

include => local

include => outgoing

ekzorchik@srv-bionic:~$ sudo nano /etc/asterisk/modules.conf

[modules]

autoload=yes

autoload=yes

noload => pbx_gtkconsole.so

noload => pbx_kdeconsole.so

noload => app_intercom.so

noload => chan_modem.so

noload => chan_modem_aopen.so

noload => chan_modem_bestdata.so

noload => chan_modem_i4l.so

noload => chan_capi.so

load => res_musiconhold.so

noload => chan_alsa.so

noload => cdr_sqlite.so

[global]

noload => chan_oh323.so

noload => chan_h323.so

ekzorchik@srv-bionic:~$ sudo systemctl restart asterisk

ekzorchik@srv-bionic:~$ sudo systemctl status asterisk | head -n 5

● asterisk.service - LSB: Asterisk PBX

Loaded: loaded (/etc/init.d/asterisk; generated)

Active: active (running) since Wed 2018-10-17 23:24:34 MSK; 9s ago

Docs: man:systemd-sysv-generator(8)

Process: 13530 ExecStop=/etc/init.d/asterisk stop (code=exited, status=0/SUCCESS)

Проверяю, а прошла ли регистрация транка:

ekzorchik@srv-bionic:~$ sudo asterisk -rx "sip show registry"

Host dnsmgr Username Refresh State Reg.Time

sbc.megafon.ru:5060 N 7926XXXXXXX@ 55 Registered Wed, 17 Oct 2018 23:24:36

1 SIP registrations.

Отлично, теперь если я заведу телефонные аппараты на свою АТС то смогу согласно сформированному диалплану совершать звонки и изучать, изучать, изучать.

Устанавливаю приложение CSIPSimple на смартфон, включаю Wi-Fi на смартфоне и под учетной записью 1000 успешно подключаюсь.

На заметку: от 20.10.2018

Работают только внутренние звонки внутри АТС между абонентами, звонки наружу и извне не приходят, услуга «Мегафон SIP Бизнес» не работает, не дает изменить режим с 2 на 1 где звонки через мой мобильный номер на внутренний, и даже с 2 звонки на мобильный и SIP не проходят. Но транк зарегистрирован:

srv-bionic*CLI> sip show registry

Host dnsmgr Username Refresh State Reg.Time

sbc.megafon.ru:5060 N 7926XXXXXXX@ 45 Registered Sat, 20 Oct 2018 21:58:20

1 SIP registrations.

Это у Мегафона бывают временами сбои, то работает то нет, что самое печальное что годом ранее я таких проблем не встречал. Но это лишь мое наблюдение, может у Вас все прекрасно работает.

На этом моя заметка подходит к концу. До новых встреч, с уважением автор блога Олло Александр aka ekzorchik.