Využitie Asterisk telefónnej ústredne v praxi

16. Január, 2012, Autor článku: Ďuro Vladimír, Informačné technológie, Študentské práce
Ročník 5, číslo 1 This page as PDF Pridať príspevok

Telekomunikácie boli donedávna jednou z mála oblastí, do ktorých neprenikli riešenia typu open-source. Dnes už ale existuje a najpoužívanejšie riešenie je Asterisk. V článku si bližšie priblížime jeho možnosti všeobecne ako aj možnosti uplatnenia alebo použitia v praxi, konkrétne jednej telefónnej ústredne pre callcentrum vrátane nie len agentov, ale aj vedenie firmy, supervízorov atď.

1. Úvod

Keď si pozrieme doterajší vývoj, nasadzovanie a trhový podiel open-source riešení v íných odvetviach, je viac ako očákavateľné prerazenie tejto technológie aj v telefónii, k čomu pozitívne prispieva aj budovanie NGN (next generation network) sietí, či už v malom alebo veľkom rozsahu, po celom svete. Doterajšie zariadenia boli a sú finančne náročné už v ich základných balíkoch a príplatkové vybavenie má o to väčší vplyv na výslednú cenu produktu. Niet preto divu, že v čase šetrenia, keď je každý ušetrený cent vítaný, väčšina spotrebiteľov siaha aj po využití Asterisku, o čom svedčí aj jeho predpokladaný podiel na trhu, ktorý činí okolo 17%.

2. Asterisk

Asterisk v Unix/Linux terminológii vyjadruje náhradný znak *. Z tohoto dôvodu bol použitý ako pomenovanie systému v ktorom nesie zmysel virtuálnej náhrady pre hocičo. Asterisk je open-source telefónna platforma, ktorá je určená hlavne pre používanie na Linuxe. Asterisk spája viac než 100 rokov poznatkov z telefónie do robustnej sady úzko prepojených telekomunikačných aplikácií. Jeho sila spočíva v jeho prispôsobiteľnosti spojenej s kompatibilitou bezkonkurenčného počtu štandardov. Žiadna iná pobočková telefónna ústredňa nemôže byť využitá toľkými možnými spôsobmi. Aplikácie, ako je hlasová schránka, konferencie, radenie hovorov, agenti, hudba v pozadí, podržanie hovorov spolu so všetkými štandardnými funkciami zabudovanými priamo do jedného softvéru.

Dokonca, Asterisk je možné integrovať s inými zavedenými firemnými technológiami, čo bolo pri použití iných ústrední len snom. Asterisk sa môže zo začiatku zdať dosť zložitý pre nového užívateľa, čo je dôvod, prečo je dokumentácia taká dôležitá na podporu jeho masovejšieho rozšírenia. Dokumentácia zmenšuje bariéry vstupu na trh a pomáha ľuďom premýšľať o možnostiach ďalšieho využitia. Ako na open-source riešenie sa naň vzťahuje GNU General Public licencia a teda je voľne stiahnuteľný a šíriteľný. Z tohoto pohľadu sa dostávame k otázke, či je porovnateľný so zabehnutými konkurenčnými telefónnymi ústredňami ako napr. Alcatel, Panasonic atď. Je známe, že začiatky boli poznamenané nie najpovestnejšou stabilitou.

Vznikali situácie, keď bolo potrebné systém reštartovať z dôvodu nefunkčnosti čo v dnešnej dobe nie je prípustné. Ale ako všetky začiatky raz pominú, tak aktuálny stav sa už dá považovať za nasadenia možný do reálnej prevádzky. Aj tak sa ale zatiaľ nedoporučuje integrácia alebo náhrada systémov s veľkým počtom účastníkov. Pokiaľ by sme sa ale pre porovnanie pozreli na vývoj smerovačov založených na open-source riešeniach, ktoré porážajú klasické riešenia vo všetkých smeroch a radia sa do triedy profesionálnych zariadení, možeme povedať, že je ale len otázkou času, kedy sa asterisk bude mocť považovať za plnú náhradu terajších telefónnych ústrední [1].

