Update the DUNDi section of the documentation with example usage of DUNDIQUERY
[asterisk/asterisk.git] / doc / ast_appdocs.tex
1 % This file is automatically generated.  Any manual edits will be lost.
2 \section{AddQueueMember}
3 \subsection{Synopsis}
4 \begin{verbatim}
5 Dynamically adds queue members
6 \end{verbatim}
7 \subsection{Description}
8 \begin{verbatim}
9    AddQueueMember(queuename[|interface[|penalty[|options[|membername]]]]):
10 Dynamically adds interface to an existing queue.
11 If the interface is already in the queue and there exists an n+101 priority
12 then it will then jump to this priority.  Otherwise it will return an error
13 The option string may contain zero or more of the following characters:
14        'j' -- jump to +101 priority when appropriate.
15   This application sets the following channel variable upon completion:
16      AQMSTATUS    The status of the attempt to add a queue member as a 
17                      text string, one of
18            ADDED | MEMBERALREADY | NOSUCHQUEUE 
19 Example: AddQueueMember(techsupport|SIP/3000)
20
21 \end{verbatim}
22
23
24 \section{ADSIProg}
25 \subsection{Synopsis}
26 \begin{verbatim}
27 Load Asterisk ADSI Scripts into phone
28 \end{verbatim}
29 \subsection{Description}
30 \begin{verbatim}
31   ADSIProg(script): This application programs an ADSI Phone with the given
32 script. If nothing is specified, the default script (asterisk.adsi) is used.
33
34 \end{verbatim}
35
36
37 \section{AgentLogin}
38 \subsection{Synopsis}
39 \begin{verbatim}
40 Call agent login
41 \end{verbatim}
42 \subsection{Description}
43 \begin{verbatim}
44   AgentLogin([AgentNo][|options]):
45 Asks the agent to login to the system.  Always returns -1.  While
46 logged in, the agent can receive calls and will hear a 'beep'
47 when a new call comes in. The agent can dump the call by pressing
48 the star key.
49 The option string may contain zero or more of the following characters:
50       's' -- silent login - do not announce the login ok segment after agent logged in/off
51
52 \end{verbatim}
53
54
55 \section{AgentMonitorOutgoing}
56 \subsection{Synopsis}
57 \begin{verbatim}
58 Record agent's outgoing call
59 \end{verbatim}
60 \subsection{Description}
61 \begin{verbatim}
62   AgentMonitorOutgoing([options]):
63 Tries to figure out the id of the agent who is placing outgoing call based on
64 comparison of the callerid of the current interface and the global variable 
65 placed by the AgentCallbackLogin application. That's why it should be used only
66 with the AgentCallbackLogin app. Uses the monitoring functions in chan_agent 
67 instead of Monitor application. That have to be configured in the agents.conf file.
68
69 Return value:
70 Normally the app returns 0 unless the options are passed. Also if the callerid or
71 the agentid are not specified it'll look for n+101 priority.
72
73 Options:
74         'd' - make the app return -1 if there is an error condition and there is
75               no extension n+101
76         'c' - change the CDR so that the source of the call is 'Agent/agent_id'
77         'n' - don't generate the warnings when there is no callerid or the
78               agentid is not known.
79              It's handy if you want to have one context for agent and non-agent calls.
80
81 \end{verbatim}
82
83
84 \section{AGI}
85 \subsection{Synopsis}
86 \begin{verbatim}
87 Executes an AGI compliant application
88 \end{verbatim}
89 \subsection{Description}
90 \begin{verbatim}
91   [E|Dead]AGI(command|args): Executes an Asterisk Gateway Interface compliant
92 program on a channel. AGI allows Asterisk to launch external programs
93 written in any language to control a telephony channel, play audio,
94 read DTMF digits, etc. by communicating with the AGI protocol on stdin
95 and stdout.
96   This channel will stop dialplan execution on hangup inside of this
97 application, except when using DeadAGI.  Otherwise, dialplan execution
98 will continue normally.
99   A locally executed AGI script will receive SIGHUP on hangup from the channel
100 except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
101 variable to "no" before executing the AGI application.
102   Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
103 on file descriptor 3
104
105   Use the CLI command 'agi show' to list available agi commands
106   This application sets the following channel variable upon completion:
107      AGISTATUS      The status of the attempt to the run the AGI script
108                     text string, one of SUCCESS | FAILED | HANGUP
109
110 \end{verbatim}
111
112
113 \section{AlarmReceiver}
114 \subsection{Synopsis}
115 \begin{verbatim}
116 Provide support for receiving alarm reports from a burglar or fire alarm panel
117 \end{verbatim}
118 \subsection{Description}
119 \begin{verbatim}
120   AlarmReceiver(): Only 1 signalling format is supported at this time: Ademco
121 Contact ID. This application should be called whenever there is an alarm
122 panel calling in to dump its events. The application will handshake with the
123 alarm panel, and receive events, validate them, handshake them, and store them
124 until the panel hangs up. Once the panel hangs up, the application will run the
125 system command specified by the eventcmd setting in alarmreceiver.conf and pipe
126 the events to the standard input of the application. The configuration file also
127 contains settings for DTMF timing, and for the loudness of the acknowledgement
128 tones.
129
130 \end{verbatim}
131
132
133 \section{AMD}
134 \subsection{Synopsis}
135 \begin{verbatim}
136 Attempts to detect answering machines
137 \end{verbatim}
138 \subsection{Description}
139 \begin{verbatim}
140   AMD([initialSilence][|greeting][|afterGreetingSilence][|totalAnalysisTime]
141       [|minimumWordLength][|betweenWordsSilence][|maximumNumberOfWords]
142       [|silenceThreshold])
143   This application attempts to detect answering machines at the beginning
144   of outbound calls.  Simply call this application after the call
145   has been answered (outbound only, of course).
146   When loaded, AMD reads amd.conf and uses the parameters specified as
147   default values. Those default values get overwritten when calling AMD
148   with parameters.
149 - 'initialSilence' is the maximum silence duration before the greeting. If
150    exceeded then MACHINE.
151 - 'greeting' is the maximum length of a greeting. If exceeded then MACHINE.
152 - 'afterGreetingSilence' is the silence after detecting a greeting.
153    If exceeded then HUMAN.
154 - 'totalAnalysisTime' is the maximum time allowed for the algorithm to decide
155    on a HUMAN or MACHINE.
156 - 'minimumWordLength'is the minimum duration of Voice to considered as a word.
157 - 'betweenWordsSilence' is the minimum duration of silence after a word to 
158    consider the audio that follows as a new word.
159 - 'maximumNumberOfWords'is the maximum number of words in the greeting. 
160    If exceeded then MACHINE.
161 - 'silenceThreshold' is the silence threshold.
162 This application sets the following channel variable upon completion:
163     AMDSTATUS - This is the status of the answering machine detection.
164                 Possible values are:
165                 MACHINE | HUMAN | NOTSURE | HANGUP
166     AMDCAUSE - Indicates the cause that led to the conclusion.
167                Possible values are:
168                TOOLONG-<%d total_time>
169                INITIALSILENCE-<%d silenceDuration>-<%d initialSilence>
170                HUMAN-<%d silenceDuration>-<%d afterGreetingSilence>
171                MAXWORDS-<%d wordsCount>-<%d maximumNumberOfWords>
172                LONGGREETING-<%d voiceDuration>-<%d greeting>
173
174 \end{verbatim}
175
176
177 \section{Answer}
178 \subsection{Synopsis}
179 \begin{verbatim}
180 Answer a channel if ringing
181 \end{verbatim}
182 \subsection{Description}
183 \begin{verbatim}
184   Answer([delay]): If the call has not been answered, this application will
185 answer it. Otherwise, it has no effect on the call. If a delay is specified,
186 Asterisk will wait this number of milliseconds before returning to
187 the dialplan after answering the call.
188
189 \end{verbatim}
190
191
192 \section{Authenticate}
193 \subsection{Synopsis}
194 \begin{verbatim}
195 Authenticate a user
196 \end{verbatim}
197 \subsection{Description}
198 \begin{verbatim}
199   Authenticate(password[|options[|maxdigits]]): This application asks the caller
200 to enter a given password in order to continue dialplan execution. If the password
201 begins with the '/' character, it is interpreted as a file which contains a list of
202 valid passwords, listed 1 password per line in the file.
203   When using a database key, the value associated with the key can be anything.
204 Users have three attempts to authenticate before the channel is hung up. If the
205 passsword is invalid, the 'j' option is specified, and priority n+101 exists,
206 dialplan execution will continnue at this location.
207   Options:
208      a - Set the channels' account code to the password that is entered
209      d - Interpret the given path as database key, not a literal file
210      j - Support jumping to n+101 if authentication fails
211      m - Interpret the given path as a file which contains a list of account
212          codes and password hashes delimited with ':', listed one per line in
213          the file. When one of the passwords is matched, the channel will have
214          its account code set to the corresponding account code in the file.
215      r - Remove the database key upon successful entry (valid with 'd' only)
216      maxdigits  - maximum acceptable number of digits. Stops reading after
217          maxdigits have been entered (without requiring the user to
218          press the '#' key).
219          Defaults to 0 - no limit - wait for the user press the '#' key.
220
221 \end{verbatim}
222
223
224 \section{BackGround}
225 \subsection{Synopsis}
226 \begin{verbatim}
227 Play an audio file while waiting for digits of an extension to go to.
228 \end{verbatim}
229 \subsection{Description}
230 \begin{verbatim}
231   Background(filename1[&filename2...][|options[|langoverride][|context]]):
232 This application will play the given list of files while waiting for an
233 extension to be dialed by the calling channel. To continue waiting for digits
234 after this application has finished playing files, the WaitExten application
235 should be used. The 'langoverride' option explicitly specifies which language
236 to attempt to use for the requested sound files. If a 'context' is specified,
237 this is the dialplan context that this application will use when exiting to a
238 dialed extension.  If one of the requested sound files does not exist, call processing will be
239 terminated.
240   Options:
241     s - Causes the playback of the message to be skipped
242           if the channel is not in the 'up' state (i.e. it
243           hasn't been answered yet). If this happens, the
244           application will return immediately.
245     n - Don't answer the channel before playing the files.
246     m - Only break if a digit hit matches a one digit
247           extension in the destination context.
248 This application sets the following channel variable upon completion:
249  BACKGROUNDSTATUS    The status of the background attempt as a text string, one of
250                SUCCESS | FAILED
251
252 \end{verbatim}
253
254
255 \section{BackgroundDetect}
256 \subsection{Synopsis}
257 \begin{verbatim}
258 Background a file with talk detect
259 \end{verbatim}
260 \subsection{Description}
261 \begin{verbatim}
262   BackgroundDetect(filename[|sil[|min|[max]]]):  Plays  back  a  given
263 filename, waiting for interruption from a given digit (the digit must
264 start the beginning of a valid extension, or it will be ignored).
265 During the playback of the file, audio is monitored in the receive
266 direction, and if a period of non-silence which is greater than 'min' ms
267 yet less than 'max' ms is followed by silence for at least 'sil' ms then
268 the audio playback is aborted and processing jumps to the 'talk' extension
269 if available.  If unspecified, sil, min, and max default to 1000, 100, and
270 infinity respectively.
271
272 \end{verbatim}
273
274
275 \section{Bridge}
276 \subsection{Synopsis}
277 \begin{verbatim}
278 Bridge two channels
279 \end{verbatim}
280 \subsection{Description}
281 \begin{verbatim}
282 Usage: Bridge(channel[|options])
283         Allows the ability to bridge two channels via the dialplan.
284 The current channel is bridged to the specified 'channel'.
285 The following options are supported:
286    p - Play a courtesy tone to 'channel'.
287 BRIDGERESULT dial plan variable will contain SUCCESS, FAILURE, LOOP, NONEXISTENT or INCOMPATIBLE.
288
289 \end{verbatim}
290
291
292 \section{Busy}
293 \subsection{Synopsis}
294 \begin{verbatim}
295 Indicate the Busy condition
296 \end{verbatim}
297 \subsection{Description}
298 \begin{verbatim}
299   Busy([timeout]): This application will indicate the busy condition to
300 the calling channel. If the optional timeout is specified, the calling channel
301 will be hung up after the specified number of seconds. Otherwise, this
302 application will wait until the calling channel hangs up.
303
304 \end{verbatim}
305
306
307 \section{ChangeMonitor}
308 \subsection{Synopsis}
309 \begin{verbatim}
310 Change monitoring filename of a channel
311 \end{verbatim}
312 \subsection{Description}
313 \begin{verbatim}
314 ChangeMonitor(filename_base)
315 Changes monitoring filename of a channel. Has no effect if the channel is not monitored
316 The argument is the new filename base to use for monitoring this channel.
317
318 \end{verbatim}
319
320
321 \section{ChanIsAvail}
322 \subsection{Synopsis}
323 \begin{verbatim}
324 Check channel availability
325 \end{verbatim}
326 \subsection{Description}
327 \begin{verbatim}
328   ChanIsAvail(Technology/resource[&Technology2/resource2...][|options]): 
329 This application will check to see if any of the specified channels are
330 available. The following variables will be set by this application:
331   ${AVAILCHAN}     - the name of the available channel, if one exists
332   ${AVAILORIGCHAN} - the canonical channel name that was used to create the channel
333   ${AVAILSTATUS}   - the status code for the available channel
334   Options:
335     s - Consider the channel unavailable if the channel is in use at all
336     t - Simply checks if specified channels exist in the channel list
337         (implies option s) 
338     j - Support jumping to priority n+101 if no channel is available
339
340 \end{verbatim}
341
342
343 \section{ChannelRedirect}
344 \subsection{Synopsis}
345 \begin{verbatim}
346 Redirects given channel to a dialplan target.
347 \end{verbatim}
348 \subsection{Description}
349 \begin{verbatim}
350 ChannelRedirect(channel|[[context|]extension|]priority):
351   Sends the specified channel to the specified extension priority
352
353 \end{verbatim}
354
355
356 \section{ChanSpy}
357 \subsection{Synopsis}
358 \begin{verbatim}
359 Listen to a channel, and optionally whisper into it
360 \end{verbatim}
361 \subsection{Description}
362 \begin{verbatim}
363   ChanSpy([chanprefix][|options]): This application is used to listen to the
364 audio from an Asterisk channel. This includes the audio coming in and
365 out of the channel being spied on. If the 'chanprefix' parameter is specified,
366 only channels beginning with this string will be spied upon.
367   While spying, the following actions may be performed:
368     - Dialing # cycles the volume level.
369     - Dialing * will stop spying and look for another channel to spy on.
370     - Dialing a series of digits followed by # builds a channel name to append
371       to 'chanprefix'. For example, executing ChanSpy(Agent) and then dialing
372       the digits '1234#' while spying will begin spying on the channel
373       'Agent/1234'.
374   Note: The X option supersedes the three features above in that if a valid
375         single digit extension exists in the correct context ChanSpy will
376         exit to it. This also disables choosing a channel based on 'chanprefix'
377         and a digit sequence.
378   Options:
379     b             - Only spy on channels involved in a bridged call.
380     g(grp)        - Match only channels where their ${SPYGROUP} variable is set to
381                     contain 'grp' in an optional : delimited list.
382     q             - Don't play a beep when beginning to spy on a channel, or speak the
383                     selected channel name.
384     r[(basename)] - Record the session to the monitor spool directory. An
385                     optional base for the filename may be specified. The
386                     default is 'chanspy'.
387     v([value])    - Adjust the initial volume in the range from -4 to 4. A
388                     negative value refers to a quieter setting.
389     w             - Enable 'whisper' mode, so the spying channel can talk to
390                     the spied-on channel.
391     W             - Enable 'private whisper' mode, so the spying channel can
392                     talk to the spied-on channel but cannot listen to that
393                     channel.
394     o             - Only listen to audio coming from this channel.
395     X             - Allow the user to exit ChanSpy to a valid single digit
396                     numeric extension in the current context or the context
397                     specified by the SPY_EXIT_CONTEXT channel variable. The
398                     name of the last channel that was spied on will be stored
399                     in the SPY_CHANNEL variable.
400
401 \end{verbatim}
402
403
404 \section{ClearHash}
405 \subsection{Synopsis}
406 \begin{verbatim}
407 Clear the keys from a specified hashname
408 \end{verbatim}
409 \subsection{Description}
410 \begin{verbatim}
411 ClearHash(<hashname>)
412   Clears all keys out of the specified hashname
413
414 \end{verbatim}
415
416
417 \section{Congestion}
418 \subsection{Synopsis}
419 \begin{verbatim}
420 Indicate the Congestion condition
421 \end{verbatim}
422 \subsection{Description}
423 \begin{verbatim}
424   Congestion([timeout]): This application will indicate the congestion
425 condition to the calling channel. If the optional timeout is specified, the
426 calling channel will be hung up after the specified number of seconds.
427 Otherwise, this application will wait until the calling channel hangs up.
428
429 \end{verbatim}
430
431
432 \section{ContinueWhile}
433 \subsection{Synopsis}
434 \begin{verbatim}
435 Restart a While loop
436 \end{verbatim}
437 \subsection{Description}
438 \begin{verbatim}
439 Usage:  ContinueWhile()
440 Returns to the top of the while loop and re-evaluates the conditional.
441
442 \end{verbatim}
443
444
445 \section{ControlPlayback}
446 \subsection{Synopsis}
447 \begin{verbatim}
448 Play a file with fast forward and rewind
449 \end{verbatim}
450 \subsection{Description}
451 \begin{verbatim}
452   ControlPlayback(file[|skipms[|ff[|rew[|stop[|pause[|restart|options]]]]]]]):
453 This application will play back the given filename. By default, the '*' key
454 can be used to rewind, and the '#' key can be used to fast-forward.
455 Parameters:
456   skipms  - This is number of milliseconds to skip when rewinding or
457             fast-forwarding.
458   ff      - Fast-forward when this DTMF digit is received.
459   rew     - Rewind when this DTMF digit is received.
460   stop    - Stop playback when this DTMF digit is received.
461   pause   - Pause playback when this DTMF digit is received.
462   restart - Restart playback when this DTMF digit is received.
463 Options:
464   j - Jump to priority n+101 if the requested file is not found.
465 This application sets the following channel variable upon completion:
466   CPLAYBACKSTATUS -  This variable contains the status of the attempt as a text
467                      string, one of: SUCCESS | USERSTOPPED | ERROR
468
469 \end{verbatim}
470
471
472 \section{DateTime}
473 \subsection{Synopsis}
474 \begin{verbatim}
475 Says a specified time in a custom format
476 \end{verbatim}
477 \subsection{Description}
478 \begin{verbatim}
479 DateTime([unixtime][|[timezone][|format]])
480   unixtime: time, in seconds since Jan 1, 1970.  May be negative.
481               defaults to now.
482   timezone: timezone, see /usr/share/zoneinfo for a list.
483               defaults to machine default.
484   format:   a format the time is to be said in.  See voicemail.conf.
485               defaults to "ABdY 'digits/at' IMp"
486
487 \end{verbatim}
488
489
490 \section{DBdel}
491 \subsection{Synopsis}
492 \begin{verbatim}
493 Delete a key from the database
494 \end{verbatim}
495 \subsection{Description}
496 \begin{verbatim}
497   DBdel(family/key): This application will delete a key from the Asterisk
498 database.
499   This application has been DEPRECATED in favor of the DB_DELETE function.
500
501 \end{verbatim}
502
503
504 \section{DBdeltree}
505 \subsection{Synopsis}
506 \begin{verbatim}
507 Delete a family or keytree from the database
508 \end{verbatim}
509 \subsection{Description}
510 \begin{verbatim}
511   DBdeltree(family[/keytree]): This application will delete a family or keytree
512 from the Asterisk database
513
514 \end{verbatim}
515
516
517 \section{DeadAGI}
518 \subsection{Synopsis}
519 \begin{verbatim}
520 Executes AGI on a hungup channel
521 \end{verbatim}
522 \subsection{Description}
523 \begin{verbatim}
524   [E|Dead]AGI(command|args): Executes an Asterisk Gateway Interface compliant
525 program on a channel. AGI allows Asterisk to launch external programs
526 written in any language to control a telephony channel, play audio,
527 read DTMF digits, etc. by communicating with the AGI protocol on stdin
528 and stdout.
529   This channel will stop dialplan execution on hangup inside of this
530 application, except when using DeadAGI.  Otherwise, dialplan execution
531 will continue normally.
532   A locally executed AGI script will receive SIGHUP on hangup from the channel
533 except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
534 variable to "no" before executing the AGI application.
535   Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
536 on file descriptor 3
537
538   Use the CLI command 'agi show' to list available agi commands
539   This application sets the following channel variable upon completion:
540      AGISTATUS      The status of the attempt to the run the AGI script
541                     text string, one of SUCCESS | FAILED | HANGUP
542
543 \end{verbatim}
544
545
546 \section{Dial}
547 \subsection{Synopsis}
548 \begin{verbatim}
549 Place a call and connect to the current channel
550 \end{verbatim}
551 \subsection{Description}
552 \begin{verbatim}
553   Dial(Technology/resource[&Tech2/resource2...][|timeout][|options][|URL]):
554 This application will place calls to one or more specified channels. As soon
555 as one of the requested channels answers, the originating channel will be
556 answered, if it has not already been answered. These two channels will then
557 be active in a bridged call. All other channels that were requested will then
558 be hung up.
559   Unless there is a timeout specified, the Dial application will wait
560 indefinitely until one of the called channels answers, the user hangs up, or
561 if all of the called channels are busy or unavailable. Dialplan executing will
562 continue if no requested channels can be called, or if the timeout expires.
563
564   This application sets the following channel variables upon completion:
565     DIALEDTIME   - This is the time from dialing a channel until when it
566                    is disconnected.
567     ANSWEREDTIME - This is the amount of time for actual call.
568     DIALSTATUS   - This is the status of the call:
569                    CHANUNAVAIL | CONGESTION | NOANSWER | BUSY | ANSWER | CANCEL
570                    DONTCALL | TORTURE | INVALIDARGS
571   For the Privacy and Screening Modes, the DIALSTATUS variable will be set to
572 DONTCALL if the called party chooses to send the calling party to the 'Go Away'
573 script. The DIALSTATUS variable will be set to TORTURE if the called party
574 wants to send the caller to the 'torture' script.
575   This application will report normal termination if the originating channel
576 hangs up, or if the call is bridged and either of the parties in the bridge
577 ends the call.
578   The optional URL will be sent to the called party if the channel supports it.
579   If the OUTBOUND_GROUP variable is set, all peer channels created by this
580 application will be put into that group (as in Set(GROUP()=...).
581   If the OUTBOUND_GROUP_ONCE variable is set, all peer channels created by this
582 application will be put into that group (as in Set(GROUP()=...). Unlike OUTBOUND_GROUP,
583 however, the variable will be unset after use.
584
585   Options:
586     A(x) - Play an announcement to the called party, using 'x' as the file.
587     C    - Reset the CDR for this call.
588     d    - Allow the calling user to dial a 1 digit extension while waiting for
589            a call to be answered. Exit to that extension if it exists in the
590            current context, or the context defined in the EXITCONTEXT variable,
591            if it exists.
592     D([called][:calling]) - Send the specified DTMF strings *after* the called
593            party has answered, but before the call gets bridged. The 'called'
594            DTMF string is sent to the called party, and the 'calling' DTMF
595            string is sent to the calling party. Both parameters can be used
596            alone.
597     f    - Force the callerid of the *calling* channel to be set as the
598            extension associated with the channel using a dialplan 'hint'.
599            For example, some PSTNs do not allow CallerID to be set to anything
600            other than the number assigned to the caller.
601     g    - Proceed with dialplan execution at the current extension if the
602            destination channel hangs up.
603     G(context^exten^pri) - If the call is answered, transfer the calling party to
604            the specified priority and the called party to the specified priority+1.
605            Optionally, an extension, or extension and context may be specified. 
606            Otherwise, the current extension is used. You cannot use any additional
607            action post answer options in conjunction with this option.
608     h    - Allow the called party to hang up by sending the '*' DTMF digit.
609     H    - Allow the calling party to hang up by hitting the '*' DTMF digit.
610     i    - Asterisk will ignore any forwarding requests it may receive on this
611            dial attempt.
612     j    - Jump to priority n+101 if all of the requested channels were busy.
613     L(x[:y][:z]) - Limit the call to 'x' ms. Play a warning when 'y' ms are
614            left. Repeat the warning every 'z' ms. The following special
615            variables can be used with this option:
616            * LIMIT_PLAYAUDIO_CALLER   yes|no (default yes)
617                                       Play sounds to the caller.
618            * LIMIT_PLAYAUDIO_CALLEE   yes|no
619                                       Play sounds to the callee.
620            * LIMIT_TIMEOUT_FILE       File to play when time is up.
621            * LIMIT_CONNECT_FILE       File to play when call begins.
622            * LIMIT_WARNING_FILE       File to play as warning if 'y' is defined.
623                                       The default is to say the time remaining.
624     m([class]) - Provide hold music to the calling party until a requested
625            channel answers. A specific MusicOnHold class can be
626            specified.
627     M(x[^arg]) - Execute the Macro for the *called* channel before connecting
628            to the calling channel. Arguments can be specified to the Macro
629            using '^' as a delimeter. The Macro can set the variable
630            MACRO_RESULT to specify the following actions after the Macro is
631            finished executing.
632            * ABORT        Hangup both legs of the call.
633            * CONGESTION   Behave as if line congestion was encountered.
634            * BUSY         Behave as if a busy signal was encountered. This will also
635                           have the application jump to priority n+101 if the
636                           'j' option is set.
637            * CONTINUE     Hangup the called party and allow the calling party
638                           to continue dialplan execution at the next priority.
639            * GOTO:<context>^<exten>^<priority> - Transfer the call to the
640                           specified priority. Optionally, an extension, or
641                           extension and priority can be specified.
642            You cannot use any additional action post answer options in conjunction
643            with this option. Also, pbx services are not run on the peer (called) channel,
644            so you will not be able to set timeouts via the TIMEOUT() function in this macro.
645     n    - This option is a modifier for the screen/privacy mode. It specifies
646            that no introductions are to be saved in the priv-callerintros
647            directory.
648     N    - This option is a modifier for the screen/privacy mode. It specifies
649            that if callerID is present, do not screen the call.
650     o    - Specify that the CallerID that was present on the *calling* channel
651            be set as the CallerID on the *called* channel. This was the
652            behavior of Asterisk 1.0 and earlier.
653     O([x]) - "Operator Services" mode (Zaptel channel to Zaptel channel
654              only, if specified on non-Zaptel interface, it will be ignored).
655              When the destination answers (presumably an operator services
656              station), the originator no longer has control of their line.
657              They may hang up, but the switch will not release their line
658              until the destination party hangs up (the operator). Specified
659              without an arg, or with 1 as an arg, the originator hanging up
660              will cause the phone to ring back immediately. With a 2 specified,
661              when the "operator" flashes the trunk, it will ring their phone
662              back.
663     p    - This option enables screening mode. This is basically Privacy mode
664            without memory.
665     P([x]) - Enable privacy mode. Use 'x' as the family/key in the database if
666            it is provided. The current extension is used if a database
667            family/key is not specified.
668     r    - Indicate ringing to the calling party. Pass no audio to the calling
669            party until the called channel has answered.
670     S(x) - Hang up the call after 'x' seconds *after* the called party has
671            answered the call.
672     t    - Allow the called party to transfer the calling party by sending the
673            DTMF sequence defined in features.conf.
674     T    - Allow the calling party to transfer the called party by sending the
675            DTMF sequence defined in features.conf.
676     w    - Allow the called party to enable recording of the call by sending
677            the DTMF sequence defined for one-touch recording in features.conf.
678     W    - Allow the calling party to enable recording of the call by sending
679            the DTMF sequence defined for one-touch recording in features.conf.
680     k    - Allow the called party to enable parking of the call by sending
681            the DTMF sequence defined for call parking in features.conf.
682     K    - Allow the calling party to enable parking of the call by sending
683            the DTMF sequence defined for call parking in features.conf.
684
685 \end{verbatim}
686
687
688 \section{Dictate}
689 \subsection{Synopsis}
690 \begin{verbatim}
691 Virtual Dictation Machine
692 \end{verbatim}
693 \subsection{Description}
694 \begin{verbatim}
695   Dictate([<base_dir>[|<filename>]])
696 Start dictation machine using optional base dir for files.
697
698 \end{verbatim}
699
700
701 \section{Directory}
702 \subsection{Synopsis}
703 \begin{verbatim}
704 Provide directory of voicemail extensions
705 \end{verbatim}
706 \subsection{Description}
707 \begin{verbatim}
708   Directory(vm-context[|dial-context[|options]]): This application will present
709 the calling channel with a directory of extensions from which they can search
710 by name. The list of names and corresponding extensions is retrieved from the
711 voicemail configuration file, voicemail.conf.
712   This application will immediately exit if one of the following DTMF digits are
713 received and the extension to jump to exists:
714     0 - Jump to the 'o' extension, if it exists.
715     * - Jump to the 'a' extension, if it exists.
716
717   Parameters:
718     vm-context   - This is the context within voicemail.conf to use for the
719                    Directory.
720     dial-context - This is the dialplan context to use when looking for an
721                    extension that the user has selected, or when jumping to the
722                    'o' or 'a' extension.
723
724   Options:
725     e - In addition to the name, also read the extension number to the
726         caller before presenting dialing options.
727     f - Allow the caller to enter the first name of a user in the directory
728         instead of using the last name.
729
730 \end{verbatim}
731
732
733 \section{DISA}
734 \subsection{Synopsis}
735 \begin{verbatim}
736 DISA (Direct Inward System Access)
737 \end{verbatim}
738 \subsection{Description}
739 \begin{verbatim}
740 DISA(<numeric passcode>[|<context>]) or DISA(<filename>)
741 The DISA, Direct Inward System Access, application allows someone from 
742 outside the telephone switch (PBX) to obtain an "internal" system 
743 dialtone and to place calls from it as if they were placing a call from 
744 within the switch.
745 DISA plays a dialtone. The user enters their numeric passcode, followed by
746 the pound sign (#). If the passcode is correct, the user is then given
747 system dialtone on which a call may be placed. Obviously, this type
748 of access has SERIOUS security implications, and GREAT care must be
749 taken NOT to compromise your security.
750
751 There is a possibility of accessing DISA without password. Simply
752 exchange your password with "no-password".
753
754     Example: exten => s,1,DISA(no-password|local)
755
756 Be aware that using this compromises the security of your PBX.
757
758 The arguments to this application (in extensions.conf) allow either
759 specification of a single global passcode (that everyone uses), or
760 individual passcodes contained in a file. It also allows specification
761 of the context on which the user will be dialing. If no context is
762 specified, the DISA application defaults the context to "disa".
763 Presumably a normal system will have a special context set up
764 for DISA use with some or a lot of restrictions. 
765
766 The file that contains the passcodes (if used) allows specification
767 of either just a passcode (defaulting to the "disa" context, or
768 passcode|context on each line of the file. The file may contain blank
769 lines, or comments starting with "#" or ";". In addition, the
770 above arguments may have |new-callerid-string appended to them, to
771 specify a new (different) callerid to be used for this call, for
772 example: numeric-passcode|context|"My Phone" <(234) 123-4567> or 
773 full-pathname-of-passcode-file|"My Phone" <(234) 123-4567>.  Last
774 but not least, |mailbox[@context] may be appended, which will cause
775 a stutter-dialtone (indication "dialrecall") to be used, if the
776 specified mailbox contains any new messages, for example:
777 numeric-passcode|context||1234 (w/a changing callerid).  Note that
778 in the case of specifying the numeric-passcode, the context must be
779 specified if the callerid is specified also.
780
781 If login is successful, the application looks up the dialed number in
782 the specified (or default) context, and executes it if found.
783 If the user enters an invalid extension and extension "i" (invalid) 
784 exists in the context, it will be used. Also, if you set the 5th argument
785 to 'NOANSWER', the DISA application will not answer initially.
786
787 \end{verbatim}
788
789
790 \section{DumpChan}
791 \subsection{Synopsis}
792 \begin{verbatim}
793 Dump Info About The Calling Channel
794 \end{verbatim}
795 \subsection{Description}
796 \begin{verbatim}
797    DumpChan([<min_verbose_level>])
798 Displays information on channel and listing of all channel
799 variables. If min_verbose_level is specified, output is only
800 displayed when the verbose level is currently set to that number
801 or greater. 
802
803 \end{verbatim}
804
805
806 \section{EAGI}
807 \subsection{Synopsis}
808 \begin{verbatim}
809 Executes an EAGI compliant application
810 \end{verbatim}
811 \subsection{Description}
812 \begin{verbatim}
813   [E|Dead]AGI(command|args): Executes an Asterisk Gateway Interface compliant
814 program on a channel. AGI allows Asterisk to launch external programs
815 written in any language to control a telephony channel, play audio,
816 read DTMF digits, etc. by communicating with the AGI protocol on stdin
817 and stdout.
818   This channel will stop dialplan execution on hangup inside of this
819 application, except when using DeadAGI.  Otherwise, dialplan execution
820 will continue normally.
821   A locally executed AGI script will receive SIGHUP on hangup from the channel
822 except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
823 variable to "no" before executing the AGI application.
824   Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
825 on file descriptor 3
826
827   Use the CLI command 'agi show' to list available agi commands
828   This application sets the following channel variable upon completion:
829      AGISTATUS      The status of the attempt to the run the AGI script
830                     text string, one of SUCCESS | FAILED | HANGUP
831
832 \end{verbatim}
833
834
835 \section{Echo}
836 \subsection{Synopsis}
837 \begin{verbatim}
838 Echo audio, video, or DTMF back to the calling party
839 \end{verbatim}
840 \subsection{Description}
841 \begin{verbatim}
842   Echo(): This application will echo any audio, video, or DTMF frames read from
843 the calling channel back to itself. If the DTMF digit '#' is received, the
844 application will exit.
845
846 \end{verbatim}
847
848
849 \section{EndWhile}
850 \subsection{Synopsis}
851 \begin{verbatim}
852 End a while loop
853 \end{verbatim}
854 \subsection{Description}
855 \begin{verbatim}
856 Usage:  EndWhile()
857 Return to the previous called While
858
859 \end{verbatim}
860
861
862 \section{Exec}
863 \subsection{Synopsis}
864 \begin{verbatim}
865 Executes dialplan application
866 \end{verbatim}
867 \subsection{Description}
868 \begin{verbatim}
869 Usage: Exec(appname(arguments))
870   Allows an arbitrary application to be invoked even when not
871 hardcoded into the dialplan.  If the underlying application
872 terminates the dialplan, or if the application cannot be found,
873 Exec will terminate the dialplan.
874   To invoke external applications, see the application System.
875   If you would like to catch any error instead, see TryExec.
876
877 \end{verbatim}
878
879
880 \section{ExecIf}
881 \subsection{Synopsis}
882 \begin{verbatim}
883 Executes dialplan application, conditionally
884 \end{verbatim}
885 \subsection{Description}
886 \begin{verbatim}
887 Usage:  ExecIF (<expr>|<app>|<data>)
888 If <expr> is true, execute and return the result of <app>(<data>).
889 If <expr> is true, but <app> is not found, then the application
890 will return a non-zero value.
891
892 \end{verbatim}
893
894
895 \section{ExecIfTime}
896 \subsection{Synopsis}
897 \begin{verbatim}
898 Conditional application execution based on the current time
899 \end{verbatim}
900 \subsection{Description}
901 \begin{verbatim}
902   ExecIfTime(<times>|<weekdays>|<mdays>|<months>?appname[|appargs]):
903 This application will execute the specified dialplan application, with optional
904 arguments, if the current time matches the given time specification.
905
906 \end{verbatim}
907
908
909 \section{ExitWhile}
910 \subsection{Synopsis}
911 \begin{verbatim}
912 End a While loop
913 \end{verbatim}
914 \subsection{Description}
915 \begin{verbatim}
916 Usage:  ExitWhile()
917 Exits a While loop, whether or not the conditional has been satisfied.
918
919 \end{verbatim}
920
921
922 \section{ExtenSpy}
923 \subsection{Synopsis}
924 \begin{verbatim}
925 Listen to a channel, and optionally whisper into it
926 \end{verbatim}
927 \subsection{Description}
928 \begin{verbatim}
929   ExtenSpy(exten[@context][|options]): This application is used to listen to the
930 audio from an Asterisk channel. This includes the audio coming in and
931 out of the channel being spied on. Only channels created by outgoing calls for the
932 specified extension will be selected for spying. If the optional context is not
933 supplied, the current channel's context will be used.
934   While spying, the following actions may be performed:
935     - Dialing # cycles the volume level.
936     - Dialing * will stop spying and look for another channel to spy on.
937   Note: The X option superseeds the two features above in that if a valid
938         single digit extension exists in the correct context it ChanSpy will
939         exit to it.
940   Options:
941     b             - Only spy on channels involved in a bridged call.
942     g(grp)        - Match only channels where their ${SPYGROUP} variable is set to
943                     contain 'grp' in an optional : delimited list.
944     q             - Don't play a beep when beginning to spy on a channel, or speak the
945                     selected channel name.
946     r[(basename)] - Record the session to the monitor spool directory. An
947                     optional base for the filename may be specified. The
948                     default is 'chanspy'.
949     v([value])    - Adjust the initial volume in the range from -4 to 4. A
950                     negative value refers to a quieter setting.
951     w             - Enable 'whisper' mode, so the spying channel can talk to
952                     the spied-on channel.
953     W             - Enable 'private whisper' mode, so the spying channel can
954                     talk to the spied-on channel but cannot listen to that
955                     channel.
956     o             - Only listen to audio coming from this channel.
957     X             - Allow the user to exit ChanSpy to a valid single digit
958                     numeric extension in the current context or the context
959                     specified by the SPY_EXIT_CONTEXT channel variable. The
960                     name of the last channel that was spied on will be stored
961                     in the SPY_CHANNEL variable.
962
963 \end{verbatim}
964
965
966 \section{ExternalIVR}
967 \subsection{Synopsis}
968 \begin{verbatim}
969 Interfaces with an external IVR application
970 \end{verbatim}
971 \subsection{Description}
972 \begin{verbatim}
973   ExternalIVR(command[|arg[|arg...]]): Forks an process to run the supplied command,
974 and starts a generator on the channel. The generator's play list is
975 controlled by the external application, which can add and clear entries
976 via simple commands issued over its stdout. The external application
977 will receive all DTMF events received on the channel, and notification
978 if the channel is hung up. The application will not be forcibly terminated
979 when the channel is hung up.
980 See doc/externalivr.txt for a protocol specification.
981
982 \end{verbatim}
983
984
985 \section{Festival}
986 \subsection{Synopsis}
987 \begin{verbatim}
988 Say text to the user
989 \end{verbatim}
990 \subsection{Description}
991 \begin{verbatim}
992   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
993 the value, or 'any' to allow any number back (useful in dialplan)
994
995 \end{verbatim}
996
997
998 \section{Flash}
999 \subsection{Synopsis}
1000 \begin{verbatim}
1001 Flashes a Zap Trunk
1002 \end{verbatim}
1003 \subsection{Description}
1004 \begin{verbatim}
1005   Flash(): Sends a flash on a zap trunk.  This is only a hack for
1006 people who want to perform transfers and such via AGI and is generally
1007 quite useless oths application will only work on Zap trunks.
1008
1009 \end{verbatim}
1010
1011
1012 \section{FollowMe}
1013 \subsection{Synopsis}
1014 \begin{verbatim}
1015 Find-Me/Follow-Me application
1016 \end{verbatim}
1017 \subsection{Description}
1018 \begin{verbatim}
1019   FollowMe(followmeid|options):
1020 This application performs Find-Me/Follow-Me functionality for the caller
1021 as defined in the profile matching the <followmeid> parameter in
1022 followme.conf. If the specified <followmeid> profile doesn't exist in
1023 followme.conf, execution will be returned to the dialplan and call
1024 execution will continue at the next priority.
1025
1026   Options:
1027     s    - Playback the incoming status message prior to starting the follow-me step(s)
1028     a    - Record the caller's name so it can be announced to the callee on each step
1029     n    - Playback the unreachable status message if we've run out of steps to reach the
1030            or the callee has elected not to be reachable.
1031 Returns -1 on hangup
1032
1033 \end{verbatim}
1034
1035
1036 \section{ForkCDR}
1037 \subsection{Synopsis}
1038 \begin{verbatim}
1039 Forks the Call Data Record
1040 \end{verbatim}
1041 \subsection{Description}
1042 \begin{verbatim}
1043   ForkCDR([options]):  Causes the Call Data Record to fork an additional
1044 cdr record starting from the time of the fork call
1045 If the option 'v' is passed all cdr variables will be passed along also.
1046
1047 \end{verbatim}
1048
1049
1050 \section{GetCPEID}
1051 \subsection{Synopsis}
1052 \begin{verbatim}
1053 Get ADSI CPE ID
1054 \end{verbatim}
1055 \subsection{Description}
1056 \begin{verbatim}
1057   GetCPEID: Obtains and displays ADSI CPE ID and other information in order
1058 to properly setup zapata.conf for on-hook operations.
1059
1060 \end{verbatim}
1061
1062
1063 \section{Gosub}
1064 \subsection{Synopsis}
1065 \begin{verbatim}
1066 Jump to label, saving return address
1067 \end{verbatim}
1068 \subsection{Description}
1069 \begin{verbatim}
1070 Gosub([[context|]exten|]priority[(arg1[|...][|argN])])
1071   Jumps to the label specified, saving the return address.
1072
1073 \end{verbatim}
1074
1075
1076 \section{GosubIf}
1077 \subsection{Synopsis}
1078 \begin{verbatim}
1079 Conditionally jump to label, saving return address
1080 \end{verbatim}
1081 \subsection{Description}
1082 \begin{verbatim}
1083 GosubIf(condition?labeliftrue[(arg1[|...])][:labeliffalse[(arg1[|...])]])
1084   If the condition is true, then jump to labeliftrue.  If false, jumps to
1085 labeliffalse, if specified.  In either case, a jump saves the return point
1086 in the dialplan, to be returned to with a Return.
1087
1088 \end{verbatim}
1089
1090
1091 \section{Goto}
1092 \subsection{Synopsis}
1093 \begin{verbatim}
1094 Jump to a particular priority, extension, or context
1095 \end{verbatim}
1096 \subsection{Description}
1097 \begin{verbatim}
1098   Goto([[context|]extension|]priority): This application will set the current
1099 context, extension, and priority in the channel structure. After it completes, the
1100 pbx engine will continue dialplan execution at the specified location.
1101 If no specific extension, or extension and context, are specified, then this
1102 application will just set the specified priority of the current extension.
1103   At least a priority is required as an argument, or the goto will return a -1,
1104 and the channel and call will be terminated.
1105   If the location that is put into the channel information is bogus, and asterisk cannot
1106 find that location in the dialplan,
1107 then the execution engine will try to find and execute the code in the 'i' (invalid)
1108 extension in the current context. If that does not exist, it will try to execute the
1109 'h' extension. If either or neither the 'h' or 'i' extensions have been defined, the
1110 channel is hung up, and the execution of instructions on the channel is terminated.
1111 What this means is that, for example, you specify a context that does not exist, then
1112 it will not be possible to find the 'h' or 'i' extensions, and the call will terminate!
1113
1114 \end{verbatim}
1115
1116
1117 \section{GotoIf}
1118 \subsection{Synopsis}
1119 \begin{verbatim}
1120 Conditional goto
1121 \end{verbatim}
1122 \subsection{Description}
1123 \begin{verbatim}
1124   GotoIf(condition?[labeliftrue]:[labeliffalse]): This application will set the current
1125 context, extension, and priority in the channel structure based on the evaluation of
1126 the given condition. After this application completes, the
1127 pbx engine will continue dialplan execution at the specified location in the dialplan.
1128 The channel will continue at
1129 'labeliftrue' if the condition is true, or 'labeliffalse' if the condition is
1130 false. The labels are specified with the same syntax as used within the Goto
1131 application.  If the label chosen by the condition is omitted, no jump is
1132 performed, and the execution passes to the next instruction.
1133 If the target location is bogus, and does not exist, the execution engine will try 
1134 to find and execute the code in the 'i' (invalid)
1135 extension in the current context. If that does not exist, it will try to execute the
1136 'h' extension. If either or neither the 'h' or 'i' extensions have been defined, the
1137 channel is hung up, and the execution of instructions on the channel is terminated.
1138 Remember that this command can set the current context, and if the context specified
1139 does not exist, then it will not be able to find any 'h' or 'i' extensions there, and
1140 the channel and call will both be terminated!
1141
1142 \end{verbatim}
1143
1144
1145 \section{GotoIfTime}
1146 \subsection{Synopsis}
1147 \begin{verbatim}
1148 Conditional Goto based on the current time
1149 \end{verbatim}
1150 \subsection{Description}
1151 \begin{verbatim}
1152   GotoIfTime(<times>|<weekdays>|<mdays>|<months>?[[context|]exten|]priority):
1153 This application will set the context, extension, and priority in the channel structure
1154 if the current time matches the given time specification. Otherwise, nothing is done.
1155 Further information on the time specification can be found in examples
1156 illustrating how to do time-based context includes in the dialplan.
1157 If the target jump location is bogus, the same actions would be taken as for Goto.
1158
1159 \end{verbatim}
1160
1161
1162 \section{Hangup}
1163 \subsection{Synopsis}
1164 \begin{verbatim}
1165 Hang up the calling channel
1166 \end{verbatim}
1167 \subsection{Description}
1168 \begin{verbatim}
1169   Hangup([causecode]): This application will hang up the calling channel.
1170 If a causecode is given the channel's hangup cause will be set to the given
1171 value.
1172
1173 \end{verbatim}
1174
1175
1176 \section{IAX2Provision}
1177 \subsection{Synopsis}
1178 \begin{verbatim}
1179 Provision a calling IAXy with a given template
1180 \end{verbatim}
1181 \subsection{Description}
1182 \begin{verbatim}
1183   IAX2Provision([template]): Provisions the calling IAXy (assuming
1184 the calling entity is in fact an IAXy) with the given template or
1185 default if one is not specified.  Returns -1 on error or 0 on success.
1186
1187 \end{verbatim}
1188
1189
1190 \section{ICES}
1191 \subsection{Synopsis}
1192 \begin{verbatim}
1193 Encode and stream using 'ices'
1194 \end{verbatim}
1195 \subsection{Description}
1196 \begin{verbatim}
1197   ICES(config.xml) Streams to an icecast server using ices
1198 (available separately).  A configuration file must be supplied
1199 for ices (see examples/asterisk-ices.conf). 
1200
1201 \end{verbatim}
1202
1203
1204 \section{ImportVar}
1205 \subsection{Synopsis}
1206 \begin{verbatim}
1207 Import a variable from a channel into a new variable
1208 \end{verbatim}
1209 \subsection{Description}
1210 \begin{verbatim}
1211   ImportVar(newvar=channelname|variable): This application imports a variable
1212 from the specified channel (as opposed to the current one) and stores it as
1213 a variable in the current channel (the channel that is calling this
1214 application). Variables created by this application have the same inheritance
1215 properties as those created with the Set application. See the documentation for
1216 Set for more information.
1217
1218 \end{verbatim}
1219
1220
1221 \section{JabberSend}
1222 \subsection{Synopsis}
1223 \begin{verbatim}
1224 JabberSend(jabber,screenname,message)
1225 \end{verbatim}
1226 \subsection{Description}
1227 \begin{verbatim}
1228 JabberSend(Jabber,ScreenName,Message)
1229   Jabber - Client or transport Asterisk uses to connect to Jabber
1230   ScreenName - User Name to message.
1231   Message - Message to be sent to the buddy
1232
1233 \end{verbatim}
1234
1235
1236 \section{JabberStatus}
1237 \subsection{Synopsis}
1238 \begin{verbatim}
1239 JabberStatus(Jabber,ScreenName,Variable)
1240 \end{verbatim}
1241 \subsection{Description}
1242 \begin{verbatim}
1243 JabberStatus(Jabber,ScreenName,Variable)
1244   Jabber - Client or transport Asterisk uses to connect to Jabber
1245   ScreenName - User Name to retrieve status from.
1246   Variable - Variable to store presence in will be 1-6.
1247              In order, Online, Chatty, Away, XAway, DND, Offline
1248              If not in roster variable will = 7
1249
1250 \end{verbatim}
1251
1252
1253 \section{Log}
1254 \subsection{Synopsis}
1255 \begin{verbatim}
1256 Send arbitrary text to a selected log level
1257 \end{verbatim}
1258 \subsection{Description}
1259 \begin{verbatim}
1260 Log(<level>|<message>)
1261   level must be one of ERROR, WARNING, NOTICE, DEBUG, VERBOSE, DTMF
1262
1263 \end{verbatim}
1264
1265
1266 \section{Macro}
1267 \subsection{Synopsis}
1268 \begin{verbatim}
1269 Macro Implementation
1270 \end{verbatim}
1271 \subsection{Description}
1272 \begin{verbatim}
1273   Macro(macroname|arg1|arg2...): Executes a macro using the context
1274 'macro-<macroname>', jumping to the 's' extension of that context and
1275 executing each step, then returning when the steps end. 
1276 The calling extension, context, and priority are stored in ${MACRO_EXTEN}, 
1277 ${MACRO_CONTEXT} and ${MACRO_PRIORITY} respectively.  Arguments become
1278 ${ARG1}, ${ARG2}, etc in the macro context.
1279 If you Goto out of the Macro context, the Macro will terminate and control
1280 will be returned at the location of the Goto.
1281 If ${MACRO_OFFSET} is set at termination, Macro will attempt to continue
1282 at priority MACRO_OFFSET + N + 1 if such a step exists, and N + 1 otherwise.
1283 Extensions: While a macro is being executed, it becomes the current context.
1284             This means that if a hangup occurs, for instance, that the macro
1285             will be searched for an 'h' extension, NOT the context from which
1286             the macro was called. So, make sure to define all appropriate
1287             extensions in your macro! (Note: AEL does not use macros)
1288 WARNING: Because of the way Macro is implemented (it executes the priorities
1289          contained within it via sub-engine), and a fixed per-thread
1290          memory stack allowance, macros are limited to 7 levels
1291          of nesting (macro calling macro calling macro, etc.); It
1292          may be possible that stack-intensive applications in deeply nested macros
1293          could cause asterisk to crash earlier than this limit. It is advised that
1294          if you need to deeply nest macro calls, that you use the Gosub application
1295          (now allows arguments like a Macro) with explict Return() calls instead.
1296
1297 \end{verbatim}
1298
1299
1300 \section{MacroExclusive}
1301 \subsection{Synopsis}
1302 \begin{verbatim}
1303 Exclusive Macro Implementation
1304 \end{verbatim}
1305 \subsection{Description}
1306 \begin{verbatim}
1307   MacroExclusive(macroname|arg1|arg2...):
1308 Executes macro defined in the context 'macro-macroname'
1309 Only one call at a time may run the macro.
1310 (we'll wait if another call is busy executing in the Macro)
1311 Arguments and return values as in application Macro()
1312
1313 \end{verbatim}
1314
1315
1316 \section{MacroExit}
1317 \subsection{Synopsis}
1318 \begin{verbatim}
1319 Exit From Macro
1320 \end{verbatim}
1321 \subsection{Description}
1322 \begin{verbatim}
1323   MacroExit():
1324 Causes the currently running macro to exit as if it had
1325 ended normally by running out of priorities to execute.
1326 If used outside a macro, will likely cause unexpected
1327 behavior.
1328
1329 \end{verbatim}
1330
1331
1332 \section{MacroIf}
1333 \subsection{Synopsis}
1334 \begin{verbatim}
1335 Conditional Macro Implementation
1336 \end{verbatim}
1337 \subsection{Description}
1338 \begin{verbatim}
1339   MacroIf(<expr>?macroname_a[|arg1][:macroname_b[|arg1]])
1340 Executes macro defined in <macroname_a> if <expr> is true
1341 (otherwise <macroname_b> if provided)
1342 Arguments and return values as in application macro()
1343
1344 \end{verbatim}
1345
1346
1347 \section{MailboxExists}
1348 \subsection{Synopsis}
1349 \begin{verbatim}
1350 Check to see if Voicemail mailbox exists
1351 \end{verbatim}
1352 \subsection{Description}
1353 \begin{verbatim}
1354   MailboxExists(mailbox[@context][|options]): Check to see if the specified
1355 mailbox exists. If no voicemail context is specified, the 'default' context
1356 will be used.
1357   This application will set the following channel variable upon completion:
1358     VMBOXEXISTSSTATUS - This will contain the status of the execution of the
1359                         MailboxExists application. Possible values include:
1360                         SUCCESS | FAILED
1361
1362   Options:
1363     j - Jump to priority n+101 if the mailbox is found.
1364
1365 \end{verbatim}
1366
1367
1368 \section{MeetMe}
1369 \subsection{Synopsis}
1370 \begin{verbatim}
1371 MeetMe conference bridge
1372 \end{verbatim}
1373 \subsection{Description}
1374 \begin{verbatim}
1375   MeetMe([confno][,[options][,pin]]): Enters the user into a specified MeetMe
1376 conference.  If the conference number is omitted, the user will be prompted
1377 to enter one.  User can exit the conference by hangup, or if the 'p' option
1378 is specified, by pressing '#'.
1379 Please note: The Zaptel kernel modules and at least one hardware driver (or ztdummy)
1380              must be present for conferencing to operate properly. In addition, the chan_zap
1381              channel driver must be loaded for the 'i' and 'r' options to operate at all.
1382
1383 The option string may contain zero or more of the following characters:
1384       'a' -- set admin mode
1385       'A' -- set marked mode
1386       'b' -- run AGI script specified in ${MEETME_AGI_BACKGROUND}
1387              Default: conf-background.agi  (Note: This does not work with
1388              non-Zap channels in the same conference)
1389       'c' -- announce user(s) count on joining a conference
1390       'C' -- continue in dialplan when kicked out of conference
1391       'd' -- dynamically add conference
1392       'D' -- dynamically add conference, prompting for a PIN
1393       'e' -- select an empty conference
1394       'E' -- select an empty pinless conference
1395       'F' -- Pass DTMF through the conference.  DTMF used to activate any
1396              conference features will not be passed through.
1397       'i' -- announce user join/leave with review
1398       'I' -- announce user join/leave without review
1399       'l' -- set listen only mode (Listen only, no talking)
1400       'm' -- set initially muted
1401       'M' -- enable music on hold when the conference has a single caller
1402       'o' -- set talker optimization - treats talkers who aren't speaking as
1403              being muted, meaning (a) No encode is done on transmission and
1404              (b) Received audio that is not registered as talking is omitted
1405              causing no buildup in background noise
1406       'p' -- allow user to exit the conference by pressing '#'
1407       'P' -- always prompt for the pin even if it is specified
1408       'q' -- quiet mode (don't play enter/leave sounds)
1409       'r' -- Record conference (records as ${MEETME_RECORDINGFILE}
1410              using format ${MEETME_RECORDINGFORMAT}). Default filename is
1411              meetme-conf-rec-${CONFNO}-${UNIQUEID} and the default format is
1412              wav.
1413       's' -- Present menu (user or admin) when '*' is received ('send' to menu)
1414       't' -- set talk only mode. (Talk only, no listening)
1415       'T' -- set talker detection (sent to manager interface and meetme list)
1416       'w[(<secs>)]'
1417           -- wait until the marked user enters the conference
1418       'x' -- close the conference when last marked user exits
1419       'X' -- allow user to exit the conference by entering a valid single
1420              digit extension ${MEETME_EXIT_CONTEXT} or the current context
1421              if that variable is not defined.
1422       '1' -- do not play message when first person enters
1423
1424 \end{verbatim}
1425
1426
1427 \section{MeetMeAdmin}
1428 \subsection{Synopsis}
1429 \begin{verbatim}
1430 MeetMe conference Administration
1431 \end{verbatim}
1432 \subsection{Description}
1433 \begin{verbatim}
1434   MeetMeAdmin(confno,command[,user]): Run admin command for conference
1435       'e' -- Eject last user that joined
1436       'k' -- Kick one user out of conference
1437       'K' -- Kick all users out of conference
1438       'l' -- Unlock conference
1439       'L' -- Lock conference
1440       'm' -- Unmute one user
1441       'M' -- Mute one user
1442       'n' -- Unmute all users in the conference
1443       'N' -- Mute all non-admin users in the conference
1444       'r' -- Reset one user's volume settings
1445       'R' -- Reset all users volume settings
1446       's' -- Lower entire conference speaking volume
1447       'S' -- Raise entire conference speaking volume
1448       't' -- Lower one user's talk volume
1449       'T' -- Raise one user's talk volume
1450       'u' -- Lower one user's listen volume
1451       'U' -- Raise one user's listen volume
1452       'v' -- Lower entire conference listening volume
1453       'V' -- Raise entire conference listening volume
1454
1455 \end{verbatim}
1456
1457
1458 \section{MeetMeCount}
1459 \subsection{Synopsis}
1460 \begin{verbatim}
1461 MeetMe participant count
1462 \end{verbatim}
1463 \subsection{Description}
1464 \begin{verbatim}
1465   MeetMeCount(confno[|var]): Plays back the number of users in the specified
1466 MeetMe conference. If var is specified, playback will be skipped and the value
1467 will be returned in the variable. Upon app completion, MeetMeCount will hangup
1468 the channel, unless priority n+1 exists, in which case priority progress will
1469 continue.
1470 A ZAPTEL INTERFACE MUST BE INSTALLED FOR CONFERENCING FUNCTIONALITY.
1471
1472 \end{verbatim}
1473
1474
1475 \section{Milliwatt}
1476 \subsection{Synopsis}
1477 \begin{verbatim}
1478 Generate a Constant 1000Hz tone at 0dbm (mu-law)
1479 \end{verbatim}
1480 \subsection{Description}
1481 \begin{verbatim}
1482 Milliwatt(): Generate a Constant 1000Hz tone at 0dbm (mu-law)
1483
1484 \end{verbatim}
1485
1486
1487 \section{MinivmAccMess}
1488 \subsection{Synopsis}
1489 \begin{verbatim}
1490 Record account specific messages
1491 \end{verbatim}
1492 \subsection{Description}
1493 \begin{verbatim}
1494 Syntax: MinivmAccmess(username@domain,option)
1495 This application is part of the Mini-Voicemail system, configured in minivm.conf.
1496 Use this application to record account specific audio/video messages for
1497 busy, unavailable and temporary messages.
1498 Account specific directories will be created if they do not exist.
1499
1500 The option selects message to be recorded:
1501    u      Unavailable
1502    b      Busy
1503    t      Temporary (overrides busy and unavailable)
1504    n      Account name
1505
1506 Result is given in channel variable MINIVM_ACCMESS_STATUS
1507         The possible values are:     SUCCESS |  FAILED
1508          FAILED is set if the file can't be created.
1509
1510
1511 \end{verbatim}
1512
1513
1514 \section{MinivmDelete}
1515 \subsection{Synopsis}
1516 \begin{verbatim}
1517 Delete Mini-Voicemail voicemail messages
1518 \end{verbatim}
1519 \subsection{Description}
1520 \begin{verbatim}
1521 Syntax: MinivmDelete(filename)
1522 This application is part of the Mini-Voicemail system, configured in minivm.conf.
1523 It deletes voicemail file set in MVM_FILENAME or given filename.
1524
1525 Result is given in channel variable MINIVM_DELETE_STATUS
1526         The possible values are:     SUCCESS |  FAILED
1527          FAILED is set if the file does not exist or can't be deleted.
1528
1529
1530 \end{verbatim}
1531
1532
1533 \section{MinivmGreet}
1534 \subsection{Synopsis}
1535 \begin{verbatim}
1536 Play Mini-Voicemail prompts
1537 \end{verbatim}
1538 \subsection{Description}
1539 \begin{verbatim}
1540 Syntax: MinivmGreet(username@domain[,options])
1541 This application is part of the Mini-Voicemail system, configured in minivm.conf.
1542 MinivmGreet() plays default prompts or user specific prompts for an account.
1543 Busy and unavailable messages can be choosen, but will be overridden if a temporary
1544 message exists for the account.
1545
1546 Result is given in channel variable MINIVM_GREET_STATUS
1547         The possible values are:     SUCCESS | USEREXIT | FAILED
1548
1549   Options:
1550     b    - Play the 'busy' greeting to the calling party.
1551     s    - Skip the playback of instructions for leaving a message to the
1552            calling party.
1553     u    - Play the 'unavailable greeting.
1554
1555
1556 \end{verbatim}
1557
1558
1559 \section{MinivmNotify}
1560 \subsection{Synopsis}
1561 \begin{verbatim}
1562 Notify voicemail owner about new messages.
1563 \end{verbatim}
1564 \subsection{Description}
1565 \begin{verbatim}
1566 Syntax: MinivmNotify(username@domain[,template])
1567 This application is part of the Mini-Voicemail system, configured in minivm.conf.
1568 MiniVMnotify forwards messages about new voicemail to e-mail and pager.
1569 If there's no user account for that address, a temporary account will
1570 be used with default options (set in minivm.conf).
1571 The recorded file name and path will be read from MVM_FILENAME and the 
1572 duration of the message will be accessed from MVM_DURATION (set by MinivmRecord() )
1573 If the channel variable MVM_COUNTER is set, this will be used in the
1574 message file name and available in the template for the message.
1575 If not template is given, the default email template will be used to send email and
1576 default pager template to send paging message (if the user account is configured with
1577 a paging address.
1578
1579 Result is given in channel variable MINIVM_NOTIFY_STATUS
1580         The possible values are:     SUCCESS | FAILED
1581
1582
1583 \end{verbatim}
1584
1585
1586 \section{MinivmRecord}
1587 \subsection{Synopsis}
1588 \begin{verbatim}
1589 Receive Mini-Voicemail and forward via e-mail
1590 \end{verbatim}
1591 \subsection{Description}
1592 \begin{verbatim}
1593 Syntax: MinivmRecord(username@domain[,options])
1594 This application is part of the Mini-Voicemail system, configured in minivm.conf.
1595 MiniVM records audio file in configured format and forwards message to e-mail and pager.
1596 If there's no user account for that address, a temporary account will
1597 be used with default options.
1598 The recorded file name and path will be stored in MINIVM_FILENAME and the 
1599 duration of the message will be stored in MINIVM_DURATION
1600
1601 Note: If the caller hangs up after the recording, the only way to send
1602 the message and clean up is to execute in the "h" extension.
1603
1604 The application will exit if any of the following DTMF digits are 
1605 received and the requested extension exist in the current context.
1606     0 - Jump to the 'o' extension in the current dialplan context.
1607     * - Jump to the 'a' extension in the current dialplan context.
1608
1609 Result is given in channel variable MINIVM_RECORD_STATUS
1610         The possible values are:     SUCCESS | USEREXIT | FAILED
1611
1612   Options:
1613     g(#) - Use the specified amount of gain when recording the voicemail
1614            message. The units are whole-number decibels (dB).
1615
1616
1617 \end{verbatim}
1618
1619
1620 \section{MixMonitor}
1621 \subsection{Synopsis}
1622 \begin{verbatim}
1623 Record a call and mix the audio during the recording
1624 \end{verbatim}
1625 \subsection{Description}
1626 \begin{verbatim}
1627   MixMonitor(<file>.<ext>[|<options>[|<command>]])
1628
1629 Records the audio on the current channel to the specified file.
1630 If the filename is an absolute path, uses that path, otherwise
1631 creates the file in the configured monitoring directory from
1632 asterisk.conf.
1633
1634 Valid options:
1635  a      - Append to the file instead of overwriting it.
1636  b      - Only save audio to the file while the channel is bridged.
1637           Note: Does not include conferences or sounds played to each bridged
1638                 party.
1639  v(<x>) - Adjust the heard volume by a factor of <x> (range -4 to 4)
1640  V(<x>) - Adjust the spoken volume by a factor of <x> (range -4 to 4)
1641  W(<x>) - Adjust the both heard and spoken volumes by a factor of <x>
1642          (range -4 to 4)
1643
1644 <command> will be executed when the recording is over
1645 Any strings matching ^{X} will be unescaped to ${X} and 
1646 all variables will be evaluated at that time.
1647 The variable MIXMONITOR_FILENAME will contain the filename used to record.
1648
1649 \end{verbatim}
1650
1651
1652 \section{Monitor}
1653 \subsection{Synopsis}
1654 \begin{verbatim}
1655 Monitor a channel
1656 \end{verbatim}
1657 \subsection{Description}
1658 \begin{verbatim}
1659 Monitor([file_format[:urlbase]|[fname_base]|[options]]):
1660 Used to start monitoring a channel. The channel's input and output
1661 voice packets are logged to files until the channel hangs up or
1662 monitoring is stopped by the StopMonitor application.
1663   file_format           optional, if not set, defaults to "wav"
1664   fname_base            if set, changes the filename used to the one specified.
1665   options:
1666     m   - when the recording ends mix the two leg files into one and
1667           delete the two leg files.  If the variable MONITOR_EXEC is set, the
1668           application referenced in it will be executed instead of
1669           soxmix and the raw leg files will NOT be deleted automatically.
1670           soxmix or MONITOR_EXEC is handed 3 arguments, the two leg files
1671           and a target mixed file name which is the same as the leg file names
1672           only without the in/out designator.
1673           If MONITOR_EXEC_ARGS is set, the contents will be passed on as
1674           additional arguements to MONITOR_EXEC
1675           Both MONITOR_EXEC and the Mix flag can be set from the
1676           administrator interface
1677
1678     b   - Don't begin recording unless a call is bridged to another channel
1679
1680 Returns -1 if monitor files can't be opened or if the channel is already
1681 monitored, otherwise 0.
1682
1683 \end{verbatim}
1684
1685
1686 \section{Morsecode}
1687 \subsection{Synopsis}
1688 \begin{verbatim}
1689 Plays morse code
1690 \end{verbatim}
1691 \subsection{Description}
1692 \begin{verbatim}
1693 Usage: Morsecode(<string>)
1694 Plays the Morse code equivalent of the passed string.  If the variable
1695 MORSEDITLEN is set, it will use that value for the length (in ms) of the dit
1696 (defaults to 80).  Additionally, if MORSETONE is set, it will use that tone
1697 (in Hz).  The tone default is 800.
1698
1699 \end{verbatim}
1700
1701
1702 \section{MP3Player}
1703 \subsection{Synopsis}
1704 \begin{verbatim}
1705 Play an MP3 file or stream
1706 \end{verbatim}
1707 \subsection{Description}
1708 \begin{verbatim}
1709   MP3Player(location) Executes mpg123 to play the given location,
1710 which typically would be a filename or a URL. User can exit by pressing
1711 any key on the dialpad, or by hanging up.
1712 \end{verbatim}
1713
1714
1715 \section{MusicOnHold}
1716 \subsection{Synopsis}
1717 \begin{verbatim}
1718 Play Music On Hold indefinitely
1719 \end{verbatim}
1720 \subsection{Description}
1721 \begin{verbatim}
1722 MusicOnHold(class): Plays hold music specified by class.  If omitted, the default
1723 music source for the channel will be used. Set the default 
1724 class with the SetMusicOnHold() application.
1725 Returns -1 on hangup.
1726 Never returns otherwise.
1727
1728 \end{verbatim}
1729
1730
1731 \section{NBScat}
1732 \subsection{Synopsis}
1733 \begin{verbatim}
1734 Play an NBS local stream
1735 \end{verbatim}
1736 \subsection{Description}
1737 \begin{verbatim}
1738   NBScat: Executes nbscat to listen to the local NBS stream.
1739 User can exit by pressing any key
1740 .
1741 \end{verbatim}
1742
1743
1744 \section{NoCDR}
1745 \subsection{Synopsis}
1746 \begin{verbatim}
1747 Tell Asterisk to not maintain a CDR for the current call
1748 \end{verbatim}
1749 \subsection{Description}
1750 \begin{verbatim}
1751   NoCDR(): This application will tell Asterisk not to maintain a CDR for the
1752 current call.
1753
1754 \end{verbatim}
1755
1756
1757 \section{NoOp}
1758 \subsection{Synopsis}
1759 \begin{verbatim}
1760 Do Nothing
1761 \end{verbatim}
1762 \subsection{Description}
1763 \begin{verbatim}
1764   NoOp(): This applicatiion does nothing. However, it is useful for debugging
1765 purposes. Any text that is provided as arguments to this application can be
1766 viewed at the Asterisk CLI. This method can be used to see the evaluations of
1767 variables or functions without having any effect.
1768 \end{verbatim}
1769
1770
1771 \section{Page}
1772 \subsection{Synopsis}
1773 \begin{verbatim}
1774 Pages phones
1775 \end{verbatim}
1776 \subsection{Description}
1777 \begin{verbatim}
1778 Page(Technology/Resource&Technology2/Resource2[|options])
1779   Places outbound calls to the given technology / resource and dumps
1780 them into a conference bridge as muted participants.  The original
1781 caller is dumped into the conference as a speaker and the room is
1782 destroyed when the original caller leaves.  Valid options are:
1783         d - full duplex audio
1784         q - quiet, do not play beep to caller
1785         r - record the page into a file (see 'r' for app_meetme)
1786         s - only dial channel if devicestate says it is not in use
1787
1788 \end{verbatim}
1789
1790
1791 \section{Park}
1792 \subsection{Synopsis}
1793 \begin{verbatim}
1794 Park yourself
1795 \end{verbatim}
1796 \subsection{Description}
1797 \begin{verbatim}
1798 Park():Used to park yourself (typically in combination with a supervised
1799 transfer to know the parking space). This application is always
1800 registered internally and does not need to be explicitly added
1801 into the dialplan, although you should include the 'parkedcalls'
1802 context (or the context specified in features.conf).
1803
1804 If you set the PARKINGEXTEN variable to an extension in your
1805 parking context, park() will park the call on that extension, unless
1806 it already exists. In that case, execution will continue at next
1807 priority.
1808
1809 \end{verbatim}
1810
1811
1812 \section{ParkAndAnnounce}
1813 \subsection{Synopsis}
1814 \begin{verbatim}
1815 Park and Announce
1816 \end{verbatim}
1817 \subsection{Description}
1818 \begin{verbatim}
1819   ParkAndAnnounce(announce:template|timeout|dial|[return_context]):
1820 Park a call into the parkinglot and announce the call to another channel.
1821
1822 announce template: Colon-separated list of files to announce.  The word PARKED
1823                    will be replaced by a say_digits of the extension in which
1824                    the call is parked.
1825 timeout:           Time in seconds before the call returns into the return
1826                    context.
1827 dial:              The app_dial style resource to call to make the
1828                    announcement.  Console/dsp calls the console.
1829 return_context:    The goto-style label to jump the call back into after
1830                    timeout.  Default <priority+1>.
1831
1832 The variable ${PARKEDAT} will contain the parking extension into which the
1833 call was placed.  Use with the Local channel to allow the dialplan to make
1834 use of this information.
1835
1836 \end{verbatim}
1837
1838
1839 \section{ParkedCall}
1840 \subsection{Synopsis}
1841 \begin{verbatim}
1842 Answer a parked call
1843 \end{verbatim}
1844 \subsection{Description}
1845 \begin{verbatim}
1846 ParkedCall(exten):Used to connect to a parked call.  This application is always
1847 registered internally and does not need to be explicitly added
1848 into the dialplan, although you should include the 'parkedcalls'
1849 context.
1850
1851 \end{verbatim}
1852
1853
1854 \section{PauseMonitor}
1855 \subsection{Synopsis}
1856 \begin{verbatim}
1857 Pause monitoring of a channel
1858 \end{verbatim}
1859 \subsection{Description}
1860 \begin{verbatim}
1861 PauseMonitor
1862 Pauses monitoring of a channel until it is re-enabled by a call to UnpauseMonitor.
1863
1864 \end{verbatim}
1865
1866
1867 \section{PauseQueueMember}
1868 \subsection{Synopsis}
1869 \begin{verbatim}
1870 Pauses a queue member
1871 \end{verbatim}
1872 \subsection{Description}
1873 \begin{verbatim}
1874    PauseQueueMember([queuename]|interface[|options]):
1875 Pauses (blocks calls for) a queue member.
1876 The given interface will be paused in the given queue.  This prevents
1877 any calls from being sent from the queue to the interface until it is
1878 unpaused with UnpauseQueueMember or the manager interface.  If no
1879 queuename is given, the interface is paused in every queue it is a
1880 member of.  If the interface is not in the named queue, or if no queue
1881 is given and the interface is not in any queue, it will jump to
1882 priority n+101, if it exists and the appropriate options are set.
1883 The application will fail if the interface is not found and no extension
1884 to jump to exists.
1885 The option string may contain zero or more of the following characters:
1886        'j' -- jump to +101 priority when appropriate.
1887   This application sets the following channel variable upon completion:
1888      PQMSTATUS      The status of the attempt to pause a queue member as a
1889                      text string, one of
1890            PAUSED | NOTFOUND
1891 Example: PauseQueueMember(|SIP/3000)
1892
1893 \end{verbatim}
1894
1895
1896 \section{Pickup}
1897 \subsection{Synopsis}
1898 \begin{verbatim}
1899 Directed Call Pickup
1900 \end{verbatim}
1901 \subsection{Description}
1902 \begin{verbatim}
1903   Pickup(extension[@context][&extension2@context...]): This application can pickup any ringing channel
1904 that is calling the specified extension. If no context is specified, the current
1905 context will be used. If you use the special string "PICKUPMARK" for the context parameter, for example
1906 10@PICKUPMARK, this application tries to find a channel which has defined a channel variable with the same content
1907 as "extension".
1908 \end{verbatim}
1909
1910
1911 \section{Playback}
1912 \subsection{Synopsis}
1913 \begin{verbatim}
1914 Play a file
1915 \end{verbatim}
1916 \subsection{Description}
1917 \begin{verbatim}
1918   Playback(filename[&filename2...][|option]):  Plays back given filenames (do not put
1919 extension). Options may also be included following a pipe symbol. The 'skip'
1920 option causes the playback of the message to be skipped if the channel
1921 is not in the 'up' state (i.e. it hasn't been  answered  yet). If 'skip' is 
1922 specified, the application will return immediately should the channel not be
1923 off hook.  Otherwise, unless 'noanswer' is specified, the channel will
1924 be answered before the sound is played. Not all channels support playing
1925 messages while still on hook. If 'j' is specified, the application
1926 will jump to priority n+101 if present when a file specified to be played
1927 does not exist.
1928 This application sets the following channel variable upon completion:
1929  PLAYBACKSTATUS    The status of the playback attempt as a text string, one of
1930                SUCCESS | FAILED
1931
1932 \end{verbatim}
1933
1934
1935 \section{PlayTones}
1936 \subsection{Synopsis}
1937 \begin{verbatim}
1938 Play a tone list
1939 \end{verbatim}
1940 \subsection{Description}
1941 \begin{verbatim}
1942 PlayTones(arg): Plays a tone list. Execution will continue with the next step immediately,
1943 while the tones continue to play.
1944 Arg is either the tone name defined in the indications.conf configuration file, or a directly
1945 specified list of frequencies and durations.
1946 See the sample indications.conf for a description of the specification of a tonelist.
1947
1948 Use the StopPlayTones application to stop the tones playing. 
1949
1950 \end{verbatim}
1951
1952
1953 \section{PrivacyManager}
1954 \subsection{Synopsis}
1955 \begin{verbatim}
1956 Require phone number to be entered, if no CallerID sent
1957 \end{verbatim}
1958 \subsection{Description}
1959 \begin{verbatim}
1960   PrivacyManager([maxretries[|minlength[|options]]]): If no Caller*ID 
1961 is sent, PrivacyManager answers the channel and asks the caller to
1962 enter their phone number. The caller is given 3 attempts to do so.
1963 The application does nothing if Caller*ID was received on the channel.
1964   Configuration file privacy.conf contains two variables:
1965    maxretries  default 3  -maximum number of attempts the caller is allowed 
1966                to input a callerid.
1967    minlength   default 10 -minimum allowable digits in the input callerid number.
1968 If you don't want to use the config file and have an i/o operation with
1969 every call, you can also specify maxretries and minlength as application
1970 parameters. Doing so supercedes any values set in privacy.conf.
1971 The option string may contain the following character: 
1972   'j' -- jump to n+101 priority after <maxretries> failed attempts to collect
1973          the minlength number of digits.
1974 The application sets the following channel variable upon completion: 
1975 PRIVACYMGRSTATUS  The status of the privacy manager's attempt to collect 
1976                   a phone number from the user. A text string that is either:
1977           SUCCESS | FAILED 
1978
1979 \end{verbatim}
1980
1981
1982 \section{Progress}
1983 \subsection{Synopsis}
1984 \begin{verbatim}
1985 Indicate progress
1986 \end{verbatim}
1987 \subsection{Description}
1988 \begin{verbatim}
1989   Progress(): This application will request that in-band progress information
1990 be provided to the calling channel.
1991
1992 \end{verbatim}
1993
1994
1995 \section{Queue}
1996 \subsection{Synopsis}
1997 \begin{verbatim}
1998 Queue a call for a call queue
1999 \end{verbatim}
2000 \subsection{Description}
2001 \begin{verbatim}
2002   Queue(queuename[|options[|URL][|announceoverride][|timeout][|AGI][|macro]):
2003 Queues an incoming call in a particular call queue as defined in queues.conf.
2004 This application will return to the dialplan if the queue does not exist, or
2005 any of the join options cause the caller to not enter the queue.
2006 The option string may contain zero or more of the following characters:
2007       'd' -- data-quality (modem) call (minimum delay).
2008       'h' -- allow callee to hang up by pressing *.
2009       'H' -- allow caller to hang up by pressing *.
2010       'n' -- no retries on the timeout; will exit this application and 
2011              go to the next step.
2012       'i' -- ignore call forward requests from queue members and do nothing
2013              when they are requested.
2014       'r' -- ring instead of playing MOH.
2015       't' -- allow the called user to transfer the calling user.
2016       'T' -- allow the calling user to transfer the call.
2017       'w' -- allow the called user to write the conversation to disk via Monitor.
2018       'W' -- allow the calling user to write the conversation to disk via Monitor.
2019   In addition to transferring the call, a call may be parked and then picked
2020 up by another user.
2021   The optional URL will be sent to the called party if the channel supports
2022 it.
2023   The optional AGI parameter will setup an AGI script to be executed on the 
2024 calling party's channel once they are connected to a queue member.
2025   The optional macro parameter will run a macro on the 
2026 calling party's channel once they are connected to a queue member.
2027   The timeout will cause the queue to fail out after a specified number of
2028 seconds, checked between each queues.conf 'timeout' and 'retry' cycle.
2029   This application sets the following channel variable upon completion:
2030       QUEUESTATUS    The status of the call as a text string, one of
2031              TIMEOUT | FULL | JOINEMPTY | LEAVEEMPTY | JOINUNAVAIL | LEAVEUNAVAIL
2032
2033 \end{verbatim}
2034
2035
2036 \section{QueueLog}
2037 \subsection{Synopsis}
2038 \begin{verbatim}
2039 Writes to the queue_log
2040 \end{verbatim}
2041 \subsection{Description}
2042 \begin{verbatim}
2043    QueueLog(queuename|uniqueid|agent|event[|additionalinfo]):
2044 Allows you to write your own events into the queue log
2045 Example: QueueLog(101|${UNIQUEID}|${AGENT}|WENTONBREAK|600)
2046
2047 \end{verbatim}
2048
2049
2050 \section{Read}
2051 \subsection{Synopsis}
2052 \begin{verbatim}
2053 Read a variable
2054 \end{verbatim}
2055 \subsection{Description}
2056 \begin{verbatim}
2057   Read(variable[|filename[&filename2...]][|maxdigits][|option][|attempts][|timeout])
2058
2059 Reads a #-terminated string of digits a certain number of times from the
2060 user in to the given variable.
2061   filename   -- file(s) to play before reading digits or tone with option i
2062   maxdigits  -- maximum acceptable number of digits. Stops reading after
2063                 maxdigits have been entered (without requiring the user to
2064                 press the '#' key).
2065                 Defaults to 0 - no limit - wait for the user press the '#' key.
2066                 Any value below 0 means the same. Max accepted value is 255.
2067   option     -- options are 's' , 'i', 'n'
2068                 's' to return immediately if the line is not up,
2069                 'i' to play  filename as an indication tone from your indications.conf
2070                 'n' to read digits even if the line is not up.
2071   attempts   -- if greater than 1, that many attempts will be made in the 
2072                 event no data is entered.
2073   timeout    -- The number of seconds to wait for a digit response. If greater
2074                 than 0, that value will override the default timeout. Can be floating point.
2075
2076 Read should disconnect if the function fails or errors out.
2077
2078 \end{verbatim}
2079
2080
2081 \section{ReadFile}
2082 \subsection{Synopsis}
2083 \begin{verbatim}
2084 ReadFile(varname=file,length)
2085 \end{verbatim}
2086 \subsection{Description}
2087 \begin{verbatim}
2088 ReadFile(varname=file,length)
2089   Varname - Result stored here.
2090   File - The name of the file to read.
2091   Length - Maximum number of characters to capture.
2092
2093 \end{verbatim}
2094
2095
2096 \section{Record}
2097 \subsection{Synopsis}
2098 \begin{verbatim}
2099 Record to a file
2100 \end{verbatim}
2101 \subsection{Description}
2102 \begin{verbatim}
2103   Record(filename.format|silence[|maxduration][|options])
2104
2105 Records from the channel into a given filename. If the file exists it will
2106 be overwritten.
2107 - 'format' is the format of the file type to be recorded (wav, gsm, etc).
2108 - 'silence' is the number of seconds of silence to allow before returning.
2109 - 'maxduration' is the maximum recording duration in seconds. If missing
2110 or 0 there is no maximum.
2111 - 'options' may contain any of the following letters:
2112      'a' : append to existing recording rather than replacing
2113      'n' : do not answer, but record anyway if line not yet answered
2114      'q' : quiet (do not play a beep tone)
2115      's' : skip recording if the line is not yet answered
2116      't' : use alternate '*' terminator key (DTMF) instead of default '#'
2117      'x' : ignore all terminator keys (DTMF) and keep recording until hangup
2118
2119 If filename contains '%d', these characters will be replaced with a number
2120 incremented by one each time the file is recorded. A channel variable
2121 named RECORDED_FILE will also be set, which contains the final filemname.
2122
2123 Use 'core show file formats' to see the available formats on your system
2124
2125 User can press '#' to terminate the recording and continue to the next priority.
2126
2127 If the user should hangup during a recording, all data will be lost and the
2128 application will teminate. 
2129
2130 \end{verbatim}
2131
2132
2133 \section{RemoveQueueMember}
2134 \subsection{Synopsis}
2135 \begin{verbatim}
2136 Dynamically removes queue members
2137 \end{verbatim}
2138 \subsection{Description}
2139 \begin{verbatim}
2140    RemoveQueueMember(queuename[|interface[|options]]):
2141 Dynamically removes interface to an existing queue
2142 If the interface is NOT in the queue and there exists an n+101 priority
2143 then it will then jump to this priority.  Otherwise it will return an error
2144 The option string may contain zero or more of the following characters:
2145        'j' -- jump to +101 priority when appropriate.
2146   This application sets the following channel variable upon completion:
2147      RQMSTATUS      The status of the attempt to remove a queue member as a
2148                      text string, one of
2149            REMOVED | NOTINQUEUE | NOSUCHQUEUE 
2150 Example: RemoveQueueMember(techsupport|SIP/3000)
2151
2152 \end{verbatim}
2153
2154
2155 \section{ResetCDR}
2156 \subsection{Synopsis}
2157 \begin{verbatim}
2158 Resets the Call Data Record
2159 \end{verbatim}
2160 \subsection{Description}
2161 \begin{verbatim}
2162   ResetCDR([options]):  This application causes the Call Data Record to be
2163 reset.
2164   Options:
2165     w -- Store the current CDR record before resetting it.
2166     a -- Store any stacked records.
2167     v -- Save CDR variables.
2168
2169 \end{verbatim}
2170
2171
2172 \section{RetryDial}
2173 \subsection{Synopsis}
2174 \begin{verbatim}
2175 Place a call, retrying on failure allowing optional exit extension.
2176 \end{verbatim}
2177 \subsection{Description}
2178 \begin{verbatim}
2179   RetryDial(announce|sleep|retries|dialargs): This application will attempt to
2180 place a call using the normal Dial application. If no channel can be reached,
2181 the 'announce' file will be played. Then, it will wait 'sleep' number of
2182 seconds before retying the call. After 'retires' number of attempts, the
2183 calling channel will continue at the next priority in the dialplan. If the
2184 'retries' setting is set to 0, this application will retry endlessly.
2185   While waiting to retry a call, a 1 digit extension may be dialed. If that
2186 extension exists in either the context defined in ${EXITCONTEXT} or the current
2187 one, The call will jump to that extension immediately.
2188   The 'dialargs' are specified in the same format that arguments are provided
2189 to the Dial application.
2190
2191 \end{verbatim}
2192
2193
2194 \section{Return}
2195 \subsection{Synopsis}
2196 \begin{verbatim}
2197 Return from gosub routine
2198 \end{verbatim}
2199 \subsection{Description}
2200 \begin{verbatim}
2201 Return([return-value])
2202   Jumps to the last label on the stack, removing it.  The return value, if
2203 any, is saved in the channel variable GOSUB_RETVAL.
2204
2205 \end{verbatim}
2206
2207
2208 \section{Ringing}
2209 \subsection{Synopsis}
2210 \begin{verbatim}
2211 Indicate ringing tone
2212 \end{verbatim}
2213 \subsection{Description}
2214 \begin{verbatim}
2215   Ringing(): This application will request that the channel indicate a ringing
2216 tone to the user.
2217
2218 \end{verbatim}
2219
2220
2221 \section{SayAlpha}
2222 \subsection{Synopsis}
2223 \begin{verbatim}
2224 Say Alpha
2225 \end{verbatim}
2226 \subsection{Description}
2227 \begin{verbatim}
2228   SayAlpha(string): This application will play the sounds that correspond to
2229 the letters of the given string.
2230
2231 \end{verbatim}
2232
2233
2234 \section{SayDigits}
2235 \subsection{Synopsis}
2236 \begin{verbatim}
2237 Say Digits
2238 \end{verbatim}
2239 \subsection{Description}
2240 \begin{verbatim}
2241   SayDigits(digits): This application will play the sounds that correspond
2242 to the digits of the given number. This will use the language that is currently
2243 set for the channel. See the LANGUAGE function for more information on setting
2244 the language for the channel.
2245
2246 \end{verbatim}
2247
2248
2249 \section{SayNumber}
2250 \subsection{Synopsis}
2251 \begin{verbatim}
2252 Say Number
2253 \end{verbatim}
2254 \subsection{Description}
2255 \begin{verbatim}
2256   SayNumber(digits[,gender]): This application will play the sounds that
2257 correspond to the given number. Optionally, a gender may be specified.
2258 This will use the language that is currently set for the channel. See the
2259 LANGUAGE function for more information on setting the language for the channel.
2260
2261 \end{verbatim}
2262
2263
2264 \section{SayPhonetic}
2265 \subsection{Synopsis}
2266 \begin{verbatim}
2267 Say Phonetic
2268 \end{verbatim}
2269 \subsection{Description}
2270 \begin{verbatim}
2271   SayPhonetic(string): This application will play the sounds from the phonetic
2272 alphabet that correspond to the letters in the given string.
2273
2274 \end{verbatim}
2275
2276
2277 \section{SayUnixTime}
2278 \subsection{Synopsis}
2279 \begin{verbatim}
2280 Says a specified time in a custom format
2281 \end{verbatim}
2282 \subsection{Description}
2283 \begin{verbatim}
2284 SayUnixTime([unixtime][|[timezone][|format]])
2285   unixtime: time, in seconds since Jan 1, 1970.  May be negative.
2286               defaults to now.
2287   timezone: timezone, see /usr/share/zoneinfo for a list.
2288               defaults to machine default.
2289   format:   a format the time is to be said in.  See voicemail.conf.
2290               defaults to "ABdY 'digits/at' IMp"
2291
2292 \end{verbatim}
2293
2294
2295 \section{SendDTMF}
2296 \subsection{Synopsis}
2297 \begin{verbatim}
2298 Sends arbitrary DTMF digits
2299 \end{verbatim}
2300 \subsection{Description}
2301 \begin{verbatim}
2302  SendDTMF(digits[|timeout_ms]): Sends DTMF digits on a channel. 
2303  Accepted digits: 0-9, *#abcd, w (.5s pause)
2304  The application will either pass the assigned digits or terminate if it
2305  encounters an error.
2306
2307 \end{verbatim}
2308
2309
2310 \section{SendImage}
2311 \subsection{Synopsis}
2312 \begin{verbatim}
2313 Send an image file
2314 \end{verbatim}
2315 \subsection{Description}
2316 \begin{verbatim}
2317   SendImage(filename): Sends an image on a channel. 
2318 If the channel supports image transport but the image send
2319 fails, the channel will be hung up. Otherwise, the dialplan
2320 continues execution.
2321 The option string may contain the following character:
2322         'j' -- jump to priority n+101 if the channel doesn't support image transport
2323 This application sets the following channel variable upon completion:
2324         SENDIMAGESTATUS         The status is the result of the attempt as a text string, one of
2325                 OK | NOSUPPORT 
2326
2327 \end{verbatim}
2328
2329
2330 \section{SendText}
2331 \subsection{Synopsis}
2332 \begin{verbatim}
2333 Send a Text Message
2334 \end{verbatim}
2335 \subsection{Description}
2336 \begin{verbatim}
2337   SendText(text[|options]): Sends text to current channel (callee).
2338 Result of transmission will be stored in the SENDTEXTSTATUS
2339 channel variable:
2340       SUCCESS      Transmission succeeded
2341       FAILURE      Transmission failed
2342       UNSUPPORTED  Text transmission not supported by channel
2343
2344 At this moment, text is supposed to be 7 bit ASCII in most channels.
2345 The option string many contain the following character:
2346 'j' -- jump to n+101 priority if the channel doesn't support
2347        text transport
2348
2349 \end{verbatim}
2350
2351
2352 \section{SendURL}
2353 \subsection{Synopsis}
2354 \begin{verbatim}
2355 Send a URL
2356 \end{verbatim}
2357 \subsection{Description}
2358 \begin{verbatim}
2359   SendURL(URL[|option]): Requests client go to URL (IAX2) or sends the 
2360 URL to the client (other channels).
2361 Result is returned in the SENDURLSTATUS channel variable:
2362     SUCCESS       URL successfully sent to client
2363     FAILURE       Failed to send URL
2364     NOLOAD        Client failed to load URL (wait enabled)
2365     UNSUPPORTED   Channel does not support URL transport
2366
2367 If the option 'wait' is specified, execution will wait for an
2368 acknowledgement that the URL has been loaded before continuing
2369
2370 If jumping is specified as an option (the 'j' flag), the client does not
2371 support Asterisk "html" transport, and there exists a step with priority
2372 n + 101, then execution will continue at that step.
2373
2374 SendURL continues normally if the URL was sent correctly or if the channel
2375 does not support HTML transport.  Otherwise, the channel is hung up.
2376
2377 \end{verbatim}
2378
2379
2380 \section{Set}
2381 \subsection{Synopsis}
2382 \begin{verbatim}
2383 Set channel variable(s) or function value(s)
2384 \end{verbatim}
2385 \subsection{Description}
2386 \begin{verbatim}
2387   Set(name1=value1|name2=value2|..[|options])
2388 This function can be used to set the value of channel variables or dialplan
2389 functions. It will accept up to 24 name/value pairs. When setting variables,
2390 if the variable name is prefixed with _, the variable will be inherited into
2391 channels created from the current channel. If the variable name is prefixed
2392 with __, the variable will be inherited into channels created from the current
2393 channel and all children channels.
2394   Options:
2395     g - Set variable globally instead of on the channel
2396         (applies only to variables, not functions)
2397
2398 \end{verbatim}
2399
2400
2401 \section{SetAMAFlags}
2402 \subsection{Synopsis}
2403 \begin{verbatim}
2404 Set the AMA Flags
2405 \end{verbatim}
2406 \subsection{Description}
2407 \begin{verbatim}
2408   SetAMAFlags([flag]): This application will set the channel's AMA Flags for
2409   billing purposes.
2410
2411 \end{verbatim}
2412
2413
2414 \section{SetCallerPres}
2415 \subsection{Synopsis}
2416 \begin{verbatim}
2417 Set CallerID Presentation
2418 \end{verbatim}
2419 \subsection{Description}
2420 \begin{verbatim}
2421   SetCallerPres(presentation): Set Caller*ID presentation on a call.
2422   Valid presentations are:
2423
2424       allowed_not_screened    : Presentation Allowed, Not Screened
2425       allowed_passed_screen   : Presentation Allowed, Passed Screen
2426       allowed_failed_screen   : Presentation Allowed, Failed Screen
2427       allowed                 : Presentation Allowed, Network Number
2428       prohib_not_screened     : Presentation Prohibited, Not Screened
2429       prohib_passed_screen    : Presentation Prohibited, Passed Screen
2430       prohib_failed_screen    : Presentation Prohibited, Failed Screen
2431       prohib                  : Presentation Prohibited, Network Number
2432       unavailable             : Number Unavailable
2433
2434
2435 \end{verbatim}
2436
2437
2438 \section{SetMusicOnHold}
2439 \subsection{Synopsis}
2440 \begin{verbatim}
2441 Set default Music On Hold class
2442 \end{verbatim}
2443 \subsection{Description}
2444 \begin{verbatim}
2445 SetMusicOnHold(class): Sets the default class for music on hold for a given channel.  When
2446 music on hold is activated, this class will be used to select which
2447 music is played.
2448
2449 \end{verbatim}
2450
2451
2452 \section{SIPAddHeader}
2453 \subsection{Synopsis}
2454 \begin{verbatim}
2455 Add a SIP header to the outbound call
2456 \end{verbatim}
2457 \subsection{Description}
2458 \begin{verbatim}
2459   SIPAddHeader(Header: Content)
2460 Adds a header to a SIP call placed with DIAL.
2461 Remember to user the X-header if you are adding non-standard SIP
2462 headers, like "X-Asterisk-Accountcode:". Use this with care.
2463 Adding the wrong headers may jeopardize the SIP dialog.
2464 Always returns 0
2465
2466 \end{verbatim}
2467
2468
2469 \section{SIPDtmfMode}
2470 \subsection{Synopsis}
2471 \begin{verbatim}
2472 Change the dtmfmode for a SIP call
2473 \end{verbatim}
2474 \subsection{Description}
2475 \begin{verbatim}
2476 SIPDtmfMode(inband|info|rfc2833): Changes the dtmfmode for a SIP call
2477
2478 \end{verbatim}
2479
2480
2481 \section{SLAStation}
2482 \subsection{Synopsis}
2483 \begin{verbatim}
2484 Shared Line Appearance Station
2485 \end{verbatim}
2486 \subsection{Description}
2487 \begin{verbatim}
2488   SLAStation():
2489
2490 \end{verbatim}
2491
2492
2493 \section{SLATrunk}
2494 \subsection{Synopsis}
2495 \begin{verbatim}
2496 Shared Line Appearance Trunk
2497 \end{verbatim}
2498 \subsection{Description}
2499 \begin{verbatim}
2500   SLATrunk():
2501
2502 \end{verbatim}
2503
2504
2505 \section{SMS}
2506 \subsection{Synopsis}
2507 \begin{verbatim}
2508 Communicates with SMS service centres and SMS capable analogue phones
2509 \end{verbatim}
2510 \subsection{Description}
2511 \begin{verbatim}
2512   SMS(name|[a][s][t][p(d)][r][o]|addr|body):
2513 SMS handles exchange of SMS data with a call to/from SMS capable
2514 phone or SMS PSTN service center. Can send and/or receive SMS messages.
2515 Works to ETSI ES 201 912 compatible with BT SMS PSTN service in UK
2516 and Telecom Italia in Italy.
2517 Typical usage is to use to handle called from the SMS service centre CLI,
2518 or to set up a call using 'outgoing' or manager interface to connect
2519 service centre to SMS()
2520 name is the name of the queue used in /var/spool/asterisk/sms
2521 Arguments:
2522  a: answer, i.e. send initial FSK packet.
2523  s: act as service centre talking to a phone.
2524  t: use protocol 2 (default used is protocol 1).
2525  p(N): set the initial delay to N ms (default is 300).
2526 addr and body are a deprecated format to send messages out.
2527  s: set the Status Report Request (SRR) bit.
2528  o: the body should be coded as octets not 7-bit symbols.
2529 Messages are processed as per text file message queues.
2530 smsq (a separate software) is a command to generate message
2531 queues and send messages.
2532 NOTE: the protocol has tight delay bounds. Please use short frames
2533 and disable/keep short the jitter buffer on the ATA to make sure that
2534 respones (ACK etc.) are received in time.
2535
2536 \end{verbatim}
2537
2538
2539 \section{SoftHangup}
2540 \subsection{Synopsis}
2541 \begin{verbatim}
2542 Soft Hangup Application
2543 \end{verbatim}
2544 \subsection{Description}
2545 \begin{verbatim}
2546   SoftHangup(Technology/resource|options)
2547 Hangs up the requested channel.  If there are no channels to hangup,
2548 the application will report it.
2549 - 'options' may contain the following letter:
2550      'a' : hang up all channels on a specified device instead of a single resource
2551
2552 \end{verbatim}
2553
2554
2555 \section{SpeechActivateGrammar}
2556 \subsection{Synopsis}
2557 \begin{verbatim}
2558 Activate a Grammar
2559 \end{verbatim}
2560 \subsection{Description}
2561 \begin{verbatim}
2562 SpeechActivateGrammar(Grammar Name)
2563 This activates the specified grammar to be recognized by the engine. A grammar tells the speech recognition engine what to recognize, 
2564 and how to portray it back to you in the dialplan. The grammar name is the only argument to this application.
2565
2566 \end{verbatim}
2567
2568
2569 \section{SpeechBackground}
2570 \subsection{Synopsis}
2571 \begin{verbatim}
2572 Play a sound file and wait for speech to be recognized
2573 \end{verbatim}
2574 \subsection{Description}
2575 \begin{verbatim}
2576 SpeechBackground(Sound File|Timeout)
2577 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.
2578 Once they stop talking the processing sound is played to indicate the speech recognition engine is working.
2579 Once results are available the application returns and results (score and text) are available using dialplan functions.
2580 The first text and score are ${SPEECH_TEXT(0)} AND ${SPEECH_SCORE(0)} while the second are ${SPEECH_TEXT(1)} and ${SPEECH_SCORE(1)}.
2581 The first argument is the sound file and the second is the timeout integer in seconds. Note the timeout will only start once the sound file has stopped playing.
2582
2583 \end{verbatim}
2584
2585
2586 \section{SpeechCreate}
2587 \subsection{Synopsis}
2588 \begin{verbatim}
2589 Create a Speech Structure
2590 \end{verbatim}
2591 \subsection{Description}
2592 \begin{verbatim}
2593 SpeechCreate(engine name)
2594 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.
2595 It takes the engine name to use as the argument, if not specified the default engine will be used.
2596
2597 \end{verbatim}
2598
2599
2600 \section{SpeechDeactivateGrammar}
2601 \subsection{Synopsis}
2602 \begin{verbatim}
2603 Deactivate a Grammar
2604 \end{verbatim}
2605 \subsection{Description}
2606 \begin{verbatim}
2607 SpeechDeactivateGrammar(Grammar Name)
2608 This deactivates the specified grammar so that it is no longer recognized. The only argument is the grammar name to deactivate.
2609
2610 \end{verbatim}
2611
2612
2613 \section{SpeechDestroy}
2614 \subsection{Synopsis}
2615 \begin{verbatim}
2616 End speech recognition
2617 \end{verbatim}
2618 \subsection{Description}
2619 \begin{verbatim}
2620 SpeechDestroy()
2621 This destroys the information used by all the other speech recognition applications.
2622 If you call this application but end up wanting to recognize more speech, you must call SpeechCreate
2623 again before calling any other application. It takes no arguments.
2624
2625 \end{verbatim}
2626
2627
2628 \section{SpeechLoadGrammar}
2629 \subsection{Synopsis}
2630 \begin{verbatim}
2631 Load a Grammar
2632 \end{verbatim}
2633 \subsection{Description}
2634 \begin{verbatim}
2635 SpeechLoadGrammar(Grammar Name|Path)
2636 Load a grammar only on the channel, not globally.
2637 It takes the grammar name as first argument and path as second.
2638
2639 \end{verbatim}
2640
2641
2642 \section{SpeechProcessingSound}
2643 \subsection{Synopsis}
2644 \begin{verbatim}
2645 Change background processing sound
2646 \end{verbatim}
2647 \subsection{Description}
2648 \begin{verbatim}
2649 SpeechProcessingSound(Sound File)
2650 This changes the processing sound that SpeechBackground plays back when the speech recognition engine is processing and working to get results.
2651 It takes the sound file as the only argument.
2652
2653 \end{verbatim}
2654
2655
2656 \section{SpeechStart}
2657 \subsection{Synopsis}
2658 \begin{verbatim}
2659 Start recognizing voice in the audio stream
2660 \end{verbatim}
2661 \subsection{Description}
2662 \begin{verbatim}
2663 SpeechStart()
2664 Tell the speech recognition engine that it should start trying to get results from audio being fed to it. This has no arguments.
2665
2666 \end{verbatim}
2667
2668
2669 \section{SpeechUnloadGrammar}
2670 \subsection{Synopsis}
2671 \begin{verbatim}
2672 Unload a Grammar
2673 \end{verbatim}
2674 \subsection{Description}
2675 \begin{verbatim}
2676 SpeechUnloadGrammar(Grammar Name)
2677 Unload a grammar. It takes the grammar name as the only argument.
2678
2679 \end{verbatim}
2680
2681
2682 \section{StackPop}
2683 \subsection{Synopsis}
2684 \begin{verbatim}
2685 Remove one address from gosub stack
2686 \end{verbatim}
2687 \subsection{Description}
2688 \begin{verbatim}
2689 StackPop()
2690   Removes last label on the stack, discarding it.
2691
2692 \end{verbatim}
2693
2694
2695 \section{StartMusicOnHold}
2696 \subsection{Synopsis}
2697 \begin{verbatim}
2698 Play Music On Hold
2699 \end{verbatim}
2700 \subsection{Description}
2701 \begin{verbatim}
2702 StartMusicOnHold(class): Starts playing music on hold, uses default music class for channel.
2703 Starts playing music specified by class.  If omitted, the default
2704 music source for the channel will be used.  Always returns 0.
2705
2706 \end{verbatim}
2707
2708
2709 \section{StopMixMonitor}
2710 \subsection{Synopsis}
2711 \begin{verbatim}
2712 Stop recording a call through MixMonitor
2713 \end{verbatim}
2714 \subsection{Description}
2715 \begin{verbatim}
2716   StopMixMonitor()
2717
2718 Stops the audio recording that was started with a call to MixMonitor()
2719 on the current channel.
2720
2721 \end{verbatim}
2722
2723
2724 \section{StopMonitor}
2725 \subsection{Synopsis}
2726 \begin{verbatim}
2727 Stop monitoring a channel
2728 \end{verbatim}
2729 \subsection{Description}
2730 \begin{verbatim}
2731 StopMonitor
2732 Stops monitoring a channel. Has no effect if the channel is not monitored
2733
2734 \end{verbatim}
2735
2736
2737 \section{StopMusicOnHold}
2738 \subsection{Synopsis}
2739 \begin{verbatim}
2740 Stop Playing Music On Hold
2741 \end{verbatim}
2742 \subsection{Description}
2743 \begin{verbatim}
2744 StopMusicOnHold: Stops playing music on hold.
2745
2746 \end{verbatim}
2747
2748
2749 \section{StopPlayTones}
2750 \subsection{Synopsis}
2751 \begin{verbatim}
2752 Stop playing a tone list
2753 \end{verbatim}
2754 \subsection{Description}
2755 \begin{verbatim}
2756 Stop playing a tone list
2757 \end{verbatim}
2758
2759
2760 \section{System}
2761 \subsection{Synopsis}
2762 \begin{verbatim}
2763 Execute a system command
2764 \end{verbatim}
2765 \subsection{Description}
2766 \begin{verbatim}
2767   System(command): Executes a command  by  using  system(). If the command
2768 fails, the console should report a fallthrough. 
2769 Result of execution is returned in the SYSTEMSTATUS channel variable:
2770    FAILURE      Could not execute the specified command
2771    SUCCESS      Specified command successfully executed
2772
2773 Old behaviour:
2774 If the command itself executes but is in error, and if there exists
2775 a priority n + 101, where 'n' is the priority of the current instance,
2776 then  the  channel  will  be  setup to continue at that priority level.
2777 Note that this jump functionality has been deprecated and will only occur
2778 if the global priority jumping option is enabled in extensions.conf.
2779
2780 \end{verbatim}
2781
2782
2783 \section{TestClient}
2784 \subsection{Synopsis}
2785 \begin{verbatim}
2786 Execute Interface Test Client
2787 \end{verbatim}
2788 \subsection{Description}
2789 \begin{verbatim}
2790 TestClient(testid): Executes test client with given testid.
2791 Results stored in /var/log/asterisk/testreports/<testid>-client.txt
2792 \end{verbatim}
2793
2794
2795 \section{TestServer}
2796 \subsection{Synopsis}
2797 \begin{verbatim}
2798 Execute Interface Test Server
2799 \end{verbatim}
2800 \subsection{Description}
2801 \begin{verbatim}
2802 TestServer(): Perform test server function and write call report.
2803 Results stored in /var/log/asterisk/testreports/<testid>-server.txt
2804 \end{verbatim}
2805
2806
2807 \section{Transfer}
2808 \subsection{Synopsis}
2809 \begin{verbatim}
2810 Transfer caller to remote extension
2811 \end{verbatim}
2812 \subsection{Description}
2813 \begin{verbatim}
2814   Transfer([Tech/]dest[|options]):  Requests the remote caller be transferred
2815 to a given destination. If TECH (SIP, IAX2, LOCAL etc) is used, only
2816 an incoming call with the same channel technology will be transfered.
2817 Note that for SIP, if you transfer before call is setup, a 302 redirect
2818 SIP message will be returned to the caller.
2819
2820 The result of the application will be reported in the TRANSFERSTATUS
2821 channel variable:
2822        SUCCESS      Transfer succeeded
2823        FAILURE      Transfer failed
2824        UNSUPPORTED  Transfer unsupported by channel driver
2825 The option string many contain the following character:
2826 'j' -- jump to n+101 priority if the channel transfer attempt
2827        fails
2828
2829 \end{verbatim}
2830
2831
2832 \section{TryExec}
2833 \subsection{Synopsis}
2834 \begin{verbatim}
2835 Executes dialplan application, always returning
2836 \end{verbatim}
2837 \subsection{Description}
2838 \begin{verbatim}
2839 Usage: TryExec(appname(arguments))
2840   Allows an arbitrary application to be invoked even when not
2841 hardcoded into the dialplan. To invoke external applications
2842 see the application System.  Always returns to the dialplan.
2843 The channel variable TRYSTATUS will be set to:
2844     SUCCESS   if the application returned zero
2845     FAILED    if the application returned non-zero
2846     NOAPP     if the application was not found or was not specified
2847
2848 \end{verbatim}
2849
2850
2851 \section{TrySystem}
2852 \subsection{Synopsis}
2853 \begin{verbatim}
2854 Try executing a system command
2855 \end{verbatim}
2856 \subsection{Description}
2857 \begin{verbatim}
2858   TrySystem(command): Executes a command  by  using  system().
2859 on any situation.
2860 Result of execution is returned in the SYSTEMSTATUS channel variable:
2861    FAILURE      Could not execute the specified command
2862    SUCCESS      Specified command successfully executed
2863    APPERROR     Specified command successfully executed, but returned error code
2864
2865 Old behaviour:
2866 If  the command itself executes but is in error, and if
2867 there exists a priority n + 101, where 'n' is the priority of the current
2868 instance, then  the  channel  will  be  setup  to continue at that
2869 priority level.  Otherwise, System will terminate.
2870
2871 \end{verbatim}
2872
2873
2874 \section{UnpauseMonitor}
2875 \subsection{Synopsis}
2876 \begin{verbatim}
2877 Unpause monitoring of a channel
2878 \end{verbatim}
2879 \subsection{Description}
2880 \begin{verbatim}
2881 UnpauseMonitor
2882 Unpauses monitoring of a channel on which monitoring had
2883 previously been paused with PauseMonitor.
2884
2885 \end{verbatim}
2886
2887
2888 \section{UnpauseQueueMember}
2889 \subsection{Synopsis}
2890 \begin{verbatim}
2891 Unpauses a queue member
2892 \end{verbatim}
2893 \subsection{Description}
2894 \begin{verbatim}
2895    UnpauseQueueMember([queuename]|interface[|options]):
2896 Unpauses (resumes calls to) a queue member.
2897 This is the counterpart to PauseQueueMember and operates exactly the
2898 same way, except it unpauses instead of pausing the given interface.
2899 The option string may contain zero or more of the following characters:
2900        'j' -- jump to +101 priority when appropriate.
2901   This application sets the following channel variable upon completion:
2902      UPQMSTATUS       The status of the attempt to unpause a queue 
2903                       member as a text string, one of
2904             UNPAUSED | NOTFOUND
2905 Example: UnpauseQueueMember(|SIP/3000)
2906
2907 \end{verbatim}
2908
2909
2910 \section{UserEvent}
2911 \subsection{Synopsis}
2912 \begin{verbatim}
2913 Send an arbitrary event to the manager interface
2914 \end{verbatim}
2915 \subsection{Description}
2916 \begin{verbatim}
2917   UserEvent(eventname[|body]): Sends an arbitrary event to the manager
2918 interface, with an optional body representing additional arguments.  The
2919 body may be specified as a | delimeted list of headers. Each additional
2920 argument will be placed on a new line in the event. The format of the
2921 event will be:
2922     Event: UserEvent
2923     UserEvent: <specified event name>
2924     [body]
2925 If no body is specified, only Event and UserEvent headers will be present.
2926
2927 \end{verbatim}
2928
2929
2930 \section{Verbose}
2931 \subsection{Synopsis}
2932 \begin{verbatim}
2933 Send arbitrary text to verbose output
2934 \end{verbatim}
2935 \subsection{Description}
2936 \begin{verbatim}
2937 Verbose([<level>|]<message>)
2938   level must be an integer value.  If not specified, defaults to 0.
2939
2940 \end{verbatim}
2941
2942
2943 \section{VMAuthenticate}
2944 \subsection{Synopsis}
2945 \begin{verbatim}
2946 Authenticate with Voicemail passwords
2947 \end{verbatim}
2948 \subsection{Description}
2949 \begin{verbatim}
2950   VMAuthenticate([mailbox][@context][|options]): This application behaves the
2951 same way as the Authenticate application, but the passwords are taken from
2952 voicemail.conf.
2953   If the mailbox is specified, only that mailbox's password will be considered
2954 valid. If the mailbox is not specified, the channel variable AUTH_MAILBOX will
2955 be set with the authenticated mailbox.
2956
2957   Options:
2958     s - Skip playing the initial prompts.
2959
2960 \end{verbatim}
2961
2962
2963 \section{VoiceMail}
2964 \subsection{Synopsis}
2965 \begin{verbatim}
2966 Leave a Voicemail message
2967 \end{verbatim}
2968 \subsection{Description}
2969 \begin{verbatim}
2970   VoiceMail(mailbox[@context][&mailbox[@context]][...][|options]): This
2971 application allows the calling party to leave a message for the specified
2972 list of mailboxes. When multiple mailboxes are specified, the greeting will
2973 be taken from the first mailbox specified. Dialplan execution will stop if the
2974 specified mailbox does not exist.
2975   The Voicemail application will exit if any of the following DTMF digits are
2976 received:
2977     0 - Jump to the 'o' extension in the current dialplan context.
2978     * - Jump to the 'a' extension in the current dialplan context.
2979   This application will set the following channel variable upon completion:
2980     VMSTATUS - This indicates the status of the execution of the VoiceMail
2981                application. The possible values are:
2982                SUCCESS | USEREXIT | FAILED
2983
2984   Options:
2985     b    - Play the 'busy' greeting to the calling party.
2986     g(#) - Use the specified amount of gain when recording the voicemail
2987            message. The units are whole-number decibels (dB).
2988     s    - Skip the playback of instructions for leaving a message to the
2989            calling party.
2990     u    - Play the 'unavailable greeting.
2991     j    - Jump to priority n+101 if the mailbox is not found or some other
2992            error occurs.
2993
2994 \end{verbatim}
2995
2996
2997 \section{VoiceMailMain}
2998 \subsection{Synopsis}
2999 \begin{verbatim}
3000 Check Voicemail messages
3001 \end{verbatim}
3002 \subsection{Description}
3003 \begin{verbatim}
3004   VoiceMailMain([mailbox][@context][|options]): This application allows the
3005 calling party to check voicemail messages. A specific mailbox, and optional
3006 corresponding context, may be specified. If a mailbox is not provided, the
3007 calling party will be prompted to enter one. If a context is not specified,
3008 the 'default' context will be used.
3009
3010   Options:
3011     p    - Consider the mailbox parameter as a prefix to the mailbox that
3012            is entered by the caller.
3013     g(#) - Use the specified amount of gain when recording a voicemail
3014            message. The units are whole-number decibels (dB).
3015     s    - Skip checking the passcode for the mailbox.
3016     a(#) - Skip folder prompt and go directly to folder specified.
3017            Defaults to INBOX
3018
3019 \end{verbatim}
3020
3021
3022 \section{Wait}
3023 \subsection{Synopsis}
3024 \begin{verbatim}
3025 Waits for some time
3026 \end{verbatim}
3027 \subsection{Description}
3028 \begin{verbatim}
3029   Wait(seconds): This application waits for a specified number of seconds.
3030 Then, dialplan execution will continue at the next priority.
3031   Note that the seconds can be passed with fractions of a second. For example,
3032 '1.5' will ask the application to wait for 1.5 seconds.
3033
3034 \end{verbatim}
3035
3036
3037 \section{WaitExten}
3038 \subsection{Synopsis}
3039 \begin{verbatim}
3040 Waits for an extension to be entered
3041 \end{verbatim}
3042 \subsection{Description}
3043 \begin{verbatim}
3044   WaitExten([seconds][|options]): This application waits for the user to enter
3045 a new extension for a specified number of seconds.
3046   Note that the seconds can be passed with fractions of a second. For example,
3047 '1.5' will ask the application to wait for 1.5 seconds.
3048   Options:
3049     m[(x)] - Provide music on hold to the caller while waiting for an extension.
3050                Optionally, specify the class for music on hold within parenthesis.
3051
3052 \end{verbatim}
3053
3054
3055 \section{WaitForRing}
3056 \subsection{Synopsis}
3057 \begin{verbatim}
3058 Wait for Ring Application
3059 \end{verbatim}
3060 \subsection{Description}
3061 \begin{verbatim}
3062   WaitForRing(timeout)
3063 Returns 0 after waiting at least timeout seconds. and
3064 only after the next ring has completed.  Returns 0 on
3065 success or -1 on hangup
3066
3067 \end{verbatim}
3068
3069
3070 \section{WaitForSilence}
3071 \subsection{Synopsis}
3072 \begin{verbatim}
3073 Waits for a specified amount of silence
3074 \end{verbatim}
3075 \subsection{Description}
3076 \begin{verbatim}
3077   WaitForSilence(silencerequired[|iterations][|timeout]) 
3078 Wait for Silence: Waits for up to 'silencerequired' 
3079 milliseconds of silence, 'iterations' times or once if omitted.
3080 An optional timeout specified the number of seconds to return
3081 after, even if we do not receive the specified amount of silence.
3082 Use 'timeout' with caution, as it may defeat the purpose of this
3083 application, which is to wait indefinitely until silence is detected
3084 on the line.  This is particularly useful for reverse-911-type
3085 call broadcast applications where you need to wait for an answering
3086 machine to complete its spiel before playing a message.
3087 The timeout parameter is specified only to avoid an infinite loop in
3088 cases where silence is never achieved.  Typically you will want to
3089 include two or more calls to WaitForSilence when dealing with an answering
3090 machine; first waiting for the spiel to finish, then waiting for the beep, etc.
3091
3092 Examples:
3093   - WaitForSilence(500|2) will wait for 1/2 second of silence, twice
3094   - WaitForSilence(1000) will wait for 1 second of silence, once
3095   - WaitForSilence(300|3|10) will wait for 300ms silence, 3 times,
3096      and returns after 10 sec, even if silence is not detected
3097
3098 Sets the channel variable WAITSTATUS with to one of these values:
3099 SILENCE - if exited with silence detected
3100 TIMEOUT - if exited without silence detected after timeout
3101
3102 \end{verbatim}
3103
3104
3105 \section{WaitMusicOnHold}
3106 \subsection{Synopsis}
3107 \begin{verbatim}
3108 Wait, playing Music On Hold
3109 \end{verbatim}
3110 \subsection{Description}
3111 \begin{verbatim}
3112 WaitMusicOnHold(delay): Plays hold music specified number of seconds.  Returns 0 when
3113 done, or -1 on hangup.  If no hold music is available, the delay will
3114 still occur with no sound.
3115
3116 \end{verbatim}
3117
3118
3119 \section{While}
3120 \subsection{Synopsis}
3121 \begin{verbatim}
3122 Start a while loop
3123 \end{verbatim}
3124 \subsection{Description}
3125 \begin{verbatim}
3126 Usage:  While(<expr>)
3127 Start a While Loop.  Execution will return to this point when
3128 EndWhile is called until expr is no longer true.
3129
3130 \end{verbatim}
3131
3132
3133 \section{Zapateller}
3134 \subsection{Synopsis}
3135 \begin{verbatim}
3136 Block telemarketers with SIT
3137 \end{verbatim}
3138 \subsection{Description}
3139 \begin{verbatim}
3140   Zapateller(options):  Generates special information tone to block
3141 telemarketers from calling you.  Options is a pipe-delimited list of
3142 options.  The following options are available:
3143 'answer' causes the line to be answered before playing the tone,
3144 'nocallerid' causes Zapateller to only play the tone if there
3145 is no callerid information available.  Options should be separated by |
3146 characters
3147
3148 \end{verbatim}
3149
3150
3151 \section{ZapBarge}
3152 \subsection{Synopsis}
3153 \begin{verbatim}
3154 Barge in (monitor) Zap channel
3155 \end{verbatim}
3156 \subsection{Description}
3157 \begin{verbatim}
3158   ZapBarge([channel]): Barges in on a specified zap
3159 channel or prompts if one is not specified.  Returns
3160 -1 when caller user hangs up and is independent of the
3161 state of the channel being monitored.
3162 \end{verbatim}
3163
3164
3165 \section{ZapRAS}
3166 \subsection{Synopsis}
3167 \begin{verbatim}
3168 Executes Zaptel ISDN RAS application
3169 \end{verbatim}
3170 \subsection{Description}
3171 \begin{verbatim}
3172   ZapRAS(args): Executes a RAS server using pppd on the given channel.
3173 The channel must be a clear channel (i.e. PRI source) and a Zaptel
3174 channel to be able to use this function (No modem emulation is included).
3175 Your pppd must be patched to be zaptel aware. Arguments should be
3176 separated by | characters.
3177
3178 \end{verbatim}
3179
3180
3181 \section{ZapScan}
3182 \subsection{Synopsis}
3183 \begin{verbatim}
3184 Scan Zap channels to monitor calls
3185 \end{verbatim}
3186 \subsection{Description}
3187 \begin{verbatim}
3188   ZapScan([group]) allows a call center manager to monitor Zap channels in
3189 a convenient way.  Use '#' to select the next channel and use '*' to exit
3190 Limit scanning to a channel GROUP by setting the option group argument.
3191
3192 \end{verbatim}
3193
3194