GSM шлюз — Это просто

Настройка Астериск Asterisk

VoIP-GSM шлюз на базе модемаUSB HUAWEI E1550 для Asterisk

Для успешного использования USB 3G модема в качестве шлюза для голосовой связи из в GSM сеть и обратно необходимо активировать голосовую функцию, можно программой DC-UNLOCKER или набором утилит для активации голоса

Установка модуля канала chan_dongle для Huawei

Итак, мы уже имеем установленный и настроенный сервер Asterisk, как это сделать смотрим тут. Для связки наших модема и Asterisk мы будем использовать модуль chan_dongle. Архив для вашей версии Asterisk можно скачать тут https://github.com/jstasiak/asterisk-chan-dongle

Скачиваем и распаковываем архив:
# cd /usr/src
# wget https://github.com/jstasiak/asterisk-chan-dongle/archive/master.zip
# unzip master.zip

Далее необходимо скомпилировать наш модуль:
# aclocal
# autoconf
# automake -a
# ./configure
# make 
# make install

задание прав и пользователя устройства (Huawei E1550)

По умолчанию устройство имеет такие права:

# ls -la /dev | grep ttyUSB
crw-rw---T  1 root dialout 188,   0 Ноя  8 09:07 ttyUSB0
crw-rw---T  1 root dialout 188,   1 Ноя  8 09:07 ttyUSB1
crw-rw---T  1 root dialout 188,   2 Ноя 14 00:15 ttyUSB2

А Asterisk запущен из под одноименного пользователя

в консоли увидим:

chan_dongle.c: unable to open /dev/ttyUSB1: Permission denied

создадим правило udev

 nano /etc/udev/rules.d/e173.rules
 
 KERNEL=="ttyUSB[012]", OWNER="asterisk", GROUP="asterisk", MODE="0660"
 # /sbin/start_udev  
 # ls -la /dev | grep ttyUSB
crw-rw--   1 asterisk asterisk 188,   0 Ноя  8 09:07 ttyUSB0
crw-rw--   1 asterisk asterisk 188,   1 Ноя  8 09:07 ttyUSB1
crw-rw--   1 asterisk asterisk 188,   2 Ноя 14 00:15 ttyUSB2

Настройка модулей

Канальный модуль Huawei настраивается в dongle.conf. В данном файле необходимо изменить секцию [dongle0]

[dongle0]
imei=ваш imei
context=incoming-gsm
group=0
rxgain=3
txgain=3
resetdongle=yes
u2diag=-1
usecallingpres=yes

 

Проверка работы

Проверим состояние модема из командной строки Asterisk (). Перегрузить asterisk можно командой core restart now, а если система рабочая и идут вызовы, то core restart gracefully. Запущенные модули каналов просмотрим командой module show like chan_ Будет примерно так:

pbx1*CLI> module show like chan
chan_agent.so          chan_bridge.so         chan_dongle.so         chan_iax2.so           chan_local.so          chan_multicast_rtp.so  
chan_sip.so            chan_skinny.so         chan_unistim.so        chan_dahdi.so          
 
pbx1*CLI> dongle show devices
ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI             Number        
dongle0      0     Free       15   3    3       Tele2          E1550      11.608.14.15.311  351111111729366  40111111119549858  +77071234567

Для входящих вызовов, sms и ussd запросов настроим extensions.conf:

[incoming-gsm]
	exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
	exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD} - ${CALLERID(num)}: ${SMS}' >> /var/log/asterisk/sms.txt)
	exten => sms,n,Hangup()

	exten => ussd,1,Verbose(Incoming USSD: ${USSD})
	exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD}: ${USSD}' >> /var/log/asterisk/ussd.txt)
	exten => ussd,n,Hangup()
	
	exten					=> s,1,Goto(IVR,s,1,TtwW)
	exten					=> s,n,Hangup()

Для исходящей связи

exten => _87XXXXXXXXX,1,MixMonitor(/var/spool/asterisk/monitor/${UNIQUEID}.wav)
exten => _87XXXXXXXXX,2,Dial(Dongle/dongle0/+7${FILTER(0-9,${EXTEN:1})})
exten => _87XXXXXXXXX,3,Hangup()