Coverbild des Asterisk Buches von Stefan Wintermeyer

Beta Test!

  • Bitte melden Sie Fehler! Informationen dazu in der Beta-Test FAQ.
  • Besuchen Sie den Asterisk-Tag.org in Bremen und lassen Sie sich dort Ihr Buch von Stefan Wintermeyer signieren.
  • Bestellmoeglichkeiten fuer das gedruckte Buch: Amazon oder direkt beim Verlag

Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de.
Naechste Asterisk-Schulung am 18. und 19. Januar!


6.21. DeadAGI()

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)

Wichtig

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()