GSM-шлюз на базе Asterisk

USB-модемы Huawai E1550 с помощью Asterisk позволяют организовать бюджетный gsm-шлюз (стоимость модема ~ 1000 руб.).

Asterisk + Huawai 1550

Многие операторы сотовой связи продают эти модемы со своими тарифными планами, но активированные голосовые функции usb-модема встречаются только у usb-модемов МТС. С остальными сначала придется активировать голосовые функции. Голосовые функции можно проверить в dashboard. Если голосовые функции активны, то переходим к настройке модема.
Настройку модема производим любой терминальной программой, например minicom. Подключаемся к data-порту модема: /dev/ttyUSB2.
Выполняем следующие команды:
AT^U2DIAG=0 – перевод модема в режим “modem only” (отключена флешка и cdrom).
AT^SYSCFG=13,0,3FFFFFFF,0,3 – модем в режиме 2G, автоматический поиск по всем частотам, роуминг отключен.

После этого устанавливаем datacard – модуль для работы USB-модемов Huawai с Asterisk.

wget http://datacard.googlecode.com/files/chan_datacard-1.0.r290.tgz
tar xzvf chan_datacard-1.0.r290.tgz
cd chan_datacard-1.0.r290/
./configure
make install
cp ~/chan_datacard/etc/datacard.conf /etc/asterisk

Редактируем datacard.conf:

[general]
interval=15 ; Количество секунд между попытками подключиться к устройствам
language=ru ; Язык по умолчанию

[datacard0]
context=datacard-incoming ; контекст для входящих звонков
rxgain=5 ; уровень входного усиления
txgain=-5 ; уровень выходного усиления
autodeletesms=yes ; авто удаление входящих sms
resetdatacard=yes ; перезагрузить datacard во время инициализации
u2diag=0 ; установка U2DIAG параметра (0 = выключение всех функций, кроме модема)
disablesms=no ; отключить sms
usecallingpres=yes ; callerid
audio=/dev/ttyUSB1 ; tty для аудио-канала
data=/dev/ttyUSB2 ; tty для AT команд
group=1 ; группа вызова

Редактируем extensions.conf

[macro-mobile]
exten => s,1,Dial(Datacard/datacard0/${ARG1},20,rtT)
exten => s,n,Hangup

; мобильные номера отправляем через datacard
[mobile]
exten => _26XXXX,1,Macro(mobile,${EXTEN})
exten => _27XXXX,1,Macro(mobile,${EXTEN})
exten => _56XXXX,1,Macro(mobile,${EXTEN})
exten => _57XXXX,1,Macro(mobile,${EXTEN})
exten => _70XXXX,1,Macro(mobile,${EXTEN})
exten => _71XXXX,1,Macro(mobile,${EXTEN})
exten => _72XXXX,1,Macro(mobile,${EXTEN})
exten => _73XXXX,1,Macro(mobile,${EXTEN})
exten => _74XXXX,1,Macro(mobile,${EXTEN})
exten => _75XXXX,1,Macro(mobile,${EXTEN})
exten => _76XXXX,1,Macro(mobile,${EXTEN})
exten => _77XXXX,1,Macro(mobile,${EXTEN})
exten => _78XXXX,1,Macro(mobile,${EXTEN})
exten => _79XXXX,1,Macro(mobile,${EXTEN})
exten => _89XXXXXXXXX,1,Macro(mobile,${EXTEN})

; обрабатываем входящие звонки, sms, ussd-запросы
[datacard-incoming]
; Отправляем входящие sms через Jabber-сервер (модуль jabber должен быть установлен в asterisk и настроен)
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})
exten => sms,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DATACARD} — ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}’ >> /var/log/asterisk$
exten => sms,n,Jabbersend(Asterisk,admin@web.local, ${DATACARD} — ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}.)
exten => sms,n,Hangup()
; Отправляем входящие ussd через Jabber-сервер (модуль jabber должен быть установлен в asterisk и настроен)
exten => ussd,1,Verbose(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
exten => ussd,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DATACARD}: ${BASE64_DECODE(${USSD_BASE64})}’ >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Jabbersend(Asterisk,admin@web.local, ${DATACARD}: ${BASE64_DECODE(${USSD_BASE64})}.)
exten => ussd,n,Hangup()
; отправляем входящий звонок на SIP/101
exten => s,1,Dial(SIP/101,20,rtT)
exten => s,n,Hangup

Для проверки баланса добавляем в /etc/crontab:

# m h dom mon dow user command
10 18 * * * root asterisk -rx «datacard ussd datacard0 *102#»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *