Anhang C. Applikationen im Dialplan
Im Folgenden werden die Applikationen beschrieben, die im Dialplan
(also in der /etc/asterisk/extensions.conf
) verwendet
werden können. Beachten Sie bitte, dass nur solche Applikationen in Ihrer
Installation verfügbar sind, die in der
/etc/asterisk/modules.conf
im Abschnitt
[modules]
durch autoload=yes
oder explizites
load => app_applikationsname
.so
geladen wurden. Eine Liste aller in Ihrem Asterisk verfügbaren Applikationen
können Sie mit dem CLI-Befehl core show applications
abrufen. Genaue Informationen zu einer bestimmten Applikation können Sie im
CLI mit dem Befehl core application
Applikationsname
anzeigen.
Tipp
Die Befehle core application
xyz
und core
applications
existieren erst in der Asterisk-Version 1.4.
Sollten Sie ein Asterisk 1.2 betreuen, können Sie die gleichen Funktionen
mit den Befehlen show application xyz
und show
applications
abrufen. Die alten Befehle funktionen auch noch in
der Version 1.4, sind aber als deprecated
eingestuft.
Der Begriff Applikationen (oder
Befehle) darf nicht mit Funktionen
verwechselt werden, die ggf. innerhalb eines Befehlsaufrufs stehen.
Applikationen (applications) ist
vielleicht irreführend, aber der gängige Ausdruck.
Es ist oft möglich, Parameter auszulassen. Wenn ausgelassene Parameter
nicht am Ende stehen, müssen Sie trotzdem ein Komma angeben, um anzuzeigen,
dass der Parameter leer ist (also der Default-Wert verwendet wird), z. B.
so:
exten => s,1,Dial(IAX2/User:Passwort@beispiel.de/123,,tT)
Im Allgemeinen kann gesagt werden, dass Fehler beim Ausführen einer
Applikation durch den Rückgabewert -1 ausgedrückt werden, Erfolg durch 0.
Ein Rückgabewert von -1 bedeutet, dass Asterisk den Kanal auflegt und nicht
weiter den Dialplan abarbeitet.
Wichtig
Bitte beachten Sie, dass – abhängig von der eingesetzten
Asterisk-Version – die Parameter durch ,
(Komma) oder
|
(Pipe) getrennt werden. In diesem Buch wird hauptsächlich
das ,
(Komma) benutzt.
Wer Asterisk schon länger kennt, wird sich vielleicht wundern,
warum hier die eine oder andere Applikation nicht aufgeführt ist. Das hat
den einfachen Grund, dass bereits in Asterisk 1.2 etliche Applikationen als
„deprecated“ (= veraltet, soll nicht mehr verwendet werden)
gekennzeichnet sind und in 1.4 nicht mehr existieren. Solche Befehle werden
hier nicht mehr beschrieben. Sie finden die entsprechenden Funktionen in
Anhang D, Funktionen im Dialplan. Die beigefügten Diffs der internen Hilfetexte
sind immer vom neueren 1.4 zum älteren 1.2.
In den Beispielen werden oft die willkürlich gewählte Extension
123
und die Priorität 1
verwendet, was in der
Praxis natürlich nicht immer sinnvoll ist.
Viele Applikationen vor Asterisk 1.2 sprangen bei einem Fehler
zur Priorität n+101, wenn eine solche vorhanden war (wobei n die aktuelle
Priorität bezeichnet). Dieses alte Verhalten (
„priority
jumping“) lässt sich bei einigen Befehlen durch die Option
j
(jump) erreichen oder indem man in der
extensions.conf
im Abschnitt
[general]
den
Parameter
priorityjumping=yes
setzt. Dieses Verhalten ist aber
„deprecated“. Die neuere Methode ist das Abfragen der gesetzten
Channelvariablen.
Um eine leichtere Verwendung als Nachschlagewerk zu ermöglichen,
sind die Applikationen in alphabetischer Reihenfolge aufgeführt. Da sie sich
aber auch sinnvoll gruppieren lassen, finden Sie hier einen entsprechenden
Index:
Anruf-Verwaltung (abheben,
durchstellen, auflegen, ...)
Abschnitt C.10, „Answer() “ – Abheben |
Abschnitt C.16, „Busy() “ – Besetztzeichen
signalisieren |
Abschnitt C.18, „ChanIsAvail() “ – Prüfen, ob
ein Channel verfügbar ist |
Abschnitt C.19, „ChannelRedirect() “ – Kanal
auf eine andere Extension umleiten |
Abschnitt C.23, „Congestion() “ – Stau
signalisieren |
Abschnitt C.38, „Dial() “ – Einen Anruf
durchstellen bzw. mit einem Channel verbinden |
Abschnitt C.42, „DISA() “ – DISA (Direct Inward
System Access) |
Abschnitt C.58, „FollowMe() “ –
„Folge-Mir“-Funktionalität |
Abschnitt C.68, „Hangup() “ – Auflegen |
Abschnitt C.109, „Page() “ – Rundruf |
Abschnitt C.110, „Park() “ – Gespräch
parken |
Abschnitt C.115, „Pickup() “ – Heranholen eines
Anrufs |
Abschnitt C.136, „RetryDial() “ –
Dial() mit „Wahlwiederholung“ |
Abschnitt C.138, „Ringing() “ – Klingeln
signalisieren |
Flusskontrolle und
TimeoutsAbschnitt C.24, „ContinueWhile() “ – Zum Anfang
einer While-Schleife springen |
Abschnitt C.47, „EndWhile() “ – Ende einer
While-Schleife |
Abschnitt C.50, „Exec() “ – Ausführen einer
Applikation |
Abschnitt C.51, „ExecIf() “ – Bedingtes
Ausführen einer Applikation |
Abschnitt C.52, „ExecIfTime() “ –
Zeitabhängiges Ausführen einer Applikation |
Abschnitt C.53, „ExitWhile() “ – Eine
While-Schleife abbrechen |
Abschnitt C.63, „Gosub() “ – Zu einer
Unterroutine springen |
Abschnitt C.64, „GosubIf() “ – Bedingtes
Gosub() |
Abschnitt C.65, „Goto() “ – Zu einer Priorität,
Extension oder anderem Context springen |
Abschnitt C.66, „GotoIf() “ – Bedingtes
Goto() |
Abschnitt C.67, „GotoIfTime() “ – Bedingtes
Gosub() je nach Datum/Uhrzeit |
Abschnitt C.125, „Random() “ – Zufällig im
Dial-Plan springen |
Abschnitt C.137, „Return() “ – Aus einem
Gosub() oder GosubIf() zurückkehren |
Abschnitt C.178, „TryExec() “ – Versuch der
Ausführung einer Applikation |
Abschnitt C.195, „While() “ – Anfang einer
While-Schleife |
Anrufer-Kennung (Caller-ID, Name,
...) Gesprächsprotokolle (CDRs) Musik-/SprachausgabeAbschnitt C.13, „Background() “ – Im
Hintergrund eine Sound-Datei spielen |
Abschnitt C.14, „BackgroundDetect() “ –
Background() mit Spracherkennung |
Abschnitt C.25, „ControlPlayback() “ –
Playback() mit Vor-/Zurückspulen und Abbrechen |
Abschnitt C.32, „DateTime() “ – Datum/Uhrzeit
ansagen |
Abschnitt C.46, „Echo() “ – Audio-Eingabe
wiedergeben |
Abschnitt C.56, „Festival() “ – Text mit dem
Festival-Synthesizer sprechen |
Abschnitt C.93, „Milliwatt() “ – Einen
konstanten 1000-Hz-Ton mit 0 dbm erzeugen |
Abschnitt C.102, „MP3Player() “ – MP3-Datei oder
-Stream spielen |
Abschnitt C.104, „MusicOnHold() “ – Wartemusik
spielen |
Abschnitt C.105, „NBScat() “ – NBS-Stream
abspielen |
Abschnitt C.117, „Playback() “ – Eine
Sound-Datei spielen |
Abschnitt C.118, „Playtones() “ – Töne
spielen |
Abschnitt C.121, „Progress() “ – Audio vor dem
Abheben spielen |
Abschnitt C.139, „SayAlpha() “ – Buchstabieren
(alphanumerisch) |
Abschnitt C.140, „SayDigits() “ – Ziffern
ansagen |
Abschnitt C.141, „SayNumber() “ – Nummer
ansagen |
Abschnitt C.142, „SayPhonetic() “ –
Buchstabieren |
Abschnitt C.143, „SayUnixTime() “ –
Datum/Uhrzeit ansagen |
Abschnitt C.160, „SetMusicOnHold() “ –
Wartemusik festlegen |
Abschnitt C.175, „StopPlaytones() “ –
Playtones() beenden |
AufzeichnenAbschnitt C.6, „AgentMonitorOutgoing() “ –
Ausgehende Anrufe eines Agenten aufzeichnen |
Abschnitt C.17, „ChangeMonitor() “ – Die Datei
für Monitor() verändern |
Abschnitt C.20, „ChanSpy() “ – Ein Gespräch
mithören |
Abschnitt C.38, „Dial() “ – Mit der Option
w oder W im Gespräch aufzeichnen |
Abschnitt C.39, „Dictate() “ – Diktat aufnehmen
und wiedergeben |
Abschnitt C.54, „ExtenSpy() “ – Ein Gespräch
mithören |
Abschnitt C.99, „MixMonitor() “ – Ähnlich
Monitor() , aber nur eine Datei |
Abschnitt C.100, „Monitor() “ – Ein Gespräch
mitschneiden |
Abschnitt C.113, „PauseMonitor() “ –
Mitschneiden pausieren |
Abschnitt C.132, „Record() “ – Eingehendes Audio
mitschneiden |
Abschnitt C.173, „StopMonitor() “ –
Monitor() beenden |
Abschnitt C.181, „UnpauseMonitor() “ –
Pausierung des Mitschnitts aufheben |
Abschnitt C.197, „ZapBarge() “ – Einen
ZAP-Channel belauschen |
Abschnitt C.199, „ZapScan() “ – Zwecks Mithören
durch ZAP-Kanäle schalten |
AllgemeinesAbschnitt C.12, „Authenticate() “ – Einen User
authentifizieren |
Abschnitt C.144, „SendDTMF() “ – DTMF-Töne
senden |
Abschnitt C.146, „SendImage() “ – Ein Bild
senden |
Abschnitt C.147, „SendText() “ – Einen Text
senden |
Abschnitt C.148, „SendURL() “ – Eine URL
senden |
Abschnitt C.177, „Transfer() “ – Anruf
weiterleiten |
Abschnitt C.185, „VMAuthenticate() “ – User
anhand der voicemail.conf authentifizieren |
Abschnitt C.188, „Wait() “ – Eine bestimmte Zeit
warten |
Abschnitt C.189, „WaitExten() “ – Auf Eingabe
einer Extension warten |
Abschnitt C.191, „WaitForRing() “ – Auf Klingeln
warten |
Abschnitt C.192, „WaitForSilence() “ – Auf
Stille warten |
Abschnitt C.193, „WaitMusicOnHold() “ – Warten
mit Musik |
Externe SkripteAbschnitt C.7, „AGI() “ – Eine AGI-Anwendung
ausführen |
Abschnitt C.37, „DeadAGI() “ –
AGI() auf einem aufgelegten Channel |
Abschnitt C.43, „DumpChan() “ – Informationen
über einen Kanal auf dem CLI ausgeben |
Abschnitt C.45, „EAGI() “ – Siehe
AGI() |
Abschnitt C.55, „ExternalIVR() “ – Einen
externen IVR-Generator ausführen |
Abschnitt C.78, „Log() “ – Eine Nachricht in
einem bestimmten Verbosity-Level loggen |
Abschnitt C.81, „Macro() “ – Ein Makro
ausführen |
Abschnitt C.107, „NoOp() “ – Nichts tun.
Schreibt Debugging-Informationen |
Abschnitt C.126, „Read() “ – Eine Variable
(Ziffern) vom User einlesen |
Abschnitt C.176, „System() “ – Einen
Shell-Befehl ausführen |
Abschnitt C.179, „TrySystem() “ – Wie
System() , gibt aber immer 0 zurück |
Abschnitt C.183, „UserEvent() “ – Dem
Manager-Interface ein Event schicken |
Abschnitt C.184, „Verbose() “ – Eine Nachricht
in einem bestimmten Verbosity-Level loggen |
Warteschlangen,
Call-CenterAbschnitt C.2, „AddQueueMember() “ – Interface
dynamisch in Warteschleife einreihen |
Abschnitt C.4, „AgentCallbackLogin() “ –
Call-Center-Agenten einloggen (mit Rückruf) |
Abschnitt C.5, „AgentLogin() “ –
Call-Center-Agenten einloggen |
Abschnitt C.6, „AgentMonitorOutgoing() “ –
Ausgehende Anrufe eines Agenten aufzeichnen |
Abschnitt C.111, „ParkAndAnnounce() “ – Anruf
parken und ankündigen |
Abschnitt C.112, „ParkedCall() “ – Einen
geparkten Anruf annehmen |
Abschnitt C.114, „PauseQueueMember() “ – Einen
Agenten pausieren |
Abschnitt C.122, „Queue() “ – Eingehenden Anruf
in Warteschleife einreihen |
Abschnitt C.123, „QueueLog() “ – Beliebigen
Eintrag im Queue-Log schreiben |
Abschnitt C.133, „RemoveQueueMember() “ –
Interface aus Warteschleife entfernen |
Abschnitt C.182, „UnpauseQueueMember() “ – Einen
pausierenden Agenten wieder aktivieren |