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
Timeouts
Abschnitt 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 |
Makros
Abschnitt C.81, „Macro() “ – Makro
aufrufen |
Abschnitt C.82, „MacroExclusive() “ – Makro zu
einem Zeitpunkt nur einmal aufrufen |
Abschnitt C.83, „MacroExit() “ – Makro
abbrechen |
Abschnitt C.84, „MacroIf() “ – Ein Makro
bedingt ausführen |
Anrufer-Kennung (Caller-ID, Name,
...)
Abschnitt C.79, „LookupBlacklist() “ –
Caller-ID in Blacklist nachschlagen |
Abschnitt C.80, „LookupCIDName() “ –
Caller-ID-Name in Datenbank nachschlagen |
Abschnitt C.119, „PrivacyManager() “ – Eingabe
einer Telefonnummer verlangen, falls ohne Caller-ID |
Abschnitt C.153, „SetCallerPres() “ – Caller-ID
setzen, unanhängig vom Channel |
Abschnitt C.168, „SoftHangup() “ – Auflegen
verlangen |
Abschnitt C.196, „Zapateller() “ – Werbeanrufe
blockieren |
Gesprächsprotokolle (CDRs)
Abschnitt C.11, „AppendCDRUserField() “ – Einen
Wert an das CDR-User-Feld anhängen |
Abschnitt C.59, „ForkCDR() “ – Den CDR in zwei
getrennte Einträge aufspalten |
Abschnitt C.106, „NoCDR() “ – CDR für diesen
Anruf deaktivieren |
Abschnitt C.134, „ResetCDR() “ – CDR-Eintrag
zurücksetzen |
Abschnitt C.151, „SetAMAFlags() “ – AMA-Flags
setzen |
Abschnitt C.154, „SetCDRUserField() “ –
CDR-User-Feld setzen |
Voicemail
Abschnitt C.41, „Directory() “ –
Dial-by-Name-Telefonbuch anbieten |
Abschnitt C.85, „MailboxExists() “ – Prüft, ob
Mailbox existiert |
Abschnitt C.186, „VoiceMail() “ –
Anrufbeantworter |
Abschnitt C.187, „VoiceMailMain() “ –
Anrufbeantworter abhören |
Abschnitt C.185, „VMAuthenticate() “ – User
anhand der voicemail.conf authentifizieren |
Konferenzen
Abschnitt C.89, „MeetMe() “ –
MeetMe-Konferenz |
Abschnitt C.90, „MeetMeAdmin() “ –
MeetMe-Konferenz verwalten |
Abschnitt C.92, „MeetMeCount() “ – Anzahl der
Teilnehmer einer MeetMe-Konferenz ermitteln |
Variablen verändern
Abschnitt C.73, „ImportVar() “ – Variable von
einem Channel importieren |
Abschnitt C.126, „Read() “ – Eine Variable
(Ziffern) vom User einlesen |
Abschnitt C.128, „ReadFile() “ – Eine Datei in
eine Variable einlesen |
Abschnitt C.129, „RealTime() “ – Variablen aus
dem Realtime-System einlesen |
Abschnitt C.130, „RealTimeUpdate() “ – Variablen
im Realtime-System verändern |
Abschnitt C.149, „Set() “ – Eine
Channel-Variable setzen |
Abschnitt C.157, „SetGlobalVar() “ – Eine
globale Variable setzen |
Musik-/Sprachausgabe
Aufzeichnen
Abschnitt 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 |
Datenbank-Zugriffe
Abschnitt C.33, „DBdel() “ – Einen
Datenbank-Eintrag löschen |
Abschnitt C.34, „DBdeltree() “ – Einen
Datenbank-Zweig löschen |
Allgemeines
Abschnitt 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 Skripte
Abschnitt 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 |
SIP
Abschnitt C.165, „SIPdtmfMode() “ – DTMF-Modus
während SIP-Verbindung ändern |
Abschnitt C.164, „SIPAddHeader() “ – Einem
ausgehenden Anruf einen SIP-Header hinzufügen |
ZAP
Abschnitt C.57, „Flash() “ – Einen
Switchhook-Flash auf einem ZAP-Trunk senden |
Abschnitt C.197, „ZapBarge() “ – Einen
ZAP-Channel belauschen |
Abschnitt C.198, „ZapRAS() “ – RAS (Remote
Access Server) auf einem ZAP-ISDN-Channel bereitstellen |
Abschnitt C.199, „ZapScan() “ – Zwecks Mithören
durch ZAP-Kanäle schalten |
Warteschlangen,
Call-Center
Abschnitt 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 |
ADSI
Abschnitt C.3, „ADSIProg() “ – Ein ADSI-Skript
in ein Telefon laden |
Abschnitt C.60, „GetCPEID() “ – ADSI-CPE-ID
abfragen |
Verschiedenes
Abschnitt C.9, „AMD() “ – Einen
Anrufbeantworter erkennen |
Abschnitt C.8, „AlarmReceiver() “ – Einen
Contact-ID-Alarm-Empfänger von Ademco emulieren |
Abschnitt C.71, „IAX2Provision() “ – Versorgt
ein IAXy |
Abschnitt C.101, „Morsecode() “ – Sendet einen
Text als Morsezeichen |
Abschnitt C.162, „SetTransferCapability() “ –
ISDN-Transfer-Capability setzen |
Abschnitt C.167, „SMS() “ – Sendet oder empfängt
SMS-Nachrichten |