Letzte Woche => Endspurt!Montag den 29.01.07 geht das Buch in die Produktion. Bis dahin laeuft der Beta-Test noch in vollem Umfang. Bitte melden Sie Fehler! Siehe Beta-Test FAQ. Erscheinungstermin: 03.03.07. Das Buch wird auf dem Asterisk-Tag.org in Chemnitz vorgestellt und kann dort auch erworben werden. 10 Tage spaeter wird es im Buchhandel sein. Wer nicht in Chemnitz sein kann, sollte das Buch vorbestellen: Amazon oder direkt beim Verlag Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. Naechste Asterisk-Schulung: 12.02. - 13.02.07 (noch 2 Plaetze frei) - Ach ja, ... wir suchen auch noch Asterisk Entwickler! => http://www.amooma.de/jobs/ |
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. Welche Applikationen in Ihrer Asterisk-Version vorhanden sind, erfahren Sie, indem Sie im Asterisk-CLI applikationsname
.soshow applications
oder show application
eingeben.Applikationsname
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. Einige Applikationen älterer Asterisk-Versionen wurden mittlerweile durch Funktionen ersetzt und werden hier nicht mehr erwähnt, da sie nicht mehr verwendet werden sollen.
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 ,
(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 Abschnitt 11, „Funktionen im Dialplan“.
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 „depreceted“. Die neuere Methode ist das Abfragen der gesetzten Channelvariablen.
Um 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.8, „Answer() “ - Abheben |
Abschnitt 10.12, „Busy() “ - Besetztzeichen signalisieren |
Abschnitt 10.15, „ChanIsAvail() “ - Prüfen, ob ein Channel verfügbar ist |
Abschnitt 10.17, „Congestion() “ - Stau signalisieren |
Abschnitt 10.22, „Dial() “ - Einen Anruf durchstellen / mit einem Channel verbinden |
Abschnitt 10.25, „DISA() “ - DISA (Direct Inward System Access) |
Abschnitt 10.42, „Hangup() “ - Auflegen |
Abschnitt 10.78, „RetryDial() “ - Dial() mit „Wahlwiederholung“ |
Abschnitt 10.80, „Ringing() “ - Klingeln signalisieren |
Flusskontrolle und Timeouts
Abschnitt 10.29, „EndWhile() “ - Ende einer While-Schleife |
Abschnitt 10.31, „ExecIf() “ - Bedingtes Ausführen |
Abschnitt 10.37, „Gosub() “ - Zu einer Unterroutine springen |
Abschnitt 10.38, „GosubIf() “ - Bedingtes Gosub() |
Abschnitt 10.39, „Goto() “ - Zu einer Priorität, Extension oder anderem Kontext springen |
Abschnitt 10.40, „GotoIf() “ - Bedingtes Goto() |
Abschnitt 10.41, „GotoIfTime() “ - Bedingtes Gosub() je nach Datum/Uhrzeit |
Abschnitt 10.47, „Macro() “ - Macro aufrufen |
Abschnitt 10.71, „Random() “ - Zufällig im Dial-Plan springen |
Abschnitt 10.79, „Return() “ - Aus einem Gosub() oder GosubIf() zurückkehren |
Abschnitt 10.114, „While() “ - Anfang einer While-Schleife |
Anrufer-Kennung (Caller-ID, Name, ...)
Abschnitt 10.13, „CallingPres() “ - Anzeige der Caller-ID verändern |
Abschnitt 10.45, „LookupBlacklist() “ - Caller-ID in Blacklist nachschlagen |
Abschnitt 10.46, „LookupCIDName() “ - Caller-ID-Name in Datenbank nachschlagen |
Abschnitt 10.68, „PrivacyManager() “ - Eingabe einer Telefonnummer verlangen (falls ohne Caller-ID) |
Abschnitt 10.92, „SetCallerPres() “ - Caller-ID setzen, unanhängig vom Channel |
Abschnitt 10.96, „SoftHangup() “ - Auflegen verlangen |
Abschnitt 10.115, „Zapateller() “ - Werbeanrufe blockieren |
Gesprächsprotokolle (CDRs)
Abschnitt 10.35, „ForkCDR() “ - Den CDR in zwei getrennte Einträge aufspalten |
Abschnitt 10.58, „NoCDR() “ - CDR für diesen Anruf deaktivieren |
Abschnitt 10.77, „ResetCDR() “ - CDR-Eintrag zurücksetzen |
Abschnitt 10.91, „SetAMAFlags() “ - AMA-Flags setzen |
Voicemail
Abschnitt 10.24, „Directory() “ - Dial-by-Name-Telefonbuch anbieten |
Abschnitt 10.48, „MailboxExists() “ - Prüft, ob Mailbox existiert |
Abschnitt 10.107, „VoiceMail() “ - Anrufbeantworter |
Abschnitt 10.108, „VoiceMailMain() “ - Anrufbeantworter abhören |
Abschnitt 10.106, „VMAuthenticate() “ - User anhand der voicemail.conf authentifizieren |
Konferenzen
Abschnitt 10.49, „MeetMe() “ - MeetMe-Konferenz |
Abschnitt 10.50, „MeetMeAdmin() “ - MeetMe-Konferenz verwalten |
Abschnitt 10.51, „MeetMeCount() “ - Anzahl der Teilnehmer einer MeetMe-Konferenz |
Variablen verändern
Abschnitt 10.44, „ImportVar() “ - Variable von einem Channel importieren |
Abschnitt 10.72, „Read() “ - Eine Variable (Ziffern) vom User einlesen |
Abschnitt 10.90, „Set() “ - Eine Channel-Variable setzen |
Musik-/Sprachausgabe
Abschnitt 10.10, „Background() “ - Im Hintergrund eine Sound-Datei spielen |
Abschnitt 10.11, „BackgroundDetect() “ - Background() mit Spracherkennung |
Abschnitt 10.18, „ControlPlayback() “ - Playback() mit Vor-/Zurückspulen und Abbrechen |
Abschnitt 10.28, „Echo() “ - Audio-Eingabe wiedergeben |
Abschnitt 10.33, „Festival() “ - Text mit dem Festival-Synthesizer sprechen |
Abschnitt 10.52, „Milliwatt() “ - Einen konstanten 1000-Hz-Ton mit 0 dbm erzeugen |
Abschnitt 10.55, „MP3Player() “ - MP3-Datei oder -Stream spielen |
Abschnitt 10.56, „MusicOnHold() “ - Wartemusik spielen |
Abschnitt 10.66, „Playback() “ - Eine Sound-Datei spielen |
Abschnitt 10.67, „Playtones() “ - Töne spielen |
Abschnitt 10.69, „Progress() “ - Audio vor dem Abheben spielen |
Abschnitt 10.81, „SayAlpha() “ - Buchstabieren (alphanumerisch) |
Abschnitt 10.82, „SayDigits() “ - Ziffern ansagen |
Abschnitt 10.83, „SayNumber() “ - Nummer ansagen |
Abschnitt 10.84, „SayPhonetic() “ - Buchstabieren (mit sounds/phonetic/ ) |
Abschnitt 10.85, „SayUnixTime() “ - Datum/Uhrzeit ansagen |
Abschnitt 10.98, „StopPlaytones() “ - Playtones() beenden |
Aufzeichnen
Abschnitt 10.5, „AgentMonitorOutgoing() “ - Ausgehende Anrufe eines Agenten aufzeichnen |
Abschnitt 10.14, „ChangeMonitor() “ - Die Datei für Monitor() verändern |
Abschnitt 10.16, „ChanSpy() “ - Ein Gespräch mithören |
Abschnitt 10.22, „Dial() “ - Mit der Option w oder W im Gespräch aufzeichnen |
Abschnitt 10.23, „Dictate() “ - Diktat aufnehmen und wiedergeben |
Abschnitt 10.53, „MixMonitor() “ - Ähnlich Monitor() , aber nur eine Datei |
Abschnitt 10.54, „Monitor() “ - Ein Gespräch mitschneiden |
Abschnitt 10.75, „Record() “ - Eingehendes Audio mitschneiden |
Abschnitt 10.97, „StopMonitor() “ - Monitor() beenden |
Abschnitt 10.116, „ZapBarge() “ - Einen ZAP-Channel belauschen |
Abschnitt 10.118, „ZapScan() “ - Zwecks Mithören durch ZAP-Kanäle schalten |
Datenbank-Zugriffe
Abschnitt 10.19, „DBdel() “ - Einen Datenbankeintrag löschen |
Abschnitt 10.20, „DBdeltree() “ - Einen Datenbank-Zweig löschen |
Allgemeines
Abschnitt 10.9, „Authenticate() “ - Einen User authentifizieren |
Abschnitt 10.86, „SendDTMF() “ - DTMF-Töne senden |
Abschnitt 10.87, „SendImage() “ - Ein Bild senden |
Abschnitt 10.88, „SendText() “ - Einen Text senden |
Abschnitt 10.89, „SendURL() “ - Eine URL senden |
Abschnitt 10.100, „Transfer() “ - Anruf weiterleiten |
Abschnitt 10.106, „VMAuthenticate() “ - User anhand der voicemail.conf authentifizieren |
Abschnitt 10.109, „Wait() “ - Eine bestimmte Zeit warten |
Abschnitt 10.110, „WaitExten() “ - Auf Eingabe einer Extension warten |
Abschnitt 10.111, „WaitForRing() “ - Auf Klingeln warten |
Abschnitt 10.113, „WaitMusicOnHold() “ - Warten mit Musik |
Externe Skripte
Abschnitt 10.6, „AGI() “ - Eine AGI-Anwendung ausführen |
Abschnitt 10.21, „DeadAGI() “ - AGI() auf einem aufgelegten Channel |
Abschnitt 10.27, „EAGI() “ - Siehe AGI() |
Abschnitt 10.32, „FastAGI() “ - AGI() auf einem entfernten Rechner |
Abschnitt 10.47, „Macro() “ - Ein Makro ausführen |
Abschnitt 10.59, „NoOp() “ - Nichts tun. Schreibt Debugging-Informationen |
Abschnitt 10.64, „Perl() “ - res_perl ist wie mod_perl für Apache, aber für Asterisk |
Abschnitt 10.65, „PHP() “ - res_php ist wie mod_php für Apache, aber für Asterisk |
Abschnitt 10.72, „Read() “ - Eine Variable (Ziffern) vom User einlesen |
Abschnitt 10.99, „System() “ - Einen Shell-Befehl ausführen |
Abschnitt 10.102, „TrySystem() “ - Wie System() , gibt aber immer 0 zurück |
Abschnitt 10.104, „UserEvent() “ - Dem Manager-Interface ein Event schicken |
SIP
Abschnitt 10.94, „SIPdtmfMode() “ - DTMF-Modus während SIP-Verbindung ändern |
Abschnitt 10.93, „SIPAddHeader() “ - Einem ausgehenden Anruf einen SIP-Header hinzufügen |
ZAP
Abschnitt 10.34, „Flash() “ - Einen Switchhook-Flash (auch „Link“) auf einem ZAP-Trunk senden |
Abschnitt 10.116, „ZapBarge() “ - Einen ZAP-Channel belauschen |
Abschnitt 10.117, „ZapRAS() “ - RAS (Remote Access Server) auf einem ZAP-ISDN-Channel bereitstellen |
Abschnitt 10.118, „ZapScan() “ - Zwecks Mithören durch ZAP-Kanäle schalten |
Warteschlangen, Call-Center
Abschnitt 10.1, „AddQueueMember() “ - Interface dynamisch in Warteschleife einreihen |
Abschnitt 10.3, „AgentCallbackLogin() “ - Call-Center-Agenten einloggen (mit Rückruf) |
Abschnitt 10.4, „AgentLogin() “ - Call-Center-Agenten einloggen |
Abschnitt 10.5, „AgentMonitorOutgoing() “ - Ausgehende Anrufe eines Agenten aufzeichen (nur mit AgentCallbackLogin() ) |
Abschnitt 10.61, „ParkAndAnnounce() “ - Anruf parken und ankündigen |
Abschnitt 10.62, „ParkedCall() “ - Einen geparkten Anruf annehmen |
Abschnitt 10.63, „PauseQueueMember() “ - Einen Agenten pausieren |
Abschnitt 10.70, „Queue() “ - Eingehenden Anruf in Warteschleife einreihen |
Abschnitt 10.76, „RemoveQueueMember() “ - Interface aus Warteschleife entfernen |
Abschnitt 10.103, „UnpauseQueueMember() “ - Einen pausierenden Agenten wieder aktivieren |
ADSI
Abschnitt 10.2, „ADSIProg() “ - Ein ADSI-Skript in ein Telefon laden |
Abschnitt 10.36, „GetCPEID() “ - ADSI-CPE-ID abfragen |
Verschiedenes
Abschnitt 10.7, „AlarmReceiver() “ - Einen Contact-ID-Alarm-Empfänger von Ademco emulieren |
Abschnitt 10.95, „SMS() “ - Sendet oder empfängt SMS-Nachrichten |
© by Stefan Wintermeyer