Asterisk sa stáva čoraz populárnejším projektom pre VoIP riešenia, lebo nevyžaduje vysoké investície ako klasické proprietárne systémy. V tomto článku sa budem snažiť vysvetliť niektoré základné pojmy, ktoré sa zaoberajú vytvorením SIP účtov a konfiguráciu Asterisku ako VoIP pobočkovej ústredne. V závere článku by čítateľ mal byť schopný nakonfigurovať Asterisk a jeho základné funkcie a pripojiť SIP telefóny s ďalšími hlasovými funkciami.
Autorská poznámka
Pre tento článok som použil praktické ukážky na linuxovej distribúcii CentoOS. Samozrejme Asterisk môže bežať na ľubovolnej distribúcií OS Linux a pre testovanie a prvé kroky s Asteriskom je možné použiť aj rôzne virtualizačné stroje. Autor predpokladá, že inštaláciu a kompiláciu Asterisku už čitateľ zvládol, alebo má distribúciu s predinštalovaným Asteriskom. Návod na inštaláciu nájdete na na stránkach projektu Asterisk.
Základné pojmy
Zatiaľ čo prebieha kompilácia Asterisku, môžeme si vysvetliť niektoré základné pojmy, ktoré by ste mali poznať skôr ako začnete s konfiguráciou. Ako príklad pre konfiguráciu si urobíme model VoIP pobočkovej ústredne pre vašu kanceláriu. Na základe tohoto modelu budeme ďalej rozvíjať vlastnosti a schopnosti Asterisk telefónneho systému.
Extension – pobočka
Extensions môžeme v odľahčenej forme definovať aj ako programovací jazyk Asterisku. V konfiguračnom súbore Extensions.conf
je vytvorený krok za krokom postup, ako bude váš volací plán pracovať. Definície pobočiek sú uložené v súbore s názvom extensions.conf
. Tento súbor obsahuje všetky informácie pre smerovanie prichádzajúcich a odchádzajúcich hovorov. Konfiguračný súbor obsahuje tri základné sekcie: globals, kontexty a makrá. Globals parametre obsahujú všetky vaše globálne konfiguračné údaje. Definícia sa skladá z troch častí oddelených čiarkami, s úvodným textom exten =>
. Tento text oznamuje Asterisku, že je na začiatku definície. Formát pre pobočku vyzerá takto:
exten => pobočka,priorita,príkaz(parameter)
Môže sa to zdať mätúce, ale poďme sa pozrieť na ukážku extensions konfigurácie pre volanie do kancelárie napr. po pracovnej dobe.
[kancelaria] exten => 100,1,Answer exten => 100,2,Playback(po_pracovnej_dobe.gsm) exten => 100,3,Hangup
V prvom rade je kontext označený ako [kancelaria]
. Prvý riadok (exten => 100,1, Answer)
hovorí, že ak voláme na pobočku 100, Asterisk začne práve na tomto riadku. Druhý riadok prehrá volajúcemu audio súbor s názvom po_pracovnej_dobe.gsm
a po prehraní tohto súboru Asterisk ukončí hovor na tretom riadku.
Kontexty
V ďalšom odstavci sa zoznámime s kontextami. Správne pochopenie kontextu, je dôležité pre správnu funkčnosť dial plánu. V jednoduchosti kontexty definujú jednotlivé vlastnosti telefónneho systému, ktoré sú prostredníctvom kontextu prístupné. Pozrime sa na ďalší príklad:
[kancelaria] exten => 200,1,Dial(SIP/200,20) exten => 200,2,Voicemail(200) exten => 200,3,Hangup exten => 201,1,Dial(SIP/201,20) exten => 201,2,Voicemail(201) exten => 201,3,Hangup [sklad] exten => 300,1,Dial(SIP/300,20) exten => 300,2,Voicemail(300) exten => 300,3,Hangup
Tento príklad uvádza dva kontexty, pre kanceláriu a sklad. Obe kontexty majú spoločné, že keď sa volá na pobočku a pobočka do 20 sekúnd neprevezme hovor je presmerovaný do odkazovej schránky a potom je hovor ukončený. Rozdelenie do dvoch kontextov spôsobí, že pobočka 200 môže volať na pobočku 201, ale už nie na pobočku 300, ktorá je už v kontexte [sklad]
.
Makrá
Teraz, keď sme už spoznali logiku vytvárania kontextov, poďme sa pozrieť na Makrá. Makrá sú súvislosti v rámci dial plánu, ktoré sú definované a začínajú ako napr. [makro-volat_Pobocku]
. Makro je incializované znakom s
a potom pokračuje podľa jednotlivých riadkov. Uvedme si nasledujúci príklad: tentoraz nechceme volajúcemu oznámiť, že je po pracovnej dobe, ale chceme aby sa volajúci dovolal osobe, ktorú hľadá.
Makro je inicializované prostredníctvom makro príkazu:
[kancelaria] exten => 100,1,Answer exten => 100,2,Macro(volat_Pobocku,100,SIP/100) exten => 100,3,Hangup
Naše makro volat_Pobocku
požaduje dve parametre, ktoré majú byť prevedené. Po prvé, pobočka na ktorú sa nažíte dovolať, a následne aj koncová pobočka SIP.
[macro-volat_Pobocku] exten => s,1,Dial(${ARG2},20) exten => s,2,Voicemail(${ARG1})
Keď sa pozrieme na tento príklad, môžeme si všimnúť, že sa nejedná o definovanú pobočku. Ako už viete volať je možné len pobočky, ktoré sú v kontexte zadefinované. Zároveň však volajúci môže byť presmerovaný do iného kontextu prostredníctvom napr. goto príkazu. Pre ilustráciu povedzme, že vytvárate automatizovaný volací plán pre overovanie kreditných kariet. Systém vyzve volajúceho na zadanie svojho čísla kreditnej karty, potom makro s názvom over_kartu
prehrá volajúcemu čísla,ktoré zadal a vyzve ho aby pre súhlas stlačil 1 alebo 2 pre znovu zadanie cisla. Volajúci, však nemá žiadnu možnosť zadať iné číslo alebo pobočku, ktoré sú definované mimo makro.
Navrhnutie systému
Teraz, keď máme základné vedomosti o pobočkách, kontextoch a makrách, môžete začať navrhovať telefóny systému. Na účely tohto článku budeme predpokladať, že máme správne naištalovaný Asterisk a ako pobočky budeme pripájať softvérové SIP telefóny. Vzhľadom k tomu, že máte všeobecnú predstavu o tom, ako pobočky pracujú s kontextami, budete môcť volať z pobočiek medzi sebou. Jednotlivé konfiguračné súbory sú uložene v adresáry Asterisk a ich pomenovanie logicky vystihuje konfiguraciu. Napríklad vytváranie pobočiek je definované v extensions.conf a SIP klienti (teda sw telefóny) v sip.conf
súbore.
SIP klient
V našom prípade pripojíme softvérové SIP telefóny, ktoré bežia na počítači. Môžeme využiť známe softvérové telefóny ako Kiax, Kphone alebo SJphone a pod. Úprava sip.conf súboru, je veľmi jednoduchá pomocou akéhokoľvek textového editora, ako napr. na obrázku.
Nastavenia, ktoré potrebujete správne nakonfigurovať sú v sekcii [general]
. Tu si môžete definovať, aký port chcete využívať pre prístup SIP klientov (predvolené je 5060), bind address a ďalšie možnosti. Aby ste zabránili pripájaniu vonkajších SIP klientov k vášmu Asterisku, zmeňte nastavenie bindaddr vo vašom sip.conf na vašu vnútornú IP adresu sieťovej karty.
Ďalšou dôležitou súčasťou je správne nastavený kontext pre prichádzajúce SIP hovory, samozrejme aj pre jednotlivých SIP klientov možete urobiť individuálne kontexty, ale v našom prípade počítame s tým, že všetky prichádzajúce hovory budú smerované práve do kontextu, ktorý je definovaný v položke [general]
.
Tu je naša konfigurácia sip.conf
:
[general] context=kancelaria port=5060 bindaddr=192.168.1.2 ;IP adresa sieťovej karty Asterisku
Skôr ako budeme môcť začať používať softvérové telefónny, budete musieť vytvoriť jednotlivých SIP klientov. V tomto prípade by to boli telefóny v kancelárii. Dosiahneme to znovu úpravou sip.conf
súboru. Nižšie je konfigurácia pre telefón pracovníka Jana Testera s číslom pobočky 100.
[100] type=friend mailbox=100@kancelaria auth=md5 username=100 secret=12345 callerid=("Jan Tester" <100>) host=dynamic disallow=all allow=gsm allow=ulaw allow=alaw
Každý nový SIP klient má uvedený názov v hrantých zátvorkách a potom sa definujú jednotlivé parametre tohto klienta.
Type: Táto hodnota definuje, aký vzťah bude mať SIP klient k Asteriku. Dostupné možnosti: používateľ user, peer a friend.
Username: Užívateľské meno SIP klienta používané pri overovaní.
Secret: Heslo SIP klienta sa používa spolu s užívateľským menom pre autentifikáciu SIP služby.
Allow: Povolenie určitých hlasových kodekov pre komunikáciu s daným zariadením. Aby ste mohli preferovať len určité kodeky, je potrebné najprv zakázať všetky kodeky hodnotou disallow=all
.
CallerID: Toto je reťazec, po ktorým bude volajúci identifikovaný a, ktorý sa zobrazí volanému účastníkovi
Host: To určuje umiestnenie SIP telefónu. Ak je hodnota nastavená na dynamic, SIP telefón z akejkoľvek IP adresy sa bude registrovať na Asterisk. Iná možnosť je zadanie meno alebo IP adresu telefónu.
Mailbox: Určuje hlasovú schránku v prípade, že klient hovor nepreberie.
Potom, čo sme vytvorili SIP klientov a nakonfigurovali pre autentifikáciu na Asterisk SIP služby, potrebujeme vytvoriť smerovanie hovorov medzi jednotlivými SIP klientami. Aby sme to dosiahli, musíme začať úpravou súboru extensions.conf
.
Pre náš príklad, pridajte nasledujúcu konfiguráciu:
[kancelaria] exten => 100,1,Dial('SIP/100',20) exten => 100,n,Voicemail(100) exten => 100,n,Hangup exten => 200,1,Dial('SIP/200',20) exten => 200,n,Voicemail(200) exten => 200,n,Hangup
Obidve pobočky sú pripravené volať medzi sebou. Ak jedna pobočka volá priamo na druhú pobočku tak po 20 sekundách v prípade neprevzatia hovoru je volajúci presmerovaný do odkazovej schránky.
Odkazová schránka
Nastavenie odkazovej schránky sa upravuje v súbore voicemail.conf
. Tak ako sme si už zvykli, najskôr definujeme všeobecné nastavenia v sekcii [general]
a potom definujeme kontextové nastavenie. Nastavujeme formát hlasovej správy vo formáte napr. gsm, wav a pod.
[general] format = gsm|wav
Definícia kontextu odkazovej schránky je už v známom formáte:
[kontext] extension => heslo, skutočné meno, e-mailová adresa, užívateľské možnosti
V našom príklade nastavíme odkazovú schránku schránku pre každého z užívateľov:
[kancelaria] 100 => 456,Jan Tester,jan@firma_test.sk 200 => 789,Fero Pokus,fero@firma_test.sk
Teraz, keď Fero Pokus dostane novú hlasovú schránku, bude mu táto správa poslaná ako kópia do e-mailu fero@firma_test.sk
.
Záver
V túto chvíľu sme schopní telefonovať medzi Janom a Ferom. Prihláste sa ako užívateľ root a spustite
$ /etc/init.d/asterisk start
a Asterisk bude naštartovaný a súčasne si môžete nakonfigurovať softvérové telefóny. Nezabudnite zadať správne prihlasovacie meno a heslo, rovnako pamätajte, že Asterisk podporuje komunikaciu so SIP len cez UDP. Po úspešnom nakonfigurovaní si môžete začať volať.
Autor je pracovník spoločnosti DialCom Servis s.r.o., ktorá sa dlhodobo zaoberá VoIP telekomunikačnými riešeniami.