Table of Contents
Applications are the core functionality of the dialplan. Generally these all will operate on the channel, whereas functions, described in Appendix F, merely return values that can be used by applications. There are a few applications that still simply return values, but these will probably be deprecated in a future version and replaced with dialplan functions.
There are a few things to keep in mind about applications. First, when they exit, they will either terminate normally or abnormally. Abnormal termination almost always occurs when an application detects that the channel has hung up (or if it doesn’t, the dialplan will detect that shortly thereafter). An application may also exit abnormally when it wishes to indicate to the dialplan that some condition has not been satisfied and that it should force a hangup. In all other cases, an application will exit normally, which indicates that processing should continue at the next priority in the dialplan.
In many cases, if you wish to override the application’s wish to cause a hangup, you may wrap the application in a TryExec().
In many places throughout this reference, you will see what’s
described as a label
. This is shorthand for
describing a location in the dialplan, whether it is simply a
priority
; an extension
and a priority
; or a
context
, an extension
,
and a priority
. Note that if a text
label
is defined for a particular priority, the
priority
may be replaced with that
text label
in any of those cases. See the GotoIf() application for more information and an
example.
You will find many of the examples in this appendix to contain numbered priorities, which is not the preferred method of writing dialplans. We prefer the use of the 'n' priority for all priority numbers except 1 (which is required), but we have decided to utilize them in order to make some of the examples more clear.