Совсем недавно я опубликовал свою практическую инструкцию как развернуть будь-то собственная АТС (для малой сети или для домашнего использования), см. заметку:

И там я вскользь упомянул, что можно с помощью подключенного пакета услуг от Мегафонапакет Мультифон получить свой собственный SIP номер. Так вот в этой заметке я практически разберу все шаги которые нужно проделать Вам чтобы организовать такую схему:

ИнтернетSIP (номер)ATC (Asterisk+FreePBX)базовая станция (Gigaset C620H, с переносными трубками) или SIP телефон, к примеру (ATCOM AT610,620 и многие другие) , по сути получится, что можно будет иметь внутренний номер, к примеру 101 и с него совершать звонки по тарифу значительно экономящему Ваши деньги, и даже иметь несколько номеров, допустим в каждой комнате будет свой номер:

  • Кухня — 101
  • Спальня — 102
  • Детская — 103

Можно звонить друг другу не тратя деньги — звонки то идут по локальной сети нежели использовать мобильную связь.

Что понадобиться:

  • Интернет (нужно чтобы у Вас была подключен интернет на квартиру или дом)
  • Интернет-центр через который осуществляется раздача интернета на внутренние домашние устройства, т. е. Организация домашней локальной сети, в роли интернет центра в моем случае выступает: Zyxel Keenetic Giga 2
  • ATC (Asterisk + FreePBX) поднята по заметке
  • Телефон с SIM картой Мегафон на котором буду подключать опцию Мультифон
  • IP телефон с поддержкой подключения через SIP (в моем случае это ATCOM AT 610)

Ладно теперь перехожу к практическому описанию всех шагов для достижения задуманного.

Подключаю опцию Мультифон на своем мобильнике с SIM картой от Мегафона, набираю:

* 137 * 1 # после приходит SMS, что опция подключена в которой значится, что SIP IP номер — это номер вашего телефона, в моем случае это (7926XXXXXXX@multifon.ru) и пароль: <PASSWORD>

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

Режимы могут быть следующими:

0 — звонки только на мобильный (как есть сейчас)

1 — звонки только через SIP (либо установлен на рабочей станции программный телефон либо настроен SIP телефон)

2 – звонки идут, как на мобильный так и на SIP телефон, вот этот режим работы я и буду применять на связку с Asterisk+FreePBX

Управлять режимами просто, проще всего через простой командный запрос, где необходимо будет указать login услуги Мультифон (был получен по sms), password (пароль) и режим приема входящих вызовов.

Для получения кода текущего режима приёма входящих вызовов:

ekzorchik@srv-serv:~$ 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>0</routing>

</response>

Из вывода видно, что текущий режим — это 0 — звонки только на мобильные телефоны.

<code200</code>данные введены корректно, также могут быть и другие коды

<code>101</code>проверьте корректность указанного пароля

<code>102</code>нельзя изменять настройку входящих вызовов (не подключена опция Мультифон)

<code>404</code>указанного пользователя не существует (проверьте, что указываете в соответствии с полученным в SMS сообщении)

Для установки другого режима входящих вызовов (мне как раз нужен второй), запрос имеет вид:

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

<?xml version=”1.0″ encoding=”UTF-8″?>

<response>

<result>

<code>200</code>

<description>OK</description>

</result>

</response>

Проверяю, что режим поменялся — вижу что поменялся:

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

<routing>2</routing>

Теперь плавно перехожу к настройке Trunk в Asterisk+FreePBX, открываю Webинтерфейс управления:

http://IP&DNS (Asterisk+FreePBX) – FreePBX Administration –

username = root

password = 712mbddr@

нажимаю Continue, после перехожу по элементам меню:

Connectivity – Trunksсоздаю новый Trunk (Add SIP Trunk) , настройки следующие:

Trunk Name: multifon

Outbound CallerID: 926XXXXXXX

CIP Options: Allow Any CID

Dialer Number Manipulation Rules (настраиваю правила вызова)

(prepend)+prefix|79XXXXXXXXX (девять иксов)

(7)+8|9XXXXXXXXXXX (одиннадцать иксов)

(7)+8|495XXXXXXX (семь иксов)

Dial Rules Wizards: (pick one)

Outgoing Settings:

Trunk Name: multifon-out

PEER Details:

dtmfmode=inband

username=7926XXXXXXX

type=peer

secret=PASSWORD

host=sbc.megafon.ru

fromuser=7926XXXXXXX

fromdomain=multifon.ru

port=5060

nat=yes

insecure=port,invite

Incoming Settings:

USER Context: multifon-in

USER Details:

type=peer

host=sbc.megafon.ru

dtmfmode=inband

Registration

Register String: (обязательный аргумент — строка регистрации у SIP провайдера)

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

А после нажимаем Submit Changes – Apply Config для применения настроек.

