Merged revisions 89416 via svnmerge from
[asterisk/asterisk.git] / doc / tex / localchannel.tex
index 896f3f1..ab42606 100644 (file)
@@ -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 
-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 
+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 and one audio frame passes, 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
 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}