Beta Test!
Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. |
Führt ein AGI-konformes Skript auf einem toten (aufgelegten) Kanal aus
DeadAGI(Programm
,Argumente
)
Führt ein AGI-konformes Skript auf einem toten (aufgelegten) Kanal aus. Mit Hilfe von AGI kann Asterisk externe Programme in nahezu jeder beliebigen Sprache ausführen (starten), um einen Telefonkanal zu steuern, Audio abzuspielen, DTMF-Ziffern auszulesen usw., indem es nach dem AGI-Protokoll auf STDIN
und STDOUT
mit diesen kommuniziert. Die übergebenen Argumente
werden an das AGI-Programm durchgereicht.
Diese Anwendung wurde speziell für tote Kanäle entwickelt, weil das Standard AGI-Interface nicht funktioniert, nachdem der Kanal aufgelegt wurde. Dass der Kanal „tot“ ist, ist allerdings keine Voraussetzung für den Start eines DeadAGI-Skripts!
Benutzten sie den Befehl show agi
auf der Kommandozeilen-Schnittstelle, um eine Liste aller verfügbaren AGI-Befehle zu erhalten.
Liefert -1 zurück, falls die Anwendung ein Auflegen angefordert hat, oder 0 beim Austritt ohne Auflegen.
exten => h,1,DeadAGI(agi-test)
Der Kanal wird solange als aktiv angesehen wird, bis das Skript beendet wird, was z.B. für CDRs von Bedeutung sein kann.
Beachten Sie auch, dass auch DeadAGI-Skripte beim Auflegen des Kanals ein SIGHUP
-Signal erhalten, was ggf. ignoriert werden muss:
Perl | $SIG{HUP} = "IGNORE"; |
PHP | pcntl_signal(SIGHUP, SIG_IGN);(PHP muss mit --enable-pcntl kompiliert worden sein, was per Default nicht der Fall ist!) |
Ruby | trap('SIGHUP','IGNORE') |
Es ist auch wichtig, dass Sie nach dem Auflegen nicht mehr mit Asterisk kommunizieren, sonst erhält das Skript ein SIGPIPE
, was das Skript beendet, sofern Sie es nicht ignorieren.
Siehe auch. Abschnitt 6.6, „AGI()
“, Abschnitt 6.32, „FastAGI()
“
© by Stefan Wintermeyer