3. Funkčné bloky

  • Ovládače VOIP protokolov,
  • Ovládače PSTN kariet a zariadení,
  • Smerovanie a správa prichádzajúcich hovorov,
  • Smerovanie a správa odchádzajúcich hovorov,
  • Správa multimediálnych funkcii (nahrávanie, prehrávanie, generovanie tónu …),
  • Tvorba štatistiky hovorov,
  • Konverzia medzi použitými prenosovými médiami,
  • Konverzia medzi protokolmi,
  • Integrácia databázy,
  • Správa webových služieb pre prístup využívajúci štandardné internetové protokoly,
  • Integrácia LDAP,
  • Správa konferenčných hovorov,
  • Funkcie nahrávania a monitorovania hovorov,
  • Integrácia „Dialplan“ skriptu pre riadenie hovorov,
  • Integrácia externého manažmentu programovacími jazykmi tretích strán cez AGI (Asterisk Gateway Interface) rozhranie,
  • Notifikácia udalostí pomocou AMI (Asterisk Management Interface) rozhrania,
  • Čítanie textu v rôznych jazykoch a dialektoch pomocou prídavných modulov,
  • Rozoznávanie hlasu v rôznych jazykoch a dialektoch pomocou prídavných modulov.

4. Konfiguračné súbory

4.1. Hlavný konfiguračný súbor:

  • asterisk.conf: udáva, kde sa nachadzajú priečinky patriace asterisku vrátane priečinku obsahujúceho konfiguračné súbory.

4.2. Konfigurácia kanálov:

  • adtranvofr.conf: konfigurácia hlasu cez frame relay,
  • agents.conf: konfigurácia agentov,
  • h323.conf: konfigurácia H.323,
  • iax.conf: konfigurácia IAX,
  • mgcp.conf: konfigurácia MGCP,
  • modem.conf: konfigurácia ISDN,
  • phone.conf: konfigurácia Linux telefónnych zariadení,
  • sip.conf: konfigurácia SIP,
  • sip_notify.conf: konfigurácia SIP Notify správ,
  • skinny.conf: konfigurácia Asterisk Skinny channels (Cisco SCCP),
  • vpb.conf: konfigurácia vpb (Voicetronix karty),
  • zapata.conf: konfigurácia Zap (Digium karty).

4.3. Konfigurácia ADSI (rozhranie analógových služieb):

  • adsi.conf,
  • asterisk.adsi,
  • Asterisk config telcordia-1.adsi.

4.4. Dialplan konfigurácia:

  • extconfig.conf,
  • extensions.ael,
  • extensions.conf: hlavná Dialplan konfigurácia.

4.5. Konfigurácia Dialplan príkazov:

  • alarmreceiver.conf: konfigurácia AlarmReceiver-u,
  • chan_dahdi.conf: konfigurácia Asterisk cmd DAHDiLookup,
  • dundi.conf: konfigurácia DUNDiLookup,
  • enum.conf: konfigurácia EnumLookup,
  • festival.conf: konfigurácia Festival,
  • indications.conf: konfigurácia tónov,
  • meetme.conf: konfigurácia MeetMe konferenčných miestností,
  • musiconhold.conf: konfigurácia MusicOnHold,
  • queues.conf: konfigurácia Queue,
  • voicemail.conf: konfigurácia VoiceMail.

4.6. Nekategorizované:

  • alarmreceiver.conf: konfigurácia AlarmReceiver aplikácie,
  • alsa.conf,
  • cdr_odbc.conf,
  • cdr_pgsql.conf,
  • cel.conf,
  • cel_pgsql.conf,
  • codecs.conf,
  • dnsmgr.conf,
  • features.conf: konfigurácia Call Parking,
  • http.conf: konfigurácia integrovaného HTTP servera,
  • logger.conf: konfigurácia logovania,
  • manager.conf: konfigurácia Asterisk manager API,
  • modules.conf: konfigurácia načítavania modulov,
  • odbc.conf: konfigurácia UnixODBC ovládačov,
  • oss.conf,
  • privacy.conf,
  • res_odbc.conf,
  • rpt.conf,
  • rtp.conf: konfigurácia RTP,
  • say.conf,
  • users.conf: konfigurácia užívateľov [2]

5. Priblíženie problematiky

