sobota 7. července 2012

Asterisk Gateway Interface AGI

Asterisk dialplan se programuje vlastním jednoduchým programovacím jazykem. Avšak mnoho uživatelů, speciálně programátorů, preferuje svůj programovací jazyk. Použití vlastního programovacího jazyka usnadňuje integraci do jiného IT systému. AGI rozhraní proto umožňuje vývojářům kontrolovat (ovládat) ústřednu Asterisk programovacím jazykem, dle vlastního výběru.
exten => 500,1,AGI(ahoj-svete.sh)

Tab. 3‑17 - Volání jednoduchého AGI skriptu "Ahoj světe" z dialplanu
Existuje několik variant AGI, které se liší především v metodě komunikace s Asteriskem.

1.1     Základní varianta AGI

Nejjednodušejší varianta, zmíněná hned na začátku této kapitoly. AGI skript je spuštěn v dialplanu Asterisku. Zápis syntaxe skriptu ukazuje Tab. 3-18. Komunikace mezi Asteriskem a aplikací se uskutečňuje přes stdin a stdout [4].
AGI(command[,arg1[,arg2[,...]]])

Tab. 3‑18 - Syntaxe AGI()
Tato varianta je nejméně efektivní formou AGI s ohledem na spotřebu zdrojů.
Obr.  3‑10 Jak pracuje AGI

1.2        EAGI (Enhanced AGI)

EAGI oproti AGI poskytuje kromě stdin a stdout i jednosměrný audio tok.

1.3        DeadAGI

Starší verze AGI. Již se nepoužívá. Služba pracovala s již ukončeným hovorem v Asterisku označován jako exten=>h.

1.4        FastAGI AGI přes protokol TCP

FastAGI se používá pro AGI přes protokol TCP. Rozdíl proti předchozím variantám je, že pro nové spojení (další hovor), není otevřen nový proces. FastAGI má mnohem větší možnosti použití, ale složitější implementaci.
exten => 1234,1,AGI(agi://192.168.12.101,arg1,arg2,arg3)

Tab. 3‑19 - FastAGI()

1.5        Asynchronní AGI kontrolované AMI

Async AGI—AMI-Controlled AGI je novější způsob použití AGI, který se používá od verze Asterisku 1.6.0. Účelem asynchronního AGI je asynchronně řadit požadavky (vytvářet frontu) požadavků AGI příkazů v kanálu. To může být užitečné, pokud se již v Asterisku používá rozhraní AMI a je požadavek použít vlastní programové skripty pro zpracování a řízení volání. Zápis syntaxe skriptu ukazuje tab. 3-17
exten => 1234,1,AGI(agi:async)

Tab. 3‑20 - Async AGI—AMI-Controlled AGI

[4]    LEIF MADSEN, Jim Van Meggelen. Asterisk: the definitive guide. 3rd ed. Sebastopol, CA: O'Reilly Media, Inc, 2011. ISBN 978-059-6517-342.

neděle 1. července 2012

Asterisk Manager Interface AMI

Asterisk Manager Interface (AMI) je monitorovací a řídící rozhraní Asterisku. To umožňuje online sledovat události (manager events), které se vyskytují v systému, ale také komunikovat s Asteriskem (manager actions). K dispozici je široké spektrum aplikací. Mnoho zajímavých bylo vytvořeno za účelem rozšíření funkcionality Asterisku. AMI aplikace je klientem ústředny Asterisk, kde je služba AMI spuštěna. Konfigurace se opět provádí v konfiguračních souborech. Pro AMI je to soubor manager.conf, v kterém se především nastavují přístupová práva, ale i bezpečnostní a jiná nastavení [4].

Připojení AMI pomocí protokolu TCP

K rozhraní AMI se vnější aplikace připojují pomocí TCP soketu. Na příkladu si ukážeme připojení AMI pomocí služby telnet.
1.      Připojení AMI přes TCP na portu 5038
2.      Přihlášení akcí Login
3.      Provedené příkazu (např. Ping)
4.      Odhlášení a odpojení Logoff
$ telnet localhost 5038
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Asterisk Call Manager/1.1
Action: Login
Username: strom
Secret: jedle
Response: Success
Message: Authentication accepted

Action: Ping
Response: Success
Ping: Pong
Timestamp: 9256398652.925531

Action: Logoff
Response: Goodbye
Message: Thanks for all.
Tab. - Ukázka komunikace AMI

AMI správce zpráv

Existují dva hlavní typy zpráv pro AMI: správce událostí (manager events) a správce akcí (manager actions).
Správce událostí zobrazuje jednosměrné zprávy směrující z Asterisku k AMI klientovi a zobrazuje stav systému. Události jsou vyvolány samotnou ústřednou, např. probíhající volání (stav kanálu).
Obr.  3‑8 Správce událostí AMI
Správce akcí rozšiřuje funkcionalitu správce událostí o schopnost události vyvolávat. Znamená to, že AMI klient odešle zprávu do Asterisku, ten ji zpracuje (provede žádanou akci) a vrátí zpět související událost AMI klientovi např. vytvoření kanálu (hovoru), získání dat z AstDB, atd.
Obr.  3‑9 Správce akcí AMI
Asterisk reaguje jen na zprávy (příkazy), které zná.  Dostupné příkazy lze zjistit v příkazovém řádku ústředny zadáním příkazu manager show command. Některé používané příkazy [4]:
·         Command       Provádí příkazy do CLI Asterisku
·         Originate         Aktivuje telefonní hovor
·         Hangup           Zavěsí kanál (ukončí hovor)  
·         Logoff            Odhlásí klienta AMI
·         SIPpeers         Vrátí seznam SIP uživatelů

[4]    LEIF MADSEN, Jim Van Meggelen. Asterisk: the definitive guide. 3rd ed. Sebastopol, CA: O'Reilly Media, Inc, 2011. ISBN 978-059-6517-342.