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_
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
.soApplikationsname
anzeigen.
Die Befehle core application
|
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.
Ein Hinweis am Rande: Die Konfigurationsdateien von Asterisk
verwenden leider ein recht schwammiges Format (als INI bekannt), für das
nie eine offizielle Grammatik veröffentlicht wurde.
Der Parser geht auch nicht den üblichen Weg von lexikalischer Analyse,
Tokenizing und syntaktischer Analyse. Aus diesem Grund steigt übrigens der
Asterisk-Ableger OpenPBX auf
die von Mac OS X bekannten, aber auch auf anderen Plattformen verfügbaren
„Property Lists“ ( Hier sei nur gesagt, dass es aufgrund mangelnder Spezifikation nicht immer klar ist, an welcher Stelle z.B. Leerzeichen erlaubt sind oder wo Anführungszeichen erwartet werden. Meist werden mehrere Schreibweisen erkannt. Im Zweifelsfall hilft nur Ausprobieren, wenn eine Schreibweise in Ihrer Asterisk-Version nicht funktioniert. Sollten Sie Fehler entdecken, wird um Rückmeldung gebeten. |
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.
Bitte beachten Sie, dass, abhängig von der eingesetzten
Asterisk-Version die Parameter durch |
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 C, Funktionen im Dialplan. Die beigefügten Diffs der internen Hilfetexte sind immer vom neueren 1.4 zum älteren 1.2.
In den Beispielen wird 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 vorhanden (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, ...)
„Answer() “ - Abheben |
„Busy() “ - Besetztzeichen
signalisieren |
„ChanIsAvail() “ - Prüfen, ob ein
Channel verfügbar ist |
„ChannelRedirect() “ - Kanal auf
eine andere Extension umleiten |
„Congestion() “ - Stau
signalisieren |
„Dial() “ - Einen Anruf durchstellen
/ mit einem Channel verbinden |
„DISA() “ - DISA (Direct Inward
System Access) |
„FollowMe() “ -
„Folge-Mir“-Funktionalität |
„Hangup() “ - Auflegen |
„Page() “ - Rundruf |
„Park() “ - Gespräch parken |
„Pickup() “ - Heranholen eines
Anrufs |
„RetryDial() “ - Dial()
mit „Wahlwiederholung“ |
„Ringing() “ - Klingeln
signalisieren |
Flusskontrolle und Timeouts
„ContinueWhile() “ - Zum Anfang
einer While-Schleife springen |
„EndWhile() “ - Ende einer
While-Schleife |
„Exec() “ - Ausführen einer
Applikation |
„ExecIf() “ - Bedingtes Ausführen
einer Applikation |
„ExecIfTime() “ - Zeitabhängiges
Ausführen einer Applikation |
„ExitWhile() “ - Eine While-Schleife
abbrechen |
„Gosub() “ - Zu einer Unterroutine
springen |
„GosubIf() “ - Bedingtes
Gosub() |
„Goto() “ - Zu einer Priorität,
Extension oder anderem Context springen |
„GotoIf() “ - Bedingtes
Goto() |
„GotoIfTime() “ - Bedingtes
Gosub() je nach Datum/Uhrzeit |
„Random() “ - Zufällig im Dial-Plan
springen |
„Return() “ - Aus einem
Gosub() oder GosubIf() zurückkehren |
„TryExec() “ - Versuch der
Ausführung einer Applikation |
„While() “ - Anfang einer
While-Schleife |
Macros
„Macro() “ - Macro aufrufen |
„MacroExclusive() “ - Macro zu einem
Zeitpunkt nur einmal aufrufen |
„MacroExit() “ - Macro
abbrechen |
„MacroIf() “ - Ein Macro bedingt
ausführen |
Anrufer-Kennung (Caller-ID, Name, ...)
„CallingPres() “ - „Caller
Presentation“ verändern |
„LookupBlacklist() “ - Caller-ID in
Blacklist nachschlagen |
„LookupCIDName() “ - Caller-ID-Name
in Datenbank nachschlagen |
„PrivacyManager() “ - Eingabe einer
Telefonnummer verlangen falls ohne Caller-ID |
„SetCallerPres() “ - Caller-ID
setzen, unanhängig vom Channel |
„SoftHangup() “ - Auflegen
verlangen |
„Zapateller() “ - Werbeanrufe
blockieren |
Gesprächsprotokolle (CDRs)
„AppendCDRUserField() “ - Einen Wert
an das CDR-User-Feld anhängen |
„ForkCDR() “ - Den CDR in zwei
getrennte Einträge aufspalten |
„NoCDR() “ - CDR für diesen Anruf
deaktivieren |
„ResetCDR() “ - CDR-Eintrag
zurücksetzen |
„SetAMAFlags() “ - AMA-Flags
setzen |
„SetCDRUserField() “ - CDR-User-Feld
setzen |
Voicemail
„Directory() “ -
Dial-by-Name-Telefonbuch anbieten |
„MailboxExists() “ - Prüft, ob
Mailbox existiert |
„VoiceMail() “ -
Anrufbeantworter |
„VoiceMailMain() “ -
Anrufbeantworter abhören |
„VMAuthenticate() “ - User anhand
der voicemail.conf authentifizieren |
Konferenzen
„MeetMe() “ -
MeetMe-Konferenz |
„MeetMeAdmin() “ - MeetMe-Konferenz
verwalten |
„MeetMeCount() “ - Anzahl der
Teilnehmer einer MeetMe-Konferenz |
Variablen verändern
„ImportVar() “ - Variable von einem
Channel importieren |
„Read() “ - Eine Variable (Ziffern)
vom User einlesen |
„ReadFile() “ - Eine Datei in eine
Variable einlesen |
„RealTime() “ - Variablen aus dem
Realtime-System einlesen |
„RealTimeUpdate() “ - Variablen im
Realtime-System verändern |
„Set() “ - Eine Channel-Variable
setzen |
„SetGlobalVar() “ - Eine globale
Variable setzen |
Musik-/Sprachausgabe
„Background() “ - Im Hintergrund
eine Sound-Datei spielen |
„BackgroundDetect() “ -
Background() mit Spracherkennung |
„ControlPlayback() “ -
Playback() mit Vor-/Zurückspulen und Abbrechen |
„DateTime() “ - Datum/Uhrzeit
ansagen |
„Echo() “ - Audio-Eingabe
wiedergeben |
„Festival() “ - Text mit dem
Festival-Synthesizer sprechen |
„Milliwatt() “ - Einen konstanten
1000-Hz-Ton mit 0 dbm erzeugen |
„MP3Player() “ - MP3-Datei oder
-Stream spielen |
„MusicOnHold() “ - Wartemusik
spielen |
„NBScat() “ - NBS-Stream
abspielen |
„Playback() “ - Eine Sound-Datei
spielen |
„Playtones() “ - Töne
spielen |
„Progress() “ - Audio vor dem
Abheben spielen |
„SayAlpha() “ - Buchstabieren
(alphanumerisch) |
„SayDigits() “ - Ziffern
ansagen |
„SayNumber() “ - Nummer
ansagen |
„SayPhonetic() “ -
Buchstabieren |
„SayUnixTime() “ - Datum/Uhrzeit
ansagen |
„SetMusicOnHold() “ - Wartemusik
festlegen |
„StopPlaytones() “ -
Playtones() beenden |
Aufzeichnen
„AgentMonitorOutgoing() “ -
Ausgehende Anrufe eines Agenten aufzeichnen |
„ChangeMonitor() “ - Die Datei für
Monitor() verändern |
„ChanSpy() “ - Ein Gespräch
mithören |
„Dial() “ - Mit der Option
w oder W im Gespräch aufzeichnen |
„Dictate() “ - Diktat aufnehmen und
wiedergeben |
„ExtenSpy() “ - Ein Gespräch
mithören |
„MixMonitor() “ - Ähnlich
Monitor() , aber nur eine Datei |
„Monitor() “ - Ein Gespräch
mitschneiden |
„PauseMonitor() “ - Mitschneiden
pausieren |
„Record() “ - Eingehendes Audio
mitschneiden |
„StopMonitor() “ -
Monitor() beenden |
„UnpauseMonitor() “ - Pausierung des
Mitschnitts aufheben |
„ZapBarge() “ - Einen ZAP-Channel
belauschen |
„ZapScan() “ - Zwecks Mithören durch
ZAP-Kanäle schalten |
Datenbank-Zugriffe
„DBdel() “ - Einen Datenbankeintrag
löschen |
„DBdeltree() “ - Einen
Datenbank-Zweig löschen |
Allgemeines
„Authenticate() “ - Einen User
authentifizieren |
„SendDTMF() “ - DTMF-Töne
senden |
„SendImage() “ - Ein Bild
senden |
„SendText() “ - Einen Text
senden |
„SendURL() “ - Eine URL
senden |
„Transfer() “ - Anruf
weiterleiten |
„VMAuthenticate() “ - User anhand
der voicemail.conf authentifizieren |
„Wait() “ - Eine bestimmte Zeit
warten |
„WaitExten() “ - Auf Eingabe einer
Extension warten |
„WaitForRing() “ - Auf Klingeln
warten |
„WaitForSilence() “ - Auf Stille
warten |
„WaitMusicOnHold() “ - Warten mit
Musik |
Externe Skripte
„AGI() “ - Eine AGI-Anwendung
ausführen |
„DeadAGI() “ - AGI()
auf einem aufgelegten Channel |
„DumpChan() “ - Informationen über
einen Kanal auf dem CLI ausgeben |
„EAGI() “ - Siehe
AGI() |
„ExternalIVR() “ - Einen externen
IVR-Generator ausführen |
„FastAGI() “ - AGI()
auf einem entfernten Rechner |
„Log() “ - Eine Nachricht in einem
bestimmten Verbosity-Level loggen |
„Macro() “ - Ein Makro
ausführen |
„NoOp() “ - Nichts tun. Schreibt
Debugging-Informationen |
„Perl() “ - res_perl
ist wie mod_perl für Apache, aber für Asterisk |
„PHP() “ - res_php ist
wie mod_php für Apache, aber für Asterisk |
„Read() “ - Eine Variable (Ziffern)
vom User einlesen |
„System() “ - Einen Shell-Befehl
ausführen |
„TrySystem() “ - Wie
System() , gibt aber immer 0 zurück |
„UserEvent() “ - Dem
Manager-Interface ein Event schicken |
„Verbose() “ - Eine Nachricht in
einem bestimmten Verbosity-Level loggen |
SIP
„SIPdtmfMode() “ - DTMF-Modus
während SIP-Verbindung ändern |
„SIPAddHeader() “ - Einem
ausgehenden Anruf einen SIP-Header hinzufügen |
ZAP
„Flash() “ - Einen Switchhook-Flash
auf einem ZAP-Trunk senden |
„ZapBarge() “ - Einen ZAP-Channel
belauschen |
„ZapRAS() “ - RAS (Remote Access
Server) auf einem ZAP-ISDN-Channel bereitstellen |
„ZapScan() “ - Zwecks Mithören durch
ZAP-Kanäle schalten |
Warteschlangen, Call-Center
„AddQueueMember() “ - Interface
dynamisch in Warteschleife einreihen |
„AgentCallbackLogin() “ -
Call-Center-Agenten einloggen (mit Rückruf) |
„AgentLogin() “ -
Call-Center-Agenten einloggen |
„AgentMonitorOutgoing() “ -
Ausgehende Anrufe eines Agenten aufzeichen |
„ParkAndAnnounce() “ - Anruf parken
und ankündigen |
„ParkedCall() “ - Einen geparkten
Anruf annehmen |
„PauseQueueMember() “ - Einen
Agenten pausieren |
„Queue() “ - Eingehenden Anruf in
Warteschleife einreihen |
„QueueLog() “ - Beliebigen Eintrag
im Queue-Log schreiben |
„RemoveQueueMember() “ - Interface
aus Warteschleife entfernen |
„UnpauseQueueMember() “ - Einen
pausierenden Agenten wieder aktivieren |
ADSI
„ADSIProg() “ - Ein ADSI-Skript in
ein Telefon laden |
„GetCPEID() “ - ADSI-CPE-ID
abfragen |
Verschiedenes
„AMD() “ - Einen Anrufbeantworter
erkennen |
„AlarmReceiver() “ - Einen
Contact-ID-Alarm-Empfänger von Ademco emulieren |
„IAX2Provision() “ - Versorgt ein
IAXy |
„Morsecode() “ - Sendet einen Text
als Morsezeichen |
„SetTransferCapability() “ -
ISDN-Transfer-Capability setzen |
„SMS() “ - Sendet oder empfängt
SMS-Nachrichten |