diff options
Diffstat (limited to 'doc/tex/localchannel.tex')
-rw-r--r-- | doc/tex/localchannel.tex | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/doc/tex/localchannel.tex b/doc/tex/localchannel.tex index 896f3f1bb..6ada46da3 100644 --- a/doc/tex/localchannel.tex +++ b/doc/tex/localchannel.tex @@ -1,55 +1,55 @@ \subsection{Introduction} -chan\_local is a pseudo-channel. Use of this channel simply loops calls back +chan\_local is a pseudo-channel. Use of this channel simply loops calls back into the dialplan in a different context. Useful for recursive routing. \subsection{Syntax} \begin{verbatim} - Local/extension@context[/n] + Local/extension@context[/{n|j}] \end{verbatim} -Adding "/n" at the end of the string will make the Local channel not do a -native transfer (the "n" stands for "n"o release) upon the remote end answering -the line. This is an esoteric, but important feature if you expect the Local -channel to handle calls exactly like a normal channel. If you do not have the -"no release" feature set, then as soon as the destination (inside of the Local -channel) answers the line, the variables and dial plan will revert back to that -of the original call, and the Local channel will become a zombie and be removed -from the active channels list. This is desirable in some circumstances, but can -result in unexpected dialplan behavior if you are doing fancy things with +Adding "/n" at the end of the string will make the Local channel not do a +native transfer (the "n" stands for "n"o release) upon the remote end answering +the line. This is an esoteric, but important feature if you expect the Local +channel to handle calls exactly like a normal channel. If you do not have the +"no release" feature set, then as soon as the destination (inside of the Local +channel) answers the line, the variables and dial plan will revert back to that +of the original call, and the Local channel will become a zombie and be removed +from the active channels list. This is desirable in some circumstances, but can +result in unexpected dialplan behavior if you are doing fancy things with variables in your call handling. -There is another option that can be used with local channels, which is the "j" -option. The "j" option must be used with the "n" option to make sure that the -local channel does not get optimized out of the call. This option will enable -a jitterbuffer on the local channel. The jitterbuffer will be used to de-jitter -audio that it receives from the channel that called the local channel. This is -especially in the case of putting chan\_local in between an incoming SIP call +There is another option that can be used with local channels, which is the "j" +option. The "j" option must be used with the "n" option to make sure that the +local channel does not get optimized out of the call. This option will enable +a jitterbuffer on the local channel. The jitterbuffer will be used to de-jitter +audio that it receives from the channel that called the local channel. This is +especially in the case of putting chan\_local in between an incoming SIP call and Asterisk applications, so that the incoming audio will be de-jittered. \subsection{Purpose} -The Local channel construct can be used to establish dialing into any part of +The Local channel construct can be used to establish dialing into any part of the dialplan. -Imagine you have a TE410P in your box. You want to do something for which you -must use a Dial statement (for instance when dropping files in -\path{/var/spool/outgoing}) but you do want to be able to use your dialplans -least-cost-routes or other intelligent stuff. What you could do before we had -chan\_local was create a cross-link between two ports of the TE410P and then -Dial out one port and in the other. This way you could control where the call +Imagine you have a TE410P in your box. You want to do something for which you +must use a Dial statement (for instance when dropping files in +\path{/var/spool/outgoing}) but you do want to be able to use your dialplans +least-cost-routes or other intelligent stuff. What you could do before we had +chan\_local was create a cross-link between two ports of the TE410P and then +Dial out one port and in the other. This way you could control where the call was going. -Of course, this was a nasty hack, and to make it more sensible, chan\_local was +Of course, this was a nasty hack, and to make it more sensible, chan\_local was built. -The "Local" channel driver allows you to convert an arbitrary extension into a +The "Local" channel driver allows you to convert an arbitrary extension into a channel. It is used in a variety of places, including agents, etc. This also allows us to hop to contexts like a GoSub routine; See examples below. \subsection{Examples} - +\begin{astlisting} \begin{verbatim} [inbound] ; here falls all incoming calls exten => s,1,Answer @@ -60,18 +60,19 @@ exten => s,4,Hangup [internal] ; here where our phones falls for default exten => 200,1,Dial(sip/blah) exten => 200,102,VoiceMail(${EXTEN}@default) - + exten => 201,1,Dial(zap/1) exten => 201,102,VoiceMail(${EXTEN}@default) exten => _0.,1,Dial(Zap/g1/${EXTEN:1}) ; outgoing calls with 0+number \end{verbatim} +\end{astlisting} \subsection{Caveats} -If you use chan\_local from a call-file and you want to pass channel variables -into your context, make sure you append the '/n', because otherwise -chan\_local will 'optimize' itself out of the call-path, and the variables will +If you use chan\_local from a call-file and you want to pass channel variables +into your context, make sure you append the '/n', because otherwise +chan\_local will 'optimize' itself out of the call-path, and the variables will get lost. i.e. \begin{verbatim} |