Ako názornú ukážku možnej implementácie použiem riešenie, ktoré som navrhol, zfunkčnil a následne spravoval v jednom callcentre v Bratislave. Asterisk bol použitý ako kompletné telefónne riešenie pre celú spoločnosť. Riešenie bolo rozdelené na dve časti, podľa ktorých sa líšilo ako nastavenie tak aj funkcionalita:

  • spoločnosť – nahrávanie hovorov;
  • agenti callcentra – hlavná funkcia je využitie ústredne ako kompletného volacieho systému s automatickým vytáčaním, tvorbou štatistík, možnosťou spätnej dovolateľnosti, preplánovanie hovoru a iné;
  • zamestnanci, supervízori a vedenie – plná funkcionalita klasického telefónu s možnosťou prepojenia hovoru, voicemail, vnútrofiremná dovolateľnosť na princípe klapiek atď.


Obr. 1. Grafické delenie

Tab. 1. Región z hľadiska telekomunikácií

Agenti: 50
Supervízori: 2
Obchodníci: 2
Vedenie: 2
Recepcia: 1
Spolu: 57

6. Zapojenie a parametre

Ako základ ústredne slúži jeden server s aplikáciou Asterisk na operačnom systéme Centos, ktorý je odporúčaný hlavným sponzorom vývoja Asterisku, spoločnosťou Digium, konkrétne vo verzí 5.5. Pripojenie je zabezpečené providerom jednou osobitnou linkou (7Mb/s / 7Mb/s – pripojenie napriamo cez ZYWall USG300, čím je garantovaná permanentná dostatočná rýchlosť neovplyvniteľná zaťažením internetového pripojenia, ktoré má osobitnú linku ) na VOIP cez protokol SIP s možnosťou 60 súčnasných spojení naraz, nakoľko stav z ktorého vychádzame je, že volajú všetci agenti permanentne, vtedy je totižto zabezpečená najvyššia efektivita ústredne, čo je v tomto prípade dosahované vďaka automatickému vytáčaniu s možnosťou učenia sa kvality databázy podľa dovolateľnosti.

Hovor nesmie byť za žiadnych okolností ovplyvnený telefonátmi zamestnancov. Plus je výhoda mať voľné linky na prichádzajúce hovory, ktoré ústredňa pri plnom obsadení operátorov podrží, kým sa prvý z nich neuvoľní. Telefónna ústredňa je následne prepojená na switche odkiaľ je konektivita už k počítačom s nainštalovanými free-ware software-ovými x-lite telefónmi alebo k hardware-ovým zariadeniam zamestnancov, konkrétne modelom CISCO-linksys SPA942 alebo, v prípade recepcie, CISCO-linksys SPA525G z dôvodu prehľadnejšej obrazovky pre prepájanie hovor. Bol zvolený minimálny počet prepojení a zariadení nie len z dôvodu finančného, ale hlavne z dôvodu vznikajúcich opozdení na každom prepojení.

Taktiež funkčnosť SIP protokolu je dosť závislá na počte routerov pozdĺž cesty, kde sa preukazuje jeho hlavná nevýhoda a to je využitie rôznych portov pre signalizáciu a samotný prenos dát. Pri požiadavke zákazníka alebo inom dôvode zapojenia cez viacero routerov doporučujem použiť IAX protokol, nakoľko v jeho prípade nám Unifikácia signalizácie a zvuku zabezpečuje transparentné prechádzanie NAT-kom a pre použitie IAX protokolu cez firewall je administrátorom potrebné otvoriť jediný port 4569. Aj z tohoto dôvodu klient IAX nepotrebuje vedieť vôbec nič o sieti v ktorej sa nachádza. Z tohoto je jasné, že nemôže nastať situácia, kde sa dokáže spojiť hovor ale bez zvuku.


Obr. 2. Topológia VOIP

7. Konfigurácia

Celé vnútorné fungovanie asterisku je založené na extension-och, čo by sa možno dalo prirovnať k funkciám, kde volané číslo je premenná, podľa ktorej sa filtrujú príkazy na vykonanie. Pre jednoduchšiu predstavu ohľadom štruktúri ústredne pozrime na konfiguráciu základných prvkov pre funkčnosť hlavných funkcí (údaje ako meno, heslo a podobne sú čisto fiktívne).

7.1. Nastavenie SIP konta pre pripojenie s providerom – sip.conf:

