Linux
-Raspberry + Asterisk + Huawei = Voip SIP шлюз
Часто выезжаю за границу, с локальной SIM звонки в KZ стоят дорого, посетила мысль поднять VOIP шлюз на Raspberry, с двухсторонней связью...
# apt-get install asterisk asterisk-dev
# apt-get install usbutils autoconf automake
Установка chan-dongle для работы с USB модемом.
# svn checkout http://asterisk-chan-dongle.googlecode.com/svn/trunk/ dongle-read-only
# cd dongle-read-only
# aclocal && autoconf && automake -a
# ./configure
# make all
# make install
# /usr/bin/install -c -m 755 chan_dongle.so /usr/lib/asterisk/modules
# cp /usr/src/dongle-read-only/etc/dongle.conf /etc/asterisk/dongle.conf
# cp/usr/src/dongle-read-only/etc/extensions.conf /etc/asterisk/extensions.conf
Далее в /etc/asterisk/ редактируем конфиги:
sip.conf
[general]
externip=192.168.1.10 ;ip астериска
externaddr=192.168.1.10; тоже самое
localnet=192.168.1.0/255.255.0.0; локальная сеть астерикса
nat=force_rport,comedia; для работы за натом
context=public;
allowguest=no; не принимать звонки от не определенных абонентов
bindport=5060; порт
[1000];имя SIP аккаунта
type=friend
host=dynamic
secret=blablabla ;пасс
context=default
canreinvite=yes
dtmfmode=rfc2833
permit=0.0.0.0/0.0.0.0
qualify=yes
dongle.conf
[general]
interval=15 ; Количество секунд между попытками подключения к устройствам
[defaults]
context=dongle-incoming ; контекст для входящих вызовов
rxgain=4 ; увеличить громкость входящих; может быть отрицательным
txgain=4 ; увеличить громкость исходящих; может быть отрицательным
usecallingpres=yes ;использовать АОН
callwaiting=no ; Ожидающие вызовы включены 'yes'
dtmf=relax
[GSM1]
audio=/dev/ttyUSB4 ; Аудио порт модема
data=/dev/ttyUSB5 ; Порт для комманд
extensions.conf
[globals]
[default]
exten => 1000,n,Dial(SIP/1000);
exten => _7X.,1,Dial(Dongle/GSM1/holdother:+${FILTER(0-9,${EXTEN})})
exten => _+7X.,1,Dial(Dongle/GSM1/holdother:+${FILTER(0-9,${EXTEN})})
exten => _8X.,1,Dial(Dongle/GSM2//holdother:+7${FILTER(0-9,${EXTEN:1})})
exten => _007X.,1,Dial(Dongle/GSM1/holdother:+7${FILTER(0-9,${EXTEN:3})})
exten => h,1,Hangup()
[dongle-incoming-sms]
exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DONGLENAME} — ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}' >> /var/log/asterisk/sms.txt)
exten => sms,n,Hangup()
[dongle-incoming-ussd]
exten => ussd,1,Noop(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}' >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()
[dongle-incoming]
include => dongle-incoming-sms
include => dongle-incoming-ussd
exten => s,1,Dial(SIP/1000)
exten => s,n,Hangup()
# asterisk -rx "core restart now"
# asterisk -rx "dongle show devices"
Для автономной работы шлюза, использую резервный инет от оператора (проброс портов с внешнего сервера по VPN до шлюза)
Для SIP телефонии на iPhone использую Bria.