6.3. Besondere Extensions
Da sämtliche Programmierlogik über Extensions programmiert werden
muss, benötigen wir noch eine Reihe von besonderen und vom System
vorbelegten Extensions.
6.3.1. Die h-Extension
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.Beispiel
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)
6.3.2. Die i-Extension
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.Beispiel
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()
6.3.3. Die o- und die a-Extension
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).6.3.4. Die t- und die T-Extension
Bei der
t
- und der T
-Extension handelt
es sich jeweils um Timeout-Extensions, also Zeitüberschreitungen.t-Extension
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
T-Extension
Die 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
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.
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()
6.3.5. Die s-Extension
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
s
-Extension. Die
Zielrufnummer müssen Sie hierbei im Adapter (meist über ein
Webinterface) konfigurieren.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".