На заметку:

sm.megafon.ru — 80,443 TCP — для регистрации в услуге, изменения настроек;

sbc.megafon.ru — 5060 TCP+UDP (SIP) – для установки голосовых соединений, обмена статусами присутствия и текстовыми сообщениями;

sbc.megafon.ru — >6000 UDP (RTP) – для передачи голоса и видео;

im.megafon.ru — 80,443 TCP — для хранения настроек на сервере;

mms1.im.megafon.ru, mms2.im.megafon.ru — 80,443 TCP – для отправки MMS.

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

вызов на мобильные (все операторы) и городские телефоны с кодом 495 осуществляемые через 7, т. е. Сперва набираем 784956666666 и происходит звонок во вне.

Теперь проверяю прошла ли регистрация транка на сервере Megafon’на посредством подключения к Asterisk через консоль:

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

[sudo] password for ekzorchik:

Host dnsmgr Username Refresh State Reg.Time

sbc.megafon.ru:5060 N 7926XXXXXXX@ 165 Registered Wed, 28 Jan 2015 23:00:47

1 SIP registrations.

Если, как у меня значится статус Registered,Registrationsто все успешно.

Теперь на сервере с поднятой ATC создаю номер (Extension) для телефонного аппарата:

http://IP&DNS (Asterisk+FreePBX) – Applications – Extensions –

Device (Generic SIP Device) и нажимаю Submit, для создания внутреннего телефонного номера потребуется определение следующих параметров:

User Extension: 101

Display Name: 101

SIP Alias: 101

secret:pbx101

все остальные параметры пока оставляю дефолтными т. е. Не изменяю.

После нажимаю Submit – Apply Config

Теперь нужно настроить ATC (Asterisk+FreePBX) так, чтобы исходящие звонки шли через настроенный выше Trunk (транк):

http://IP&DNS – Connectivity – Outbound Routes

Route Name: multifon-out

Dial Patterns that will use this Route

()+7|ZX./

Dial patterns wizards: (pick one)

Trunk Sequence for Matched Routes

выбираем созданный trunk с именем multifon

Сохраняем настройки: Submit Changes – Apply Config

Отлично, теперь перехожу к настройкам которые необходимо указать на IP телефоне: ATCOM AT 610

Открываю Webинтерфейс:

http://IP&DNS (Asterisk+FreePBX), авторизуюсь, по дефолту:

Username: admin

Password: admin

Далее Logon, после: VOIP и приводим настройки по аналогии с ниже представленным скриншотом для удобства:

  • Server Address – указываю IP адрес сервера где развернут Asterisk + FreePBX
  • Server Port – указываю порт по умолчанию 5060
  • Account Name – созданный выше Extension телефонного номера
  • Password – Пароль от созданного выше Extension телефонного номера
  • Phone Number – Именование созданного выше Extension
  • Display Name – как будет высвечиваться на телефоне (при наличии дисплея) именование номера.
  • Enable Register – ставим галочку, чтобы зарегистрировать телефонный номер назначенный IP телефону, а после не забывает нажать APPLY для сохранения настроек в телефоне.

Регистрируем номер на IP телефоне ATCOM AT 610

После чего Вы должны будете обратить внимание на выделенную надпись красным цветом:

Register Status: Registered

Означающую, что IP телефон успешно зарегистрировал внутренний номер на Вашей ATC, теперь с него можно звонить (через 78926XXXXXXX или 78495XXXXXXX или даже можно позвонить самому себе и звонок на мобильный телефон пройдет) и принимать звонки, но для этого нужно настроить правило, здесь все просто:

http://IP&DNS (Asterisk+FreePBX) – Connectivity – Inbound Routes

Description: 101

Set Destination – Choose one – Esxtensions и находим созданный внутренний номер, <101> ext 101, по окончании настроек нажимаем Submit – Apply Config

Теперь при звонке из вне, с другого телефонного аппарата на номер с подключенной услугой Мультифон» звонок будет идти, как на мобильный так и на внутренний номер, но также есть но, сперва на Интернет-центре = Zyxel Keenetic Giga 2 нужно сделать правило доступа к данной ATC из интернета

Заходим на Webинтерфейс управления интернет центром:

http://IP&DNS – авторизуемся — Безопасность — Трансляция сетевых адресов (NAT) – Добавить правило

  • Описание: SIP
  • Интерфейс: Broadband connection (ISP) через который интернет центр подключен к провайдеру
  • Протокол: UDP/5060 – Интернет-телефония (SIP)
  • Перенаправить на адрес: 192.168.1.52
  • Новый номер порта назначения: 5060

Как только все настроена нажимаем Сохранить» для узаконивания изменений.

