aboutsummaryrefslogtreecommitdiffstats
path: root/doc/ast_appdocs.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/ast_appdocs.tex')
-rw-r--r--doc/ast_appdocs.tex3225
1 files changed, 3225 insertions, 0 deletions
diff --git a/doc/ast_appdocs.tex b/doc/ast_appdocs.tex
new file mode 100644
index 000000000..7d59d80a1
--- /dev/null
+++ b/doc/ast_appdocs.tex
@@ -0,0 +1,3225 @@
+% This file is automatically generated. Any manual edits will be lost.
+\section{AddQueueMember}
+\subsection{Synopsis}
+\begin{verbatim}
+Dynamically adds queue members
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ AddQueueMember(queuename[|interface[|penalty[|options[|membername]]]]):
+Dynamically adds interface to an existing queue.
+If the interface is already in the queue and there exists an n+101 priority
+then it will then jump to this priority. Otherwise it will return an error
+The option string may contain zero or more of the following characters:
+ 'j' -- jump to +101 priority when appropriate.
+ This application sets the following channel variable upon completion:
+ AQMSTATUS The status of the attempt to add a queue member as a
+ text string, one of
+ ADDED | MEMBERALREADY | NOSUCHQUEUE
+Example: AddQueueMember(techsupport|SIP/3000)
+
+\end{verbatim}
+
+
+\section{ADSIProg}
+\subsection{Synopsis}
+\begin{verbatim}
+Load Asterisk ADSI Scripts into phone
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ADSIProg(script): This application programs an ADSI Phone with the given
+script. If nothing is specified, the default script (asterisk.adsi) is used.
+
+\end{verbatim}
+
+
+\section{AgentCallbackLogin}
+\subsection{Synopsis}
+\begin{verbatim}
+Call agent callback login
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ AgentCallbackLogin([AgentNo][|[options][|[exten]@context]]):
+Asks the agent to login to the system with callback.
+The agent's callback extension is called (optionally with the specified
+context).
+The option string may contain zero or more of the following characters:
+ 's' -- silent login - do not announce the login ok segment agent logged in/off
+
+\end{verbatim}
+
+
+\section{AgentLogin}
+\subsection{Synopsis}
+\begin{verbatim}
+Call agent login
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ AgentLogin([AgentNo][|options]):
+Asks the agent to login to the system. Always returns -1. While
+logged in, the agent can receive calls and will hear a 'beep'
+when a new call comes in. The agent can dump the call by pressing
+the star key.
+The option string may contain zero or more of the following characters:
+ 's' -- silent login - do not announce the login ok segment after agent logged in/off
+
+\end{verbatim}
+
+
+\section{AgentMonitorOutgoing}
+\subsection{Synopsis}
+\begin{verbatim}
+Record agent's outgoing call
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ AgentMonitorOutgoing([options]):
+Tries to figure out the id of the agent who is placing outgoing call based on
+comparison of the callerid of the current interface and the global variable
+placed by the AgentCallbackLogin application. That's why it should be used only
+with the AgentCallbackLogin app. Uses the monitoring functions in chan_agent
+instead of Monitor application. That have to be configured in the agents.conf file.
+
+Return value:
+Normally the app returns 0 unless the options are passed. Also if the callerid or
+the agentid are not specified it'll look for n+101 priority.
+
+Options:
+ 'd' - make the app return -1 if there is an error condition and there is
+ no extension n+101
+ 'c' - change the CDR so that the source of the call is 'Agent/agent_id'
+ 'n' - don't generate the warnings when there is no callerid or the
+ agentid is not known.
+ It's handy if you want to have one context for agent and non-agent calls.
+
+\end{verbatim}
+
+
+\section{AGI}
+\subsection{Synopsis}
+\begin{verbatim}
+Executes an AGI compliant application
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ [E|Dead]AGI(command|args): Executes an Asterisk Gateway Interface compliant
+program on a channel. AGI allows Asterisk to launch external programs
+written in any language to control a telephony channel, play audio,
+read DTMF digits, etc. by communicating with the AGI protocol on stdin
+and stdout.
+ This channel will stop dialplan execution on hangup inside of this
+application, except when using DeadAGI. Otherwise, dialplan execution
+will continue normally.
+ A locally executed AGI script will receive SIGHUP on hangup from the channel
+except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
+variable to "no" before executing the AGI application.
+ Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
+on file descriptor 3
+
+ Use the CLI command 'agi show' to list available agi commands
+ This application sets the following channel variable upon completion:
+ AGISTATUS The status of the attempt to the run the AGI script
+ text string, one of SUCCESS | FAILED | HANGUP
+
+\end{verbatim}
+
+
+\section{AlarmReceiver}
+\subsection{Synopsis}
+\begin{verbatim}
+Provide support for receiving alarm reports from a burglar or fire alarm panel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ AlarmReceiver(): Only 1 signalling format is supported at this time: Ademco
+Contact ID. This application should be called whenever there is an alarm
+panel calling in to dump its events. The application will handshake with the
+alarm panel, and receive events, validate them, handshake them, and store them
+until the panel hangs up. Once the panel hangs up, the application will run the
+system command specified by the eventcmd setting in alarmreceiver.conf and pipe
+the events to the standard input of the application. The configuration file also
+contains settings for DTMF timing, and for the loudness of the acknowledgement
+tones.
+
+\end{verbatim}
+
+
+\section{AMD}
+\subsection{Synopsis}
+\begin{verbatim}
+Attempts to detect answering machines
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ AMD([initialSilence][|greeting][|afterGreetingSilence][|totalAnalysisTime]
+ [|minimumWordLength][|betweenWordsSilence][|maximumNumberOfWords]
+ [|silenceThreshold])
+ This application attempts to detect answering machines at the beginning
+ of outbound calls. Simply call this application after the call
+ has been answered (outbound only, of course).
+ When loaded, AMD reads amd.conf and uses the parameters specified as
+ default values. Those default values get overwritten when calling AMD
+ with parameters.
+- 'initialSilence' is the maximum silence duration before the greeting. If
+ exceeded then MACHINE.
+- 'greeting' is the maximum length of a greeting. If exceeded then MACHINE.
+- 'afterGreetingSilence' is the silence after detecting a greeting.
+ If exceeded then HUMAN.
+- 'totalAnalysisTime' is the maximum time allowed for the algorithm to decide
+ on a HUMAN or MACHINE.
+- 'minimumWordLength'is the minimum duration of Voice to considered as a word.
+- 'betweenWordsSilence' is the minimum duration of silence after a word to
+ consider the audio that follows as a new word.
+- 'maximumNumberOfWords'is the maximum number of words in the greeting.
+ If exceeded then MACHINE.
+- 'silenceThreshold' is the silence threshold.
+This application sets the following channel variable upon completion:
+ AMDSTATUS - This is the status of the answering machine detection.
+ Possible values are:
+ MACHINE | HUMAN | NOTSURE | HANGUP
+ AMDCAUSE - Indicates the cause that led to the conclusion.
+ Possible values are:
+ TOOLONG-<%d total_time>
+ INITIALSILENCE-<%d silenceDuration>-<%d initialSilence>
+ HUMAN-<%d silenceDuration>-<%d afterGreetingSilence>
+ MAXWORDS-<%d wordsCount>-<%d maximumNumberOfWords>
+ LONGGREETING-<%d voiceDuration>-<%d greeting>
+
+\end{verbatim}
+
+
+\section{Answer}
+\subsection{Synopsis}
+\begin{verbatim}
+Answer a channel if ringing
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Answer([delay]): If the call has not been answered, this application will
+answer it. Otherwise, it has no effect on the call. If a delay is specified,
+Asterisk will wait this number of milliseconds before returning to
+the dialplan after answering the call.
+
+\end{verbatim}
+
+
+\section{AppendCDRUserField}
+\subsection{Synopsis}
+\begin{verbatim}
+Append to the CDR user field
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+[Synopsis]
+AppendCDRUserField(value)
+
+[Description]
+AppendCDRUserField(value): Append value to the CDR user field
+ The Call Data Record (CDR) user field is an extra field you
+ can use for data not stored anywhere else in the record.
+ CDR records can be used for billing or storing other arbitrary data
+ (I.E. telephone survey responses)
+ Also see SetCDRUserField().
+
+\end{verbatim}
+
+
+\section{Authenticate}
+\subsection{Synopsis}
+\begin{verbatim}
+Authenticate a user
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Authenticate(password[|options[|maxdigits]]): This application asks the caller
+to enter a given password in order to continue dialplan execution. If the password
+begins with the '/' character, it is interpreted as a file which contains a list of
+valid passwords, listed 1 password per line in the file.
+ When using a database key, the value associated with the key can be anything.
+Users have three attempts to authenticate before the channel is hung up. If the
+passsword is invalid, the 'j' option is specified, and priority n+101 exists,
+dialplan execution will continnue at this location.
+ Options:
+ a - Set the channels' account code to the password that is entered
+ d - Interpret the given path as database key, not a literal file
+ j - Support jumping to n+101 if authentication fails
+ m - Interpret the given path as a file which contains a list of account
+ codes and password hashes delimited with ':', listed one per line in
+ the file. When one of the passwords is matched, the channel will have
+ its account code set to the corresponding account code in the file.
+ r - Remove the database key upon successful entry (valid with 'd' only)
+ maxdigits - maximum acceptable number of digits. Stops reading after
+ maxdigits have been entered (without requiring the user to
+ press the '#' key).
+ Defaults to 0 - no limit - wait for the user press the '#' key.
+
+\end{verbatim}
+
+
+\section{BackGround}
+\subsection{Synopsis}
+\begin{verbatim}
+Play an audio file while waiting for digits of an extension to go to.
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Background(filename1[&filename2...][|options[|langoverride][|context]]):
+This application will play the given list of files while waiting for an
+extension to be dialed by the calling channel. To continue waiting for digits
+after this application has finished playing files, the WaitExten application
+should be used. The 'langoverride' option explicitly specifies which language
+to attempt to use for the requested sound files. If a 'context' is specified,
+this is the dialplan context that this application will use when exiting to a
+dialed extension. If one of the requested sound files does not exist, call processing will be
+terminated.
+ Options:
+ s - Causes the playback of the message to be skipped
+ if the channel is not in the 'up' state (i.e. it
+ hasn't been answered yet). If this happens, the
+ application will return immediately.
+ n - Don't answer the channel before playing the files.
+ m - Only break if a digit hit matches a one digit
+ extension in the destination context.
+
+\end{verbatim}
+
+
+\section{BackgroundDetect}
+\subsection{Synopsis}
+\begin{verbatim}
+Background a file with talk detect
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ BackgroundDetect(filename[|sil[|min|[max]]]): Plays back a given
+filename, waiting for interruption from a given digit (the digit must
+start the beginning of a valid extension, or it will be ignored).
+During the playback of the file, audio is monitored in the receive
+direction, and if a period of non-silence which is greater than 'min' ms
+yet less than 'max' ms is followed by silence for at least 'sil' ms then
+the audio playback is aborted and processing jumps to the 'talk' extension
+if available. If unspecified, sil, min, and max default to 1000, 100, and
+infinity respectively.
+
+\end{verbatim}
+
+
+\section{Busy}
+\subsection{Synopsis}
+\begin{verbatim}
+Indicate the Busy condition
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Busy([timeout]): This application will indicate the busy condition to
+the calling channel. If the optional timeout is specified, the calling channel
+will be hung up after the specified number of seconds. Otherwise, this
+application will wait until the calling channel hangs up.
+
+\end{verbatim}
+
+
+\section{ChangeMonitor}
+\subsection{Synopsis}
+\begin{verbatim}
+Change monitoring filename of a channel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ChangeMonitor(filename_base)
+Changes monitoring filename of a channel. Has no effect if the channel is not monitored
+The argument is the new filename base to use for monitoring this channel.
+
+\end{verbatim}
+
+
+\section{ChanIsAvail}
+\subsection{Synopsis}
+\begin{verbatim}
+Check channel availability
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ChanIsAvail(Technology/resource[&Technology2/resource2...][|options]):
+This application will check to see if any of the specified channels are
+available. The following variables will be set by this application:
+ ${AVAILCHAN} - the name of the available channel, if one exists
+ ${AVAILORIGCHAN} - the canonical channel name that was used to create the channel
+ ${AVAILSTATUS} - the status code for the available channel
+ Options:
+ s - Consider the channel unavailable if the channel is in use at all
+ j - Support jumping to priority n+101 if no channel is available
+
+\end{verbatim}
+
+
+\section{ChannelRedirect}
+\subsection{Synopsis}
+\begin{verbatim}
+Redirects given channel to a dialplan target.
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ChannelRedirect(channel|[[context|]extension|]priority):
+ Sends the specified channel to the specified extension priority
+
+\end{verbatim}
+
+
+\section{ChanSpy}
+\subsection{Synopsis}
+\begin{verbatim}
+Listen to a channel, and optionally whisper into it
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ChanSpy([chanprefix][|options]): This application is used to listen to the
+audio from an Asterisk channel. This includes the audio coming in and
+out of the channel being spied on. If the 'chanprefix' parameter is specified,
+only channels beginning with this string will be spied upon.
+ While spying, the following actions may be performed:
+ - Dialing # cycles the volume level.
+ - Dialing * will stop spying and look for another channel to spy on.
+ - Dialing a series of digits followed by # builds a channel name to append
+ to 'chanprefix'. For example, executing ChanSpy(Agent) and then dialing
+ the digits '1234#' while spying will begin spying on the channel
+ 'Agent/1234'.
+ Options:
+ b - Only spy on channels involved in a bridged call.
+ g(grp) - Match only channels where their ${SPYGROUP} variable is set to
+ contain 'grp' in an optional : delimited list.
+ q - Don't play a beep when beginning to spy on a channel, or speak the
+ selected channel name.
+ r[(basename)] - Record the session to the monitor spool directory. An
+ optional base for the filename may be specified. The
+ default is 'chanspy'.
+ v([value]) - Adjust the initial volume in the range from -4 to 4. A
+ negative value refers to a quieter setting.
+ w - Enable 'whisper' mode, so the spying channel can talk to
+ the spied-on channel.
+ W - Enable 'private whisper' mode, so the spying channel can
+ talk to the spied-on channel but cannot listen to that
+ channel.
+
+\end{verbatim}
+
+
+\section{Congestion}
+\subsection{Synopsis}
+\begin{verbatim}
+Indicate the Congestion condition
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Congestion([timeout]): This application will indicate the congestion
+condition to the calling channel. If the optional timeout is specified, the
+calling channel will be hung up after the specified number of seconds.
+Otherwise, this application will wait until the calling channel hangs up.
+
+\end{verbatim}
+
+
+\section{ContinueWhile}
+\subsection{Synopsis}
+\begin{verbatim}
+Restart a While loop
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Usage: ContinueWhile()
+Returns to the top of the while loop and re-evaluates the conditional.
+
+\end{verbatim}
+
+
+\section{ControlPlayback}
+\subsection{Synopsis}
+\begin{verbatim}
+Play a file with fast forward and rewind
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ControlPlayback(file[|skipms[|ff[|rew[|stop[|pause[|restart|options]]]]]]]):
+This application will play back the given filename. By default, the '*' key
+can be used to rewind, and the '#' key can be used to fast-forward.
+Parameters:
+ skipms - This is number of milliseconds to skip when rewinding or
+ fast-forwarding.
+ ff - Fast-forward when this DTMF digit is received.
+ rew - Rewind when this DTMF digit is received.
+ stop - Stop playback when this DTMF digit is received.
+ pause - Pause playback when this DTMF digit is received.
+ restart - Restart playback when this DTMF digit is received.
+Options:
+ j - Jump to priority n+101 if the requested file is not found.
+This application sets the following channel variable upon completion:
+ CPLAYBACKSTATUS - This variable contains the status of the attempt as a text
+ string, one of: SUCCESS | USERSTOPPED | ERROR
+
+\end{verbatim}
+
+
+\section{DateTime}
+\subsection{Synopsis}
+\begin{verbatim}
+Says a specified time in a custom format
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+DateTime([unixtime][|[timezone][|format]])
+ unixtime: time, in seconds since Jan 1, 1970. May be negative.
+ defaults to now.
+ timezone: timezone, see /usr/share/zoneinfo for a list.
+ defaults to machine default.
+ format: a format the time is to be said in. See voicemail.conf.
+ defaults to "ABdY 'digits/at' IMp"
+
+\end{verbatim}
+
+
+\section{DBdel}
+\subsection{Synopsis}
+\begin{verbatim}
+Delete a key from the database
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ DBdel(family/key): This application will delete a key from the Asterisk
+database.
+ This application has been DEPRECATED in favor of the DB_DELETE function.
+
+\end{verbatim}
+
+
+\section{DBdeltree}
+\subsection{Synopsis}
+\begin{verbatim}
+Delete a family or keytree from the database
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ DBdeltree(family[/keytree]): This application will delete a family or keytree
+from the Asterisk database
+
+\end{verbatim}
+
+
+\section{DeadAGI}
+\subsection{Synopsis}
+\begin{verbatim}
+Executes AGI on a hungup channel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ [E|Dead]AGI(command|args): Executes an Asterisk Gateway Interface compliant
+program on a channel. AGI allows Asterisk to launch external programs
+written in any language to control a telephony channel, play audio,
+read DTMF digits, etc. by communicating with the AGI protocol on stdin
+and stdout.
+ This channel will stop dialplan execution on hangup inside of this
+application, except when using DeadAGI. Otherwise, dialplan execution
+will continue normally.
+ A locally executed AGI script will receive SIGHUP on hangup from the channel
+except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
+variable to "no" before executing the AGI application.
+ Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
+on file descriptor 3
+
+ Use the CLI command 'agi show' to list available agi commands
+ This application sets the following channel variable upon completion:
+ AGISTATUS The status of the attempt to the run the AGI script
+ text string, one of SUCCESS | FAILED | HANGUP
+
+\end{verbatim}
+
+
+\section{Dial}
+\subsection{Synopsis}
+\begin{verbatim}
+Place a call and connect to the current channel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ 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
+be active in a bridged call. All other channels that were requested will then
+be hung up.
+ Unless there is a timeout specified, the Dial application will wait
+indefinitely until one of the called channels answers, the user hangs up, or
+if all of the called channels are busy or unavailable. Dialplan executing will
+continue if no requested channels can be called, or if the timeout expires.
+
+ This application sets the following channel variables upon completion:
+ DIALEDTIME - This is the time from dialing a channel until when it
+ is disconnected.
+ ANSWEREDTIME - This is the amount of time for actual call.
+ DIALSTATUS - This is the status of the call:
+ CHANUNAVAIL | CONGESTION | NOANSWER | BUSY | ANSWER | CANCEL
+ DONTCALL | TORTURE | INVALIDARGS
+ For the Privacy and Screening Modes, the DIALSTATUS variable will be set to
+DONTCALL if the called party chooses to send the calling party to the 'Go Away'
+script. The DIALSTATUS variable will be set to TORTURE if the called party
+wants to send the caller to the 'torture' script.
+ This application will report normal termination if the originating channel
+hangs up, or if the call is bridged and either of the parties in the bridge
+ends the call.
+ The optional URL will be sent to the called party if the channel supports it.
+ If the OUTBOUND_GROUP variable is set, all peer channels created by this
+application will be put into that group (as in Set(GROUP()=...).
+
+ Options:
+ A(x) - Play an announcement to the called party, using 'x' as the file.
+ C - Reset the CDR for this call.
+ 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,
+ if it exists.
+ D([called][:calling]) - Send the specified DTMF strings *after* the called
+ party has answered, but before the call gets bridged. The 'called'
+ 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.
+ 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.
+ 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
+ the specified priority and the called party to the specified priority+1.
+ 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.
+ 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.
+ 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:
+ * LIMIT_PLAYAUDIO_CALLER yes|no (default yes)
+ Play sounds to the caller.
+ * LIMIT_PLAYAUDIO_CALLEE yes|no
+ Play sounds to the callee.
+ * LIMIT_TIMEOUT_FILE File to play when time is up.
+ * LIMIT_CONNECT_FILE File to play when call begins.
+ * LIMIT_WARNING_FILE File to play as warning if 'y' is defined.
+ The default is to say the time remaining.
+ m([class]) - Provide hold music to the calling party until a requested
+ channel answers. A specific MusicOnHold class can be
+ 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
+ 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.
+ * 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 macro.
+ n - This option is a modifier for the screen/privacy mode. It specifies
+ that no introductions are to be saved in the priv-callerintros
+ directory.
+ N - This option is a modifier for the screen/privacy mode. It specifies
+ that if callerID is present, do not screen the call.
+ 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).
+ 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
+ until the destination party hangs up (the operator). Specified
+ without an arg, or with 1 as an arg, the originator hanging up
+ will cause the phone to ring back immediately. With a 2 specified,
+ when the "operator" flashes the trunk, it will ring their phone
+ back.
+ p - This option enables screening mode. This is basically Privacy mode
+ without memory.
+ P([x]) - Enable privacy mode. Use 'x' as the family/key in the database if
+ it is provided. The current extension is used if a database
+ family/key is not specified.
+ r - Indicate ringing to the calling party. Pass no audio to the calling
+ party until the called channel has answered.
+ 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.
+ T - Allow the calling party to transfer the called party by sending the
+ DTMF sequence defined in features.conf.
+ w - Allow the called party to enable recording of the call by sending
+ the DTMF sequence defined for one-touch recording in 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.
+ k - Allow the called party to enable parking of the call by sending
+ the DTMF sequence defined for call parking in 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.
+
+\end{verbatim}
+
+
+\section{Dictate}
+\subsection{Synopsis}
+\begin{verbatim}
+Virtual Dictation Machine
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Dictate([<base_dir>[|<filename>]])
+Start dictation machine using optional base dir for files.
+
+\end{verbatim}
+
+
+\section{Directory}
+\subsection{Synopsis}
+\begin{verbatim}
+Provide directory of voicemail extensions
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Directory(vm-context[|dial-context[|options]]): This application will present
+the calling channel with a directory of extensions from which they can search
+by name. The list of names and corresponding extensions is retrieved from the
+voicemail configuration file, voicemail.conf.
+ This application will immediately exit if one of the following DTMF digits are
+received and the extension to jump to exists:
+ 0 - Jump to the 'o' extension, if it exists.
+ * - Jump to the 'a' extension, if it exists.
+
+ Parameters:
+ vm-context - This is the context within voicemail.conf to use for the
+ Directory.
+ dial-context - This is the dialplan context to use when looking for an
+ extension that the user has selected, or when jumping to the
+ 'o' or 'a' extension.
+
+ Options:
+ e - In addition to the name, also read the extension number to the
+ caller before presenting dialing options.
+ f - Allow the caller to enter the first name of a user in the directory
+ instead of using the last name.
+
+\end{verbatim}
+
+
+\section{DISA}
+\subsection{Synopsis}
+\begin{verbatim}
+DISA (Direct Inward System Access)
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+DISA(<numeric passcode>[|<context>]) or DISA(<filename>)
+The DISA, Direct Inward System Access, application allows someone from
+outside the telephone switch (PBX) to obtain an "internal" system
+dialtone and to place calls from it as if they were placing a call from
+within the switch.
+DISA plays a dialtone. The user enters their numeric passcode, followed by
+the pound sign (#). If the passcode is correct, the user is then given
+system dialtone on which a call may be placed. Obviously, this type
+of access has SERIOUS security implications, and GREAT care must be
+taken NOT to compromise your security.
+
+There is a possibility of accessing DISA without password. Simply
+exchange your password with "no-password".
+
+ Example: exten => s,1,DISA(no-password|local)
+
+Be aware that using this compromises the security of your PBX.
+
+The arguments to this application (in extensions.conf) allow either
+specification of a single global passcode (that everyone uses), or
+individual passcodes contained in a file. It also allows specification
+of the context on which the user will be dialing. If no context is
+specified, the DISA application defaults the context to "disa".
+Presumably a normal system will have a special context set up
+for DISA use with some or a lot of restrictions.
+
+The file that contains the passcodes (if used) allows specification
+of either just a passcode (defaulting to the "disa" context, or
+passcode|context on each line of the file. The file may contain blank
+lines, or comments starting with "#" or ";". In addition, the
+above arguments may have |new-callerid-string appended to them, to
+specify a new (different) callerid to be used for this call, for
+example: numeric-passcode|context|"My Phone" <(234) 123-4567> or
+full-pathname-of-passcode-file|"My Phone" <(234) 123-4567>. Last
+but not least, |mailbox[@context] may be appended, which will cause
+a stutter-dialtone (indication "dialrecall") to be used, if the
+specified mailbox contains any new messages, for example:
+numeric-passcode|context||1234 (w/a changing callerid). Note that
+in the case of specifying the numeric-passcode, the context must be
+specified if the callerid is specified also.
+
+If login is successful, the application looks up the dialed number in
+the specified (or default) context, and executes it if found.
+If the user enters an invalid extension and extension "i" (invalid)
+exists in the context, it will be used. Also, if you set the 5th argument
+to 'NOANSWER', the DISA application will not answer initially.
+
+\end{verbatim}
+
+
+\section{DumpChan}
+\subsection{Synopsis}
+\begin{verbatim}
+Dump Info About The Calling Channel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ DumpChan([<min_verbose_level>])
+Displays information on channel and listing of all channel
+variables. If min_verbose_level is specified, output is only
+displayed when the verbose level is currently set to that number
+or greater.
+
+\end{verbatim}
+
+
+\section{EAGI}
+\subsection{Synopsis}
+\begin{verbatim}
+Executes an EAGI compliant application
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ [E|Dead]AGI(command|args): Executes an Asterisk Gateway Interface compliant
+program on a channel. AGI allows Asterisk to launch external programs
+written in any language to control a telephony channel, play audio,
+read DTMF digits, etc. by communicating with the AGI protocol on stdin
+and stdout.
+ This channel will stop dialplan execution on hangup inside of this
+application, except when using DeadAGI. Otherwise, dialplan execution
+will continue normally.
+ A locally executed AGI script will receive SIGHUP on hangup from the channel
+except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
+variable to "no" before executing the AGI application.
+ Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
+on file descriptor 3
+
+ Use the CLI command 'agi show' to list available agi commands
+ This application sets the following channel variable upon completion:
+ AGISTATUS The status of the attempt to the run the AGI script
+ text string, one of SUCCESS | FAILED | HANGUP
+
+\end{verbatim}
+
+
+\section{Echo}
+\subsection{Synopsis}
+\begin{verbatim}
+Echo audio, video, or DTMF back to the calling party
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Echo(): This application will echo any audio, video, or DTMF frames read from
+the calling channel back to itself. If the DTMF digit '#' is received, the
+application will exit.
+
+\end{verbatim}
+
+
+\section{EndWhile}
+\subsection{Synopsis}
+\begin{verbatim}
+End a while loop
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Usage: EndWhile()
+Return to the previous called While
+
+\end{verbatim}
+
+
+\section{Exec}
+\subsection{Synopsis}
+\begin{verbatim}
+Executes dialplan application
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Usage: Exec(appname(arguments))
+ Allows an arbitrary application to be invoked even when not
+hardcoded into the dialplan. If the underlying application
+terminates the dialplan, or if the application cannot be found,
+Exec will terminate the dialplan.
+ To invoke external applications, see the application System.
+ If you would like to catch any error instead, see TryExec.
+
+\end{verbatim}
+
+
+\section{ExecIf}
+\subsection{Synopsis}
+\begin{verbatim}
+Executes dialplan application, conditionally
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Usage: ExecIF (<expr>|<app>|<data>)
+If <expr> is true, execute and return the result of <app>(<data>).
+If <expr> is true, but <app> is not found, then the application
+will return a non-zero value.
+
+\end{verbatim}
+
+
+\section{ExecIfTime}
+\subsection{Synopsis}
+\begin{verbatim}
+Conditional application execution based on the current time
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ExecIfTime(<times>|<weekdays>|<mdays>|<months>?appname[|appargs]):
+This application will execute the specified dialplan application, with optional
+arguments, if the current time matches the given time specification.
+
+\end{verbatim}
+
+
+\section{ExitWhile}
+\subsection{Synopsis}
+\begin{verbatim}
+End a While loop
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Usage: ExitWhile()
+Exits a While loop, whether or not the conditional has been satisfied.
+
+\end{verbatim}
+
+
+\section{ExtenSpy}
+\subsection{Synopsis}
+\begin{verbatim}
+Listen to a channel, and optionally whisper into it
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ExtenSpy(exten[@context][|options]): This application is used to listen to the
+audio from an Asterisk channel. This includes the audio coming in and
+out of the channel being spied on. Only channels created by outgoing calls for the
+specified extension will be selected for spying. If the optional context is not
+supplied, the current channel's context will be used.
+ While spying, the following actions may be performed:
+ - Dialing # cycles the volume level.
+ - Dialing * will stop spying and look for another channel to spy on.
+ Options:
+ b - Only spy on channels involved in a bridged call.
+ g(grp) - Match only channels where their ${SPYGROUP} variable is set to
+ contain 'grp' in an optional : delimited list.
+ q - Don't play a beep when beginning to spy on a channel, or speak the
+ selected channel name.
+ r[(basename)] - Record the session to the monitor spool directory. An
+ optional base for the filename may be specified. The
+ default is 'chanspy'.
+ v([value]) - Adjust the initial volume in the range from -4 to 4. A
+ negative value refers to a quieter setting.
+ w - Enable 'whisper' mode, so the spying channel can talk to
+ the spied-on channel.
+ W - Enable 'private whisper' mode, so the spying channel can
+ talk to the spied-on channel but cannot listen to that
+ channel.
+
+\end{verbatim}
+
+
+\section{ExternalIVR}
+\subsection{Synopsis}
+\begin{verbatim}
+Interfaces with an external IVR application
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ExternalIVR(command[|arg[|arg...]]): Forks an process to run the supplied command,
+and starts a generator on the channel. The generator's play list is
+controlled by the external application, which can add and clear entries
+via simple commands issued over its stdout. The external application
+will receive all DTMF events received on the channel, and notification
+if the channel is hung up. The application will not be forcibly terminated
+when the channel is hung up.
+See doc/externalivr.txt for a protocol specification.
+
+\end{verbatim}
+
+
+\section{Festival}
+\subsection{Synopsis}
+\begin{verbatim}
+Say text to the user
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Festival(text[|intkeys]): Connect to Festival, send the argument, get back the waveform,play it to the user, allowing any given interrupt keys to immediately terminate and return
+the value, or 'any' to allow any number back (useful in dialplan)
+
+\end{verbatim}
+
+
+\section{Flash}
+\subsection{Synopsis}
+\begin{verbatim}
+Flashes a Zap Trunk
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Flash(): Sends a flash on a zap trunk. This is only a hack for
+people who want to perform transfers and such via AGI and is generally
+quite useless oths application will only work on Zap trunks.
+
+\end{verbatim}
+
+
+\section{FollowMe}
+\subsection{Synopsis}
+\begin{verbatim}
+Find-Me/Follow-Me application
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ FollowMe(followmeid|options):
+This application performs Find-Me/Follow-Me functionality for the caller
+as defined in the profile matching the <followmeid> parameter in
+followme.conf. If the specified <followmeid> profile doesn't exist in
+followme.conf, execution will be returned to the dialplan and call
+execution will continue at the next priority.
+
+ Options:
+ s - Playback the incoming status message prior to starting the follow-me step(s)
+ a - Record the caller's name so it can be announced to the callee on each step
+ n - Playback the unreachable status message if we've run out of steps to reach the
+ or the callee has elected not to be reachable.
+Returns -1 on hangup
+
+\end{verbatim}
+
+
+\section{ForkCDR}
+\subsection{Synopsis}
+\begin{verbatim}
+Forks the Call Data Record
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ForkCDR([options]): Causes the Call Data Record to fork an additional
+cdr record starting from the time of the fork call
+If the option 'v' is passed all cdr variables will be passed along also.
+
+\end{verbatim}
+
+
+\section{GetCPEID}
+\subsection{Synopsis}
+\begin{verbatim}
+Get ADSI CPE ID
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ GetCPEID: Obtains and displays ADSI CPE ID and other information in order
+to properly setup zapata.conf for on-hook operations.
+
+\end{verbatim}
+
+
+\section{Gosub}
+\subsection{Synopsis}
+\begin{verbatim}
+Jump to label, saving return address
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Gosub([[context|]exten|]priority)
+ Jumps to the label specified, saving the return address.
+
+\end{verbatim}
+
+
+\section{GosubIf}
+\subsection{Synopsis}
+\begin{verbatim}
+Conditionally jump to label, saving return address
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+GosubIf(condition?labeliftrue[:labeliffalse])
+ If the condition is true, then jump to labeliftrue. If false, jumps to
+labeliffalse, if specified. In either case, a jump saves the return point
+in the dialplan, to be returned to with a Return.
+
+\end{verbatim}
+
+
+\section{Goto}
+\subsection{Synopsis}
+\begin{verbatim}
+Jump to a particular priority, extension, or context
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Goto([[context|]extension|]priority): This application will set the current
+context, extension, and priority in the channel structure. After it completes, the
+pbx engine will continue dialplan execution at the specified location.
+If no specific extension, or extension and context, are specified, then this
+application will just set the specified priority of the current extension.
+ At least a priority is required as an argument, or the goto will return a -1,
+and the channel and call will be terminated.
+ If the location that is put into the channel information is bogus, and asterisk cannot
+find that location in the dialplan,
+then the execution engine will try to find and execute the code in the 'i' (invalid)
+extension in the current context. If that does not exist, it will try to execute the
+'h' extension. If either or neither the 'h' or 'i' extensions have been defined, the
+channel is hung up, and the execution of instructions on the channel is terminated.
+What this means is that, for example, you specify a context that does not exist, then
+it will not be possible to find the 'h' or 'i' extensions, and the call will terminate!
+
+\end{verbatim}
+
+
+\section{GotoIf}
+\subsection{Synopsis}
+\begin{verbatim}
+Conditional goto
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ GotoIf(condition?[labeliftrue]:[labeliffalse]): This application will set the current
+context, extension, and priority in the channel structure based on the evaluation of
+the given condition. After this application completes, the
+pbx engine will continue dialplan execution at the specified location in the dialplan.
+The channel will continue at
+'labeliftrue' if the condition is true, or 'labeliffalse' if the condition is
+false. The labels are specified with the same syntax as used within the Goto
+application. If the label chosen by the condition is omitted, no jump is
+performed, and the execution passes to the next instruction.
+If the target location is bogus, and does not exist, the execution engine will try
+to find and execute the code in the 'i' (invalid)
+extension in the current context. If that does not exist, it will try to execute the
+'h' extension. If either or neither the 'h' or 'i' extensions have been defined, the
+channel is hung up, and the execution of instructions on the channel is terminated.
+Remember that this command can set the current context, and if the context specified
+does not exist, then it will not be able to find any 'h' or 'i' extensions there, and
+the channel and call will both be terminated!
+
+\end{verbatim}
+
+
+\section{GotoIfTime}
+\subsection{Synopsis}
+\begin{verbatim}
+Conditional Goto based on the current time
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ GotoIfTime(<times>|<weekdays>|<mdays>|<months>?[[context|]exten|]priority):
+This application will set the context, extension, and priority in the channel structure
+if the current time matches the given time specification. Otherwise, nothing is done.
+Further information on the time specification can be found in examples
+illustrating how to do time-based context includes in the dialplan.
+If the target jump location is bogus, the same actions would be taken as for Goto.
+
+\end{verbatim}
+
+
+\section{Hangup}
+\subsection{Synopsis}
+\begin{verbatim}
+Hang up the calling channel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Hangup([causecode]): This application will hang up the calling channel.
+If a causecode is given the channel's hangup cause will be set to the given
+value.
+
+\end{verbatim}
+
+
+\section{HasNewVoicemail}
+\subsection{Synopsis}
+\begin{verbatim}
+Conditionally branches to priority + 101 with the right options set
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+HasNewVoicemail(vmbox[/folder][@context][|varname[|options]])
+Assumes folder 'INBOX' if folder is not specified. Optionally sets <varname> to the number of messages
+in that folder.
+ The option string may contain zero of the following character:
+ 'j' -- jump to priority n+101, if there is new voicemail in folder 'folder' or INBOX
+ This application sets the following channel variable upon completion:
+ HASVMSTATUS The result of the new voicemail check returned as a text string as follows
+ <# of messages in the folder, 0 for NONE>
+
+\end{verbatim}
+
+
+\section{HasVoicemail}
+\subsection{Synopsis}
+\begin{verbatim}
+Conditionally branches to priority + 101 with the right options set
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+HasVoicemail(vmbox[/folder][@context][|varname[|options]])
+ Optionally sets <varname> to the number of messages in that folder. Assumes folder of INBOX if not specified.
+ The option string may contain zero or the following character:
+ 'j' -- jump to priority n+101, if there is voicemail in the folder indicated.
+ This application sets the following channel variable upon completion:
+ HASVMSTATUS The result of the voicemail check returned as a text string as follows
+ <# of messages in the folder, 0 for NONE>
+
+\end{verbatim}
+
+
+\section{IAX2Provision}
+\subsection{Synopsis}
+\begin{verbatim}
+Provision a calling IAXy with a given template
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ IAX2Provision([template]): Provisions the calling IAXy (assuming
+the calling entity is in fact an IAXy) with the given template or
+default if one is not specified. Returns -1 on error or 0 on success.
+
+\end{verbatim}
+
+
+\section{ICES}
+\subsection{Synopsis}
+\begin{verbatim}
+Encode and stream using 'ices'
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ICES(config.xml) Streams to an icecast server using ices
+(available separately). A configuration file must be supplied
+for ices (see examples/asterisk-ices.conf).
+
+\end{verbatim}
+
+
+\section{ImportVar}
+\subsection{Synopsis}
+\begin{verbatim}
+Import a variable from a channel into a new variable
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ImportVar(newvar=channelname|variable): This application imports a variable
+from the specified channel (as opposed to the current one) and stores it as
+a variable in the current channel (the channel that is calling this
+application). Variables created by this application have the same inheritance
+properties as those created with the Set application. See the documentation for
+Set for more information.
+
+\end{verbatim}
+
+
+\section{JabberSend}
+\subsection{Synopsis}
+\begin{verbatim}
+JabberSend(jabber,screenname,message)
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+JabberSend(Jabber,ScreenName,Message)
+ Jabber - Client or transport Asterisk uses to connect to Jabber
+ ScreenName - User Name to message.
+ Message - Message to be sent to the buddy
+
+\end{verbatim}
+
+
+\section{JabberStatus}
+\subsection{Synopsis}
+\begin{verbatim}
+JabberStatus(Jabber,ScreenName,Variable)
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+JabberStatus(Jabber,ScreenName,Variable)
+ Jabber - Client or transport Asterisk uses to connect to Jabber
+ ScreenName - User Name to retrieve status from.
+ Variable - Variable to store presence in will be 1-6.
+ In order, Online, Chatty, Away, XAway, DND, Offline
+ If not in roster variable will = 7
+
+\end{verbatim}
+
+
+\section{Log}
+\subsection{Synopsis}
+\begin{verbatim}
+Send arbitrary text to a selected log level
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Log(<level>|<message>)
+ level must be one of ERROR, WARNING, NOTICE, DEBUG, VERBOSE, DTMF
+
+\end{verbatim}
+
+
+\section{LookupBlacklist}
+\subsection{Synopsis}
+\begin{verbatim}
+Look up Caller*ID name/number from blacklist database
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ LookupBlacklist(options): Looks up the Caller*ID number on the active
+channel in the Asterisk database (family 'blacklist').
+The option string may contain the following character:
+ 'j' -- jump to n+101 priority if the number/name is found in the blacklist
+This application sets the following channel variable upon completion:
+ LOOKUPBLSTATUS The status of the Blacklist lookup as a text string, one of
+ FOUND | NOTFOUND
+Example: exten => 1234,1,LookupBlacklist()
+
+This application is deprecated and may be removed from a future release.
+Please use the dialplan function BLACKLIST() instead.
+
+\end{verbatim}
+
+
+\section{LookupCIDName}
+\subsection{Synopsis}
+\begin{verbatim}
+Look up CallerID Name from local database
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ LookupCIDName: Looks up the Caller*ID number on the active
+channel in the Asterisk database (family 'cidname') and sets the
+Caller*ID name. Does nothing if no Caller*ID was received on the
+channel. This is useful if you do not subscribe to Caller*ID
+name delivery, or if you want to change the names on some incoming
+calls.
+
+LookupCIDName is deprecated. Please use ${DB(cidname/${CALLERID(num)})}
+instead.
+
+\end{verbatim}
+
+
+\section{Macro}
+\subsection{Synopsis}
+\begin{verbatim}
+Macro Implementation
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Macro(macroname|arg1|arg2...): Executes a macro using the context
+'macro-<macroname>', jumping to the 's' extension of that context and
+executing each step, then returning when the steps end.
+The calling extension, context, and priority are stored in ${MACRO_EXTEN},
+${MACRO_CONTEXT} and ${MACRO_PRIORITY} respectively. Arguments become
+${ARG1}, ${ARG2}, etc in the macro context.
+If you Goto out of the Macro context, the Macro will terminate and control
+will be returned at the location of the Goto.
+If ${MACRO_OFFSET} is set at termination, Macro will attempt to continue
+at priority MACRO_OFFSET + N + 1 if such a step exists, and N + 1 otherwise.
+WARNING: Because of the way Macro is implemented (it executes the priorities
+ contained within it via sub-engine), and a fixed per-thread
+ memory stack allowance, macros are limited to 7 levels
+ of nesting (macro calling macro calling macro, etc.); It
+ may be possible that stack-intensive applications in deeply nested macros
+ could cause asterisk to crash earlier than this limit.
+
+\end{verbatim}
+
+
+\section{MacroExclusive}
+\subsection{Synopsis}
+\begin{verbatim}
+Exclusive Macro Implementation
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ MacroExclusive(macroname|arg1|arg2...):
+Executes macro defined in the context 'macro-macroname'
+Only one call at a time may run the macro.
+(we'll wait if another call is busy executing in the Macro)
+Arguments and return values as in application Macro()
+
+\end{verbatim}
+
+
+\section{MacroExit}
+\subsection{Synopsis}
+\begin{verbatim}
+Exit From Macro
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ MacroExit():
+Causes the currently running macro to exit as if it had
+ended normally by running out of priorities to execute.
+If used outside a macro, will likely cause unexpected
+behavior.
+
+\end{verbatim}
+
+
+\section{MacroIf}
+\subsection{Synopsis}
+\begin{verbatim}
+Conditional Macro Implementation
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ MacroIf(<expr>?macroname_a[|arg1][:macroname_b[|arg1]])
+Executes macro defined in <macroname_a> if <expr> is true
+(otherwise <macroname_b> if provided)
+Arguments and return values as in application macro()
+
+\end{verbatim}
+
+
+\section{MailboxExists}
+\subsection{Synopsis}
+\begin{verbatim}
+Check to see if Voicemail mailbox exists
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ MailboxExists(mailbox[@context][|options]): Check to see if the specified
+mailbox exists. If no voicemail context is specified, the 'default' context
+will be used.
+ This application will set the following channel variable upon completion:
+ VMBOXEXISTSSTATUS - This will contain the status of the execution of the
+ MailboxExists application. Possible values include:
+ SUCCESS | FAILED
+
+ Options:
+ j - Jump to priority n+101 if the mailbox is found.
+
+\end{verbatim}
+
+
+\section{MeetMe}
+\subsection{Synopsis}
+\begin{verbatim}
+MeetMe conference bridge
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ MeetMe([confno][,[options][,pin]]): Enters the user into a specified MeetMe
+conference. If the conference number is omitted, the user will be prompted
+to enter one. User can exit the conference by hangup, or if the 'p' option
+is specified, by pressing '#'.
+Please note: The Zaptel kernel modules and at least one hardware driver (or ztdummy)
+ must be present for conferencing to operate properly. In addition, the chan_zap
+ channel driver must be loaded for the 'i' and 'r' options to operate at all.
+
+The option string may contain zero or more of the following characters:
+ 'a' -- set admin mode
+ 'A' -- set marked mode
+ 'b' -- run AGI script specified in ${MEETME_AGI_BACKGROUND}
+ Default: conf-background.agi (Note: This does not work with
+ non-Zap channels in the same conference)
+ 'c' -- announce user(s) count on joining a conference
+ 'd' -- dynamically add conference
+ 'D' -- dynamically add conference, prompting for a PIN
+ 'e' -- select an empty conference
+ 'E' -- select an empty pinless conference
+ 'F' -- Pass DTMF through the conference. DTMF used to activate any
+ conference features will not be passed through.
+ 'i' -- announce user join/leave with review
+ 'I' -- announce user join/leave without review
+ 'l' -- set listen only mode (Listen only, no talking)
+ 'm' -- set initially muted
+ 'M' -- enable music on hold when the conference has a single caller
+ 'o' -- set talker optimization - treats talkers who aren't speaking as
+ being muted, meaning (a) No encode is done on transmission and
+ (b) Received audio that is not registered as talking is omitted
+ causing no buildup in background noise
+ 'p' -- allow user to exit the conference by pressing '#'
+ 'P' -- always prompt for the pin even if it is specified
+ 'q' -- quiet mode (don't play enter/leave sounds)
+ 'r' -- Record conference (records as ${MEETME_RECORDINGFILE}
+ using format ${MEETME_RECORDINGFORMAT}). Default filename is
+ meetme-conf-rec-${CONFNO}-${UNIQUEID} and the default format is
+ wav.
+ 's' -- Present menu (user or admin) when '*' is received ('send' to menu)
+ 't' -- set talk only mode. (Talk only, no listening)
+ 'T' -- set talker detection (sent to manager interface and meetme list)
+ 'w[(<secs>)]'
+ -- wait until the marked user enters the conference
+ 'x' -- close the conference when last marked user exits
+ 'X' -- allow user to exit the conference by entering a valid single
+ digit extension ${MEETME_EXIT_CONTEXT} or the current context
+ if that variable is not defined.
+ '1' -- do not play message when first person enters
+
+\end{verbatim}
+
+
+\section{MeetMeAdmin}
+\subsection{Synopsis}
+\begin{verbatim}
+MeetMe conference Administration
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ MeetMeAdmin(confno,command[,user]): Run admin command for conference
+ 'e' -- Eject last user that joined
+ 'k' -- Kick one user out of conference
+ 'K' -- Kick all users out of conference
+ 'l' -- Unlock conference
+ 'L' -- Lock conference
+ 'm' -- Unmute one user
+ 'M' -- Mute one user
+ 'n' -- Unmute all users in the conference
+ 'N' -- Mute all non-admin users in the conference
+ 'r' -- Reset one user's volume settings
+ 'R' -- Reset all users volume settings
+ 's' -- Lower entire conference speaking volume
+ 'S' -- Raise entire conference speaking volume
+ 't' -- Lower one user's talk volume
+ 'T' -- Raise one user's talk volume
+ 'u' -- Lower one user's listen volume
+ 'U' -- Raise one user's listen volume
+ 'v' -- Lower entire conference listening volume
+ 'V' -- Raise entire conference listening volume
+
+\end{verbatim}
+
+
+\section{MeetMeCount}
+\subsection{Synopsis}
+\begin{verbatim}
+MeetMe participant count
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ MeetMeCount(confno[|var]): Plays back the number of users in the specified
+MeetMe conference. If var is specified, playback will be skipped and the value
+will be returned in the variable. Upon app completion, MeetMeCount will hangup
+the channel, unless priority n+1 exists, in which case priority progress will
+continue.
+A ZAPTEL INTERFACE MUST BE INSTALLED FOR CONFERENCING FUNCTIONALITY.
+
+\end{verbatim}
+
+
+\section{Milliwatt}
+\subsection{Synopsis}
+\begin{verbatim}
+Generate a Constant 1000Hz tone at 0dbm (mu-law)
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Milliwatt(): Generate a Constant 1000Hz tone at 0dbm (mu-law)
+
+\end{verbatim}
+
+
+\section{MixMonitor}
+\subsection{Synopsis}
+\begin{verbatim}
+Record a call and mix the audio during the recording
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ MixMonitor(<file>.<ext>[|<options>[|<command>]])
+
+Records the audio on the current channel to the specified file.
+If the filename is an absolute path, uses that path, otherwise
+creates the file in the configured monitoring directory from
+asterisk.conf.
+
+Valid options:
+ a - Append to the file instead of overwriting it.
+ b - Only save audio to the file while the channel is bridged.
+ Note: Does not include conferences or sounds played to each bridged
+ party.
+ v(<x>) - Adjust the heard volume by a factor of <x> (range -4 to 4)
+ V(<x>) - Adjust the spoken volume by a factor of <x> (range -4 to 4)
+ W(<x>) - Adjust the both heard and spoken volumes by a factor of <x>
+ (range -4 to 4)
+
+<command> will be executed when the recording is over
+Any strings matching ^{X} will be unescaped to ${X} and
+all variables will be evaluated at that time.
+The variable MIXMONITOR_FILENAME will contain the filename used to record.
+
+\end{verbatim}
+
+
+\section{Monitor}
+\subsection{Synopsis}
+\begin{verbatim}
+Monitor a channel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Monitor([file_format[:urlbase]|[fname_base]|[options]]):
+Used to start monitoring a channel. The channel's input and output
+voice packets are logged to files until the channel hangs up or
+monitoring is stopped by the StopMonitor application.
+ file_format optional, if not set, defaults to "wav"
+ fname_base if set, changes the filename used to the one specified.
+ options:
+ m - when the recording ends mix the two leg files into one and
+ delete the two leg files. If the variable MONITOR_EXEC is set, the
+ application referenced in it will be executed instead of
+ soxmix and the raw leg files will NOT be deleted automatically.
+ soxmix or MONITOR_EXEC is handed 3 arguments, the two leg files
+ and a target mixed file name which is the same as the leg file names
+ only without the in/out designator.
+ If MONITOR_EXEC_ARGS is set, the contents will be passed on as
+ additional arguements to MONITOR_EXEC
+ Both MONITOR_EXEC and the Mix flag can be set from the
+ administrator interface
+
+ b - Don't begin recording unless a call is bridged to another channel
+
+Returns -1 if monitor files can't be opened or if the channel is already
+monitored, otherwise 0.
+
+\end{verbatim}
+
+
+\section{Morsecode}
+\subsection{Synopsis}
+\begin{verbatim}
+Plays morse code
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Usage: Morsecode(<string>)
+Plays the Morse code equivalent of the passed string. If the variable
+MORSEDITLEN is set, it will use that value for the length (in ms) of the dit
+(defaults to 80). Additionally, if MORSETONE is set, it will use that tone
+(in Hz). The tone default is 800.
+
+\end{verbatim}
+
+
+\section{MP3Player}
+\subsection{Synopsis}
+\begin{verbatim}
+Play an MP3 file or stream
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ MP3Player(location) Executes mpg123 to play the given location,
+which typically would be a filename or a URL. User can exit by pressing
+any key on the dialpad, or by hanging up.
+\end{verbatim}
+
+
+\section{MusicOnHold}
+\subsection{Synopsis}
+\begin{verbatim}
+Play Music On Hold indefinitely
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+MusicOnHold(class): Plays hold music specified by class. If omitted, the default
+music source for the channel will be used. Set the default
+class with the SetMusicOnHold() application.
+Returns -1 on hangup.
+Never returns otherwise.
+
+\end{verbatim}
+
+
+\section{NBScat}
+\subsection{Synopsis}
+\begin{verbatim}
+Play an NBS local stream
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ NBScat: Executes nbscat to listen to the local NBS stream.
+User can exit by pressing any key
+.
+\end{verbatim}
+
+
+\section{NoCDR}
+\subsection{Synopsis}
+\begin{verbatim}
+Tell Asterisk to not maintain a CDR for the current call
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ NoCDR(): This application will tell Asterisk not to maintain a CDR for the
+current call.
+
+\end{verbatim}
+
+
+\section{NoOp}
+\subsection{Synopsis}
+\begin{verbatim}
+Do Nothing
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ NoOp(): This applicatiion does nothing. However, it is useful for debugging
+purposes. Any text that is provided as arguments to this application can be
+viewed at the Asterisk CLI. This method can be used to see the evaluations of
+variables or functions without having any effect.
+\end{verbatim}
+
+
+\section{Page}
+\subsection{Synopsis}
+\begin{verbatim}
+Pages phones
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Page(Technology/Resource&Technology2/Resource2[|options])
+ Places outbound calls to the given technology / resource and dumps
+them into a conference bridge as muted participants. The original
+caller is dumped into the conference as a speaker and the room is
+destroyed when the original caller leaves. Valid options are:
+ d - full duplex audio
+ q - quiet, do not play beep to caller
+ r - record the page into a file (see 'r' for app_meetme)
+
+\end{verbatim}
+
+
+\section{Park}
+\subsection{Synopsis}
+\begin{verbatim}
+Park yourself
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Park():Used to park yourself (typically in combination with a supervised
+transfer to know the parking space). This application is always
+registered internally and does not need to be explicitly added
+into the dialplan, although you should include the 'parkedcalls'
+context (or the context specified in features.conf).
+
+If you set the PARKINGEXTEN variable to an extension in your
+parking context, park() will park the call on that extension, unless
+it already exists. In that case, execution will continue at next
+priority.
+
+\end{verbatim}
+
+
+\section{ParkAndAnnounce}
+\subsection{Synopsis}
+\begin{verbatim}
+Park and Announce
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ParkAndAnnounce(announce:template|timeout|dial|[return_context]):
+Park a call into the parkinglot and announce the call to another channel.
+
+announce template: Colon-separated list of files to announce. The word PARKED
+ will be replaced by a say_digits of the extension in which
+ the call is parked.
+timeout: Time in seconds before the call returns into the return
+ context.
+dial: The app_dial style resource to call to make the
+ announcement. Console/dsp calls the console.
+return_context: The goto-style label to jump the call back into after
+ timeout. Default <priority+1>.
+
+The variable ${PARKEDAT} will contain the parking extension into which the
+call was placed. Use with the Local channel to allow the dialplan to make
+use of this information.
+
+\end{verbatim}
+
+
+\section{ParkedCall}
+\subsection{Synopsis}
+\begin{verbatim}
+Answer a parked call
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ParkedCall(exten):Used to connect to a parked call. This application is always
+registered internally and does not need to be explicitly added
+into the dialplan, although you should include the 'parkedcalls'
+context.
+
+\end{verbatim}
+
+
+\section{PauseMonitor}
+\subsection{Synopsis}
+\begin{verbatim}
+Pause monitoring of a channel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+PauseMonitor
+Pauses monitoring of a channel until it is re-enabled by a call to UnpauseMonitor.
+
+\end{verbatim}
+
+
+\section{PauseQueueMember}
+\subsection{Synopsis}
+\begin{verbatim}
+Pauses a queue member
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ PauseQueueMember([queuename]|interface[|options]):
+Pauses (blocks calls for) a queue member.
+The given interface will be paused in the given queue. This prevents
+any calls from being sent from the queue to the interface until it is
+unpaused with UnpauseQueueMember or the manager interface. If no
+queuename is given, the interface is paused in every queue it is a
+member of. If the interface is not in the named queue, or if no queue
+is given and the interface is not in any queue, it will jump to
+priority n+101, if it exists and the appropriate options are set.
+The application will fail if the interface is not found and no extension
+to jump to exists.
+The option string may contain zero or more of the following characters:
+ 'j' -- jump to +101 priority when appropriate.
+ This application sets the following channel variable upon completion:
+ PQMSTATUS The status of the attempt to pause a queue member as a
+ text string, one of
+ PAUSED | NOTFOUND
+Example: PauseQueueMember(|SIP/3000)
+
+\end{verbatim}
+
+
+\section{Pickup}
+\subsection{Synopsis}
+\begin{verbatim}
+Directed Call Pickup
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Pickup(extension[@context][&extension2@context...]): This application can pickup any ringing channel
+that is calling the specified extension. If no context is specified, the current
+context will be used. If you use the special string "PICKUPMARK" for the context parameter, for example
+10@PICKUPMARK, this application tries to find a channel which has defined a channel variable with the same content
+as "extension".
+\end{verbatim}
+
+
+\section{Playback}
+\subsection{Synopsis}
+\begin{verbatim}
+Play a file
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Playback(filename[&filename2...][|option]): Plays back given filenames (do not put
+extension). Options may also be included following a pipe symbol. The 'skip'
+option causes the playback of the message to be skipped if the channel
+is not in the 'up' state (i.e. it hasn't been answered yet). If 'skip' is
+specified, the application will return immediately should the channel not be
+off hook. Otherwise, unless 'noanswer' is specified, the channel will
+be answered before the sound is played. Not all channels support playing
+messages while still on hook. If 'j' is specified, the application
+will jump to priority n+101 if present when a file specified to be played
+does not exist.
+This application sets the following channel variable upon completion:
+ PLAYBACKSTATUS The status of the playback attempt as a text string, one of
+ SUCCESS | FAILED
+
+\end{verbatim}
+
+
+\section{PlayTones}
+\subsection{Synopsis}
+\begin{verbatim}
+Play a tone list
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+PlayTones(arg): Plays a tone list. Execution will continue with the next step immediately,
+while the tones continue to play.
+Arg is either the tone name defined in the indications.conf configuration file, or a directly
+specified list of frequencies and durations.
+See the sample indications.conf for a description of the specification of a tonelist.
+
+Use the StopPlayTones application to stop the tones playing.
+
+\end{verbatim}
+
+
+\section{PrivacyManager}
+\subsection{Synopsis}
+\begin{verbatim}
+Require phone number to be entered, if no CallerID sent
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ PrivacyManager([maxretries[|minlength[|options]]]): If no Caller*ID
+is sent, PrivacyManager answers the channel and asks the caller to
+enter their phone number. The caller is given 3 attempts to do so.
+The application does nothing if Caller*ID was received on the channel.
+ Configuration file privacy.conf contains two variables:
+ maxretries default 3 -maximum number of attempts the caller is allowed
+ to input a callerid.
+ minlength default 10 -minimum allowable digits in the input callerid number.
+If you don't want to use the config file and have an i/o operation with
+every call, you can also specify maxretries and minlength as application
+parameters. Doing so supercedes any values set in privacy.conf.
+The option string may contain the following character:
+ 'j' -- jump to n+101 priority after <maxretries> failed attempts to collect
+ the minlength number of digits.
+The application sets the following channel variable upon completion:
+PRIVACYMGRSTATUS The status of the privacy manager's attempt to collect
+ a phone number from the user. A text string that is either:
+ SUCCESS | FAILED
+
+\end{verbatim}
+
+
+\section{Progress}
+\subsection{Synopsis}
+\begin{verbatim}
+Indicate progress
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Progress(): This application will request that in-band progress information
+be provided to the calling channel.
+
+\end{verbatim}
+
+
+\section{Queue}
+\subsection{Synopsis}
+\begin{verbatim}
+Queue a call for a call queue
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Queue(queuename[|options[|URL][|announceoverride][|timeout][|AGI]):
+Queues an incoming call in a particular call queue as defined in queues.conf.
+This application will return to the dialplan if the queue does not exist, or
+any of the join options cause the caller to not enter the queue.
+The option string may contain zero or more of the following characters:
+ 'd' -- data-quality (modem) call (minimum delay).
+ 'h' -- allow callee to hang up by hitting *.
+ 'H' -- allow caller to hang up by hitting *.
+ 'n' -- no retries on the timeout; will exit this application and
+ go to the next step.
+ 'i' -- ignore call forward requests from queue members and do nothing
+ when they are requested.
+ 'r' -- ring instead of playing MOH
+ 't' -- allow the called user transfer the calling user
+ 'T' -- to allow the calling user to transfer the call.
+ 'w' -- allow the called user to write the conversation to disk via Monitor
+ 'W' -- allow the calling user to write the conversation to disk via Monitor
+ In addition to transferring the call, a call may be parked and then picked
+up by another user.
+ The optional URL will be sent to the called party if the channel supports
+it.
+ The optional AGI parameter will setup an AGI script to be executed on the
+calling party's channel once they are connected to a queue member.
+ The timeout will cause the queue to fail out after a specified number of
+seconds, checked between each queues.conf 'timeout' and 'retry' cycle.
+ This application sets the following channel variable upon completion:
+ QUEUESTATUS The status of the call as a text string, one of
+ TIMEOUT | FULL | JOINEMPTY | LEAVEEMPTY | JOINUNAVAIL | LEAVEUNAVAIL
+
+\end{verbatim}
+
+
+\section{QueueLog}
+\subsection{Synopsis}
+\begin{verbatim}
+Writes to the queue_log
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ QueueLog(queuename|uniqueid|agent|event[|additionalinfo]):
+Allows you to write your own events into the queue log
+Example: QueueLog(101|${UNIQUEID}|${AGENT}|WENTONBREAK|600)
+
+\end{verbatim}
+
+
+\section{Random}
+\subsection{Synopsis}
+\begin{verbatim}
+Conditionally branches, based upon a probability
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Random([probability]:[[context|]extension|]priority)
+ probability := INTEGER in the range 1 to 100
+DEPRECATED: Use GotoIf($[${RAND(1,100)} > <number>]?<label>)
+
+\end{verbatim}
+
+
+\section{Read}
+\subsection{Synopsis}
+\begin{verbatim}
+Read a variable
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Read(variable[|filename][|maxdigits][|option][|attempts][|timeout])
+
+Reads a #-terminated string of digits a certain number of times from the
+user in to the given variable.
+ filename -- file to play before reading digits or tone with option i
+ maxdigits -- maximum acceptable number of digits. Stops reading after
+ maxdigits have been entered (without requiring the user to
+ press the '#' key).
+ Defaults to 0 - no limit - wait for the user press the '#' key.
+ Any value below 0 means the same. Max accepted value is 255.
+ option -- options are 's' , 'i', 'n'
+ 's' to return immediately if the line is not up,
+ 'i' to play filename as an indication tone from your indications.conf
+ 'n' to read digits even if the line is not up.
+ attempts -- if greater than 1, that many attempts will be made in the
+ event no data is entered.
+ timeout -- An integer number of seconds to wait for a digit response. If greater
+ than 0, that value will override the default timeout.
+
+Read should disconnect if the function fails or errors out.
+
+\end{verbatim}
+
+
+\section{ReadFile}
+\subsection{Synopsis}
+\begin{verbatim}
+ReadFile(varname=file,length)
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ReadFile(varname=file,length)
+ Varname - Result stored here.
+ File - The name of the file to read.
+ Length - Maximum number of characters to capture.
+
+\end{verbatim}
+
+
+\section{RealTime}
+\subsection{Synopsis}
+\begin{verbatim}
+Realtime Data Lookup
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Use the RealTime config handler system to read data into channel variables.
+RealTime(<family>|<colmatch>|<value>[|<prefix>])
+
+All unique column names will be set as channel variables with optional prefix
+to the name. For example, a prefix of 'var_' would make the column 'name'
+become the variable ${var_name}. REALTIMECOUNT will be set with the number
+of values read.
+
+\end{verbatim}
+
+
+\section{RealTimeUpdate}
+\subsection{Synopsis}
+\begin{verbatim}
+Realtime Data Rewrite
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Use the RealTime config handler system to update a value
+RealTimeUpdate(<family>|<colmatch>|<value>|<newcol>|<newval>)
+
+The column <newcol> in 'family' matching column <colmatch>=<value> will be
+updated to <newval>. REALTIMECOUNT will be set with the number of rows
+updated or -1 if an error occurs.
+
+\end{verbatim}
+
+
+\section{Record}
+\subsection{Synopsis}
+\begin{verbatim}
+Record to a file
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Record(filename.format|silence[|maxduration][|options])
+
+Records from the channel into a given filename. If the file exists it will
+be overwritten.
+- 'format' is the format of the file type to be recorded (wav, gsm, etc).
+- 'silence' is the number of seconds of silence to allow before returning.
+- 'maxduration' is the maximum recording duration in seconds. If missing
+or 0 there is no maximum.
+- 'options' may contain any of the following letters:
+ 'a' : append to existing recording rather than replacing
+ 'n' : do not answer, but record anyway if line not yet answered
+ 'q' : quiet (do not play a beep tone)
+ 's' : skip recording if the line is not yet answered
+ 't' : use alternate '*' terminator key (DTMF) instead of default '#'
+ 'x' : ignore all terminator keys (DTMF) and keep recording until hangup
+
+If filename contains '%d', these characters will be replaced with a number
+incremented by one each time the file is recorded. A channel variable
+named RECORDED_FILE will also be set, which contains the final filemname.
+
+Use 'core show file formats' to see the available formats on your system
+
+User can press '#' to terminate the recording and continue to the next priority.
+
+If the user should hangup during a recording, all data will be lost and the
+application will teminate.
+
+\end{verbatim}
+
+
+\section{RemoveQueueMember}
+\subsection{Synopsis}
+\begin{verbatim}
+Dynamically removes queue members
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ RemoveQueueMember(queuename[|interface[|options]]):
+Dynamically removes interface to an existing queue
+If the interface is NOT in the queue and there exists an n+101 priority
+then it will then jump to this priority. Otherwise it will return an error
+The option string may contain zero or more of the following characters:
+ 'j' -- jump to +101 priority when appropriate.
+ This application sets the following channel variable upon completion:
+ RQMSTATUS The status of the attempt to remove a queue member as a
+ text string, one of
+ REMOVED | NOTINQUEUE | NOSUCHQUEUE
+Example: RemoveQueueMember(techsupport|SIP/3000)
+
+\end{verbatim}
+
+
+\section{ResetCDR}
+\subsection{Synopsis}
+\begin{verbatim}
+Resets the Call Data Record
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ResetCDR([options]): This application causes the Call Data Record to be
+reset.
+ Options:
+ w -- Store the current CDR record before resetting it.
+ a -- Store any stacked records.
+ v -- Save CDR variables.
+
+\end{verbatim}
+
+
+\section{RetryDial}
+\subsection{Synopsis}
+\begin{verbatim}
+Place a call, retrying on failure allowing optional exit extension.
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ RetryDial(announce|sleep|retries|dialargs): This application will attempt to
+place a call using the normal Dial application. If no channel can be reached,
+the 'announce' file will be played. Then, it will wait 'sleep' number of
+seconds before retying the call. After 'retires' number of attempts, the
+calling channel will continue at the next priority in the dialplan. If the
+'retries' setting is set to 0, this application will retry endlessly.
+ While waiting to retry a call, a 1 digit extension may be dialed. If that
+extension exists in either the context defined in ${EXITCONTEXT} or the current
+one, The call will jump to that extension immediately.
+ The 'dialargs' are specified in the same format that arguments are provided
+to the Dial application.
+
+\end{verbatim}
+
+
+\section{Return}
+\subsection{Synopsis}
+\begin{verbatim}
+Return from gosub routine
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Return()
+ Jumps to the last label on the stack, removing it.
+
+\end{verbatim}
+
+
+\section{Ringing}
+\subsection{Synopsis}
+\begin{verbatim}
+Indicate ringing tone
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Ringing(): This application will request that the channel indicate a ringing
+tone to the user.
+
+\end{verbatim}
+
+
+\section{SayAlpha}
+\subsection{Synopsis}
+\begin{verbatim}
+Say Alpha
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SayAlpha(string): This application will play the sounds that correspond to
+the letters of the given string.
+
+\end{verbatim}
+
+
+\section{SayDigits}
+\subsection{Synopsis}
+\begin{verbatim}
+Say Digits
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SayDigits(digits): This application will play the sounds that correspond
+to the digits of the given number. This will use the language that is currently
+set for the channel. See the LANGUAGE function for more information on setting
+the language for the channel.
+
+\end{verbatim}
+
+
+\section{SayNumber}
+\subsection{Synopsis}
+\begin{verbatim}
+Say Number
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SayNumber(digits[,gender]): This application will play the sounds that
+correspond to the given number. Optionally, a gender may be specified.
+This will use the language that is currently set for the channel. See the
+LANGUAGE function for more information on setting the language for the channel.
+
+\end{verbatim}
+
+
+\section{SayPhonetic}
+\subsection{Synopsis}
+\begin{verbatim}
+Say Phonetic
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SayPhonetic(string): This application will play the sounds from the phonetic
+alphabet that correspond to the letters in the given string.
+
+\end{verbatim}
+
+
+\section{SayUnixTime}
+\subsection{Synopsis}
+\begin{verbatim}
+Says a specified time in a custom format
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SayUnixTime([unixtime][|[timezone][|format]])
+ unixtime: time, in seconds since Jan 1, 1970. May be negative.
+ defaults to now.
+ timezone: timezone, see /usr/share/zoneinfo for a list.
+ defaults to machine default.
+ format: a format the time is to be said in. See voicemail.conf.
+ defaults to "ABdY 'digits/at' IMp"
+
+\end{verbatim}
+
+
+\section{SendDTMF}
+\subsection{Synopsis}
+\begin{verbatim}
+Sends arbitrary DTMF digits
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SendDTMF(digits[|timeout_ms]): Sends DTMF digits on a channel.
+ Accepted digits: 0-9, *#abcd, w (.5s pause)
+ The application will either pass the assigned digits or terminate if it
+ encounters an error.
+
+\end{verbatim}
+
+
+\section{SendImage}
+\subsection{Synopsis}
+\begin{verbatim}
+Send an image file
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SendImage(filename): Sends an image on a channel.
+If the channel supports image transport but the image send
+fails, the channel will be hung up. Otherwise, the dialplan
+continues execution.
+The option string may contain the following character:
+ 'j' -- jump to priority n+101 if the channel doesn't support image transport
+This application sets the following channel variable upon completion:
+ SENDIMAGESTATUS The status is the result of the attempt as a text string, one of
+ OK | NOSUPPORT
+
+\end{verbatim}
+
+
+\section{SendText}
+\subsection{Synopsis}
+\begin{verbatim}
+Send a Text Message
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SendText(text[|options]): Sends text to current channel (callee).
+Result of transmission will be stored in the SENDTEXTSTATUS
+channel variable:
+ SUCCESS Transmission succeeded
+ FAILURE Transmission failed
+ UNSUPPORTED Text transmission not supported by channel
+
+At this moment, text is supposed to be 7 bit ASCII in most channels.
+The option string many contain the following character:
+'j' -- jump to n+101 priority if the channel doesn't support
+ text transport
+
+\end{verbatim}
+
+
+\section{SendURL}
+\subsection{Synopsis}
+\begin{verbatim}
+Send a URL
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SendURL(URL[|option]): Requests client go to URL (IAX2) or sends the
+URL to the client (other channels).
+Result is returned in the SENDURLSTATUS channel variable:
+ SUCCESS URL successfully sent to client
+ FAILURE Failed to send URL
+ NOLOAD Client failed to load URL (wait enabled)
+ UNSUPPORTED Channel does not support URL transport
+
+If the option 'wait' is specified, execution will wait for an
+acknowledgement that the URL has been loaded before continuing
+
+If jumping is specified as an option (the 'j' flag), the client does not
+support Asterisk "html" transport, and there exists a step with priority
+n + 101, then execution will continue at that step.
+
+SendURL continues normally if the URL was sent correctly or if the channel
+does not support HTML transport. Otherwise, the channel is hung up.
+
+\end{verbatim}
+
+
+\section{Set}
+\subsection{Synopsis}
+\begin{verbatim}
+Set channel variable(s) or function value(s)
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Set(name1=value1|name2=value2|..[|options])
+This function can be used to set the value of channel variables or dialplan
+functions. It will accept up to 24 name/value pairs. When setting variables,
+if the variable name is prefixed with _, the variable will be inherited into
+channels created from the current channel. If the variable name is prefixed
+with __, the variable will be inherited into channels created from the current
+channel and all children channels.
+ Options:
+ g - Set variable globally instead of on the channel
+ (applies only to variables, not functions)
+
+\end{verbatim}
+
+
+\section{SetAMAFlags}
+\subsection{Synopsis}
+\begin{verbatim}
+Set the AMA Flags
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SetAMAFlags([flag]): This application will set the channel's AMA Flags for
+ billing purposes.
+
+\end{verbatim}
+
+
+\section{SetCallerID}
+\subsection{Synopsis}
+\begin{verbatim}
+Set CallerID
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SetCallerID(clid[|a]): Set Caller*ID on a call to a new
+value. Sets ANI as well if a flag is used.
+
+\end{verbatim}
+
+
+\section{SetCallerPres}
+\subsection{Synopsis}
+\begin{verbatim}
+Set CallerID Presentation
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SetCallerPres(presentation): Set Caller*ID presentation on a call.
+ Valid presentations are:
+
+ allowed_not_screened : Presentation Allowed, Not Screened
+ allowed_passed_screen : Presentation Allowed, Passed Screen
+ allowed_failed_screen : Presentation Allowed, Failed Screen
+ allowed : Presentation Allowed, Network Number
+ prohib_not_screened : Presentation Prohibited, Not Screened
+ prohib_passed_screen : Presentation Prohibited, Passed Screen
+ prohib_failed_screen : Presentation Prohibited, Failed Screen
+ prohib : Presentation Prohibited, Network Number
+ unavailable : Number Unavailable
+
+
+\end{verbatim}
+
+
+\section{SetCDRUserField}
+\subsection{Synopsis}
+\begin{verbatim}
+Set the CDR user field
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+[Synopsis]
+SetCDRUserField(value)
+
+[Description]
+SetCDRUserField(value): Set the CDR 'user field' to value
+ The Call Data Record (CDR) user field is an extra field you
+ can use for data not stored anywhere else in the record.
+ CDR records can be used for billing or storing other arbitrary data
+ (I.E. telephone survey responses)
+ Also see AppendCDRUserField().
+
+\end{verbatim}
+
+
+\section{SetGlobalVar}
+\subsection{Synopsis}
+\begin{verbatim}
+Set a global variable to a given value
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SetGlobalVar(variable=value): This application sets a given global variable to
+the specified value.
+
+\end{verbatim}
+
+
+\section{SetMusicOnHold}
+\subsection{Synopsis}
+\begin{verbatim}
+Set default Music On Hold class
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SetMusicOnHold(class): Sets the default class for music on hold for a given channel. When
+music on hold is activated, this class will be used to select which
+music is played.
+
+\end{verbatim}
+
+
+\section{SetTransferCapability}
+\subsection{Synopsis}
+\begin{verbatim}
+Set ISDN Transfer Capability
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SetTransferCapability(transfercapability): Set the ISDN Transfer
+Capability of a call to a new value.
+Valid Transfer Capabilities are:
+
+ SPEECH : 0x00 - Speech (default, voice calls)
+ DIGITAL : 0x08 - Unrestricted digital information (data calls)
+ RESTRICTED_DIGITAL : 0x09 - Restricted digital information
+ 3K1AUDIO : 0x10 - 3.1kHz Audio (fax calls)
+ DIGITAL_W_TONES : 0x11 - Unrestricted digital information with tones/announcements
+ VIDEO : 0x18 - Video
+
+
+\end{verbatim}
+
+
+\section{SIPAddHeader}
+\subsection{Synopsis}
+\begin{verbatim}
+Add a SIP header to the outbound call
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SIPAddHeader(Header: Content)
+Adds a header to a SIP call placed with DIAL.
+Remember to user the X-header if you are adding non-standard SIP
+headers, like "X-Asterisk-Accountcode:". Use this with care.
+Adding the wrong headers may jeopardize the SIP dialog.
+Always returns 0
+
+\end{verbatim}
+
+
+\section{SIPDtmfMode}
+\subsection{Synopsis}
+\begin{verbatim}
+Change the dtmfmode for a SIP call
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SIPDtmfMode(inband|info|rfc2833): Changes the dtmfmode for a SIP call
+
+\end{verbatim}
+
+
+\section{SLAStation}
+\subsection{Synopsis}
+\begin{verbatim}
+Shared Line Appearance Station
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SLAStation(station):
+This application should be executed by an SLA station. The argument depends
+on how the call was initiated. If the phone was just taken off hook, then
+the argument "station" should be just the station name. If the call was
+initiated by pressing a line key, then the station name should be preceded
+by an underscore and the trunk name associated with that line button.
+For example: "station1_line1".
+\end{verbatim}
+
+
+\section{SLATrunk}
+\subsection{Synopsis}
+\begin{verbatim}
+Shared Line Appearance Trunk
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SLATrunk(trunk):
+This application should be executed by an SLA trunk on an inbound call.
+The channel calling this application should correspond to the SLA trunk
+with the name "trunk" that is being passed as an argument.
+
+\end{verbatim}
+
+
+\section{SMS}
+\subsection{Synopsis}
+\begin{verbatim}
+Communicates with SMS service centres and SMS capable analogue phones
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SMS(name|[a][s]): SMS handles exchange of SMS data with a call to/from SMS capabale
+phone or SMS PSTN service center. Can send and/or receive SMS messages.
+Works to ETSI ES 201 912 compatible with BT SMS PSTN service in UK
+Typical usage is to use to handle called from the SMS service centre CLI,
+or to set up a call using 'outgoing' or manager interface to connect
+service centre to SMS()
+name is the name of the queue used in /var/spool/asterisk/sms
+Arguments:
+ a: answer, i.e. send initial FSK packet.
+ s: act as service centre talking to a phone.
+Messages are processed as per text file message queues.
+smsq (a separate software) is a command to generate message
+queues and send messages.
+
+\end{verbatim}
+
+
+\section{SoftHangup}
+\subsection{Synopsis}
+\begin{verbatim}
+Soft Hangup Application
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ SoftHangup(Technology/resource|options)
+Hangs up the requested channel. If there are no channels to hangup,
+the application will report it.
+- 'options' may contain the following letter:
+ 'a' : hang up all channels on a specified device instead of a single resource
+
+\end{verbatim}
+
+
+\section{SpeechActivateGrammar}
+\subsection{Synopsis}
+\begin{verbatim}
+Activate a Grammar
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SpeechActivateGrammar(Grammar Name)
+This activates the specified grammar to be recognized by the engine. A grammar tells the speech recognition engine what to recognize,
+and how to portray it back to you in the dialplan. The grammar name is the only argument to this application.
+
+\end{verbatim}
+
+
+\section{SpeechBackground}
+\subsection{Synopsis}
+\begin{verbatim}
+Play a sound file and wait for speech to be recognized
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SpeechBackground(Sound File|Timeout)
+This application plays a sound file and waits for the person to speak. Once they start speaking playback of the file stops, and silence is heard.
+Once they stop talking the processing sound is played to indicate the speech recognition engine is working.
+Once results are available the application returns and results (score and text) are available using dialplan functions.
+The first text and score are ${SPEECH_TEXT(0)} AND ${SPEECH_SCORE(0)} while the second are ${SPEECH_TEXT(1)} and ${SPEECH_SCORE(1)}.
+The first argument is the sound file and the second is the timeout. Note the timeout will only start once the sound file has stopped playing.
+
+\end{verbatim}
+
+
+\section{SpeechCreate}
+\subsection{Synopsis}
+\begin{verbatim}
+Create a Speech Structure
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SpeechCreate(engine name)
+This application creates information to be used by all the other applications. It must be called before doing any speech recognition activities such as activating a grammar.
+It takes the engine name to use as the argument, if not specified the default engine will be used.
+
+\end{verbatim}
+
+
+\section{SpeechDeactivateGrammar}
+\subsection{Synopsis}
+\begin{verbatim}
+Deactivate a Grammar
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SpeechDeactivateGrammar(Grammar Name)
+This deactivates the specified grammar so that it is no longer recognized. The only argument is the grammar name to deactivate.
+
+\end{verbatim}
+
+
+\section{SpeechDestroy}
+\subsection{Synopsis}
+\begin{verbatim}
+End speech recognition
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SpeechDestroy()
+This destroys the information used by all the other speech recognition applications.
+If you call this application but end up wanting to recognize more speech, you must call SpeechCreate
+again before calling any other application. It takes no arguments.
+
+\end{verbatim}
+
+
+\section{SpeechLoadGrammar}
+\subsection{Synopsis}
+\begin{verbatim}
+Load a Grammar
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SpeechLoadGrammar(Grammar Name|Path)
+Load a grammar only on the channel, not globally.
+It takes the grammar name as first argument and path as second.
+
+\end{verbatim}
+
+
+\section{SpeechProcessingSound}
+\subsection{Synopsis}
+\begin{verbatim}
+Change background processing sound
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SpeechProcessingSound(Sound File)
+This changes the processing sound that SpeechBackground plays back when the speech recognition engine is processing and working to get results.
+It takes the sound file as the only argument.
+
+\end{verbatim}
+
+
+\section{SpeechStart}
+\subsection{Synopsis}
+\begin{verbatim}
+Start recognizing voice in the audio stream
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SpeechStart()
+Tell the speech recognition engine that it should start trying to get results from audio being fed to it. This has no arguments.
+
+\end{verbatim}
+
+
+\section{SpeechUnloadGrammar}
+\subsection{Synopsis}
+\begin{verbatim}
+Unload a Grammar
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+SpeechUnloadGrammar(Grammar Name)
+Unload a grammar. It takes the grammar name as the only argument.
+
+\end{verbatim}
+
+
+\section{StackPop}
+\subsection{Synopsis}
+\begin{verbatim}
+Remove one address from gosub stack
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+StackPop()
+ Removes last label on the stack, discarding it.
+
+\end{verbatim}
+
+
+\section{StartMusicOnHold}
+\subsection{Synopsis}
+\begin{verbatim}
+Play Music On Hold
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+StartMusicOnHold(class): Starts playing music on hold, uses default music class for channel.
+Starts playing music specified by class. If omitted, the default
+music source for the channel will be used. Always returns 0.
+
+\end{verbatim}
+
+
+\section{StopMixMonitor}
+\subsection{Synopsis}
+\begin{verbatim}
+Stop recording a call through MixMonitor
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ StopMixMonitor()
+
+Stops the audio recording that was started with a call to MixMonitor()
+on the current channel.
+
+\end{verbatim}
+
+
+\section{StopMonitor}
+\subsection{Synopsis}
+\begin{verbatim}
+Stop monitoring a channel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+StopMonitor
+Stops monitoring a channel. Has no effect if the channel is not monitored
+
+\end{verbatim}
+
+
+\section{StopMusicOnHold}
+\subsection{Synopsis}
+\begin{verbatim}
+Stop Playing Music On Hold
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+StopMusicOnHold: Stops playing music on hold.
+
+\end{verbatim}
+
+
+\section{StopPlayTones}
+\subsection{Synopsis}
+\begin{verbatim}
+Stop playing a tone list
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Stop playing a tone list
+\end{verbatim}
+
+
+\section{System}
+\subsection{Synopsis}
+\begin{verbatim}
+Execute a system command
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ System(command): Executes a command by using system(). If the command
+fails, the console should report a fallthrough.
+Result of execution is returned in the SYSTEMSTATUS channel variable:
+ FAILURE Could not execute the specified command
+ SUCCESS Specified command successfully executed
+
+Old behaviour:
+If the command itself executes but is in error, and if there exists
+a priority n + 101, where 'n' is the priority of the current instance,
+then the channel will be setup to continue at that priority level.
+Note that this jump functionality has been deprecated and will only occur
+if the global priority jumping option is enabled in extensions.conf.
+
+\end{verbatim}
+
+
+\section{TestClient}
+\subsection{Synopsis}
+\begin{verbatim}
+Execute Interface Test Client
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+TestClient(testid): Executes test client with given testid.
+Results stored in /var/log/asterisk/testreports/<testid>-client.txt
+\end{verbatim}
+
+
+\section{TestServer}
+\subsection{Synopsis}
+\begin{verbatim}
+Execute Interface Test Server
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+TestServer(): Perform test server function and write call report.
+Results stored in /var/log/asterisk/testreports/<testid>-server.txt
+\end{verbatim}
+
+
+\section{Transfer}
+\subsection{Synopsis}
+\begin{verbatim}
+Transfer caller to remote extension
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Transfer([Tech/]dest[|options]): Requests the remote caller be transferred
+to a given destination. If TECH (SIP, IAX2, LOCAL etc) is used, only
+an incoming call with the same channel technology will be transfered.
+Note that for SIP, if you transfer before call is setup, a 302 redirect
+SIP message will be returned to the caller.
+
+The result of the application will be reported in the TRANSFERSTATUS
+channel variable:
+ SUCCESS Transfer succeeded
+ FAILURE Transfer failed
+ UNSUPPORTED Transfer unsupported by channel driver
+The option string many contain the following character:
+'j' -- jump to n+101 priority if the channel transfer attempt
+ fails
+
+\end{verbatim}
+
+
+\section{TryExec}
+\subsection{Synopsis}
+\begin{verbatim}
+Executes dialplan application, always returning
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Usage: TryExec(appname(arguments))
+ Allows an arbitrary application to be invoked even when not
+hardcoded into the dialplan. To invoke external applications
+see the application System. Always returns to the dialplan.
+The channel variable TRYSTATUS will be set to:
+ SUCCESS if the application returned zero
+ FAILED if the application returned non-zero
+ NOAPP if the application was not found or was not specified
+
+\end{verbatim}
+
+
+\section{TrySystem}
+\subsection{Synopsis}
+\begin{verbatim}
+Try executing a system command
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ TrySystem(command): Executes a command by using system().
+on any situation.
+Result of execution is returned in the SYSTEMSTATUS channel variable:
+ FAILURE Could not execute the specified command
+ SUCCESS Specified command successfully executed
+ APPERROR Specified command successfully executed, but returned error code
+
+Old behaviour:
+If the command itself executes but is in error, and if
+there exists a priority n + 101, where 'n' is the priority of the current
+instance, then the channel will be setup to continue at that
+priority level. Otherwise, System will terminate.
+
+\end{verbatim}
+
+
+\section{UnpauseMonitor}
+\subsection{Synopsis}
+\begin{verbatim}
+Unpause monitoring of a channel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+UnpauseMonitor
+Unpauses monitoring of a channel on which monitoring had
+previously been paused with PauseMonitor.
+
+\end{verbatim}
+
+
+\section{UnpauseQueueMember}
+\subsection{Synopsis}
+\begin{verbatim}
+Unpauses a queue member
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ UnpauseQueueMember([queuename]|interface[|options]):
+Unpauses (resumes calls to) a queue member.
+This is the counterpart to PauseQueueMember and operates exactly the
+same way, except it unpauses instead of pausing the given interface.
+The option string may contain zero or more of the following characters:
+ 'j' -- jump to +101 priority when appropriate.
+ This application sets the following channel variable upon completion:
+ UPQMSTATUS The status of the attempt to unpause a queue
+ member as a text string, one of
+ UNPAUSED | NOTFOUND
+Example: UnpauseQueueMember(|SIP/3000)
+
+\end{verbatim}
+
+
+\section{UserEvent}
+\subsection{Synopsis}
+\begin{verbatim}
+Send an arbitrary event to the manager interface
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ UserEvent(eventname[|body]): Sends an arbitrary event to the manager
+interface, with an optional body representing additional arguments. The
+body may be specified as a | delimeted list of headers. Each additional
+argument will be placed on a new line in the event. The format of the
+event will be:
+ Event: UserEvent
+ UserEvent: <specified event name>
+ [body]
+If no body is specified, only Event and UserEvent headers will be present.
+
+\end{verbatim}
+
+
+\section{Verbose}
+\subsection{Synopsis}
+\begin{verbatim}
+Send arbitrary text to verbose output
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Verbose([<level>|]<message>)
+ level must be an integer value. If not specified, defaults to 0.
+
+\end{verbatim}
+
+
+\section{VMAuthenticate}
+\subsection{Synopsis}
+\begin{verbatim}
+Authenticate with Voicemail passwords
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ VMAuthenticate([mailbox][@context][|options]): This application behaves the
+same way as the Authenticate application, but the passwords are taken from
+voicemail.conf.
+ If the mailbox is specified, only that mailbox's password will be considered
+valid. If the mailbox is not specified, the channel variable AUTH_MAILBOX will
+be set with the authenticated mailbox.
+
+ Options:
+ s - Skip playing the initial prompts.
+
+\end{verbatim}
+
+
+\section{VoiceMail}
+\subsection{Synopsis}
+\begin{verbatim}
+Leave a Voicemail message
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ VoiceMail(mailbox[@context][&mailbox[@context]][...][|options]): This
+application allows the calling party to leave a message for the specified
+list of mailboxes. When multiple mailboxes are specified, the greeting will
+be taken from the first mailbox specified. Dialplan execution will stop if the
+specified mailbox does not exist.
+ The Voicemail application will exit if any of the following DTMF digits are
+received:
+ 0 - Jump to the 'o' extension in the current dialplan context.
+ * - Jump to the 'a' extension in the current dialplan context.
+ This application will set the following channel variable upon completion:
+ VMSTATUS - This indicates the status of the execution of the VoiceMail
+ application. The possible values are:
+ SUCCESS | USEREXIT | FAILED
+
+ Options:
+ b - Play the 'busy' greeting to the calling party.
+ g(#) - Use the specified amount of gain when recording the voicemail
+ message. The units are whole-number decibels (dB).
+ s - Skip the playback of instructions for leaving a message to the
+ calling party.
+ u - Play the 'unavailable greeting.
+ j - Jump to priority n+101 if the mailbox is not found or some other
+ error occurs.
+
+\end{verbatim}
+
+
+\section{VoiceMailMain}
+\subsection{Synopsis}
+\begin{verbatim}
+Check Voicemail messages
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ VoiceMailMain([mailbox][@context][|options]): This application allows the
+calling party to check voicemail messages. A specific mailbox, and optional
+corresponding context, may be specified. If a mailbox is not provided, the
+calling party will be prompted to enter one. If a context is not specified,
+the 'default' context will be used.
+
+ Options:
+ p - Consider the mailbox parameter as a prefix to the mailbox that
+ is entered by the caller.
+ g(#) - Use the specified amount of gain when recording a voicemail
+ message. The units are whole-number decibels (dB).
+ s - Skip checking the passcode for the mailbox.
+ a(#) - Skip folder prompt and go directly to folder specified.
+ Defaults to INBOX
+
+\end{verbatim}
+
+
+\section{Wait}
+\subsection{Synopsis}
+\begin{verbatim}
+Waits for some time
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Wait(seconds): This application waits for a specified number of seconds.
+Then, dialplan execution will continue at the next priority.
+ Note that the seconds can be passed with fractions of a second. For example,
+'1.5' will ask the application to wait for 1.5 seconds.
+
+\end{verbatim}
+
+
+\section{WaitExten}
+\subsection{Synopsis}
+\begin{verbatim}
+Waits for an extension to be entered
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ WaitExten([seconds][|options]): This application waits for the user to enter
+a new extension for a specified number of seconds.
+ Note that the seconds can be passed with fractions of a second. For example,
+'1.5' will ask the application to wait for 1.5 seconds.
+ Options:
+ m[(x)] - Provide music on hold to the caller while waiting for an extension.
+ Optionally, specify the class for music on hold within parenthesis.
+
+\end{verbatim}
+
+
+\section{WaitForRing}
+\subsection{Synopsis}
+\begin{verbatim}
+Wait for Ring Application
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ WaitForRing(timeout)
+Returns 0 after waiting at least timeout seconds. and
+only after the next ring has completed. Returns 0 on
+success or -1 on hangup
+
+\end{verbatim}
+
+
+\section{WaitForSilence}
+\subsection{Synopsis}
+\begin{verbatim}
+Waits for a specified amount of silence
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ WaitForSilence(silencerequired[|iterations][|timeout])
+Wait for Silence: Waits for up to 'silencerequired'
+milliseconds of silence, 'iterations' times or once if omitted.
+An optional timeout specified the number of seconds to return
+after, even if we do not receive the specified amount of silence.
+Use 'timeout' with caution, as it may defeat the purpose of this
+application, which is to wait indefinitely until silence is detected
+on the line. This is particularly useful for reverse-911-type
+call broadcast applications where you need to wait for an answering
+machine to complete its spiel before playing a message.
+The timeout parameter is specified only to avoid an infinite loop in
+cases where silence is never achieved. Typically you will want to
+include two or more calls to WaitForSilence when dealing with an answering
+machine; first waiting for the spiel to finish, then waiting for the beep, etc.
+
+Examples:
+ - WaitForSilence(500|2) will wait for 1/2 second of silence, twice
+ - WaitForSilence(1000) will wait for 1 second of silence, once
+ - WaitForSilence(300|3|10) will wait for 300ms silence, 3 times,
+ and returns after 10 sec, even if silence is not detected
+
+Sets the channel variable WAITSTATUS with to one of these values:
+SILENCE - if exited with silence detected
+TIMEOUT - if exited without silence detected after timeout
+
+\end{verbatim}
+
+
+\section{WaitMusicOnHold}
+\subsection{Synopsis}
+\begin{verbatim}
+Wait, playing Music On Hold
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+WaitMusicOnHold(delay): Plays hold music specified number of seconds. Returns 0 when
+done, or -1 on hangup. If no hold music is available, the delay will
+still occur with no sound.
+
+\end{verbatim}
+
+
+\section{While}
+\subsection{Synopsis}
+\begin{verbatim}
+Start a while loop
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+Usage: While(<expr>)
+Start a While Loop. Execution will return to this point when
+EndWhile is called until expr is no longer true.
+
+\end{verbatim}
+
+
+\section{Zapateller}
+\subsection{Synopsis}
+\begin{verbatim}
+Block telemarketers with SIT
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ Zapateller(options): Generates special information tone to block
+telemarketers from calling you. Options is a pipe-delimited list of
+options. The following options are available:
+'answer' causes the line to be answered before playing the tone,
+'nocallerid' causes Zapateller to only play the tone if there
+is no callerid information available. Options should be separated by |
+characters
+
+\end{verbatim}
+
+
+\section{ZapBarge}
+\subsection{Synopsis}
+\begin{verbatim}
+Barge in (monitor) Zap channel
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ZapBarge([channel]): Barges in on a specified zap
+channel or prompts if one is not specified. Returns
+-1 when caller user hangs up and is independent of the
+state of the channel being monitored.
+\end{verbatim}
+
+
+\section{ZapRAS}
+\subsection{Synopsis}
+\begin{verbatim}
+Executes Zaptel ISDN RAS application
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ZapRAS(args): Executes a RAS server using pppd on the given channel.
+The channel must be a clear channel (i.e. PRI source) and a Zaptel
+channel to be able to use this function (No modem emulation is included).
+Your pppd must be patched to be zaptel aware. Arguments should be
+separated by | characters.
+
+\end{verbatim}
+
+
+\section{ZapScan}
+\subsection{Synopsis}
+\begin{verbatim}
+Scan Zap channels to monitor calls
+\end{verbatim}
+\subsection{Description}
+\begin{verbatim}
+ ZapScan([group]) allows a call center manager to monitor Zap channels in
+a convenient way. Use '#' to select the next channel and use '*' to exit
+Limit scanning to a channel GROUP by setting the option group argument.
+
+\end{verbatim}
+
+