Hlavní navigace

Asterisk 1.8 už není jen telefonní ústředna

18. 11. 2010
Doba čtení: 8 minut

Sdílet

Dne 21. října 2010 vyšla dlouho očekávaná major verze komunikačního řešení Asterisk označovaná jako 1.8. Ano, už to není pouze pobočková ústředna. Je to mnohem více a dokáže zastat mnohem více různých typů úkolů. Můžete přes něj třeba komunikovat s Jabber účty nebo jej propojit s kalendářem. Co umí?

Pokud se o Asterisku chcete dozvědět více, doporučujeme náš seriál Pobočková VoIP ústředna Asterisk.

Obecně o projektu

Verze 1.8 má přídomek LTS. Někdo to může znát například z označení některých verzí Ubuntu. LTS znamená Long Term Support a v tomto případě se jedná o čtyři roky, po které bude firma Digium nad projektem držet ochrannou ruku.

Pojďme si dát také trochu statistiky:

  • 219 vývojářů se podílelo na 3061 úpravách přijatých přes issues.asterisk.org
  • 334 testerů se podílelo na 998 testech reportovaných problémů
  • 502 uživatelů se podílelo na reportování 1162 problémů, které byly v 1.8 vyřešeny
  • 888 souborů bylo změněno; proběhlo celkem 373267 přidání a 58116 mazání
  • Z oficiálního webu byly staženy dva miliony kopií

Co je nového

Pokud začneme zeširoka tak, byly provedeny stovky vylepšení, které nejsou tak úplně vidět “na povrchu”:


  • zlepšení architektury
    • např. oddělení RTP do samostatného modulu ze SIP modulu (res_rtp_asterisk)
  • zvýšení výkonosti
    • např. zdvojnásobený počet registrací [5]
  • automatizované testy


Nové funkce

A už se také konečně dostáváme ke konkrétním funkcím, které uživatele zajímají samozřejmě nejvíc.

IPv6 – SIP/RTP

Média čím dál více masírují koncem světa kvůli nedostatku IPv4 adres. Proto se nám může brzo hodit podpora IPv6. Podpora je zatím pouze v SIP modulu, což nám ale pro telefonii stačí.

Pokud potřebujete ústřednu provozovat pouze na nějaké konkrétní Ipv6 adrese, můžete použít standardní konfigurační direktivu.

bindaddr=2001:db8::1

Pokud to navíc ještě potřebujete pro konkrétní protokol, tak můžete použít direktivy “ud­pbindaddr", „tcpbindaddr“ a "tlsbindaddr”.

Security event framework

V současné době narůstá počet útoků na VoIP infrastrukturu. Takže je logické, že vývojáři projektu Asterisk řešili, jak pomoci se zlepšením v této oblasti. Jelikož je poměrně obtížné vydefinovat, co je a co ještě není útok, dohodli se na zlepšení reportování oblastí které se týkají bezpečnosti. Samostatné akce prováděné nad těmito logy již poté proběhnou pomocí standardních nástrojů jako je iptables.

Vznikl tedy “bezpečnostní framework”.

Ten se skládá ze dvou základních komponent:

  • Security Event Generation
  • Security Event Logger

Security Event Generation

Tato část je tvořena ast_event API rozhraním, kterým jednotlivé moduly můžou reportovat věci týkající se bezpečnosti.>

Security Event Logger

Tato část zajišťuje generování událostí do určeného logu. Formát je dobře strukturovaný což umožňuje dalším nástrojů jednoduché zpracování.

Logování se aktivuje v konfiguračním souboru logger.conf  takto:

security_log => security

Kompletní seznam událostí a detailnější popis je uveden v [6].

Secure RTP (SRTP) pro SIP

Velmi zásadní funkcí, která dá zelenou pro nasazování Asterisku ve firmách a státních institucích, je šifrování hovorů. Tato funkce se dostávala do projektu dlouhých 5 let [9].

SRTP je implementováno pomocí Sdescriptions. Od implementace MIKEY bylo upuštěno. Pro zabezpečení signalizace je třeba použít TLS, které je implementováno již od verze 1.6.

Funkce je jednoduše aktivována v sip.conf parametrem

encryption=yes

V dialplánu je možné ověřit a například povolit pouze šifrované hovory

exten => 123,1,GotoIf("$[${CHANNEL(secure_signaling)}" = ""]?fail)
exten => 123,n,GotoIf("$[${CHANNEL(secure_media)}" = ""]?fail)
exten => 123,n,Dial(SIP/123)
exten => 123,n,Hangup
exten => 123,n(fail),Playback(vm-goodbye)
exten => 123,n,Hangup

