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.

Žádné komentáře:

Okomentovat