[0232621720]
context=inbound
type=peer
secret=nc63v81r
username=0232621720
host=62.167.161.51
canreinvite=no
insecure=very
qualify=yes
nat=yes
disallow=all
allow=alaw
allow=gsm
requirecalltoken=no
[general]
register => 0232621720:nc63v81r@62.167.161.51

7.2. Nastavenie SIP konta pre pripojenie s agentom – sip.conf:

[agent01]
context=agenti
callerid=agent01
accountcode=agent01
disallow=all
allow=alaw
allow=gsm
type=friend
username=agent01
secret=1234
host=dynamic
nat=no

7.3. Nastavenie SIP konta pre pripojenie so zamestnancom – sip.conf:

[1]
context=zamestnanci
nat=yes
callerid=1
accountcode=1
disallow=all
;allow=ilbc
allow=gsm
allow=alaw
type=friend
username=1
secret=12321
host=dynamic

7.4. Nastavenie základného routovania – extensions.conf:

[nahravanie]
exten => _8309,1,Answer
exten => _8309,2,Monitor(wav,${CALLERID(name)})
exten => _8309,3,Wait,3600
exten => _8309,4,Hangup
[outbound]
exten => _90NXXXXXXXX,1,Set(CALLERID(num)=0232621720)
exten => _90NXXXXXXXX,2,Dial(SIP/0232621720/${EXTEN:1})
exten => _90NXXXXXXXX,3,Hangup
[agentiInside]
exten => _1XX,1,Dial,sip/agent${EXTEN:1}
exten => _1XX,2,Hangup
[zamestnanciInside]
exten => _X,1,Dial,sip/${EXTEN}
exten => _X,2,Hangup
[agenti]
include => nahravanie
include => outbound
include => agentiInside
[zamestnanci]
include => nahravanie
include => outbound
include => zamestnanciInside

[inbound]
exten => _0232661720,1,Answer
exten => _0232661720,2,Dial,sip/1
exten => _0232661720,3,Hangup

Všetky spojenia typu SIP sa konfigurujú v súbore sip.conf. Dané spojenie je potrebné pomenovať a potom sa mu zadávajú parametre ako meno, heslo pre zabezpečenie spojenia, ktoré sa dá znásobiť aj pridelením pevnej IP adresy druhého koncového bodu, alebo zadefinovať možnosť pripojenia sa z oblasti mimo danej podsiete (NAT). Dosť doležité je taktiež nastaviť použivané kodeky. Pri spojeni s providerom je za potrebu pre spätné dovolanie zadať názov extensionu s podmienkami pre dovolanie.

Teraz, keď máme vytvorené spojenia, môžeme ich začať medzi sebou prepájať. To vieme zabezpečiť pevne stanovenými pravidlami. Stanovenými podľa čísla a poradia vykonávaných akcí. Jednotlivé skupiny pravidiel možeme taktiež medzi sebou zlučovať pomocou príkazu include.

Ako už bolo povedané, asterisk sa obsahuje veľké množstvo aplikácii, ako na príklad nahravanie hovorov, ktoré sa spúšťa ako inak, zavolaním priradenej funkcie. Takýmto spôsobom sa dá s vytvoreným spojením robiť čokoľvek. Čokoľvek v zmysle, že existuje funkcia na spúšťanie php súborov a kto vie zhodnotiť potenciál php programovania, ten si vie predstaviť, aký silný nástroj nám takýmto spojením vznikne. Aby to nebolo všetko, dokážeme asterisk ovládať aj z vonka, konkrétne opačne, t.j. ovládať asterisk php skriptom. Na tomto princípe je založená teoretická integracia do akéhokoľvek už zabehnutého firemného systému alebo vytvorenie úplne nového na mieru zákazníkovi. Toto využíva viacero nadstavieb na asterisk a je to aj najčastejšie riešenie vytvorenia volacieho software-u pre callcentrá.

8. Stabilita

Dôkaz stability systému asterisk bol vykonaný v 2 nezávislých callcentrách na dvoch nezávislých ústredniach.

8.1. Test č.1:

Testy zahŕňal súbežné volania 100 agentov. Všetky volania boli enkódované z alaw kodeku na gsm a boli nahrávané. Tvorba databázových štatistík sa berie za samozrejmosť. Konfigurácia servera – skladaný:

Tab. 2. Konfigurácia servera – 1. test

