asterisk/extensions.conf

Fri, 15 Oct 2010 19:06:09 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 15 Oct 2010 19:06:09 +0200
changeset 263
f4a0b439d0fb
permissions
-rw-r--r--

Correct shared library and plugin link logic, as well as informal text.
Update file server URL, update build resource estimations, correct RPATH
logic, allow for qmake(1) static to shared library changes via CONFIG
argument, correct documentation broken title and index links, correct
shared library install path, install only one set of (correct) plugins,
install the designer shared library (as required by QtCreator), announce
features related to shared linking using qmake(1), and correclty
substitute hard coded paths in prl and la library files.

     1 ; extensions.conf - the Asterisk dial plan
     2 ;
     3 ; Static extension configuration file, used by
     4 ; the pbx_config module. This is where you configure all your 
     5 ; inbound and outbound calls in Asterisk. 
     6 ; 
     7 ; This configuration file is reloaded 
     8 ; - With the "dialplan reload" command in the CLI
     9 ; - With the "reload" command (that reloads everything) in the CLI
    11 ;
    12 ; The "General" category is for certain variables.  
    13 ;
    14 ;[general]
    15 ;
    16 ; If static is set to no, or omitted, then the pbx_config will rewrite
    17 ; this file when extensions are modified.  Remember that all comments
    18 ; made in the file will be lost when that happens. 
    19 ;
    20 ; XXX Not yet implemented XXX
    21 ;
    22 ;static=yes
    23 ;
    24 ; if static=yes and writeprotect=no, you can save dialplan by
    25 ; CLI command "dialplan save" too
    26 ;
    27 ;writeprotect=no
    28 ;
    29 ; If autofallthrough is set, then if an extension runs out of
    30 ; things to do, it will terminate the call with BUSY, CONGESTION
    31 ; or HANGUP depending on Asterisk's best guess. This is the default.
    32 ;
    33 ; If autofallthrough is not set, then if an extension runs out of 
    34 ; things to do, Asterisk will wait for a new extension to be dialed 
    35 ; (this is the original behavior of Asterisk 1.0 and earlier).
    36 ;
    37 ;autofallthrough=no
    38 ;
    39 ; If clearglobalvars is set, global variables will be cleared 
    40 ; and reparsed on an extensions reload, or Asterisk reload.
    41 ;
    42 ; If clearglobalvars is not set, then global variables will persist
    43 ; through reloads, and even if deleted from the extensions.conf or
    44 ; one of its included files, will remain set to the previous value.
    45 ;
    46 ; NOTE: A complication sets in, if you put your global variables into
    47 ; the AEL file, instead of the extensions.conf file. With clearglobalvars
    48 ; set, a "reload" will often leave the globals vars cleared, because it
    49 ; is not unusual to have extensions.conf (which will have no globals)
    50 ; load after the extensions.ael file (where the global vars are stored).
    51 ; So, with "reload" in this particular situation, first the AEL file will
    52 ; clear and then set all the global vars, then, later, when the extensions.conf
    53 ; file is loaded, the global vars are all cleared, and then not set, because
    54 ; they are not stored in the extensions.conf file.
    55 ;
    56 ;clearglobalvars=no
    57 ;
    58 ; If priorityjumping is set to 'yes', then applications that support
    59 ; 'jumping' to a different priority based on the result of their operations
    60 ; will do so (this is backwards compatible behavior with pre-1.2 releases
    61 ; of Asterisk). Individual applications can also be requested to do this
    62 ; by passing a 'j' option in their arguments.
    63 ;
    64 ;priorityjumping=yes
    65 ;
    66 ; User context is where entries from users.conf are registered.  The
    67 ; default value is 'default'
    68 ;
    69 ;userscontext=default
    70 ;
    71 ; You can include other config files, use the #include command
    72 ; (without the ';'). Note that this is different from the "include" command
    73 ; that includes contexts within other contexts. The #include command works
    74 ; in all asterisk configuration files.
    75 ;#include "filename.conf"
    77 ; The "Globals" category contains global variables that can be referenced
    78 ; in the dialplan with the GLOBAL dialplan function:
    79 ; ${GLOBAL(VARIABLE)}
    80 ; ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid
    81 ; Unix/Linux environmental variables can be reached with the ENV dialplan
    82 ; function: ${ENV(VARIABLE)}
    83 ;
    84 ;[globals]
    85 ;CONSOLE=Console/dsp				; Console interface for demo
    86 ;CONSOLE=Zap/1
    87 ;CONSOLE=Phone/phone0
    88 ;IAXINFO=guest					; IAXtel username/password
    89 ;IAXINFO=myuser:mypass
    90 ;TRUNK=Zap/G2					; Trunk interface
    91 ;
    92 ; Note the 'G2' in the TRUNK variable above. It specifies which group (defined
    93 ; in zapata.conf) to dial, i.e. group 2, and how to choose a channel to use in
    94 ; the specified group. The four possible options are:
    95 ;
    96 ; g: select the lowest-numbered non-busy Zap channel
    97 ;    (aka. ascending sequential hunt group).
    98 ; G: select the highest-numbered non-busy Zap channel
    99 ;    (aka. descending sequential hunt group).
   100 ; r: use a round-robin search, starting at the next highest channel than last
   101 ;    time (aka. ascending rotary hunt group).
   102 ; R: use a round-robin search, starting at the next lowest channel than last
   103 ;    time (aka. descending rotary hunt group).
   104 ;
   105 ;TRUNKMSD=1					; MSD digits to strip (usually 1 or 0)
   106 ;TRUNK=IAX2/user:pass@provider
   108 ;
   109 ; Any category other than "General" and "Globals" represent 
   110 ; extension contexts, which are collections of extensions.  
   111 ;
   112 ; Extension names may be numbers, letters, or combinations
   113 ; thereof. If an extension name is prefixed by a '_'
   114 ; character, it is interpreted as a pattern rather than a
   115 ; literal.  In patterns, some characters have special meanings:
   116 ;
   117 ;   X - any digit from 0-9
   118 ;   Z - any digit from 1-9
   119 ;   N - any digit from 2-9
   120 ;   [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
   121 ;   . - wildcard, matches anything remaining (e.g. _9011. matches 
   122 ;	anything starting with 9011 excluding 9011 itself)
   123 ;   ! - wildcard, causes the matching process to complete as soon as
   124 ;       it can unambiguously determine that no other matches are possible
   125 ;
   126 ; For example the extension _NXXXXXX would match normal 7 digit dialings, 
   127 ; while _1NXXNXXXXXX would represent an area code plus phone number
   128 ; preceded by a one.
   129 ;
   130 ; Each step of an extension is ordered by priority, which must
   131 ; always start with 1 to be considered a valid extension.  The priority
   132 ; "next" or "n" means the previous priority plus one, regardless of whether
   133 ; the previous priority was associated with the current extension or not.
   134 ; The priority "same" or "s" means the same as the previously specified
   135 ; priority, again regardless of whether the previous entry was for the
   136 ; same extension.  Priorities may be immediately followed by a plus sign
   137 ; and another integer to add that amount (most useful with 's' or 'n').  
   138 ; Priorities may then also have an alias, or label, in 
   139 ; parenthesis after their name which can be used in goto situations
   140 ;
   141 ; Contexts contain several lines, one for each step of each
   142 ; extension, which can take one of two forms as listed below,
   143 ; with the first form being preferred. 
   144 ;
   145 ;[context]
   146 ;exten => someexten,{priority|label{+|-}offset}[(alias)],application(arg1,arg2,...)
   147 ;exten => someexten,{priority|label{+|-}offset}[(alias)],application,arg1|arg2...
   148 ;
   149 ; Included Contexts
   150 ;
   151 ; One may include another context in the current one as well, optionally with a
   152 ; date and time.  Included contexts are included in the order
   153 ; they are listed.
   154 ; The reason a context would include other contexts is for their 
   155 ; extensions.
   156 ; The algorithm to find an extension is recursive, and works in this
   157 ; fashion: 
   158 ;	 first, given a stack on which to store context references, 
   159 ;           push the context to find the extension onto the stack...
   160 ;    a) Try to find a matching extension in the context at the top of 
   161 ;       the stack, and, if found, begin executing the priorities
   162 ;       there in sequence.
   163 ;    b) If not found, Search the switches, if any declared, in
   164 ;       sequence.
   165 ;    c) If still not found, for each include, push that context onto 
   166 ;       the top of the context stack, and recurse to a).
   167 ;    d) If still not found, pop the entry from the top of the stack; 
   168 ;       if the stack is empty, the search has failed. If it's not, 
   169 ;       continue with the next context in c).
   170 ; This is a depth-first traversal, and stops with the first context 
   171 ; that provides a matching extension. As usual, if more than one
   172 ; pattern in a context will match, the 'best' match will win.
   173 ; Please note that that extensions found in an included context are
   174 ; treated as if they were in the context from which the search began.
   175 ; The PBX's notion of the "current context" is not changed.
   176 ; Please note that in a context, it does not matter where an include
   177 ; directive occurs. Whether at the top, or near the bottom, the effect 
   178 ; will be the same. The only thing that matters is that if there is 
   179 ; more than one include directive, they will be searched for extensions 
   180 ; in order, first to last.
   181 ; Also please note that pattern matches (like _9XX) are not treated
   182 ; any differently than exact matches (like 987). Also note that the
   183 ; order of extensions in a context have no affect on the outcome.
   184 ;
   185 ; Timing list for includes is 
   186 ;
   187 ;   <time range>|<days of week>|<days of month>|<months>
   188 ;
   189 ; Note that ranges may be specified to wrap around the ends.  Also, minutes are
   190 ; fine-grained only down to the closest even minute.
   191 ;
   192 ;include => daytime|9:00-17:00|mon-fri|*|*
   193 ;include => weekend|*|sat-sun|*|*
   194 ;include => weeknights|17:02-8:58|mon-fri|*|*
   195 ;
   196 ; ignorepat can be used to instruct drivers to not cancel dialtone upon
   197 ; receipt of a particular pattern.  The most commonly used example is
   198 ; of course '9' like this:
   199 ;
   200 ;ignorepat => 9
   201 ;
   202 ; so that dialtone remains even after dialing a 9.
   203 ;
   205 ;
   206 ; Sample entries for extensions.conf
   207 ;
   208 ;
   209 ;[dundi-e164-canonical]
   210 ;
   211 ; List canonical entries here
   212 ;
   213 ;exten => 12564286000,1,Macro(stdexten,6000,IAX2/foo)
   214 ;exten => _125642860XX,1,Dial(IAX2/otherbox/${EXTEN:7})
   216 ;[dundi-e164-customers]
   217 ;
   218 ; If you are an ITSP or Reseller, list your customers here.
   219 ;
   220 ;exten => _12564286000,1,Dial(SIP/customer1)
   221 ;exten => _12564286001,1,Dial(IAX2/customer2)
   223 ;[dundi-e164-via-pstn]
   224 ;
   225 ; If you are freely delivering calls to the PSTN, list them here
   226 ;
   227 ;exten => _1256428XXXX,1,Dial(Zap/G2/${EXTEN:7}) ; Expose all of 256-428 
   228 ;exten => _1256325XXXX,1,Dial(Zap/G2/${EXTEN:7}) ; Ditto for 256-325
   230 ;[dundi-e164-local]
   231 ;
   232 ; Context to put your dundi IAX2 or SIP user in for
   233 ; full access
   234 ;
   235 ;include => dundi-e164-canonical
   236 ;include => dundi-e164-customers
   237 ;include => dundi-e164-via-pstn
   239 ;[dundi-e164-switch]
   240 ;
   241 ; Just a wrapper for the switch
   242 ;
   243 ;switch => DUNDi/e164
   245 ;[dundi-e164-lookup]
   246 ;
   247 ; Locally to lookup, try looking for a local E.164 solution
   248 ; then try DUNDi if we don't have one.
   249 ;
   250 ;include => dundi-e164-local
   251 ;include => dundi-e164-switch
   252 ;
   253 ; DUNDi can also be implemented as a Macro instead of using 
   254 ; the Local channel driver. 
   255 ;
   256 ;[macro-dundi-e164]
   257 ;
   258 ; ARG1 is the extension to Dial
   259 ;
   260 ; Extension "s" is not a wildcard extension that matches "anything".
   261 ; In macros, it is the start extension. In most other cases, 
   262 ; you have to goto "s" to execute that extension.
   263 ;
   264 ; For wildcard matches, see above - all pattern matches start with
   265 ; an underscore.
   266 ;exten => s,1,Goto(${ARG1},1)
   267 ;include => dundi-e164-lookup
   269 ;
   270 ; Here are the entries you need to participate in the IAXTEL
   271 ; call routing system.  Most IAXTEL numbers begin with 1-700, but
   272 ; there are exceptions.  For more information, and to sign
   273 ; up, please go to www.gnophone.com or www.iaxtel.com
   274 ;
   275 ;[iaxtel700]
   276 ;exten => _91700XXXXXXX,1,Dial(IAX2/${GLOBAL(IAXINFO)}@iaxtel.com/${EXTEN:1}@iaxtel)
   278 ;
   279 ; The SWITCH statement permits a server to share the dialplan with
   280 ; another server. Use with care: Reciprocal switch statements are not
   281 ; allowed (e.g. both A -> B and B -> A), and the switched server needs
   282 ; to be on-line or else dialing can be severly delayed.
   283 ;
   284 ;[iaxprovider]
   285 ;switch => IAX2/user:[key]@myserver/mycontext
   287 ;[trunkint]
   288 ;
   289 ; International long distance through trunk
   290 ;
   291 ;exten => _9011.,1,Macro(dundi-e164,${EXTEN:4})
   292 ;exten => _9011.,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
   294 ;[trunkld]
   295 ;
   296 ; Long distance context accessed through trunk
   297 ;
   298 ;exten => _91NXXNXXXXXX,1,Macro(dundi-e164,${EXTEN:1})
   299 ;exten => _91NXXNXXXXXX,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
   301 ;[trunklocal]
   302 ;
   303 ; Local seven-digit dialing accessed through trunk interface
   304 ;
   305 ;exten => _9NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
   307 ;[trunktollfree]
   308 ;
   309 ; Long distance context accessed through trunk interface
   310 ;
   311 ;exten => _91800NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
   312 ;exten => _91888NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
   313 ;exten => _91877NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
   314 ;exten => _91866NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
   316 ;[international]
   317 ;
   318 ; Master context for international long distance
   319 ;
   320 ;ignorepat => 9
   321 ;include => longdistance
   322 ;include => trunkint
   324 ;[longdistance]
   325 ;
   326 ; Master context for long distance
   327 ;
   328 ;ignorepat => 9
   329 ;include => local
   330 ;include => trunkld
   332 ;[local]
   333 ;
   334 ; Master context for local, toll-free, and iaxtel calls only
   335 ;
   336 ;ignorepat => 9
   337 ;include => default
   338 ;include => trunklocal
   339 ;include => iaxtel700
   340 ;include => trunktollfree
   341 ;include => iaxprovider
   343 ;Include parkedcalls (or the context you define in features conf)
   344 ;to enable call parking.
   345 ;include => parkedcalls
   346 ;
   347 ; You can use an alternative switch type as well, to resolve
   348 ; extensions that are not known here, for example with remote 
   349 ; IAX switching you transparently get access to the remote
   350 ; Asterisk PBX
   351 ; 
   352 ; switch => IAX2/user:password@bigserver/local
   353 ;
   354 ; An "lswitch" is like a switch but is literal, in that
   355 ; variable substitution is not performed at load time
   356 ; but is passed to the switch directly (presumably to
   357 ; be substituted in the switch routine itself)
   358 ;
   359 ; lswitch => Loopback/12${EXTEN}@othercontext
   360 ;
   361 ; An "eswitch" is like a switch but the evaluation of
   362 ; variable substitution is performed at runtime before
   363 ; being passed to the switch routine.
   364 ;
   365 ; eswitch => IAX2/context@${CURSERVER}
   367 ;[macro-trunkdial]
   368 ;
   369 ; Standard trunk dial macro (hangs up on a dialstatus that should 
   370 ; terminate call)
   371 ;   ${ARG1} - What to dial
   372 ;
   373 ;exten => s,1,Dial(${ARG1})
   374 ;exten => s,n,Goto(s-${DIALSTATUS},1)
   375 ;exten => s-NOANSWER,1,Hangup
   376 ;exten => s-BUSY,1,Hangup
   377 ;exten => _s-.,1,NoOp
   379 ;[macro-stdexten];
   380 ;
   381 ; Standard extension macro:
   382 ;   ${ARG1} - Extension  (we could have used ${MACRO_EXTEN} here as well
   383 ;   ${ARG2} - Device(s) to ring
   384 ;
   385 ;exten => s,1,Dial(${ARG2},20)			; Ring the interface, 20 seconds maximum
   386 ;exten => s,2,Goto(s-${DIALSTATUS},1)		; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
   388 ;exten => s-NOANSWER,1,Voicemail(${ARG1},u)	; If unavailable, send to voicemail w/ unavail announce
   389 ;exten => s-NOANSWER,2,Goto(default,s,1)		; If they press #, return to start
   391 ;exten => s-BUSY,1,Voicemail(${ARG1},b)		; If busy, send to voicemail w/ busy announce
   392 ;exten => s-BUSY,2,Goto(default,s,1)		; If they press #, return to start
   394 ;exten => _s-.,1,Goto(s-NOANSWER,1)		; Treat anything else as no answer
   396 ;exten => a,1,VoicemailMain(${ARG1})		; If they press *, send the user into VoicemailMain
   398 ;[macro-stdPrivacyexten];
   399 ;
   400 ; Standard extension macro:
   401 ;   ${ARG1} - Extension  (we could have used ${MACRO_EXTEN} here as well
   402 ;   ${ARG2} - Device(s) to ring
   403 ;   ${ARG3} - Optional DONTCALL context name to jump to (assumes the s,1 extension-priority)
   404 ;   ${ARG4} - Optional TORTURE context name to jump to (assumes the s,1 extension-priority)`
   405 ;
   406 ;exten => s,1,Dial(${ARG2},20|p)			; Ring the interface, 20 seconds maximum, call screening 
   407 						; option (or use P for databased call screening)
   408 ;exten => s,2,Goto(s-${DIALSTATUS},1)		; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
   410 ;exten => s-NOANSWER,1,Voicemail(${ARG1},u)	; If unavailable, send to voicemail w/ unavail announce
   411 ;exten => s-NOANSWER,2,Goto(default,s,1)		; If they press #, return to start
   413 ;exten => s-BUSY,1,Voicemail(${ARG1},b)		; If busy, send to voicemail w/ busy announce
   414 ;exten => s-BUSY,2,Goto(default,s,1)		; If they press #, return to start
   416 ;exten => s-DONTCALL,1,Goto(${ARG3},s,1)		; Callee chose to send this call to a polite "Don't call again" script.
   418 ;exten => s-TORTURE,1,Goto(${ARG4},s,1)		; Callee chose to send this call to a telemarketer torture script.
   420 ;exten => _s-.,1,Goto(s-NOANSWER,1)		; Treat anything else as no answer
   422 ;exten => a,1,VoicemailMain(${ARG1})		; If they press *, send the user into VoicemailMain
   424 ;[macro-page];
   425 ;
   426 ; Paging macro:
   427 ;
   428 ;       Check to see if SIP device is in use and DO NOT PAGE if they are
   429 ;
   430 ;   ${ARG1} - Device to page
   432 ;exten => s,1,ChanIsAvail(${ARG1}|js)			; j is for Jump and s is for ANY call
   433 ;exten => s,n,GoToIf([${AVAILSTATUS} = "1"]?autoanswer:fail)
   434 ;exten => s,n(autoanswer),Set(_ALERT_INFO="RA")			; This is for the PolyComs
   435 ;exten => s,n,SIPAddHeader(Call-Info: Answer-After=0)	; This is for the Grandstream, Snoms, and Others
   436 ;exten => s,n,NoOp()					; Add others here and Post on the Wiki!!!!
   437 ;exten => s,n,Dial(${ARG1}||)
   438 ;exten => s,n(fail),Hangup
   441 ;[demo]
   442 ;
   443 ; We start with what to do when a call first comes in.
   444 ;
   445 ;exten => s,1,Wait(1)			; Wait a second, just for fun
   446 ;exten => s,n,Answer			; Answer the line
   447 ;exten => s,n,Set(TIMEOUT(digit)=5)	; Set Digit Timeout to 5 seconds
   448 ;exten => s,n,Set(TIMEOUT(response)=10)	; Set Response Timeout to 10 seconds
   449 ;exten => s,n(restart),BackGround(demo-congrats)	; Play a congratulatory message
   450 ;exten => s,n(instruct),BackGround(demo-instruct)	; Play some instructions
   451 ;exten => s,n,WaitExten			; Wait for an extension to be dialed.
   453 ;exten => 2,1,BackGround(demo-moreinfo)	; Give some more information.
   454 ;exten => 2,n,Goto(s,instruct)
   456 ;exten => 3,1,Set(LANGUAGE()=fr)		; Set language to french
   457 ;exten => 3,n,Goto(s,restart)		; Start with the congratulations
   459 ;exten => 1000,1,Goto(default,s,1)
   460 ;
   461 ; We also create an example user, 1234, who is on the console and has
   462 ; voicemail, etc.
   463 ;
   464 ;exten => 1234,1,Playback(transfer,skip)		; "Please hold while..." 
   465 					; (but skip if channel is not up)
   466 ;exten => 1234,n,Macro(stdexten,1234,${GLOBAL(CONSOLE)})
   468 ;exten => 1235,1,Voicemail(1234,u)		; Right to voicemail
   470 ;exten => 1236,1,Dial(Console/dsp)		; Ring forever
   471 ;exten => 1236,n,Voicemail(1234,b)		; Unless busy
   473 ;
   474 ; # for when they're done with the demo
   475 ;
   476 ;exten => #,1,Playback(demo-thanks)	; "Thanks for trying the demo"
   477 ;exten => #,n,Hangup			; Hang them up.
   479 ;
   480 ; A timeout and "invalid extension rule"
   481 ;
   482 ;exten => t,1,Goto(#,1)			; If they take too long, give up
   483 ;exten => i,1,Playback(invalid)		; "That's not valid, try again"
   485 ;
   486 ; Create an extension, 500, for dialing the
   487 ; Asterisk demo.
   488 ;
   489 ;exten => 500,1,Playback(demo-abouttotry); Let them know what's going on
   490 ;exten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default)	; Call the Asterisk demo
   491 ;exten => 500,n,Playback(demo-nogo)	; Couldn't connect to the demo site
   492 ;exten => 500,n,Goto(s,6)		; Return to the start over message.
   494 ;
   495 ; Create an extension, 600, for evaluating echo latency.
   496 ;
   497 ;exten => 600,1,Playback(demo-echotest)	; Let them know what's going on
   498 ;exten => 600,n,Echo			; Do the echo test
   499 ;exten => 600,n,Playback(demo-echodone)	; Let them know it's over
   500 ;exten => 600,n,Goto(s,6)		; Start over
   502 ;
   503 ;	You can use the Macro Page to intercom a individual user
   504 ;exten => 76245,1,Macro(page,SIP/Grandstream1)
   505 ; or if your peernames are the same as extensions
   506 ;exten => _7XXX,1,Macro(page,SIP/${EXTEN})
   507 ;
   508 ;
   509 ; System Wide Page at extension 7999
   510 ;
   511 ;exten => 7999,1,Set(TIMEOUT(absolute)=60)
   512 ;exten => 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n|d)
   514 ; Give voicemail at extension 8500
   515 ;
   516 ;exten => 8500,1,VoicemailMain
   517 ;exten => 8500,n,Goto(s,6)
   518 ;
   519 ; Here's what a phone entry would look like (IXJ for example)
   520 ;
   521 ;exten => 1265,1,Dial(Phone/phone0,15)
   522 ;exten => 1265,n,Goto(s,5)
   524 ;
   525 ;	The page context calls up the page macro that sets variables needed for auto-answer
   526 ;	It is in is own context to make calling it from the Page() application as simple as 
   527 ;	Local/{peername}@page
   528 ;
   529 ;[page]
   530 ;exten => _X.,1,Macro(page,SIP/${EXTEN})
   532 ;[mainmenu]
   533 ;
   534 ; Example "main menu" context with submenu
   535 ;
   536 ;exten => s,1,Answer
   537 ;exten => s,n,Background(thanks)		; "Thanks for calling press 1 for sales, 2 for support, ..."
   538 ;exten => s,n,WaitExten
   539 ;exten => 1,1,Goto(submenu,s,1)
   540 ;exten => 2,1,Hangup
   541 ;include => default
   542 ;
   543 ;[submenu]
   544 ;exten => s,1,Ringing					; Make them comfortable with 2 seconds of ringback
   545 ;exten => s,n,Wait,2
   546 ;exten => s,n,Background(submenuopts)	; "Thanks for calling the sales department.  Press 1 for steve, 2 for..."
   547 ;exten => s,n,WaitExten
   548 ;exten => 1,1,Goto(default,steve,1)
   549 ;exten => 2,1,Goto(default,mark,2)
   551 ;[default]
   552 ;
   553 ; By default we include the demo.  In a production system, you 
   554 ; probably don't want to have the demo there.
   555 ;
   556 ;include => demo
   558 ;
   559 ; An extension like the one below can be used for FWD, Nikotel, sipgate etc.
   560 ; Note that you must have a [sipprovider] section in sip.conf
   561 ;
   562 ;exten => _41X.,1,Dial(SIP/${EXTEN:2}@sipprovider,,r)
   564 ; Real extensions would go here. Generally you want real extensions to be
   565 ; 4 or 5 digits long (although there is no such requirement) and start with a
   566 ; single digit that is fairly large (like 6 or 7) so that you have plenty of
   567 ; room to overlap extensions and menu options without conflict.  You can alias
   568 ; them with names, too, and use global variables
   570 ;exten => 6245,hint,SIP/Grandstream1&SIP/Xlite1,Joe Schmoe ; Channel hints for presence
   571 ;exten => 6245,1,Dial(SIP/Grandstream1,20,rt)	; permit transfer
   572 ;exten => 6245,n(dial),Dial(${HINT},20,rtT)	; Use hint as listed
   573 ;exten => 6245,n,Voicemail(6245,u)		; Voicemail (unavailable)
   574 ;exten => 6245,s+1,Hangup			; s+1, same as n
   575 ;exten => 6245,dial+101,Voicemail(6245,b)	; Voicemail (busy)
   576 ;exten => 6361,1,Dial(IAX2/JaneDoe,,rm)		; ring without time limit
   577 ;exten => 6389,1,Dial(MGCP/aaln/1@192.168.0.14)
   578 ;exten => 6390,1,Dial(JINGLE/caller/callee) ; Dial via jingle using labels
   579 ;exten => 6391,1,Dial(JINGLE/asterisk@digium.com/mogorman@astjab.org) ;Dial via jingle using asterisk as the transport and calling mogorman.
   580 ;exten => 6394,1,Dial(Local/6275/n)		; this will dial ${MARK}
   582 ;exten => 6275,1,Macro(stdexten,6275,${MARK})	; assuming ${MARK} is something like Zap/2
   583 ;exten => mark,1,Goto(6275|1)			; alias mark to 6275
   584 ;exten => 6536,1,Macro(stdexten,6236,${WIL})	; Ditto for wil
   585 ;exten => wil,1,Goto(6236|1)
   587 ;If you want to subscribe to the status of a parking space, this is
   588 ;how you do it. Subscribe to extension 6600 in sip, and you will see
   589 ;the status of the first parking lot with this extensions' help
   590 ;exten => 6600,hint,park:701@parkedcalls
   591 ;exten => 6600,1,noop
   592 ;
   593 ; Some other handy things are an extension for checking voicemail via
   594 ; voicemailmain
   595 ;
   596 ;exten => 8500,1,VoicemailMain
   597 ;exten => 8500,n,Hangup
   598 ;
   599 ; Or a conference room (you'll need to edit meetme.conf to enable this room)
   600 ;
   601 ;exten => 8600,1,Meetme(1234)
   602 ;
   603 ; Or playing an announcement to the called party, as soon it answers
   604 ;
   605 ;exten = 8700,1,Dial(${MARK},30,A(/path/to/my/announcemsg))
   606 ;
   607 ; For more information on applications, just type "core show applications" at your
   608 ; friendly Asterisk CLI prompt.
   609 ;
   610 ; "core show application <command>" will show details of how you
   611 ; use that particular application in this file, the dial plan. 
   612 ; "core show functions" will list all dialplan functions
   613 ; "core show function <COMMAND>" will show you more information about
   614 ; one function. Remember that function names are UPPER CASE.

mercurial