Я предпочитаю ставить на серверах операционную систему Debian GNU/Linux, но данная инструкция будет вполне работоспособна и на Ubuntu Linux.
Установку модуля Dongle применительно к роутеру dir320 я уже подробно освещал, потому повторятся не буду в таких моментах как отключить флешку и виртуальный cdrom на модеме Huawei E1550, это подробно описано в инструкции.
Сам Asterisk устанавливаем по инструкции: Установка Asterisk 1.8 в Debian Squeeze либо Ubuntu Linux, сборка из исходников VOIP Asterisk
Установка аналогичная и на более новых версиях Debian, Ubuntu и иных основанных на Debian операционных системах, а также на не Debian системах, таких как Redhat, Centos...
Приступим к установке модуля Dongle
Первое, что необходимо сделать, это настроить udev, чтобы при подключении модема, он получал права пользователя Asterisk и сам Asterisk мог работать с модемом. Для этого создаем файл /etc/udev/rules.d/10-modem.rules командой:
echo 'KERNEL=="ttyUSB*", OWNER="asterisk", GROUP="dialout"' > /etc/udev/rules.d/10-modem.rules
При подключении модема мы можем посмотреть права которые он получил командой:
ls -la /dev/ttyUSB*
Ответ системы:
crw-rw---- 1 asterisk dialout 188, 0 Сен 30 22:08 /dev/ttyUSB0 crw-rw---- 1 asterisk dialout 188, 1 Сен 30 22:08 /dev/ttyUSB1 crw-rw---- 1 asterisk dialout 188, 2 Сен 30 22:08 /dev/ttyUSB2
Переходим в папку где будем работать над сборкой модуля из исходных кодов командой:
cd /usr/src/asterisk-src
Устанавливаем последнюю стабильную версию Dongle-1.1.r14:
Качаем, распаковываем и переходим в папку с исходниками модуля chan_dongle выполнив команды:
wget http://asterisk-chan-dongle.googlecode.com/files/chan_dongle-1.1.r14.tgz tar xvfz chan_dongle-1.1.r14.tgz cd chan_dongle-1.1.r14
Если на официальном сайте отсутствует архив с дистрибутивом модуля Dongle, скачиваем его с этого сайта:
wget http://softnastroy.com/downloads/asterisk/chan_dongle-1.1.r14.tgz tar xvfz chan_dongle-1.1.r14.tgz cd chan_dongle-1.1.r14
Запускаем конфигурирование, сборку и установку модуля chan_dongle командами:
./configure make cp chan_dongle.so /usr/lib/asterisk/modules/ cp etc/dongle.conf /etc/asterisk/
Устанавливаем самую последнюю разрабатываемую версию Dongle из svn:
aptitude install autoconf cd /usr/src/asterisk-src/ svn checkout http://asterisk-chan-dongle.googlecode.com/svn/trunk/ cd trunk/ aclocal autoconf automake -a ./configure make cp chan_dongle.so /usr/lib/asterisk/modules/ cp etc/dongle.conf /etc/asterisk/ chown -R asterisk:asterisk /usr/lib/asterisk/modules/chan_dongle.so /etc/init.d/asterisk restart
Добавляем в самый низ конфигурационного файла /etc/asterisk/dongle.conf:
vi /etc/asterisk/dongle.conf [modem1] ;0X3 - XXX-XX-XX - Life audio=/dev/ttyUSB1 ; tty for audio connection data=/dev/ttyUSB2 ; tty for AT commands ;imei=XXXXXXXXXXXXXXX ;imsi=XXXXXXXXXXXXXXX context=incoming-modem1 languge=ru group=1 rxgain=0 ; increase the incoming volume txgain=0 ; increase the outgoint volume autodeletesms=yes resetdatacard=yes ; reset datacard during initialization u2diag=0 ; set U2DIAG parameter (256 = modem+card_reader) usecallingpres=yes ; use the caller ID presentation or not callingpres=allowed_passed_screen ; set caller ID presentation
В файл /etc/asterisk/extensions.conf добавляем:
vi /etc/asterisk/extensions.conf ;;;;;;; GSM ;;;;;;; ;;; Life - (XXX-XXX-XX-XX) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [incoming-modem1] ; Предположим номер на симке Украина: 0632223344, Россия: 89852223344 указываем этот номер в контексте модема: ;;; Для Украины: exten => +380632223344,1,Set(CALLERID(all)=${CALLERID(num):3}) ;;; Для России: ;;;exten => +79852223344,n,Set(CALLERID(all)=${CALLERID(num)}) ;;; same => n,Set(CALLERID(num)=8${CALLERID(num):2}) same => n,Dial(SIP/101,60,KTt) same => n,Hangup() exten => ussd,1,Verbose(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})}) same => n,System(echo ${DONGLENAME} - ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${BASE64_DECODE(${USSD_BASE64})} > /var/log/asterisk/ussd_Life1-modem1.txt) same => n,System(echo "${DONGLENAME} (063-222-33-44) - ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${BASE64_DECODE(${USSD_BASE64})}" > /var/log/asterisk/ussd_Life1-modem1.txt) same => n,Hangup() exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})}) same => n,System(echo "${DONGLENAME} - ${CALLERID(num)} - ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${BASE64_DECODE(${SMS_BASE64})}" >> /var/log/asterisk/sms_Life1-modem1.txt) same => n,Hangup()
Для звонков через данный модем, в контекст sip пользователя который имеет право совершать звонки через данный модем добавляем:
;;; Life1 exten => _9X.,1,Dial(Dongle/modem1/${EXTEN:1},120,KT) same => n,Hangup(${HANGUPCAUSE})
Тут указано, что через 9 звоним на любой номер через gsm модем.
После установки модуля перезагружаем Asterisk командой:
/etc/init.d/asterisk restart
Для проверки модема запускаем консоль командой:
rasterisk
И выполняем в консоли комманду:
dongle show devices
dongle show devices - этой командой мы смотрим видит ли модуль наш модем. Вот мой вывод этой комманды:
serv*CLI>dongle show devices ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number Life-modem1 1 Free 5 5 4 life:) E1550 11.608.14.15.311 XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX Unknown serv*CLI>
!!! Обязательно сделать: Если вместо номера пишется Unknown, тогда необходимо задать номер сим карты с помощью двух команд в консоли Asterisk:
dongle cmd modem1 AT+CPBS=\"ON\" dongle cmd modem1 AT+CPBW=1,\"+380632223344\",145
Перезагружаем Asterisk и проверяем наличие номера в выводе модемов.
serv*CLI>dongle show devices ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number modem1 1 Free 5 5 4 life:) E1550 11.608.14.15.311 XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX +380632223344 serv*CLI>
Задача выполнена.
GSM шлюз на VOIP Asterisk и сервере Debian, либо Ubuntu Linux сделан и работает через 3G модем Huawei E1550
С Вами был Сергей Лазаренко.
Так как работа системного администратора очень связана с малоподвижным образом жизни, стараемся регулярно нагружать себя, например сделаем небольшую зарядку на 8 минут покачав пресс:
Add new comment