вторник, 4 декември 2007 г.

Asterisk като sip клиент

   Вчера реших да дам на VoiceLink 3 лева, за да ми дадат реален телефонен номер. Абонамента е месечен и се плаща месец за месец. След като от десетия опит най-после Epay решиха, че вече нямат проблем в комуникацията с VoiceLink приеха плащането и след 5 минути си имах постоянен реален номер, който се избира с код за София.
   Дойде момента да науча Asterisk-а да препраща входящите обаждания постъпващи на новия ми номер към моя вътрешен номер. Останах леко разочарован като разбрах, че записа в sip.conf не е достатъчно коректен, за да мога да избирам телефон чрез акаунта във VoiceLink през Asterisk, Открих, че за да работи правилно трябва да добавя още един ред в секцията а именно:

fromuser=USERNAME

и секцията да придобие следния вид:

[voicelink]
type=friend
fromuser=USERNAME
username=USERNAME
realm=voicelink
canreinvite=yes
md5secret=7a92b9ac81361f47c336aeb854727034
insecure=very
host=sip.voicelink.biz
disallow=all
allow=ilbc
allow=ulaw
allow=alaw
qualify=yes
outbound=proxy=sip.voicelink.biz


   След добавения ред вече можех да избирам номера извън вътрешната мрежа чрез VoiceLink акаунта, използвайки Asterisk като sip клиент. Остана да го науча и да приема обаждания. За да е възможно, трябва Asterisk-а да се регистрира към VoiceLink при стартирането си. Това става с добавяне на следния запис в секцията [general] на sip.conf

register => USERNAME:SECRET@sip.voicelink.biz:5060/EXT



   В примера USERNAME се замества с потребителското име, което се използва, за VoIP услугата на доставчика.
SECRET е паролата а EXT e разширението, което ще обработва "заявките" постъпили за този номер.

   Във файла extensions.conf, добавяме нов контекст (аз съм си го кръстил [incoming]), който съдържа следното:

[incoming]
exten => EXT,1,Dial(SIP/NUMBER,25,Ttr)
exten => EXT,2,Hangup


   Тук EXТ е името на разширението, написано в реда започващ с register => в sip.conf, a NUMBER, е вътрешния номер, към който да бъде пренасочено постъпилото обаждане. 25 указва, че ако до 25 секунди на обаждането не бъде отговорено то ще премине към Hangup. За да заработи всичко описано до тук трябва да присвоим и контекста [incoming] от фаила extensions.conf на канала [voicelink] от файла sip.conf, като добавим още един ред в съответната секция, а именно:

context=incoming

   В крайна сметка канала [voicelink] придоби следния вид:

[voicelink]
type=friend
fromuser=USERNAME
username=USERNAME
realm=voicelink
canreinvite=yes
md5secret=7a92b9ac81361f47c336aeb854727034
insecure=very
host=sip.voicelink.biz
disallow=all
allow=ilbc
allow=ulaw
allow=alaw
qualify=yes
outbound=proxy=sip.voicelink.biz
context=incoming


   Заради всичко описано по-горе се наложи да се занимавам и с кодеци и по-точно с добавянето на G729 поддръжка на Asterisk-a, който по принцип има лиценз, но има и open source версия (повече информация тук). Друг е въпроса доколко е удачно използването на кодек като G729, който може да работи на по-слаба връзка, но за сметка на това консумира повече ресурси заради компресията (въпроса е какво предпочиташ, да си платиш за по-висока интернет скорост или да си купиш до-добър процесор ;-) ), но приятелите от VoiceLink имат проблем с използването на кодеци като G711 и "горещо" препоръчват G729.


   Ако нещо от написаното по-горе е неясно или няма връзка с останалото, то причината е, че вече има тема за Asterisk, в която информацията е сходна и нещата се застъпват. Ето препратка. Друга причина може да е обема на написаното по-горе и липсата на каквото и да желание от моя страна да го прочета отново и евентуално да поправя неточностите ;-)

Няма коментари:

Публикуване на коментар