Verbindet Kanäle.
Dial(Tech
/Resource
,Timeout
,Optionen
,URL
)
Dial(Tech1
/Resource1
[&Tech2
/Resource2
[&...
]],Timeout
,Optionen
,URL
)
Dial(Tech
/User
:Passwort
@Host
/Extension
,Timeout
,Optionen
)
Ermöglicht es, zwei Kanäle miteinander zu verbinden.[] Dial()
ist eine der wichtigsten Anwendungen in
Asterisk. Lesen Sie diesen Ausschnitt deshalb bitte aufmerksam und eventuell
mehrmals durch.
Jeder gültige Channel-Typ (wie z. B. SIP, IAX2, H.323, MGCP, Local
oder Zap) wird von Dial()
akzeptiert, aber die Parameter, die
jedem Channel übergeben werden müssen, hängen von denjenigen Informationen
ab, die der entsprechende Channel-Typ benötigt, um seine Arbeit zu
verrichten. So wird zum Beispiel ein SIP-Channel eine Netzwerkadresse und
einen Benutzer benötigen, zu dem die Verbindung hergestellt werden soll,
während ein ZAP-Channel irgendeine Art von Telefonnummer verlangt.
Wenn ein Netzwerk-basierter Channel-Typ spezifiziert wird, können
Zielhost (Name oder IP-Adresse), Benutzername, Passwort und
Fernsteuerungs-Extension als Teil der Optionen an Dial()
übergeben werden, oder man kann auf den Namen eines Channel-Eintrags in der
entsprechenden Konfigurationsdatei (.conf
-Datei)
verweisen – alle notwendigen Informationen müssen dann in dieser Datei
vorhanden sein. Benutzername und Passwort können durch den Namen der
Channel-Konfigurationsdatei, umgeben von eckigen Klammern ([]
),
ersetzt werden. Die Angabe des Hostnamens ist optional.
Ein Beispiel für einen gültigen Aufruf:
exten => s,1,Dial(SIP/peter:geheim@meier.tld)
Das Gleiche würde auch der Aufruf
exten => s,1,Dial(SIP/ein_SIP_friend)
bewirken,
wenn in
sip.conf
ein entsprechender Channel definiert
ist:
[ein_SIP_friend]
fromuser=peter
password=geheim
host=meier.tld
Oft ist eine Extension wie folgt an die Adressinformation angehängt:
exten => s,1,Dial(IAX2/benutzer:passwort@beispiel.de/500)
Dadurch
wird das entfernte Ende aufgefordert, den Anruf mit Extension 500 zu
verbinden, und zwar in dem Context, in dem der Channel eingegangen ist.
Diese Extension wird von
Dial()
nicht benötigt, weil die Daten
verwendet werden, die in der Channel-Konfiguration des entfernten Endes
vorliegen, oder der Remoteserver den Anruf zur
s
-Extension in
dem Context weiterleitet, in dem der Anruf eingegangen ist.
Schlussendlich kontrolliert das entfernte Ende, was mit dem Anruf
geschehen soll – Sie können lediglich eine spezielle Behandlung
anfragen.
Wenn kein
Timeout
spezifiziert ist, wird der Channel
unendlich klingeln. Dieses Verhalten muss nicht immer schlecht sein. Es
besteht keine Veranlassung, ihn immer zu setzen – man muss sich nur
vergegenwärtigen, dass unendlich eventuell eine sehr lange Zeit bedeuten
kann.
[] Der
Timeout
wird in Sekunden angegeben. Der
Klingel-Timeout folgt immer der Adressinformation, und zwar wie folgt:
exten => s,1,Dial(IAX2/user:pass@beispiel.de/500,20)
Mit
Dial()
können auch mehrere Channels parallel
angerufen werden. Dabei gilt das Prinzip
„Wer zuerst kommt, mahlt
zuerst“. Der Angerufene, der als Erster abhebt, bekommt das
Gespräch:
exten => s,1,Dial(SIP/2000&SIP/2001&SIP/2303)
Ein großer Teil der Mächtigkeit der
Dial()
-Anwendung
liegt in den Optionen oder Flags. Diese werden nach der Adress- und
Timeout-Information angegeben, und zwar so:
exten => s,1,Dial(IAX2/user:pass@beispiel.de/500,60,Flags
)
Wichtig! Beachten Sie, dass, wenn Sie Flags hinzufügen möchten, aber
kein Timeout spezifiziert ist, dennoch der Ort für den Timeout nicht fehlen
darf. Das heißt, ein zusätzliches Komma muss an der Stelle eingefügt werden,
an der normalerweise der Wert für den Timeout stehen würde, also so:
exten => s,1,Dial(IAX2/user:pass@beispiel.de/500,,Flags
)
Die gültigen Flags, die mit der
Dial()
-Anwendung benutzt
werden können, sind:
d
Erlaubt es dem Teilnehmer, eine einziffrige Extension zu
wählen, während er darauf wartet, dass sein Anruf beantwortet wird.
Der Anruf wird dann zu dieser Extension umgeleitet (d. h., der Anruf
wird zugunsten dieser Extension beendet). Dies geschieht entweder im
aktuellen Context oder, falls er spezifiziert wurde, im Context
${EXITCONTEXT}
.
t
Erlaubt es dem angerufenen Teilnehmer, einen verbundenen
Anruf durch Drücken der #
-Taste zu übertragen. Beachten
Sie, dass Neueinladungen nicht möglich sind, wenn diese Option
benutzt wird, weil Asterisk den Anruf überwachen muss, um zu
erkennen, wenn die angerufene Seite die #
-Taste
drückt.
T
Erlaubt es dem Anrufer, einen verbundenen Anruf durch
Drücken der #
-Taste zu übertragen. Auch hier beachten
Sie bitte, dass Neueinladungen bei Benutzung dieser Option nicht
möglich sind, weil Asterisk den Anruf überwachen muss, um zu
erkennen, wenn die angerufene Seite die #
-Taste
drückt.
w
Ermöglicht es dem angerufenen Teilnehmer, den Anruf durch
Eintippen der automon
-Sequenz (wie in
features.conf
konfiguriert) aufzunehmen
(Audio to disk). Falls die Variable
TOUCH_MONITOR
gesetzt ist, wird ihr Wert als Parameter
der Monitor()
-Anwendung weitergeleitet, wenn die
Aufnahme startet. Ist sie nicht gesetzt, wird Monitor()
die Vorgabe WAV,,m
übergeben.
W
Ermöglicht es dem Anrufer, den Anruf durch Eintippen der
automon
-Sequenz (wie in
features.conf
konfiguriert) aufzunehmen (Audio
to disk).
f
Durch dieses Flag muss die Caller-ID als die Extension der
Leitung gesetzt werden, die den ausgehenden Anruf erstellt oder
umleitet. Das wird so gemacht, weil einige PSTN-Diensteanbieter es
nicht erlauben, die Caller-ID auf irgendeinen anderen als den Ihnen
zugewiesenen Wert zu setzen. Zum Beispiel würden Sie, wenn Sie einen
PRI hatten, das Flag f
verwenden, um irgendeine lokal
im SIP-Telefon gespeicherte Caller-ID zu überscheiben.
o
Benutzt die auf der eingehenden Strecke des Anrufs
empfangene Caller-ID als die Caller-ID auf der ausgehenden Richtung
des Anrufs. Das ist nützlich, falls ein Anruf akzeptiert und dann zu
einem anderen Ziel weitergeleitet wird, wobei die Caller-ID der
eingehenden Richtung des Anrufs weitergeben wird, anstatt diese
zunächst mit den lokalen Caller-ID-Einstellungen zu
überschreiben.
r
Signalisiert dem Anrufer Klingeln, ohne dass Audio
weitergeleitet wird, bevor der Anruf beantwortet wird. Dieses Flag
wird für gewöhnlich nicht benötigt, um Klingeln zu signalisieren, da
Asterisk Klingeln signalisiert, wenn ein Channel angerufen
wird.
m[Klasse
]
Beliefert den Anruf mit Musik, bis der Anruf beantwortet
wird. Optional können Sie auch die Music-on-Hold-Klasse (z. B.
Musikrichtung) angeben.
M(x
[^arg
])
Führt das Makro
x
aus, wenn der Anruf
entgegengenommen wird, und leitet dabei optional Parameter, getrennt
durch
^
, weiter. Das Makro kann auch die
MACRO_RESULT
-Channel-Variable auf einen der folgenden
Werte setzen:
ABORT
Legt bei beiden Enden des Anrufs auf.
CONGESTION
Wirkt, als wäre ein Stau auf der Leitung.
BUSY
Wirkt, als wäre die Leitung besetzt (geht zur
Priorität n+101).
CONTINUE
Legt die Seite des Angerufenen auf und fährt im
Wählplan fort.
GOTO:<Context
>^<Extension
>^<Priorität
>
Springt zu der angegebenen Position im Wählplan.
h
Erlaubt es dem angerufenen Teilnehmer, die Leitung durch
Drücken von *
aufzulegen.
H
Erlaubt es dem anrufenden Teilnehmer, die Leitung durch
Drücken von *
aufzulegen.
C
Setzt den Call Detail Record (CDR, das
Anrufprotokoll) zurück. Da die CDR-Zeit zum Zeitpunkt der
Beantwortung des Anrufs gesetzt wird, ist es sinnvoll, das CDR
ebenfalls zurückzusetzen, damit dem Teilnehmer nicht die Zeit vor
dem Aufruf der Dial()
-Anwendung in Rechnung
gestellt wird.
P[(x
)]
Aktiviert den Geheimhaltungsmodus, wobei optional
x
als Familie/Schlüssel-Wert in der AstDB spezifiziert
werden kann. Dieser Modus ist beispielsweise dann nützlich, wenn
Anrufe aus einer Blacklist (Anrufe von Nummern aus der Blacklist
werden explizit abgelehnt) oder einer Whitelist (Anrufe von den
gelisteten Nummern werden explizit akzeptiert) angenommen werden.
Siehe auch LookupBlacklist()
.
g
Geht weiter im Context, wenn der Zielkanal aufgelegt
wird.
G(context
^extension
^priority
)
Übermittelt beide Seiten zum spezifizierten Ziel, wenn der
Anruf beantwortet wird.
A(x
)
Spielt dem angerufenen Teilnehmer eine Ankündigung vor.
x
ist der Dateiname der Audiodatei, die als Ankündigung
abzuspielen ist.
D([called
][:calling
])
Sendet DTMF-Ziffern, nachdem der Anruf beantwortet wurde,
aber bevor der Anruf überbrückt wird. Der Parameter
called
wird an die angerufene Seite weitergegeben, und
der Parameter calling
an die anrufende Seite. Beide
Parameter können individuell eingesetzt werden.
L(x
[:y
][:z
])
Begrenzt die Dauer des Anrufs auf
x
Millisekunden, wobei
y
Millisekunden vor Ablauf der
festgesetzten Dauer und danach wiederholt alle
z
Millisekunden bis zum Anlauf der Frist eine Warnung signalisiert
wird. Der
x
-Parameter muss angegeben werden,
y
und
z
sind optional. Die folgenden
speziellen Variablen können ebenfalls gesetzt werden und stellen
zusätzliche Kontrollmöglichkeiten zur Verfügung:
LIMIT_PLAYAUDIO_CALLER=yes|no
Gibt an, ob dem Anrufer Audiodateien vorgespielt
werden sollen.
LIMIT_PLAYAUDIO_CALLEE=yes|no
Gibt an, ob dem Angerufenen Audiodateien
vorgespielt werden sollen.
LIMIT_TIMEOUT_FILE=filename
Gibt an, welche Datei abgespielt werden soll,
nachdem die Zeit abgelaufen ist.
LIMIT_CONNECT_FILE=filename
Gibt an, welche Datei zu Beginn des Anrufs
abgespielt werden soll.
LIMIT_WARNING_FILE=filename
Gibt an, welche Datei gespielt werden soll, wenn
der Parameter y
angegeben ist.
j
Erlaubt, dass zu Priorität n+101 übergegangen wird
(n
: aktuelle Priorität), falls alle Kanäle als besetzt
erachtet werden.
Ein Anruf kann auch geparkt werden, statt übermittelt zu
werden (was mit dem t
- oder T
-Flag der
Fall ist). Anrufe werden gewöhnlich geparkt, indem man sie der
Extension 700 übermittelt, aber dieses Verhalten ist in
features.conf
konfigurierbar.
Mit dem Enden der
Dial()
-Anwendung werden die
folgenden Variablen gesetzt:
DIALEDTIME
Die gesamte Zeit, die von der Ausführung der
Dial()
-Anwendung an bis zu ihrer Beendigung
verstrichen ist.
ANSWEREDTIME
Die gesamte Zeit, die während des Anrufs vergangen
ist.
DIALSTATUS
Der Status des Anrufs, ausgedrückt durch einen der
folgenden Werte:
CHANUNAVAIL
Der Channel ist nicht verfügbar.
CONGESTION
Der Channel hat ein Stau-Signal
zurückgeliefert, was für gewöhnlich besgat, dass die
Verbindung nicht hergestellt werden kann.
NOANSWER
Der Channel hat in der durch die
Klingel-Timeout-Option gesetzten Frist nicht
geantwortet.
BUSY
Der angerufene Channel ist momentan
belegt.
ANSWER
Der Channel hat den Anruf
beantwortet.
CANCEL
Der Anruf wurde abgebrochen.
; eine Nummer auf Zap-Channel 2 wählen, max. 10 Sekunden klingeln:
exten => 123,1,Dial(Zap/2/1234567,10,tTm)
; sonst weiter im Dialplan:
exten => 123,n,Playback(tut-uns-leid)
exten => 123,n,Hangup()
; über IAX die Extension 500 auf dem Host beispiel.de wählen:
exten => 123,1,Dial(IAX/username:password@beispiel.de/500)
--- in Asterisk 1.4
+++ in Asterisk 1.6
@@ -4,7 +4,7 @@
Place a call and connect to the current channel
[Description]
- Dial(Technology/resource[&Tech2/resource2...][|timeout][|options][|URL]):
+ Dial(Technology/resource[&Tech2/resource2...][,timeout][,options][,URL]):
This application will place calls to one or more specified channels. As soon
as one of the requested channels answers, the originating channel will be
answered, if it has not already been answered. These two channels will then
@@ -39,6 +39,8 @@
Options:
A(x) - Play an announcement to the called party, using 'x' as the file.
C - Reset the CDR for this call.
+ c - If DIAL cancels this call, always set the flag to tell the channel
+ driver that the call is answered elsewhere.
d - Allow the calling user to dial a 1 digit extension while waiting for
a call to be answered. Exit to that extension if it exists in the
current context, or the context defined in the EXITCONTEXT variable,
@@ -48,10 +50,14 @@
DTMF string is sent to the called party, and the 'calling' DTMF
string is sent to the calling party. Both parameters can be used
alone.
+ e - execute the 'h' extension for peer after the call ends. This
+ operation will not be performed if the peer was parked
f - Force the callerid of the *calling* channel to be set as the
extension associated with the channel using a dialplan 'hint'.
For example, some PSTNs do not allow CallerID to be set to anything
other than the number assigned to the caller.
+ F(context^exten^pri) - When the caller hangs up, transfer the called party
+ to the specified context and extension and continue execution.
g - Proceed with dialplan execution at the current extension if the
destination channel hangs up.
G(context^exten^pri) - If the call is answered, transfer the calling party to
@@ -59,15 +65,18 @@
Optionally, an extension, or extension and context may be specified.
Otherwise, the current extension is used. You cannot use any additional
action post answer options in conjunction with this option.
- h - Allow the called party to hang up by sending the '*' DTMF digit.
- H - Allow the calling party to hang up by hitting the '*' DTMF digit.
+ h - Allow the called party to hang up by sending the '*' DTMF digit, or
+ whatever sequence was defined in the featuremap section for
+ 'disconnect' in features.conf
+ H - Allow the calling party to hang up by hitting the '*' DTMF digit, or
+ whatever sequence was defined in the featuremap section for
+ 'disconnect' in features.conf
i - Asterisk will ignore any forwarding requests it may receive on this
dial attempt.
- j - Jump to priority n+101 if all of the requested channels were busy.
k - Allow the called party to enable parking of the call by sending
- the DTMF sequence defined for call parking in features.conf.
+ the DTMF sequence defined for call parking in the featuremap section of features.conf.
K - Allow the calling party to enable parking of the call by sending
- the DTMF sequence defined for call parking in features.conf.
+ the DTMF sequence defined for call parking in the featuremap section of features.conf.
L(x[:y][:z]) - Limit the call to 'x' ms. Play a warning when 'y' ms are
left. Repeat the warning every 'z' ms. The following special
variables can be used with this option:
@@ -84,14 +93,12 @@
specified.
M(x[^arg]) - Execute the Macro for the *called* channel before connecting
to the calling channel. Arguments can be specified to the Macro
- using '^' as a delimeter. The Macro can set the variable
+ using '^' as a delimiter. The Macro can set the variable
MACRO_RESULT to specify the following actions after the Macro is
finished executing.
* ABORT Hangup both legs of the call.
* CONGESTION Behave as if line congestion was encountered.
- * BUSY Behave as if a busy signal was encountered. This will also
- have the application jump to priority n+101 if the
- 'j' option is set.
+ * BUSY Behave as if a busy signal was encountered.
* CONTINUE Hangup the called party and allow the calling party
to continue dialplan execution at the next priority.
* GOTO:<context>^<exten>^<priority> - Transfer the call to the
@@ -108,8 +115,8 @@
o - Specify that the CallerID that was present on the *calling* channel
be set as the CallerID on the *called* channel. This was the
behavior of Asterisk 1.0 and earlier.
- O([x]) - "Operator Services" mode (Zaptel channel to Zaptel channel
- only, if specified on non-Zaptel interface, it will be ignored).
+ O([x]) - "Operator Services" mode (DAHDI channel to DAHDI channel
+ only, if specified on non-DAHDI interface, it will be ignored).
When the destination answers (presumably an operator services
station), the originator no longer has control of their line.
They may hang up, but the switch will not release their line
@@ -128,10 +135,35 @@
S(x) - Hang up the call after 'x' seconds *after* the called party has
answered the call.
t - Allow the called party to transfer the calling party by sending the
- DTMF sequence defined in features.conf.
+ DTMF sequence defined in the blindxfer setting in the featuremap section
+ of features.conf.
T - Allow the calling party to transfer the called party by sending the
- DTMF sequence defined in features.conf.
+ DTMF sequence defined in the blindxfer setting in the featuremap section
+ of features.conf.
+ U(x[^arg]) - Execute via Gosub the routine 'x' for the *called* channel before connecting
+ to the calling channel. Arguments can be specified to the Gosub
+ using '^' as a delimiter. The Gosub routine can set the variable
+ GOSUB_RESULT to specify the following actions after the Gosub returns.
+ * ABORT Hangup both legs of the call.
+ * CONGESTION Behave as if line congestion was encountered.
+ * BUSY Behave as if a busy signal was encountered.
+ * CONTINUE Hangup the called party and allow the calling party
+ to continue dialplan execution at the next priority.
+ * GOTO:<context>^<exten>^<priority> - Transfer the call to the
+ specified priority. Optionally, an extension, or
+ extension and priority can be specified.
+ You cannot use any additional action post answer options in conjunction
+ with this option. Also, pbx services are not run on the peer (called) channel,
+ so you will not be able to set timeouts via the TIMEOUT() function in this routine.
w - Allow the called party to enable recording of the call by sending
- the DTMF sequence defined for one-touch recording in features.conf.
+ the DTMF sequence defined in the automon setting in the featuremap section
+ of features.conf.
W - Allow the calling party to enable recording of the call by sending
- the DTMF sequence defined for one-touch recording in features.conf.
+ the DTMF sequence defined in the automon setting in the featuremap section
+ of features.conf.
+ x - Allow the called party to enable recording of the call by sending
+ the DTMF sequence defined in the automixmon setting in the featuremap section
+ of features.conf.
+ X - Allow the calling party to enable recording of the call by sending
+ the DTMF sequence defined in the automixmon setting in the featuremap section
+ of features.conf.