Нередко у пользователей, использующих 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
Собственно, настройка закончена. Диалплан буду писать завтра.