Podpora spolupráce s kalendáři

Tato funkce může být zajímavá pro firmy, které používají k organizaci času kalendáře. Podporovány jsou všechny známé typy – Exchange 2003/2007/2010, iCal, CalDAV.

Modul umožňuje sledování stavu kalendáře. Dokáže do kalendáře zapisovat. Umožňuje telefonicky upozorňovat na blížící se schůzky atd. Dle kalendáře můžete řídit vaši linku.

Příklad:

Dle kalendáře jste mimo kancelář. Linka je přesměrována na mobil. Po příchodu do kanceláře je linka směrována na telefon v kanceláři (existují docházkové systémy, které zapisují data do kalendáře např. Systém AKTION od firmy EFG). V 10:30 máte poradu a linka je přesměrována na kolegu. Ve 14:30 odjíždíte na jednání se zákazníkem a linka se dle kalendáře přesměrovává na mobil.

Na kalendářovém modulu se podílel student z našich luhů a hájů Jan Kaláb z VUT za sponzoringu firmy IPEX. Na obrázku je příklad, jak může nastavení spolupráce linky a kalendáře vypadat:

Konfigurace kalendáře v IPEX iPBX 2.3

Pro podrobnější popis kalendářů viz [7].

Integrace Jabber/XMPP funkcí

Byla rozšířena podpora protokolu XMPP. Nově jsou podporovány chat roomy. V dialplánu je možné přijímat zprávy. Podpora metody PubSub. V aplikaci SendText je možné posílat XMPP zprávy na určené Jabber ID. Obecně se nejvíc integrace Asterisku a XMPP používá při notifikaci o příchozím hovoru.

Call Event Logging (CEL)

V podstatě by se dalo říct, že se jedná o systém uchování seznamu hovorů (Call Detail Records – CDR) nové generace. V současné době většina ústředen dokáže uchovat pouze základní informace o uskutečněném hovoru.

Příklad: čas volání, volající číslo, volané číslo, délka hovoru…

Novější VoIP ústředny ještě občas obsahují například IP adresy telefonů, kodek atp.

Nyní si představte následující situaci:

Zákazník se dovolá na zelenou linku. Chvíli mluví s operátorem. Operátor ho přepojí na obchodníka. Obchodník ho přepojí na technika. Ten ho přepojí do skladu, aby zákazníkovi poslal nový router.

Teď si představte, že v rámci velmi dobré obsluhy zákazníka chcete zjistit, proč router nebyl zákazníkovi odeslán. Sklad tvrdí, že žádný takový hovor neobdržel.

V CDR může být třeba pouze tento záznam

2010-09-09 15:33, 222333444, 800123456, 456

Pokud, ale použijeme CEL tak máme záznam celého hovoru a ten ho jasně usvědčí!

ConfBridge – audio konference

Již od verze 1.6.2 je k dispozici alternativa k audiokonferen­čnímu modulu MeetMe. Důvodem je závislost MeetMe na “časovači”. U modulu ConfBridge tato závislost ve verzi 1.8 úplně odpadá.

Call Completion Supplementary Services (CCSS)

Tato ryze telefonní funkce usnadňuje “dovolání se”. V případě, že volající hovor nezvedá nebo má obsazeno, ústředna hlídá stav volaného a zkouší hovor opakovaně spojit. Funkce je podporována v protokolech SIP a ISDN.

Konkrétně se jedná o funkce Call Completion Busy Subscriber (CCBS) a Call Completion No Response (CCNR).

Advice of Charge (AOC-S, AOC-D, AOC-E)

Rodina funkcí AOC je určena pro přenášení informací o účtování. Jeden z typů je například určený pro zobrazení ceny hovoru na displeji telefonu.

AOC-S: zasílán na začátku hovoru. Obsahuje seznam cen hovorného vztažený k hovoru.

AOC-D: zasílán v průběhu hovoru. Informace o aktuální ceně hovoru.

AOC-E: zasílán po ukončení hovoru. Obsahuje finální cenu hovoru.

U ISDN je AOC podporováno v režimu “passthrough”. Tzn. propouští informace o AOC na další zařízení. Aktivuje se v chan_dahdi.conf  takto:

aoc_enable=s,d,e

U SIPu lze nyní AOC posílat. Zobrazují jej např. Telefony Snom. AOC je dále podporováno i v manager API. AOC zprávy lze generovat.

