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
Abschnitt 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
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