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]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]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 10, „Answer() – Abheben
Abschnitt 16, „Busy() – Besetztzeichen signalisieren
Abschnitt 18, „ChanIsAvail() – Prüfen, ob ein Channel verfügbar ist
Abschnitt 19, „ChannelRedirect() – Kanal auf eine andere Extension umleiten
Abschnitt 23, „Congestion() – Stau signalisieren
Abschnitt 38, „Dial() – Einen Anruf durchstellen bzw. mit einem Channel verbinden
Abschnitt 42, „DISA() – DISA (Direct Inward System Access)
Abschnitt 58, „FollowMe() – „Folge-Mir“-Funktionalität
Abschnitt 68, „Hangup() – Auflegen
Abschnitt 109, „Page() – Rundruf
Abschnitt 110, „Park() – Gespräch parken
Abschnitt 115, „Pickup() – Heranholen eines Anrufs
Abschnitt 136, „RetryDial()Dial() mit „Wahlwiederholung
Abschnitt 138, „Ringing() – Klingeln signalisieren

Flusskontrolle und Timeouts

Abschnitt 24, „ContinueWhile() – Zum Anfang einer While-Schleife springen
Abschnitt 47, „EndWhile() – Ende einer While-Schleife
Abschnitt 50, „Exec() – Ausführen einer Applikation
Abschnitt 51, „ExecIf() – Bedingtes Ausführen einer Applikation
Abschnitt 52, „ExecIfTime() – Zeitabhängiges Ausführen einer Applikation
Abschnitt 53, „ExitWhile() – Eine While-Schleife abbrechen
Abschnitt 63, „Gosub() – Zu einer Unterroutine springen
Abschnitt 64, „GosubIf() – Bedingtes Gosub()
Abschnitt 65, „Goto() – Zu einer Priorität, Extension oder anderem Context springen
Abschnitt 66, „GotoIf() – Bedingtes Goto()
Abschnitt 67, „GotoIfTime() – Bedingtes Gosub() je nach Datum/Uhrzeit
Abschnitt 125, „Random() – Zufällig im Dial-Plan springen
Abschnitt 137, „Return() – Aus einem Gosub() oder GosubIf() zurückkehren
Abschnitt 178, „TryExec() – Versuch der Ausführung einer Applikation
Abschnitt 195, „While() – Anfang einer While-Schleife

Makros

Abschnitt 81, „Macro() – Makro aufrufen
Abschnitt 82, „MacroExclusive() – Makro zu einem Zeitpunkt nur einmal aufrufen
Abschnitt 83, „MacroExit() – Makro abbrechen
Abschnitt 84, „MacroIf() – Ein Makro bedingt ausführen

Anrufer-Kennung (Caller-ID, Name, ...)

Abschnitt 79, „LookupBlacklist() – Caller-ID in Blacklist nachschlagen
Abschnitt 80, „LookupCIDName() – Caller-ID-Name in Datenbank nachschlagen
Abschnitt 119, „PrivacyManager() – Eingabe einer Telefonnummer verlangen, falls ohne Caller-ID
Abschnitt 153, „SetCallerPres() – Caller-ID setzen, unanhängig vom Channel
Abschnitt 168, „SoftHangup() – Auflegen verlangen
Abschnitt 196, „Zapateller() – Werbeanrufe blockieren

Gesprächsprotokolle (CDRs)

Abschnitt 11, „AppendCDRUserField() – Einen Wert an das CDR-User-Feld anhängen
Abschnitt 59, „ForkCDR() – Den CDR in zwei getrennte Einträge aufspalten
Abschnitt 106, „NoCDR() – CDR für diesen Anruf deaktivieren
Abschnitt 134, „ResetCDR() – CDR-Eintrag zurücksetzen
Abschnitt 151, „SetAMAFlags() – AMA-Flags setzen
Abschnitt 154, „SetCDRUserField() – CDR-User-Feld setzen

Voicemail

Abschnitt 41, „Directory() – Dial-by-Name-Telefonbuch anbieten
Abschnitt 85, „MailboxExists() – Prüft, ob Mailbox existiert
Abschnitt 186, „VoiceMail() – Anrufbeantworter
Abschnitt 187, „VoiceMailMain() – Anrufbeantworter abhören
Abschnitt 185, „VMAuthenticate() – User anhand der voicemail.conf authentifizieren

Konferenzen

