Дружим GSM-модем c Asterisk

Нередко у пользователей, использующих Asterisk в работе, возникает необходимость подключить в систему мобильные номера. Основная причина такой необходимости — дешевые (или даже бесплатные) звонки на мобильные номера. Да и клиентам гораздо проще и дешевле звонить на мобильный номер, чем платить по 0.5-1.2 грн\мин за звонок на городской.

Как оказалось, украинское законодательство в этом плане довольно категорично — «приземлять» мобильные номера в стационарную сеть запрещено. Из 3 основных операторов только Астелит в данный момент предоставляет транспорт мобильных номеров в SIP. В представительствах же Киевстар и МТС мне вежливо отказали, предложив хитроумные схемы с использованием городских номеров и переадресаций.

Но задача остается задачей — в итоге пришлось остановиться на 2 вариантах: использовать GSM-шлюз или GSM-модемы. О шлюзе напишу попозже — в данный момент они в пути, а в этом посте более подробно остановлюсь на GSM-модемах.

У клиента есть: сервер с CentOS 15, asterisk 1.8+Elastix. В качестве модема используется Huawei e1550  как наиболее распространенный и наименее проблемный.

Итак, приступим-с.

Для начала, установим rpmforge (можно и без него, но он мне здорово облегчил жизнь):

#wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
#rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm

Теперь без танцев с бубном установим  usb-modeswitch:

#yum install usb_modeswitch
#yum install usb_modeswitch-data

Перезагрузимся и проверим, появился ли модем в системе:

#ls /dev | grep USB
ttyUSB0
ttyUSB1
ttyUSB2
ttyUSB3

Теперь установим модуль поддержки для Asterisk. Тут у нас целых 2 варианта: chan_datacard или chan_dongle

Я остановился на chan_dongle, но в целом оба модуля работают одинаково неплохо.

#wget http://asterisk-chan-dongle.googlecode.com/files/chan_dongle-1.1.r10.tgz
#./configure
#make
#make install

#cp etc/dongle.conf /etc/asterisk/

в конфигурационном файле нужно будет самую малость пошаманить, а именно указать /dev/ttyUSB*, соответствующий собственно аудио-и дата-каналам. по умолчанию это ttyUSB0 и ttyUSB1, но могут быть другие (у мена например выглядит так:)

 

[Life]
audio=/dev/ttyUSB1 ; tty for audio connection
data=/dev/ttyUSB2 ; tty for AT commands
;imei=XXXXXXXXXXXXXXX
;imsi=XXXXXXXXXXXXXXX
context=incoming-Life
languge=ru
group=1
rxgain=0 ; increase the incoming volume
txgain=0 ; increase the outgoint volume
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

Еще 1 причина, по которой был выбран dongle — у него есть возможность «прибить» логическое стройство к IMEI, что очень помогает в некоторых случаях (например, при наличии нескольких модемов при отключении они могут поменяться местами)

Подгружаем модуль и проверяем его работу:

>module load chan_dongle.so
>dongle show devices
ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI             Number      
Life 1     Free       5    5    4       life:)        E1550      11.608.14.15.311  XXXXXXXXXXXXXXX  XXXXXXXXXXXXXXX  Unknown

Собственно, настройка закончена. Диалплан буду писать завтра.

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

Войти с помощью: