Das Asterisk Gateway Interface (AGI) ist vergleichbar mit CGI auf
Webservern. Es sind externe Programme, die innerhalb des Dialplans (der
extensions.conf
) aufgerufen werden. AGI-Skripte können
mit Asterisk interagieren und Befehle ausführen. AGI-Skripte können
prinzipiell in allen Programmier- und Skriptsprachen (z.B. Unix-Shell
Script) geschrieben werden, die mit den Standardsockets unter Unix umgehen
können. Die folgenden Beschreibungen gelten also nur als Beispiele für eine
Implementierung.
Für AGI-Skripte ist ein Verständnis des Unix-Datenstrom-Models unabdingbar. Im Anhang dieses Buches finden Sie Informationen zu diesem Prinzip.
Das AGI-Skript bekommt über den „standard input“ (STDIN) einige Informationen von Asterisk. Das Format sieht folgendermaßen aus:
agi_request: programmname.php agi_channel: Zap/1-2 agi_language: de agi_callerid: Hans Beispiel agi_context: extern agi_extension: 1234 agi_priority: 2
Nach dem Übergeben dieser Grundinformationen sendet Asterisk noch eine Leerzeile, um dem AGI-Skript mitzuteilen, dass die Übertragung beendet ist.
Die folgende Aufstellung listet alle von Asterisk weitergegebenen Header auf:
agi_request
Der Dateiname des aufgerufenen AGI-Programms
agi_channel
Der Channel
agi_language
Die eingestellte Sprache (z.B. en für Englisch oder de für Deutsch)
agi_type
Die Channel-Art (z.B.
sip
für SIP oderzap
für ISDN)agi_uniqueid
Eine im System unique (einmalige) ID für das Gespräch
agi_callerid
Die Caller-ID (z.B.
Hans Meier <2000>
)agi_context
Der Ursprungs-Context
agi_extension
Die Ursprungs-Extension
agi_priority
Die Priorität in der Extension beim Aufruf des AGI-Skripts
agi_accountcode
Abrechnungscode
agi_calleridname
Name aus der Caller-ID (z.B.
Hans Meier
)agi_callingpres
Die Caller-ID im ZAP-Channel
Nachdem das AGI-Skript die Grundinformationen von Asterisk erhalten hat, beginnt es mit seiner Arbeit und gibt Befehle über „standard out“ (STDOUT) zurück an Asterisk. Um sich diese Kommunikation anzuschauen, kann man im CLI mit set verbose 5 den Verbosity-Level entsprechend hochsetzen.
AGI-Skripte werden von Asterisk standardmäßig im Verzeichnis
/var/lib/asterisk/agi-bin
/ gesucht.
Achten Sie darauf, dass das entsprechende Skript von Asterisk auch
ausgeführt werden darf. Dies wird durch den Aufruf des Befehls
chmod 755 skriptname
gewährleistet.
Ein AGI-Skript wird im Dialplan über die Applikation
agi
aufgerufen. Die kann wie folgt aussehen:
exten => 1234,1,Answer() exten => 1234,2,AGI(mein-agi-programm.php) exten => 1234,3,Hangup()
In der Standard-Asterisk-Installation ist ein Test-AGI-Skript mit
dem Namen agi-test.agi
[143]im Verzeichnis
/var/lib/asterisk/agi-bin/
abgespeichert. Anhand
dieses Perl-Programms werden wir die grundsätzliche Arbeit mit
AGI-Skripten beschreiben.
Das Skript wird dabei in der extensions.conf
wie folgt aufgerufen:
exten => 1234,1,Answer() exten => 1234,2,AGI(agi-test.agi) exten => 1234,3,Hangup()
Wir besprechen das Beispiel-Skript zeilen- oder abschnittsweise.
#!/usr/bin/perl use strict;
Die ersten zwei Zeilen sagen dem ausführenden
Betriebssystem, dass es sich um ein Perl-Programm handelt, das mit dem
Interpreter /usr/bin/perl
ausgeführt werden soll.
use strict
bewirkt eine konsequentere Behandlung von
Fehlern innerhalb des Perl-Programms.
$|=1;
Diese kleine Zeile bringt Perl dazu, die Ausgabe von Text nicht zu puffern. So können wir sicher sein, dass alle Ausgaben auch unmittelbar an Asterisk übergeben und nicht erst in einem Buffer zwischengespeichert werden.
# Setup some variables my %AGI; my $tests = 0; my $fail = 0; my $pass = 0;
Hier
werden verschiedene Variablen definiert. Das Hash %AGI
nimmt die initialen Eingaben von Asterisk auf. Die restlichen Variablen
zählen die Gesamtanzahl der Tests, die Anzahl der fehlgeschlagenen Tests
und die Anzahl der funktionierenden Tests.
while(<STDIN>) { chomp; last unless length($_); if (/^agi_(\w+)\:\s+(.*)$/) { $AGI{$1} = $2; } }
Die eben eingelesenen Werte werden zum Debuggen auf STDERR, also im Endeffekt auf dem CLI ausgegeben:
print STDERR "AGI Environment Dump:\n"; foreach my $i (sort keys %AGI) { print STDERR " -- $i = $AGI{$i}\n"; }
Danach geht es mit checkresult
weiter:
sub checkresult { my ($res) = @_; my $retval; $tests++; chomp $res; if ($res =~ /^200/) { $res =~ /result=(-?\d+)/; if (!length($1)) { print STDERR "FAIL ($res)\n"; $fail++; } else { print STDERR "PASS ($1)\n"; $pass++; } } else { print STDERR "FAIL (unexpected result '$res')\n"; $fail++; } }
Die Subroutine checkresult
liest das Ergebnis
eines Befehls an Asterisk aus und bestimmt, ob der Test erfolgreich war
oder nicht. Entsprechend werden die Variablen $fail
und
$pass
hochgezählt. Nachdem die Grundlagen gelegt sind,
können die einzelnen Tests beginnen: Die Datei
beep.gsm
wird abgespielt.
print STDERR "1. Testing 'sendfile'..."; print "STREAM FILE beep \"\"\n"; my $result = <STDIN>; &checkresult($result);
Der Text "hello world" wird an den Anrufer geschickt. Das funktioniert natürlich nur, wenn das Protokoll und das Endgerät diese Funktion unterstützen.
print STDERR "2. Testing 'sendtext'..."; print "SEND TEXT \"hello world\"\n"; my $result = <STDIN>; &checkresult($result);
Das Bild "asterisk-image" wird an den Anrufer geschickt. Auch diese Funktion ist vom Protokoll und dem Endgerät abhängig.
print STDERR "3. Testing 'sendimage'..."; print "SEND IMAGE asterisk-image\n"; my $result = <STDIN>; &checkresult($result);
Die Zahl 192837465 wird dem Anrufer vorgelesen.
print STDERR "4. Testing 'saynumber'..."; print "SAY NUMBER 192837465 \"\"\n"; my $result = <STDIN>; &checkresult($result);
Dieser Befehl wartet 1000 Millisekunden auf die Eingabe von DTMF-Tönen durch den Anrufer.
print STDERR "5. Testing 'waitdtmf'..."; print "WAIT FOR DIGIT 1000\n"; my $result = <STDIN>; &checkresult($result);
Ein 3000-Millisekunden-langes
GSM-Soundfile mit dem Namen testagi.gsm
wird
aufgenommen. Die Aufnahme kann durch die Eingabe der Zahlen 1, 2, 3 oder
4 unterbrochen werden.
print STDERR "6. Testing 'record'..."; print "RECORD FILE testagi gsm 1234 3000\n"; my $result = <STDIN>; &checkresult($result);
Das soeben aufgenommene Soundfile wird abgespielt.
print STDERR "6a. Testing 'record' playback..."; print "STREAM FILE testagi \"\"\n"; my $result = <STDIN>; &checkresult($result);
Nun erfolgt die Ausgabe auf dem CLI, wie viele Tests funktioniert oder nicht funktioniert haben.
print STDERR "================== Complete ======================\n"; print STDERR "$tests tests completed, $pass passed, $fail failed\n"; print STDERR "==================================================\n";
Warnung | |
---|---|
Bei vielen AGI-Befehlen sehen Sie den folgenden Aufbau: fwrite(STDOUT,"BEFEHL $value \"\"\n"); # ^^^^^^^ Der in dieser Zeile
unterschlängelte Teil (zwischen |
PHP ist zu einer der populärsten Programmiersprachen für
Webapplikationen geworden.[144] Da man aber aktuelle PHP-Versionen auch für den Aufruf von
Programmen auf der Kommandozeile benutzen kann, ist PHP eine für
AGI-Skripte gut geeignete Sprache. Als Beispiel benutzen wir ein kleines
PHP-Programm (lotto.php
), das 6 zufällige Zahlen von
1 bis 49 auswählt und dem Anrufer vorspricht. Die Beschreibung der
einzelnen Schritte erfolgt im Quellcode.
#!/usr/bin/php -q <?php # Sicherheitseinstellung. Das Skript laeuft nicht # laenger als 8 Sekunden. ################################################# set_time_limit(8); # Output Buffer wird deaktiviert # Alternativ könnten wir nach jeder Ausgabe # fflush(STDOUT); aufrufen. ################################################# ob_implicit_flush(); # PHP Error Reporting wird deaktiviert ################################################# error_reporting(0); # Fuer die Komunikation mit Asterisk benoetigen # wir STDIN und STDOUT Filehandles ################################################# if (!defined('STDIN')) define('STDIN' , fopen('php://stdin' , 'r')); if (!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w')); if (!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w')); # Die von Asterisk uebergebenen Variablen und # Werte werden ausgelesen und im Array $agi # gespeichert. ################################################# $agi = array(); while (!feof(STDIN)) { $tmp = trim(fgets(STDIN,4096)); if (($tmp == '') || ($tmp == "\n")) break; $var1 = split(':',$tmp); $name = str_replace('agi_','',$var1[0]); $agi[$name] = trim($var1[1]); } # Ein Array mit 6 zufaelligen und nicht # doppelten Zahlen von 1 bis 49 wird generiert. ################################################# $Lottozahlen = array(); do { $Zahl = rand(1,49); if (array_search($Zahl, $Lottozahlen) == FALSE) { $Lottozahlen[] = $Zahl; } } while (count($Lottozahlen) < 6); # Vor der ersten Ansage wird eine Sekunde # gewartet. ################################################# fwrite(STDOUT,"EXEC Wait 1 \"\"\n"); fflush(STDOUT); # Die Zahlen werden nacheinander vorgelesen. # Zwischen den einzelnen Zahlen gibt es immer # eine Pause von einer Sekunde. ################################################# foreach ($Lottozahlen as $value) { fwrite(STDOUT,"SAY NUMBER $value \"\"\n"); fflush(STDOUT); fwrite(STDOUT,"EXEC Wait 1 \"\"\n"); fflush(STDOUT); } ?>
Das Programm lotto.php
muss im
Verzeichnis /var/lib/asterisk/agi-bin/
abgespeichert
werden und wird in der extensions.conf
wie folgt
aufgerufen:
exten => 1234,1,Answer() exten => 1234,2,AGI(lotto.php) exten => 1234,3,Hangup()
Wer PHP und AGI einsetzen, aber nicht das Rad neu erfinden will, kann die fertige PHP-Klasse phpAGI benutzen. Informationen und die dazugehörigen Dateien finden Sie auf der Homepage des Projekts http://phpagi.sourceforge.net/.
Das folgende bei phpAGI mitgelieferte Programm gibt schnell einen Überblick über die Funktionsaufrufe[145]
<?php /** * @package phpAGI_examples * @version 2.0 */ function my_ip(&$agi, $peer) { $ip = 'unknown'; $asm = $agi->new_AsteriskManager(); if($asm->connect()) { $peer = $asm->command("sip show peer $peer"); $asm->disconnect(); if(!strpos($peer['data'], ':')) echo $peer['data']; else { $data = array(); foreach(explode("\n", $peer['data']) as $line) { $a = strpos('z'.$line, ':') - 1; if($a >= 0) $data[trim(substr($line, 0, $a))] = trim(substr($line, $a + 1)); } } if(isset($data['Addr->IP'])) { $ip = explode(' ', trim($data['Addr->IP'])); $ip = $ip[0]; } } $agi->text2wav("Your IP address is $ip"); } ?>
Wie am Anfang dieses Kapitels schon erwähnt, kann man AGI-Programme in jeder beliebigen Programmiersprache schreiben. Fertige Bibliotheken finden sich z.B. für
Java
Perl
PHP
Python
Ruby
C
C#
Am einfachsten ist eine Suche in der Suchmaschine der Wahl nach den Schlüsselwörtern „AGI“ und dem Namen der Programmiersprache. Ein weiterer Startpunkt ist die Webseite http://www.voip-info.org/wiki-Asterisk+AGI.
Die folgenden Befehle ermöglichen es einem AGI-Skript, mit Asterisk zu interagieren. Die meisten dieser Befehle sind von Dialplan-Applikationen (siehe Abschnitt 11, „Applikationen im Dialplan“) mit ähnlichen Namen abgeleitet.
Wichtig | |
---|---|
Denken Sie daran, falls Sie Parameter, die nicht am Ende
stehen, auslassen wollen, stattdessen |
ANSWER
Funktioniert wie Answer()
in der
extensions.conf
. Der Anruf wird
entgegengenommen.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
CHANNEL STATUS [Kanalname
]
Abfrage des Status eines Kanals. Wenn der
nicht angegeben ist, wird
der aktuelle Kanal benutzt.Kanalname
Ergebniswerte nach Ausführung:
0 | Channel ist nicht aktiv und verfügbar. |
1 | Channel ist nicht aktiv, aber reserviert. |
2 | Channel ist off-hook. |
3 | DTMF-Eingaben wurden getätigt. |
4 | Der Channel wird gerade angerufen (es klingelt). |
5 | Die Leitung ist aktiv. |
6 | Die Leitung ist besetzt. |
DATABASE DELFamilie
Schlüssel
Löscht den durch Familie
und
Schlüssel
definierten Eintrag in der
Asterisk-Datenbank.
Ergebniswerte nach Ausführung:
0 | Fehler |
1 | Erfolgreich |
DATABASE DELTREE Familie
Löscht eine gesamte Familie
aus der
Asterisk-Datenbank.
Ergebniswerte nach Ausführung:
0 | Fehler |
1 | Erfolgreich |
DATABASE GETFamilie
Schlüssel
Gibt den entsprechenden Eintrag für
Familie
/Schlüssel
aus der
Asterisk-Datenbank aus.
Ergebniswerte nach Ausführung:
0 | Fehler |
1 (Wert ) | Erfolgreich mit dem gefundenen Wert |
DATABASE PUTFamilie
Schlüssel
Wert
Speichert den Wert Wert
in der
Asterisk-Datenbank unter
Familie
/Schlüssel
ab. Das
kann ein Hinzufügen oder ein Update sein.
Ergebniswerte nach Ausführung:
0 | Fehler |
1 | Erfolgreich |
EXECApplikation
Argumente
Führt eine Dialplan-Applikation aus (siehe Abschnitt 11, „Applikationen im Dialplan“). Die Argumente
werden
dabei der Applikation übergeben. Mehrere Argumente werden durch ein
Pipe-Zeichen (|
) getrennt.
Ergebniswerte nach Ausführung:
-2 | Fehler. Konnte die Applikation nicht finden/aufrufen. |
Wert | Erfolgreich. Ergebniswert der Applikation. |
Beispiel:
EXEC Dial Zap/g1/123456
GET DATADateiname
[Timeout
] [maxZiffern
]
Vergleichbar mit der
Background()-Applikation in der
extensions.conf
. Spielt die Audiodatei mit dem
Namen Dateiname
ab und wartet auf DTMF-Eingaben.
Diese werden durch maxZiffern
limitiert. Die
maximale Zeit wird durch Timeout
begrenzt.
Ergebniswerte nach Ausführung:
Wert | DTMF-Eingaben |
GET FULL VARIABLEVariablenname
[Kanalname
]
Gibt den Wert der Variable Variablenname
aus dem Kanal Kanalname
(oder dem aktuellen)
aus.
Ergebniswerte nach Ausführung:
0 | Fehler. Variable existiert nicht. |
1 (Wert ) | Erfolgreich. Wert der Variablen. |
GET OPTIONDateiname
Escape_Ziffern
[Timeout
]
Verhält sich wie STREAM FILE
. Bietet aber zusätzlich
die Möglichkeit, einen Timeout
in Sekunden
anzugeben.
Ergebniswerte nach Ausführung:
Wert | DTMF-Eingaben |
GET VARIABLE Variablenname
Ähnlich wie GET FULL VARIABLE
. Allerdings versteht
GET VARIABLE
keine komplexen oder systemeigenen
Variablen.
Warnung | |
---|---|
Im Zweifelsfall sollte man |
Ergebniswerte nach Ausführung:
0 | Fehler. Kein Channel oder die Variable existiert nicht. |
1 (Wert ) | Erfolgreich. Wert der Variablen (in Klammern) |
HANGUP [Kanalname
]
Legt den virtuellen Hörer auf dem angegebenen Kanal auf. Wurde
kein Kanalname
angegeben, wird der aktuelle Kanal
aufgelegt.
Ergebniswerte nach Ausführung:
-1 | Fehler. Der angegebene Kanal existiert nicht. |
1 | Erfolgreich. Hangup wurde ausgeführt. |
NOOP [Text
]
Es wird nichts gemacht (NOOP
steht für No-Operation).
Text
wird auf dem CLI ausgegeben.
Ergebniswerte nach Ausführung:
0 | Gibt immer 0 zurück. |
RECEIVE CHAR Timeout
Wenn ein Channel die Übermittlung von Text unterstützt, dann kann
mit RECEIVE CHAR
ein einzelnes Zeichen empfangen werden.
Timeout
gibt die Wartezeit für den Empfang in
Millisekunden an (0 für unendlich).
Ergebniswerte nach Ausführung:
-1 | Fehler oder Hangup |
Wert (timeout) | Das empfangene Zeichen bei Timeout |
Wert | Das empfangene Zeichen |
RECEIVE TEXT Timeout
Wenn ein Channel die Übermittlung von Text unterstützt, dann kann
mit RECEIVE CHAR
ein solcher Text empfangen werden.
Timeout
gibt die Wartezeit für den Empfang in
Millisekunden an (0 für unendlich).
Ergebniswerte nach Ausführung:
-1 | Fehler oder Hangup |
Wert (timeout) | Der empfangene Text bei Timeout |
Wert | Der empfangene Text |
RECORD FILEDateiname
Format
Escape_Ziffern
Timeout
[Offset
] [BEEP] [s=Stille
]
Funktioniert wie ein Rekorder, der alle Audiosignale in der Datei
Dateiname
im angegebenen
Format
aufzeichnet. Beendet werden kann dies
durch einen definierten DTMF-Ton Escape_Ziffern
oder durch einen Timeout
in Millisekunden (dabei
steht -1 für keinen Timeout).
BEEP
spielt vor der Aufnahme einen
Signalton. Stille
definiert die Anzahl der
Stille-Sekunden, bis die Applikation auch ohne Eingabe von DTMF-Tönen
einen Timeout ausgibt.
Mit Offset
wird vor Beginn der Aufnahme so
viele Sekunden wie angegeben gewartet.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
SAY ALPHAString
[Escape_Ziffern
]
Buchstabiert den übergebenen String
. Die
Ausgabe kann durch Eingabe einer Ziffer, die in
Escape_Ziffern
bestimmt wird, abgebrochen
werden.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
Wert | ASCII-Wert der Eingabe, die zum Abbruch geführt hat |
SAY DATETimestamp
[Escape_Ziffern
]
Sagt das übergebene Datum an. Timestamp
ist
dabei die Anzahl der Sekunden seit 00:00:00 Uhr am 1. Januar 1970. Die
Ausgabe kann durch Eingabe einer Ziffer, die in
Escape_Ziffern
bestimmt wird, abgebrochen werden.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
Wert | ASCII-Wert der Eingabe, die zum Abbruch geführt hat |
SAY DATETIMETimestamp
[Escape_Ziffern
] [Format
] [Zeitzone
]
Sagt das übergebene Datum. Timestamp
ist
dabei die Anzahl der Sekunden seit 00:00:00 Uhr am 1. Januar 1970. Das
Format
bestimmt die Art der Ausgabe. Folgende
Werte sind dabei möglich:
' | Eine Sounddatei |
${ | Eine Variable |
A oder a | Tag der Woche (z.B. Montag oder Dienstag) |
B , b oder
h | Name des Monats (z.B. Januar) |
d oder e | Ordnungseinheit des Tages im Monat (z.B. erster, zweiter, dritter) |
Y | Jahr |
I oder i | Stunde (im 12-Std.-System) |
H | Stunde (im 24-Std.-System). Dabei wird 07 „Null - Sieben“ ausgesprochen! |
k | Stunde (im 24-Std.-System). Dabei wird 07 nur „Sieben“ ausgesprochen. |
M | Minuten |
P oder p | AM oder PM |
Q | „Heute“, „Gestern“ oder der
Inhalt der Werte ABdY |
q | „ “ (für heute), „Gestern“,
der Wochentag oder ABdY |
R | Zeit inkl. Minuten im 24-Std.-System |
Die Zeitzone
wird wie in der
Konfigurationsdatei /etc/asterisk/voicemail.conf
angegeben.
Die Ausgabe kann durch Eingabe einer Ziffer, die in
Escape_Ziffern
bestimmt wird, abgebrochen werden.
Wenn Escape_Ziffern
oder
Format
ausgelassen werden soll, muss stattdessen
""
angegeben werden.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
Wert | ASCII-Wert der Eingabe, die zum Abbruch geführt hat |
SAY DIGITSZahl
[Escape_Ziffern
]
Sagt die angegebene Zahl
Ziffer für Ziffer
an (z.B. wird 123 „eins, zwei, drei“ gesprochen). Die
Ausgabe kann durch Eingabe einer Ziffer, die in
Escape_Ziffern
bestimmt wird, abgebrochen werden.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
Wert | ASCII-Wert der Eingabe, die zum Abbruch geführt hat. |
SAY NUMBERZahl
[Escape_Ziffern
]
Sagt die angegebene Zahl
an (z.B. 123 wird
„ein-hundert-drei-und-zwanzig“ gesprochen). Die Ausgabe
kann durch Eingabe einer Ziffer, die in Escape_Ziffern
bestimmt wird, abgebrochen werden.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
Wert | ASCII-Wert der Eingabe, die zum Abbruch geführt hat |
SAY PHONETICString
[Escape_Ziffern
]
Sagt den angegebenen String
im phonetischen
NATO-Alphabet an (z.B. a
wird „alpha“
gesprochen). Die Ausgabe kann durch Eingabe einer Ziffer, die in
Escape_Ziffern
bestimmt wird, abgebrochen werden.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
Wert | ASCII-Wert der Eingabe, die zum Abbruch geführt hat |
SAY TIMETimestamp
[Escape_Ziffern
]
Sagt die übergebene Zeit. Timestamp
ist
dabei die Anzahl der Sekunden seit 00:00:00 Uhr am 1. Januar 1970. Die
Ausgabe kann durch Eingabe einer Ziffer, die in
Escape_Ziffern
bestimmt wird, abgebrochen werden.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
Wert | ASCII-Wert der Eingabe, die zum Abbruch geführt hat |
SEND IMAGE Dateiname
Sendet das in Dateiname
angegebene Bild auf
den aktuellen Kanal. Der Dateiname darf keine Endung (z.B.
.gif
oder .jpg
) enthalten. Diese Funktion wird
von den meisten Channels nicht unterstützt.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
SEND TEXT "zu sendender Text
"
Sendet den angegebenen Text auf den aktuellen Kanal. Diese Funktion wird von den meisten Channels nicht unterstützt.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich |
SET AUTOHANGUP Timeout
Stellt ein automatisches Auflegen nach der angegebenen Anzahl von
Sekunden ein. Mit dem Wert 0
kann diese Funktion wieder
deaktiviert werden.
Ergebniswerte nach Ausführung:
0 | Erfolgreich (Wert wurde gesetzt) |
SET CALLERID Nummer
Setzt die Caller-ID des aktuellen Kanals.
Ergebniswerte nach Ausführung:
1 | Erfolgreich (Caller-ID wurde gesetzt) |
SET CONTEXT Contextname
Setzt den Context, der nach dem Ausführen der AGI-Applikation angesprungen wird.
Ergebniswerte nach Ausführung:
0 | Gibt immer 0 zurück. |
Wichtig | |
---|---|
Es wird nicht überprüft, ob der Context existiert. Wenn Sie einen ungültigen Context angeben, wird der Anruf nach Beendigung des Skripts aufgelegt. |
SET EXTENSION Extension
Setzt die Extension, die nach dem Ausführen der AGI-Applikation angesprungen wird.
Ergebniswerte nach Ausführung:
0 | Gibt immer 0 zurück. |
Wichtig | |
---|---|
Es wird nicht überprüft, ob die Extension existiert. Wenn Sie
eine ungültige Extension angeben, wird Asterisk nach Beendigung des
Skripts bei der |
SET MUSIC [on [Klasse
]|off]
Aktiviert (on
) oder deaktiviert (off
)
die Warteschleifenmusik. Wenn Klasse
nicht
angegeben wurde, wird die Musikklasse default
benutzt
(siehe Konfigurationsdatei
/etc/asterisk/musiconhold.conf
).
Ergebniswerte nach Ausführung:
0 | Gibt immer 0 zurück. |
SET PRIORITY Priorität
Setzt die Priorität, die nach dem Ausführen der AGI-Applikation angesprungen wird (als Priorität kann auch ein Label angegeben werden).
Ergebniswerte nach Ausführung:
0 | Gibt immer 0 zurück. |
Wichtig | |
---|---|
Es wird nicht überprüft, ob die Priorität existiert. Wenn Sie eine ungültige Priorität angeben, wird der Anruf nach Beendigung des Skriptes aufgelegt. |
SET VARIABLEVariablenname
Wert
Setzt die Kanal-Variable Variablenname
auf
den Wert Wert
.
Ergebniswerte nach Ausführung:
1 | Erfolgreich (Variable wurde gesetzt) |
STREAM FILEDateiname
Escape_Ziffern
[Offset
]
Spielt die angegebene Datei Dateiname
ab
(dabei darf keine Dateiendung wie .wav
oder
.gsm
angegeben werden). Das Abspielen kann dabei durch die
Eingabe einer Ziffer, die in Escape_Ziffern
definiert
wurde, abgebrochen werden. Ist dies nicht erwünscht (es soll also kein
Abbruch möglich sein), so muss an dieser Stelle ""
angegeben werden. Mit Offset
kann ein Offset zum
Start der Datei bestimmt werden.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Erfolgreich (die Datei wurde komplett abgespielt) |
Wert | ASCII-Wert der Eingabe, die zum Abbruch geführt hat |
Wichtig | |
---|---|
|
TDD MODE [on|off]
Aktiviert (on
) oder deaktiviert (off
)
Übertragung und Empfang des TDD-Protokolls (Baudot) für TDD-Geräte
(Telecommunications Device für the Deaf, Telekommunikationsgerät für
Taubstumme, auch Schreibtelefon genannt) auf dem aktiven Kanal. Bisher
wird TDD nur von Zap-Kanälen unterstützt.
Ergebniswerte nach Ausführung:
-1 | Fehler |
0 | Channel nicht TDD-fähig |
1 | Erfolgreich |
VERBOSEMeldung
Level
Schreibt die Meldung
auf das Command Line
Interface (CLI). Level
gibt dabei den Mindestwert
des Verbosity-Levels an, damit die Ausgabe angezeigt wird.
Ergebniswerte nach Ausführung:
0 | Gibt immer 0 zurück. |
Version 1.2, November 2002
Neue Version verfügbar
Sie betrachten gerade die alte Version des Buches (Version 1.0). Wir empfehlen Ihnen für Asterisk 1.4 und 1.6 die neue Version des Buches.
Asterisk-Tag 2008
Lernen Sie Mark Spencer (den Erfinder von Asterisk) kennen! Viele Vorträge, Case-Studies und Workshops rund um das Thema VoIP. Asterisk-Tag.org