Посты по тегу: utils

Подключаем к Asterisk мобильный телефон

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

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

Об этом и поговорим.

Итак, у нас есть сервер с Ubuntu 14.04, bluetooth dongle, и старый мобильный телефон типа Nokia 6300. Сразу устанавливаем все необходимое:

$ sudo apt-get update && sudo apt-get install asterisk asterisk-mobile bluez-utils bluez-hcidump libbluetooth-dev python-gobject-2 python-dbus

Теперь необходимо соединить телефон с нашим сервером. Посмотрим MAC адрес нашего донгла:

$ sudo hcitool dev
Devices:
hci0    00:15:83:3D:1A:57

Пробуем установить связь. Для этого нам понадобится небольшой скрипт:

$ pushd /tmp
$ wget https://raw.githubusercontent.com/DmitriyLyalyuev/simple-agent/master/simple-agent.py
$ chmod +x /tmp/simple-agent.py
$ hcitool scan
Scanning ...
  00:11:22:33:44:55   Nokia 6300

Мы нашли MAC адрес нашего телефона. Теперь нужно его подключить.

$ sudo /tmp/simple-agent.py hci0 00:11:22:33:44:55
RequestPinCode (/org/bluez/22380/hci1/dev_00_11_22_33_44_55)
Enter PIN Code: 4567
Release
New device (/org/bluez/22380/hci1/dev_00_11_22_33_44_55)

Если все прошло именно так, как описано выше, то настраиваем Asterisk:

/etc/asterisk/chan_mobile.conf:

[Adapter]
address = 00:15:83:3D:1A:57
id = Dongle

Перегружаем asterisk и ищем наш телефон:

$ sudo service asterisk reload
$ sudo rasterisk
asterisk*CLI> mobile search
Address           Name                           Usable Type    Port
00:11:22:33:44:55 Mokia 6300                     Yes    Phone   13

asterisk*CLI> module unload chan_mobile
asterisk*CLI> exit

Теперь у нас есть вся информация о телефоне и мы можем его вписать в конфигурацию.

/etc/asterisk/chan_mobile.conf:

[Adapter]
address = 00:15:83:3D:1A:57
id = Dongle

[Nokia]
address = 00:11:22:33:44:55
port = 13
context = from-phone
adapter = Dongle

Возврщаемся в консоль asterisk'a и загружаем модуль:

$ sudo rasterisk
asterisk*CLI> module load chan_mobile
asterisk*CLI> mobile show devices

ID              Address           Group Adapter         Connected State      SMS
Nokia           00:11:22:33:44:55 0     Dongle          Yes       Free       Yes
asterisk*CLI> exit

В итоге мы соединили наши устройства и Asterisk готов совершать вызовы через этот телефон.

Осталось настроить пользователей и планы звонков.

/etc/asterisk/sip.conf:

[internal](!)
type=friend
host=dynamic
context=home
dtmfmode=rfc2833
canreinvite=no

[200](internal)
secret=Password
callerid='Username' <200>

/etc/asterisk/extensions.conf:

[from-phone]
exten => s,1,Answer
exten => s,n,Dial(SIP/200)
exten => s,n,Hangup()

[home]
exten => _.,1,Dial(MOBILE/Nokia/${EXTEN})
exten => _.,n,Hangup()

Перечитываем конфиги и пробуем звонить.

$ sudo service asterisk reload

Исходящие звонки будут идти через телефон. Поступивший звонок на телефон будет переадресован на внутренний номер 200.

Осталось установить любой VoIP клиент на ноутбук или смартфон и звонить через интернет своим родным.

И не забудьте про правильные пароли, а то много ботов пытается подбирать пароль к пользователям asterisk'a. А еще лучше уставновите fail2ban для защиты от перебора пароля.