Abschnitt 89, „MeetMe() – MeetMe-Konferenz
Abschnitt 90, „MeetMeAdmin() – MeetMe-Konferenz verwalten
Abschnitt 92, „MeetMeCount() – Anzahl der Teilnehmer einer MeetMe-Konferenz ermitteln

Variablen verändern

Abschnitt 73, „ImportVar() – Variable von einem Channel importieren
Abschnitt 126, „Read() – Eine Variable (Ziffern) vom User einlesen
Abschnitt 128, „ReadFile() – Eine Datei in eine Variable einlesen
Abschnitt 129, „RealTime() – Variablen aus dem Realtime-System einlesen
Abschnitt 130, „RealTimeUpdate() – Variablen im Realtime-System verändern
Abschnitt 149, „Set() – Eine Channel-Variable setzen
Abschnitt 157, „SetGlobalVar() – Eine globale Variable setzen

Musik-/Sprachausgabe

Abschnitt 13, „Background() – Im Hintergrund eine Sound-Datei spielen
Abschnitt 14, „BackgroundDetect()Background() mit Spracherkennung
Abschnitt 25, „ControlPlayback()Playback() mit Vor-/Zurückspulen und Abbrechen
Abschnitt 32, „DateTime() – Datum/Uhrzeit ansagen
Abschnitt 46, „Echo() – Audio-Eingabe wiedergeben
Abschnitt 56, „Festival() – Text mit dem Festival-Synthesizer sprechen
Abschnitt 93, „Milliwatt() – Einen konstanten 1000-Hz-Ton mit 0 dbm erzeugen
Abschnitt 102, „MP3Player() – MP3-Datei oder -Stream spielen
Abschnitt 104, „MusicOnHold() – Wartemusik spielen
Abschnitt 105, „NBScat() – NBS-Stream abspielen
Abschnitt 117, „Playback() – Eine Sound-Datei spielen
Abschnitt 118, „Playtones() – Töne spielen
Abschnitt 121, „Progress() – Audio vor dem Abheben spielen
Abschnitt 139, „SayAlpha() – Buchstabieren (alphanumerisch)
Abschnitt 140, „SayDigits() – Ziffern ansagen
Abschnitt 141, „SayNumber() – Nummer ansagen
Abschnitt 142, „SayPhonetic() – Buchstabieren
Abschnitt 143, „SayUnixTime() – Datum/Uhrzeit ansagen
Abschnitt 160, „SetMusicOnHold() – Wartemusik festlegen
Abschnitt 175, „StopPlaytones()Playtones() beenden

Aufzeichnen

Abschnitt 6, „AgentMonitorOutgoing() – Ausgehende Anrufe eines Agenten aufzeichnen
Abschnitt 17, „ChangeMonitor() – Die Datei für Monitor() verändern
Abschnitt 20, „ChanSpy() – Ein Gespräch mithören
Abschnitt 38, „Dial() – Mit der Option w oder W im Gespräch aufzeichnen
Abschnitt 39, „Dictate() – Diktat aufnehmen und wiedergeben
Abschnitt 54, „ExtenSpy() – Ein Gespräch mithören
Abschnitt 99, „MixMonitor() – Ähnlich Monitor(), aber nur eine Datei
Abschnitt 100, „Monitor() – Ein Gespräch mitschneiden
Abschnitt 113, „PauseMonitor() – Mitschneiden pausieren
Abschnitt 132, „Record() – Eingehendes Audio mitschneiden
Abschnitt 173, „StopMonitor()Monitor() beenden
Abschnitt 181, „UnpauseMonitor() – Pausierung des Mitschnitts aufheben
Abschnitt 197, „ZapBarge() – Einen ZAP-Channel belauschen
Abschnitt 199, „ZapScan() – Zwecks Mithören durch ZAP-Kanäle schalten

Datenbank-Zugriffe

Abschnitt 33, „DBdel() – Einen Datenbank-Eintrag löschen
Abschnitt 34, „DBdeltree() – Einen Datenbank-Zweig löschen

Allgemeines

