Порой на меня находит, озарение или сказать, вот все посвящаю себя полностью разбору различной темы для расширения своего кругозора в области системного администрирования. На этот раз мой выбор пал на телефонию на базе консольного использования типа 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.