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.
Tipp | |
---|---|
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.
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 |
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.
- Infos unter www.amoocon.de.
- twitter.com/AMOOCON