Abschnitt 12, „Authenticate() – Einen User authentifizieren
Abschnitt 144, „SendDTMF() – DTMF-Töne senden
Abschnitt 146, „SendImage() – Ein Bild senden
Abschnitt 147, „SendText() – Einen Text senden
Abschnitt 148, „SendURL() – Eine URL senden
Abschnitt 177, „Transfer() – Anruf weiterleiten
Abschnitt 185, „VMAuthenticate() – User anhand der voicemail.conf authentifizieren
Abschnitt 188, „Wait() – Eine bestimmte Zeit warten
Abschnitt 189, „WaitExten() – Auf Eingabe einer Extension warten
Abschnitt 191, „WaitForRing() – Auf Klingeln warten
Abschnitt 192, „WaitForSilence() – Auf Stille warten
Abschnitt 193, „WaitMusicOnHold() – Warten mit Musik

Externe Skripte

Abschnitt 7, „AGI() – Eine AGI-Anwendung ausführen
Abschnitt 37, „DeadAGI()AGI() auf einem aufgelegten Channel
Abschnitt 43, „DumpChan() – Informationen über einen Kanal auf dem CLI ausgeben
Abschnitt 45, „EAGI() – Siehe AGI()
Abschnitt 55, „ExternalIVR() – Einen externen IVR-Generator ausführen
Abschnitt 78, „Log() – Eine Nachricht in einem bestimmten Verbosity-Level loggen
Abschnitt 81, „Macro() – Ein Makro ausführen
Abschnitt 107, „NoOp() – Nichts tun. Schreibt Debugging-Informationen
Abschnitt 126, „Read() – Eine Variable (Ziffern) vom User einlesen
Abschnitt 176, „System() – Einen Shell-Befehl ausführen
Abschnitt 179, „TrySystem() – Wie System(), gibt aber immer 0 zurück
Abschnitt 183, „UserEvent() – Dem Manager-Interface ein Event schicken
Abschnitt 184, „Verbose() – Eine Nachricht in einem bestimmten Verbosity-Level loggen

SIP

Abschnitt 165, „SIPdtmfMode() – DTMF-Modus während SIP-Verbindung ändern
Abschnitt 164, „SIPAddHeader() – Einem ausgehenden Anruf einen SIP-Header hinzufügen

ZAP

Abschnitt 57, „Flash() – Einen Switchhook-Flash auf einem ZAP-Trunk senden
Abschnitt 197, „ZapBarge() – Einen ZAP-Channel belauschen
Abschnitt 198, „ZapRAS() – RAS (Remote Access Server) auf einem ZAP-ISDN-Channel bereitstellen
Abschnitt 199, „ZapScan() – Zwecks Mithören durch ZAP-Kanäle schalten

Warteschlangen, Call-Center

Abschnitt 2, „AddQueueMember() – Interface dynamisch in Warteschleife einreihen
Abschnitt 4, „AgentCallbackLogin() – Call-Center-Agenten einloggen (mit Rückruf)
Abschnitt 5, „AgentLogin() – Call-Center-Agenten einloggen
Abschnitt 6, „AgentMonitorOutgoing() – Ausgehende Anrufe eines Agenten aufzeichnen
Abschnitt 111, „ParkAndAnnounce() – Anruf parken und ankündigen
Abschnitt 112, „ParkedCall() – Einen geparkten Anruf annehmen
Abschnitt 114, „PauseQueueMember() – Einen Agenten pausieren
Abschnitt 122, „Queue() – Eingehenden Anruf in Warteschleife einreihen
Abschnitt 123, „QueueLog() – Beliebigen Eintrag im Queue-Log schreiben
Abschnitt 133, „RemoveQueueMember() – Interface aus Warteschleife entfernen
Abschnitt 182, „UnpauseQueueMember() – Einen pausierenden Agenten wieder aktivieren

ADSI

Abschnitt 3, „ADSIProg() – Ein ADSI-Skript in ein Telefon laden
Abschnitt 60, „GetCPEID() – ADSI-CPE-ID abfragen

Verschiedenes

Abschnitt 9, „AMD() – Einen Anrufbeantworter erkennen
Abschnitt 8, „AlarmReceiver() – Einen Contact-ID-Alarm-Empfänger von Ademco emulieren
Abschnitt 71, „IAX2Provision() – Versorgt ein IAXy
Abschnitt 101, „Morsecode() – Sendet einen Text als Morsezeichen
Abschnitt 162, „SetTransferCapability() – ISDN-Transfer-Capability setzen
Abschnitt 167, „SMS() – Sendet oder empfängt SMS-Nachrichten

AMOOCON 2010

Noch kein Ticket? Dann wird es Zeit. Nur noch wenige Tage.

Twitter

Flattr

Das gedruckte Buch

Werbung