Příklad:

Action: AOCMessage
Channel: DAHDI/i1/1111-1
MsgType: d
ChargeType: Currency
CurrencyAmount: 16
CurrencyName: USD
CurrencyMultiplier:
OneThousandth
AOCBillingId: Normal
ActionID: 1234
Response: Success
ActionID: 1234
Message: AOC Message
successfully queued on channel

Zlepšená podpora TDM a T.38 Faxování

Bylo začleněno mnoho oprav a chyb, které zlepšují fungování faxů. Je možné, že do 1.8 stromu se ještě dostane i podpora T.38 gateway funkcionality, která umožní posílání faxů pomocí protokolu T.38 pokud máte v Asterisk serveru HW kartu(PRI,BRI,F­XO,FXS,…).

V případě, že byste se chtěli podílet na dokončení této funkce, tak mě prosím kontaktujte na adrese cervajs (zavináč) freevoice.cz.

Menší novinky u SIPu

V dialplánu je možné vybrat kodek pro odchozí hovor. Podpora informace o zavěšení hovoru – SIP Q.850 Reason Header. Využívá se pro získání informace o čísle kauzy, s jakou byl hovor zavěšen, např. Obsazeno – kauza 17.

Connected party ID

Volněji popsáno “identifikace opravdu spojeného volaného”. Na displeji telefonu vidíme opravdu až spojené koncové číslo. Představte si scénář, kdy voláte kolegovi Honzovi na linku 200, který má přesměrováno na kolegyni Andreu s linkou 300. Na telefonu uvidíte, že hovoříte s linkou 300, i když jste původně volali na 200.

Funkce je v Asterisku podporována na většině protokolů – SIP, IAX2, H323, ISDN (chan_dahdi i chan_misdn). Funkce je podporována automaticky. Asterisk posílá updatované informace o hovoru. Funkci je možné ovlivňovat i dialplánem.

Upgrade z 1.6 nebo starších verzí

V této kapitole bych chtěl upozornit na některé změny na které je potřeba si dá pozor při upgradování. Určitě doporučuju přečíst jednotlivé dokumenty UPGRADE-1.X.txt kde X je verze Asterisku. Tyto dokumenty jsou umístěny přímo ve zdrojových souborech.

  1. Dříve samostatný balík asterisk-addons byl začleněn přímo do balíku Asterisk. Jednotlivé moduly můžete aktivovat při kompilaci pomocí make menuselect.
  2. RTP stack v asterisku byl modularizován a vyjmut ze SIP kanálu. Nyní je přesunut do samostatného modulu res_rtp_asterisk. Pokud nepoužíváte automatické nahrávání modulu při startu Asterisku tak musíte mít v modules.conf tento modul explicitně specifikován jinak Vám nebude fungovat volání.
  3. Proměnné systému začínající AST_ jsou rezervovány systémem.

Závěr

Na závěr jsem si nechal dvě specialitky. První specialitkou je funkce PITCH_SHIFT, která dokáže online manipulovat s hlasem. Patří do skupiny těch funkcí, které nemusí být vůbec užitečné, ale pobaví [8]. Co takhle změnit hlas vedoucímu při audiokonferenci? Je ovšem jasné, že pokud nemá smysl pro humor, výsledkem může být vyhazov. Takže opatrně!

Druhou specialitkou je nový projekt Asterisk SCF, který je ale na samostatný článek a zabývá se vysokou dostupností a škálovatelností VoIP řešení postavených na platformě Asterisk.

Zdroje

[1] svnview.digium­.com/svn/aste­risk/branches/1­.8/CHANGES?vi­ew=markup

[2] svn.asterisk.or­g/svn/asteris­k/tags/1.8.0/as­terisk-1.8.0-summary.txt

[3] svnview.digium­.com/svn/aste­risk/branches/1­.8/UPGRADE.txt

[4] downloads.aste­risk.org/pub/te­lephony/asteris­k/ChangeLog-1.8.0

[5] reviewboard.as­terisk.org/r/825/

[6] svn.asterisk.or­g/svn/asteris­k/tags/1.8.0/doc/tex/as­terisk.tex

[7] www.abclinuxu­.cz/clanky/na­vody/asterisk-a-kalendare

[8] reviewboard.as­terisk.org/r/526/

[9] issues.asteris­k.org/view.php?id=5413

Byl pro vás článek přínosný?

Autor článku

Autor pracuje ve společnosti IPEX a.s. a ve volném čase se zabývá podporou open-source komunikačních projektů.