Da sämtliche Programmierlogik über Extensions programmiert werden muss, benötigen wir noch eine Reihe von besonderen und vom System vorbelegten Extensions.
Das h
steht bei dieser Standard-Extension für
Hangup (Auflegen). Sie wird aufgerufen, sobald ein
Gespräch beendet wurde. Dabei muss berücksichtigt werden, dass dann
logischerweise der Wert der Variable ${EXTEN}
nicht
mehr die ursprüngliche Extension, sondern den Wert h
enthält.
Soll in der globalen Variable GESPRAECHE
immer die Anzahl der aktuell geführten Gespräche gespeichert werden,
so muss diese beim Aufbau eines Gesprächs um 1 erhöht und beim Abbau
eines Gesprächs (also beim Auflegen) wieder um 1 vermindert werden.
Der folgende Dialplan zeigt die Grundidee:
[global] GESPRAECHE=0 [from-intern] exten => _X.,1,Set(GESPRAECHE=$[${GESPRAECHE} + 1]|g) exten => _X.,2,Dial(SIP/${EXTEN}) exten => h,1,Set(GESPRAECHE=$[${GESPRAECHE} - 1]|g)
Um einen Context "wasserdicht" zu machen, wird die
i
-Extension benutzt. Das i
steht dabei für
invalid (ungültig) und behandelt alle im
entsprechenden Context nicht definierten Zielrufnummern. Auch hier wird
in der Variable EXTEN
natürlich nicht mehr die angewählte
Nummer abgebildet. Diese ist mit der Variable INVALID_EXTEN
abrufbar.
In der Apfelmus GmbH können aus der Abteilung B nur die
Rufnummern 100 bis 199 angerufen werden. Alle anderen Gespräche führen
zur Ansage des Bausteines
that-is-not-rec-phn-num
.[30]
[abteilung-b] exten => _1XX,1,Dial(${EXTEN}) exten => i,1,NoOp(Undefinierte Nummer ${INVALID_EXTEN} wurde gewaehlt.) exten => i,2,Answer() exten => i,3,Playback(that-is-not-rec-phn-num) exten => i,4,Hangup()
Wurde in der Konfigurationsdatei
voicemail.conf
der Eintrag
operator=yes
gesetzt, so kann innerhalb der Voicemailbox
durch Drücken der 0
(Null) die o
-Extension
aufgerufen werden (o
steht für
Operator).
Durch Drücken der Stern-Taste (*
) kommt man hingegen
in die a
-Extension (abort,
Abbruch).
Bei der t
- und der T
-Extension handelt
es sich jeweils um Timeout-Extensions, also Zeitüberschreitungen.
Erfolgt nach einer bestimmten Zeit in einem IVR-Menü keine
Eingabe, so wird die t
-Extension aufgerufen.
Beispiel:
[hauptmenue] exten => 10,1,Answer() exten => 10,n,Background(marryme) ; "Heiraten? 1 für ja, 2 für nein" exten => 1,1,Playback(thank-you-cooperation) ; 1 => "Danke" exten => 1,n,Hangup() exten => 2,1,Playback(hangup-try-again) ; 2 => "Nochmal probieren" exten => 2,n,Hangup() exten => t,1,Hangup() ; keine Eingabe => auflegen
Die T
-Extension wird nach einem Absolute
Timeout aufgerufen. Dieser kann mit
Set(TIMEOUT(absolute)=<Sekunden>)
gesetzt
werden.
Warnung | |
---|---|
Bitte achten Sie darauf, dass vor und nach dem "=" Zeichen kein Leerzeichen stehen darf. |
Der Timeout wird immer dann gestartet, wenn der Zähler
neu gesetzt wird (es wird also nicht automatisch vom Anfang des
Gesprächs an gezählt). Mit Set(TIMEOUT(absolute)=0)
wird
dieser Timeout wieder deaktiviert.
Beispiel:
exten => 20,1,Answer() exten => 20,2,Set(TIMEOUT(absolute)=120) exten => 20,3,Playback(hello-world) exten => 20,4,Wait(1) exten => 20,5,Goto(3) exten => T,1,Wait(1) exten => T,2,Playback(thank-you-for-calling) exten => T,3,Wait(1) exten => T,4,Hangup()
Der erste Parameter einer Regel (Extension) ist immer der Name
bzw. die Nummer. Was passiert aber, falls der Anruf auf einer
klassischen analogen Leitung eintrifft und Asterisk gar nicht wissen
kann, an wen der Anruf gerichtet ist? Dies ist dann der Fall, wenn Sie
Asterisk mittels eines analogen Anschlusses an das Festnetz anschließen
und die Rufnummerweitergabe aus dem Festnetz an den analogen
Teilnehmeranschluss nicht erfolgt. Für dieses und alle anderen
Szenarien, in denen der eingehende Anruf ohne eine Zielrufnummer
ankommt, gibt es die s
-Extension.
Anmerkung | |
---|---|
Wenn Sie ein ATA-Device, also einen Analog-zu-VoIP-Adapter
benutzen, benötigen Sie dafür keine |
Beispiel:
exten => s,1,Answer() exten => s,2,Wait(1) exten => s,3,Play(carried-away-by-monkeys) exten => s,4,Wait(1) exten => s,5,Hangup()
[30] Der Sprachbaustein in der Datei
that-is-not-rec-phn-num.gsm
enthält den
folgenden Text: "That is not a recognized phone number".
AMOOCON 2010
Noch kein Ticket? Dann wird es Zeit. Nur noch wenige Tage.
- Infos unter www.amoocon.de.
- twitter.com/AMOOCON