Procesor Intel Quad Q9300
Ram 4 x 1GB
Raid 5 (Soft. – linux)
Disky 3 x 1TB
Graf. karta Nvidia FX7300 256MB

Zaťaženie:

Tab. 3. Zaťaženie – 1. test

Procesor 12%
Ram 11%

Za daných podmienok bol test vykonávaný jednu celú dennú smenu bez žiadneho výpadku. Test prebiehal aj nasledujúce dni, síce s menším počtom volajúcich, ale taktiež bez hocijakého výpadku.

8.2. Test č.2:

V prípade druhého testu bežala na asterisk serveri aj aplikácia určená pre callcentrá, ktorá zahrňuje webserver, databázový server a funkciu automatického vytáčania čísel z databázy a automatické priradenie zdvihnutých hovorov na najdlhšie čakajúceho agenta. Na server sa popri teste zapisovali aj výsledky volaní. Počet volajúcich bol v tomto prípade polovičný, teda 50 agentov. Konfigurácia servera – HP ProLiant DL180 G5:

Tab. 4. Konfigurácia servera – 2. test

Procesor Intel Quad Xeon E5440
Ram 2 x 2GB
Raid 5 (Hard. – HP 256MB)
Disky 3 x 1TB SAS
Graf. karta Intel – integrovaná

Zaťaženie:

Tab. 5. Zaťaženie – 2. test

Procesor 7%
Ram 18%

Server vydržal pri takomto zaťažení viac ako mesiac a následné zlyhanie bolo zapríčinené ľudským faktorom, nakoľko sa spomínaný server využíval aj na filtrovanie, párovanie a predprípravu databáz na volanie. Bola zaslaná na databázu cyklická požiadavka, ktorá síce nemala s telefónnou ústredňou nič spoločné, ale okamžite zahltila celý systém. V oboch prípadoch sa výsledky dajú považovať za viac ako uspokojivé.

9. Bezpečnosť v praxi

Dá sa povedať, že bolo iba otázkou času prvej snahy napadnutia systému zvonka. Jednalo sa o získanie služby na možnosť využitia vlastností telefónie na iného účet pomocou pripojenia menom a heslom. Takéto útoky prichádzajú zvonka a nie sú nami ovplyvniteľné. V tomto prípade sa jednalo o študenta vysokej školy zo Spojených štátoch amerických. Hádanie mena a hesla nebolo pomocou brute-force technológie, ale skúšaním dopredu zadefinovaných slov, tých najčastejšie používaných a tým pádom najpravdepodobnejších.

Pravdaže aj keď pravdepodobnosť uhádnutia týchto hodnôt zavisí od ich dĺžky a výberu znakov, možnosť že by sa mu podarilo pripojiť bola nulová, nakoľko všetky kontá mali zakázanú možnosť pripojenia sa mimo vnútornej siete. Útok trval približne 10 minút a nijako neovplyvnil fungovanie, stabilitu alebo zaťaženie systému.

10. Záver

Asterisk je viac ako len aplikácia telefónnej ústredne. V rukách skúsenejšieho užívateľa sú v ňom skyté možnosti, ktoré iba ťažko dosahujú nejakých hraníc. Jeho najväčšia sila je skrytá v možnosti komunikácie a integrácie do iných odvetví, čím môže vzniknúť funkčne prepojený a silný celok. Jeho negatívne stránky v podobe nestability a iných nepredvídaných správaní sú už dnes minimalizované na únosnú hranicu, ktorá sa pri zachovaní určitých podmienok dá porovnať s výpadkami konvenčných, masovo používaných, dôverihodných riešení. Ako dôkaz množstva teoretických údajov môže slúžiť fakt, že celá spoločnosť GTS Slovakia funguje na systéme asterisk.

Literatúra

  1. http://www.asterisk.org/asterisk
  2. http://www.voip-info.org/wiki/view/Asterisk+config+file

Spoluautorom článku je prof. Ing. Ivan Baroňák, PhD., Katedra telekomunikácií, Fakulta Elektrotechniky a Informatiky, Slovenská Technická Univerzita, Ilkovičova 3, Bratislava 812 19


Práca bola prezentovaná na Študentskej vedeckej a odbornej činnosti (ŠVOČ 2011) v sekcii Telekomunikácie I. a získala Cenu dekana, ISBN 978-80-227-3508-7

Napísať príspevok