Asterisk - Tipps
AGI-Schnittstelle nutzen
Die Abkürzung AGI steht für Asterisk Gateway Interface. Der Asterisk-Dienst kommuniziert dabei über Standard-In (stdin) und -Out (stdout) mit einem Programm, Shell-, PHP-, Perl-Skript.
Die vorhandene AGI-Dokumentation (external link) lässt leider einige Punkte offen, so dass es teilweise etwas kompliziert scheint, den gewünschten Effekt zu erzielen. Das ist schade, denn die Möglichkeiten sind fast unbegrenzt! Ich hoffe die folgendenden Zeilen helfen bei der Benutzung.
Ein AGI-Skript (hier myscript.php) rufen Sie im Wählplan (extensions.conf) für die Durchwahl 1234 wie folgt auf:
exten => 1234,1,agi(myscript.php)Das PHP-Skript (das nur ein Beispiel, es könnte natürlich auch ein C- oder Java-Programm oder Ähnliches sein) muss ohne weitere Spezifikation beim Aufruf im Verzeichnis agi-bin liegen und ausführbar sein.
Das AGI übergibt dem aufgerufenen Skript/Programm zunächst mal eine ganze Liste von Variablen, das ist praktisch, dann muss man diese nicht noch mal abfragen, zumindest dann nicht, wenn man die Variablen in ein Array schreibt. Für PHP finden Sie ein hier Beispiel (external link).
Jetzt muss das Skript/Programm über stdin und stdout mit dem Asterisk kommunizieren. Es gibt einige AGI-Befehle:
- answer
- channel status
- control stream file
- database del
- database deltree
- database get
- database put
- exec
- get data
- get full variable
- get option
- get variable
- hangup
- noop
- receive char
- receive text
- record file
- say alpha
- say date
- say datetime
- say digits
- say number
- say phonetic
- say time
- send image
- send text
- set autohangup
- set callerid
- set context
- set extension
- set music
- set priority
- set variable
- stream file
- tdd mode
- verbose
- wait for digit
dort fehlen aber oft benötigte Funktionen wie z.B. Transfer. Um auf eine Wählplanfunktion wie Transfer zurückzugreifen nutzt man den AGI-Befehl EXEC. Das sieht dann beispielsweise so aus:
echo "EXEC TRANSFER 4711@Callmanager"
Wie Ihrem geübten Auge vielleicht aufgefallen ist, steht dort nicht "exec Transfer(4711@Callmanager)". Die Schreibweise unterscheidet sich nämlich von der im Wählplan.
vorherige Seite: Asterisk PBX
nächste Seite: Asterisk - Links