Когда мне звонят на мобильный (с подключенной услугой Multifonи режимом 2, то звонок проходит как на SIP телефон так и мой мобильный.

Если у Вас что-то из описанного выше не заработало, то искать причину следует из логов работы Asterisk:

ekzorchik@srv-serv:~$ sudo asterisk -rvvvv

Asterisk 1.8.10.1~dfsg-1ubuntu1, Copyright (C) 1999 – 2012 Digium, Inc. and others.

Created by Mark Spencer <markster@digium.com>

Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.

This is free software, with components licensed under the GNU General Public

License version 2 and other licenses; you are welcome to redistribute it under

certain conditions. Type ‘core show license’ for details.

=========================================================================

== Parsing ‘/etc/asterisk/asterisk.conf’: == Found

== Parsing ‘/etc/asterisk/extconfig.conf’: == Found

Connected to Asterisk 1.8.10.1~dfsg-1ubuntu1 currently running on srv-serv (pid = 1103)

Verbosity was 0 and is now 4

== Using SIP RTP TOS bits 184

== Using SIP RTP CoS mark 5

— Executing [7926XXXXXXX@from-trunk-sip-multifon-out:1] Set(“SIP/multifon-in-00000009”, “GROUP()=OUT_1”) in new stack

— Executing [7926XXXXXXX@from-trunk-sip-multifon-out:2] Goto(“SIP/multifon-in-00000009”, “from-trunk,7926XXXXXXX,1”) in new stack

— Goto (from-trunk,7926XXXXXXX,1)

— Executing [7926XXXXXXX@from-trunk:1] Set(“SIP/multifon-in-00000009”, “__FROM_DID=7926XXXXXXX”) in new stack

— Executing [7926XXXXXXX@from-trunk:2] NoOp(“SIP/multifon-in-00000009”, “Received an unknown call with DID set to 7926XXXXXXX”) in new stack

— Executing [7926XXXXXXX@from-trunk:3] Goto(“SIP/multifon-in-00000009”, “s,a2”) in new stack

— Goto (from-trunk,s,2)

— Executing [s@from-trunk:2] Answer(“SIP/multifon-in-00000009”, “”) in new stack

— Executing [s@from-trunk:3] Wait(“SIP/multifon-in-00000009”, “2”) in new stack

[Jan 30 18:15:30] NOTICE[2499]: channel.c:4149 __ast_read: Dropping incompatible voice frame on SIP/multifon-in-00000009 of format ulaw since our native format has changed to 0x8 (alaw)

— Executing [s@from-trunk:4] Playback(“SIP/multifon-in-00000009”, “ss-noservice”) in new stack

— <SIP/multifon-in-00000009> Playing ‘ss-noservice.gsm’ (language ‘en’)

== Spawn extension (from-trunk, s, 4) exited non-zero on ‘SIP/multifon-in-00000009’

— Executing [h@from-trunk:1] Macro(“SIP/multifon-in-00000009”, “hangupcall,”) in new stack

— Executing [s@macro-hangupcall:1] GotoIf(“SIP/multifon-in-00000009”, “1?theend”) in new stack

— Goto (macro-hangupcall,s,3)

— Executing [s@macro-hangupcall:3] ExecIf(“SIP/multifon-in-00000009”, “0?Set(CDR(recordingfile)=)”) in new stack

— Executing [s@macro-hangupcall:4] Hangup(“SIP/multifon-in-00000009”, “”) in new stack

== Spawn extension (macro-hangupcall, s, 4) exited non-zero on ‘SIP/multifon-in-00000009’ in macro ‘hangupcall’

== Spawn extension (from-trunk, h, 1) exited non-zero on ‘SIP/multifon-in-00000009’

srv-serv*CLI> Ctrl + C (чтобы выйти из режима вывода на консоль информации по работе)

Disconnected from Asterisk server

Executing last minute cleanups

Так я искал проблему, что мне не хватало опции allow=alaw в настройках Trunk и на этапе переадрессации на внутренний номер 101 неправильно был забит пункт: CallerID Numberя поставил 101, а это было неправильно. Вообще если не совсем корректно представляешь себе как все это должно работать, то сперва нужно собрать максимум информации из имеющейся, а уже потом после набросок плана приступать к его практической реализации. И, как правило, все сразу же становится понятным или понятным что нужно разобрать сперва прежде чем план воплотиться в завершенный план. У меня же так всегда. Этой заметкой я практически показал, как используя дополнительную возможность от Мегафона познакомиться с работой IP телефонии так сказать дома. В последующих заметках я постараюсь показать что-нибудь еще внедренное и используемое у меня на работе.

На заметку: Данной заметкой я не претендую на полное и развернутое описание всех полей что и за чем, я прежде всего выкладываю на свой блог для себя, а уже кто хочет – применяет мои наработки под свои задачи.

А пока все, с уважением автор блога — Олло Александр.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru