mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	https://origsvn.digium.com/svn/asterisk/trunk ........ r228499 | file | 2009-11-06 13:52:00 -0400 (Fri, 06 Nov 2009) | 2 lines Fix the localchannel.tex file. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@228502 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			85 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| \subsection{Introduction}
 | |
| 
 | |
| 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|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 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.
 | |
| 
 | |
| Using the "m" option will cause chan\_local to forward music on hold start and stop
 | |
| requests. Normally chan\_local acts on them and it is started or stopped on the
 | |
| Local channel itself.
 | |
| 
 | |
| \subsection{Purpose}
 | |
| 
 | |
| 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
 | |
| was going.
 | |
| 
 | |
| 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
 | |
| 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
 | |
| exten => s,2,Dial(local/200@internal,30,r)
 | |
| exten => s,3,Playback(sorrynoanswer)
 | |
| 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(DAHDI/1)
 | |
| exten => 201,102,VoiceMail(${EXTEN}@default)
 | |
| 
 | |
| exten => _0.,1,Dial(DAHDI/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
 | |
| get lost. i.e.
 | |
| 
 | |
| \begin{verbatim}
 | |
|  Local/00531234567@pbx becomes Local/00531234567@pbx/n
 | |
| \end{verbatim}
 |