Стала необходимость настроить asterisk для звонков через 3g модем. Немного поискав нашел модуль под названием chan_dongle.
Имеем в наличии asterisk 11 на ubuntu. Модем huawei e173 (Djuice).
Для начала нужно открыть голос и отучить модем от sim карт оператора. Сделал я это через программу dc-unlocker. Мне эта программа припала по душе и я решил купить кредиты для разблокировки.
Что ж, начнем.
Скачиваем chan_dongle здесь или тут.
Разархивируем его и заходим в директорию:
tar xzvf chan_dongle-1.1.r14.tgzcd chan_dongle-1.1.r14/
Компилим и устанавливаем:
aclocal && autoconf && automake -a./configure
make
make install
На asterisk 11 возникнет следующая ошибка:
In file included from app.c:21:0: /usr/include/asterisk/version.h:1:2: error: #error «Do not include ‘asterisk/version.h’; use ‘asterisk/ast_version.h’ instead.» app.c: In function ‘app_register’: app.c:162:3: warning: passing argument 2 of ‘ast_register_application2’ from incompatible pointer type [enabled by default] In file included from app.c:20:0: /usr/include/asterisk/module.h:458:5: note: expected ‘int (*)(struct ast_channel *, const char *)’ but argument is of type ‘int (*)(struct ast_channel *, void *)’ make: *** [app.o] Error 1
Решение:
1. Качаем исходник с патчем
2. Ставим autoconf и automake
3. Разархивируем исходник, переходим в его папку и выполняем одну за другой команды: aclocal, autoconf, automake -a
4. Ставим chan_dongle как обычно: ./configure, make, make install
5. Копируем дефолтный конфиг из etc/dongle.conf в папку с конфигом астериска.
На этом установка завершена. Переходим к конфигурированию.
Для начала проверим определился ли наш модем системой, выполняем:
ls /dev/ | grep USB
И если видим что то вроде этого:
ttyUSB0 ttyUSB1 ttyUSB2
То значит все ок и идем дальше.
Переходим в директорию с asterisk и открываем dongle.conf:
cd /etc/asterisk/vim dongle.conf
Должно выглядеть примерно так:
[dongle0] audio=/dev/ttyUSB1 data=/dev/ttyUSB2 context=income
Пример настройки входящих звонков в extensions.conf:
[income] exten => +380XXXXXXXXX,1,Dial(SIP/100) exten => +380XXXXXXXXX,n,hangup
Пример настройки исходящих звонков в extensions.conf:
[out] exten => _X.,1,Dial(dongle/i:XXXXXXXXXXXXX/${EXTEN}) exten => _X.,n,hangup
Где XXXXXXXXXXXXX imei модема, через который хотите позвонить.
Note: Никогда не используйте екстеншен _X. так как это очень не безопасно!
Вот и все. Модем и asterisk готов к звонкам.
