1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/asterisk/extensions.conf Mon Apr 27 12:19:05 2009 +0200 1.3 @@ -0,0 +1,614 @@ 1.4 +; extensions.conf - the Asterisk dial plan 1.5 +; 1.6 +; Static extension configuration file, used by 1.7 +; the pbx_config module. This is where you configure all your 1.8 +; inbound and outbound calls in Asterisk. 1.9 +; 1.10 +; This configuration file is reloaded 1.11 +; - With the "dialplan reload" command in the CLI 1.12 +; - With the "reload" command (that reloads everything) in the CLI 1.13 + 1.14 +; 1.15 +; The "General" category is for certain variables. 1.16 +; 1.17 +;[general] 1.18 +; 1.19 +; If static is set to no, or omitted, then the pbx_config will rewrite 1.20 +; this file when extensions are modified. Remember that all comments 1.21 +; made in the file will be lost when that happens. 1.22 +; 1.23 +; XXX Not yet implemented XXX 1.24 +; 1.25 +;static=yes 1.26 +; 1.27 +; if static=yes and writeprotect=no, you can save dialplan by 1.28 +; CLI command "dialplan save" too 1.29 +; 1.30 +;writeprotect=no 1.31 +; 1.32 +; If autofallthrough is set, then if an extension runs out of 1.33 +; things to do, it will terminate the call with BUSY, CONGESTION 1.34 +; or HANGUP depending on Asterisk's best guess. This is the default. 1.35 +; 1.36 +; If autofallthrough is not set, then if an extension runs out of 1.37 +; things to do, Asterisk will wait for a new extension to be dialed 1.38 +; (this is the original behavior of Asterisk 1.0 and earlier). 1.39 +; 1.40 +;autofallthrough=no 1.41 +; 1.42 +; If clearglobalvars is set, global variables will be cleared 1.43 +; and reparsed on an extensions reload, or Asterisk reload. 1.44 +; 1.45 +; If clearglobalvars is not set, then global variables will persist 1.46 +; through reloads, and even if deleted from the extensions.conf or 1.47 +; one of its included files, will remain set to the previous value. 1.48 +; 1.49 +; NOTE: A complication sets in, if you put your global variables into 1.50 +; the AEL file, instead of the extensions.conf file. With clearglobalvars 1.51 +; set, a "reload" will often leave the globals vars cleared, because it 1.52 +; is not unusual to have extensions.conf (which will have no globals) 1.53 +; load after the extensions.ael file (where the global vars are stored). 1.54 +; So, with "reload" in this particular situation, first the AEL file will 1.55 +; clear and then set all the global vars, then, later, when the extensions.conf 1.56 +; file is loaded, the global vars are all cleared, and then not set, because 1.57 +; they are not stored in the extensions.conf file. 1.58 +; 1.59 +;clearglobalvars=no 1.60 +; 1.61 +; If priorityjumping is set to 'yes', then applications that support 1.62 +; 'jumping' to a different priority based on the result of their operations 1.63 +; will do so (this is backwards compatible behavior with pre-1.2 releases 1.64 +; of Asterisk). Individual applications can also be requested to do this 1.65 +; by passing a 'j' option in their arguments. 1.66 +; 1.67 +;priorityjumping=yes 1.68 +; 1.69 +; User context is where entries from users.conf are registered. The 1.70 +; default value is 'default' 1.71 +; 1.72 +;userscontext=default 1.73 +; 1.74 +; You can include other config files, use the #include command 1.75 +; (without the ';'). Note that this is different from the "include" command 1.76 +; that includes contexts within other contexts. The #include command works 1.77 +; in all asterisk configuration files. 1.78 +;#include "filename.conf" 1.79 + 1.80 +; The "Globals" category contains global variables that can be referenced 1.81 +; in the dialplan with the GLOBAL dialplan function: 1.82 +; ${GLOBAL(VARIABLE)} 1.83 +; ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid 1.84 +; Unix/Linux environmental variables can be reached with the ENV dialplan 1.85 +; function: ${ENV(VARIABLE)} 1.86 +; 1.87 +;[globals] 1.88 +;CONSOLE=Console/dsp ; Console interface for demo 1.89 +;CONSOLE=Zap/1 1.90 +;CONSOLE=Phone/phone0 1.91 +;IAXINFO=guest ; IAXtel username/password 1.92 +;IAXINFO=myuser:mypass 1.93 +;TRUNK=Zap/G2 ; Trunk interface 1.94 +; 1.95 +; Note the 'G2' in the TRUNK variable above. It specifies which group (defined 1.96 +; in zapata.conf) to dial, i.e. group 2, and how to choose a channel to use in 1.97 +; the specified group. The four possible options are: 1.98 +; 1.99 +; g: select the lowest-numbered non-busy Zap channel 1.100 +; (aka. ascending sequential hunt group). 1.101 +; G: select the highest-numbered non-busy Zap channel 1.102 +; (aka. descending sequential hunt group). 1.103 +; r: use a round-robin search, starting at the next highest channel than last 1.104 +; time (aka. ascending rotary hunt group). 1.105 +; R: use a round-robin search, starting at the next lowest channel than last 1.106 +; time (aka. descending rotary hunt group). 1.107 +; 1.108 +;TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0) 1.109 +;TRUNK=IAX2/user:pass@provider 1.110 + 1.111 +; 1.112 +; Any category other than "General" and "Globals" represent 1.113 +; extension contexts, which are collections of extensions. 1.114 +; 1.115 +; Extension names may be numbers, letters, or combinations 1.116 +; thereof. If an extension name is prefixed by a '_' 1.117 +; character, it is interpreted as a pattern rather than a 1.118 +; literal. In patterns, some characters have special meanings: 1.119 +; 1.120 +; X - any digit from 0-9 1.121 +; Z - any digit from 1-9 1.122 +; N - any digit from 2-9 1.123 +; [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9) 1.124 +; . - wildcard, matches anything remaining (e.g. _9011. matches 1.125 +; anything starting with 9011 excluding 9011 itself) 1.126 +; ! - wildcard, causes the matching process to complete as soon as 1.127 +; it can unambiguously determine that no other matches are possible 1.128 +; 1.129 +; For example the extension _NXXXXXX would match normal 7 digit dialings, 1.130 +; while _1NXXNXXXXXX would represent an area code plus phone number 1.131 +; preceded by a one. 1.132 +; 1.133 +; Each step of an extension is ordered by priority, which must 1.134 +; always start with 1 to be considered a valid extension. The priority 1.135 +; "next" or "n" means the previous priority plus one, regardless of whether 1.136 +; the previous priority was associated with the current extension or not. 1.137 +; The priority "same" or "s" means the same as the previously specified 1.138 +; priority, again regardless of whether the previous entry was for the 1.139 +; same extension. Priorities may be immediately followed by a plus sign 1.140 +; and another integer to add that amount (most useful with 's' or 'n'). 1.141 +; Priorities may then also have an alias, or label, in 1.142 +; parenthesis after their name which can be used in goto situations 1.143 +; 1.144 +; Contexts contain several lines, one for each step of each 1.145 +; extension, which can take one of two forms as listed below, 1.146 +; with the first form being preferred. 1.147 +; 1.148 +;[context] 1.149 +;exten => someexten,{priority|label{+|-}offset}[(alias)],application(arg1,arg2,...) 1.150 +;exten => someexten,{priority|label{+|-}offset}[(alias)],application,arg1|arg2... 1.151 +; 1.152 +; Included Contexts 1.153 +; 1.154 +; One may include another context in the current one as well, optionally with a 1.155 +; date and time. Included contexts are included in the order 1.156 +; they are listed. 1.157 +; The reason a context would include other contexts is for their 1.158 +; extensions. 1.159 +; The algorithm to find an extension is recursive, and works in this 1.160 +; fashion: 1.161 +; first, given a stack on which to store context references, 1.162 +; push the context to find the extension onto the stack... 1.163 +; a) Try to find a matching extension in the context at the top of 1.164 +; the stack, and, if found, begin executing the priorities 1.165 +; there in sequence. 1.166 +; b) If not found, Search the switches, if any declared, in 1.167 +; sequence. 1.168 +; c) If still not found, for each include, push that context onto 1.169 +; the top of the context stack, and recurse to a). 1.170 +; d) If still not found, pop the entry from the top of the stack; 1.171 +; if the stack is empty, the search has failed. If it's not, 1.172 +; continue with the next context in c). 1.173 +; This is a depth-first traversal, and stops with the first context 1.174 +; that provides a matching extension. As usual, if more than one 1.175 +; pattern in a context will match, the 'best' match will win. 1.176 +; Please note that that extensions found in an included context are 1.177 +; treated as if they were in the context from which the search began. 1.178 +; The PBX's notion of the "current context" is not changed. 1.179 +; Please note that in a context, it does not matter where an include 1.180 +; directive occurs. Whether at the top, or near the bottom, the effect 1.181 +; will be the same. The only thing that matters is that if there is 1.182 +; more than one include directive, they will be searched for extensions 1.183 +; in order, first to last. 1.184 +; Also please note that pattern matches (like _9XX) are not treated 1.185 +; any differently than exact matches (like 987). Also note that the 1.186 +; order of extensions in a context have no affect on the outcome. 1.187 +; 1.188 +; Timing list for includes is 1.189 +; 1.190 +; <time range>|<days of week>|<days of month>|<months> 1.191 +; 1.192 +; Note that ranges may be specified to wrap around the ends. Also, minutes are 1.193 +; fine-grained only down to the closest even minute. 1.194 +; 1.195 +;include => daytime|9:00-17:00|mon-fri|*|* 1.196 +;include => weekend|*|sat-sun|*|* 1.197 +;include => weeknights|17:02-8:58|mon-fri|*|* 1.198 +; 1.199 +; ignorepat can be used to instruct drivers to not cancel dialtone upon 1.200 +; receipt of a particular pattern. The most commonly used example is 1.201 +; of course '9' like this: 1.202 +; 1.203 +;ignorepat => 9 1.204 +; 1.205 +; so that dialtone remains even after dialing a 9. 1.206 +; 1.207 + 1.208 +; 1.209 +; Sample entries for extensions.conf 1.210 +; 1.211 +; 1.212 +;[dundi-e164-canonical] 1.213 +; 1.214 +; List canonical entries here 1.215 +; 1.216 +;exten => 12564286000,1,Macro(stdexten,6000,IAX2/foo) 1.217 +;exten => _125642860XX,1,Dial(IAX2/otherbox/${EXTEN:7}) 1.218 + 1.219 +;[dundi-e164-customers] 1.220 +; 1.221 +; If you are an ITSP or Reseller, list your customers here. 1.222 +; 1.223 +;exten => _12564286000,1,Dial(SIP/customer1) 1.224 +;exten => _12564286001,1,Dial(IAX2/customer2) 1.225 + 1.226 +;[dundi-e164-via-pstn] 1.227 +; 1.228 +; If you are freely delivering calls to the PSTN, list them here 1.229 +; 1.230 +;exten => _1256428XXXX,1,Dial(Zap/G2/${EXTEN:7}) ; Expose all of 256-428 1.231 +;exten => _1256325XXXX,1,Dial(Zap/G2/${EXTEN:7}) ; Ditto for 256-325 1.232 + 1.233 +;[dundi-e164-local] 1.234 +; 1.235 +; Context to put your dundi IAX2 or SIP user in for 1.236 +; full access 1.237 +; 1.238 +;include => dundi-e164-canonical 1.239 +;include => dundi-e164-customers 1.240 +;include => dundi-e164-via-pstn 1.241 + 1.242 +;[dundi-e164-switch] 1.243 +; 1.244 +; Just a wrapper for the switch 1.245 +; 1.246 +;switch => DUNDi/e164 1.247 + 1.248 +;[dundi-e164-lookup] 1.249 +; 1.250 +; Locally to lookup, try looking for a local E.164 solution 1.251 +; then try DUNDi if we don't have one. 1.252 +; 1.253 +;include => dundi-e164-local 1.254 +;include => dundi-e164-switch 1.255 +; 1.256 +; DUNDi can also be implemented as a Macro instead of using 1.257 +; the Local channel driver. 1.258 +; 1.259 +;[macro-dundi-e164] 1.260 +; 1.261 +; ARG1 is the extension to Dial 1.262 +; 1.263 +; Extension "s" is not a wildcard extension that matches "anything". 1.264 +; In macros, it is the start extension. In most other cases, 1.265 +; you have to goto "s" to execute that extension. 1.266 +; 1.267 +; For wildcard matches, see above - all pattern matches start with 1.268 +; an underscore. 1.269 +;exten => s,1,Goto(${ARG1},1) 1.270 +;include => dundi-e164-lookup 1.271 + 1.272 +; 1.273 +; Here are the entries you need to participate in the IAXTEL 1.274 +; call routing system. Most IAXTEL numbers begin with 1-700, but 1.275 +; there are exceptions. For more information, and to sign 1.276 +; up, please go to www.gnophone.com or www.iaxtel.com 1.277 +; 1.278 +;[iaxtel700] 1.279 +;exten => _91700XXXXXXX,1,Dial(IAX2/${GLOBAL(IAXINFO)}@iaxtel.com/${EXTEN:1}@iaxtel) 1.280 + 1.281 +; 1.282 +; The SWITCH statement permits a server to share the dialplan with 1.283 +; another server. Use with care: Reciprocal switch statements are not 1.284 +; allowed (e.g. both A -> B and B -> A), and the switched server needs 1.285 +; to be on-line or else dialing can be severly delayed. 1.286 +; 1.287 +;[iaxprovider] 1.288 +;switch => IAX2/user:[key]@myserver/mycontext 1.289 + 1.290 +;[trunkint] 1.291 +; 1.292 +; International long distance through trunk 1.293 +; 1.294 +;exten => _9011.,1,Macro(dundi-e164,${EXTEN:4}) 1.295 +;exten => _9011.,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) 1.296 + 1.297 +;[trunkld] 1.298 +; 1.299 +; Long distance context accessed through trunk 1.300 +; 1.301 +;exten => _91NXXNXXXXXX,1,Macro(dundi-e164,${EXTEN:1}) 1.302 +;exten => _91NXXNXXXXXX,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) 1.303 + 1.304 +;[trunklocal] 1.305 +; 1.306 +; Local seven-digit dialing accessed through trunk interface 1.307 +; 1.308 +;exten => _9NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) 1.309 + 1.310 +;[trunktollfree] 1.311 +; 1.312 +; Long distance context accessed through trunk interface 1.313 +; 1.314 +;exten => _91800NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) 1.315 +;exten => _91888NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) 1.316 +;exten => _91877NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) 1.317 +;exten => _91866NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}}) 1.318 + 1.319 +;[international] 1.320 +; 1.321 +; Master context for international long distance 1.322 +; 1.323 +;ignorepat => 9 1.324 +;include => longdistance 1.325 +;include => trunkint 1.326 + 1.327 +;[longdistance] 1.328 +; 1.329 +; Master context for long distance 1.330 +; 1.331 +;ignorepat => 9 1.332 +;include => local 1.333 +;include => trunkld 1.334 + 1.335 +;[local] 1.336 +; 1.337 +; Master context for local, toll-free, and iaxtel calls only 1.338 +; 1.339 +;ignorepat => 9 1.340 +;include => default 1.341 +;include => trunklocal 1.342 +;include => iaxtel700 1.343 +;include => trunktollfree 1.344 +;include => iaxprovider 1.345 + 1.346 +;Include parkedcalls (or the context you define in features conf) 1.347 +;to enable call parking. 1.348 +;include => parkedcalls 1.349 +; 1.350 +; You can use an alternative switch type as well, to resolve 1.351 +; extensions that are not known here, for example with remote 1.352 +; IAX switching you transparently get access to the remote 1.353 +; Asterisk PBX 1.354 +; 1.355 +; switch => IAX2/user:password@bigserver/local 1.356 +; 1.357 +; An "lswitch" is like a switch but is literal, in that 1.358 +; variable substitution is not performed at load time 1.359 +; but is passed to the switch directly (presumably to 1.360 +; be substituted in the switch routine itself) 1.361 +; 1.362 +; lswitch => Loopback/12${EXTEN}@othercontext 1.363 +; 1.364 +; An "eswitch" is like a switch but the evaluation of 1.365 +; variable substitution is performed at runtime before 1.366 +; being passed to the switch routine. 1.367 +; 1.368 +; eswitch => IAX2/context@${CURSERVER} 1.369 + 1.370 +;[macro-trunkdial] 1.371 +; 1.372 +; Standard trunk dial macro (hangs up on a dialstatus that should 1.373 +; terminate call) 1.374 +; ${ARG1} - What to dial 1.375 +; 1.376 +;exten => s,1,Dial(${ARG1}) 1.377 +;exten => s,n,Goto(s-${DIALSTATUS},1) 1.378 +;exten => s-NOANSWER,1,Hangup 1.379 +;exten => s-BUSY,1,Hangup 1.380 +;exten => _s-.,1,NoOp 1.381 + 1.382 +;[macro-stdexten]; 1.383 +; 1.384 +; Standard extension macro: 1.385 +; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well 1.386 +; ${ARG2} - Device(s) to ring 1.387 +; 1.388 +;exten => s,1,Dial(${ARG2},20) ; Ring the interface, 20 seconds maximum 1.389 +;exten => s,2,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) 1.390 + 1.391 +;exten => s-NOANSWER,1,Voicemail(${ARG1},u) ; If unavailable, send to voicemail w/ unavail announce 1.392 +;exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start 1.393 + 1.394 +;exten => s-BUSY,1,Voicemail(${ARG1},b) ; If busy, send to voicemail w/ busy announce 1.395 +;exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start 1.396 + 1.397 +;exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer 1.398 + 1.399 +;exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the user into VoicemailMain 1.400 + 1.401 +;[macro-stdPrivacyexten]; 1.402 +; 1.403 +; Standard extension macro: 1.404 +; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well 1.405 +; ${ARG2} - Device(s) to ring 1.406 +; ${ARG3} - Optional DONTCALL context name to jump to (assumes the s,1 extension-priority) 1.407 +; ${ARG4} - Optional TORTURE context name to jump to (assumes the s,1 extension-priority)` 1.408 +; 1.409 +;exten => s,1,Dial(${ARG2},20|p) ; Ring the interface, 20 seconds maximum, call screening 1.410 + ; option (or use P for databased call screening) 1.411 +;exten => s,2,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) 1.412 + 1.413 +;exten => s-NOANSWER,1,Voicemail(${ARG1},u) ; If unavailable, send to voicemail w/ unavail announce 1.414 +;exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start 1.415 + 1.416 +;exten => s-BUSY,1,Voicemail(${ARG1},b) ; If busy, send to voicemail w/ busy announce 1.417 +;exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start 1.418 + 1.419 +;exten => s-DONTCALL,1,Goto(${ARG3},s,1) ; Callee chose to send this call to a polite "Don't call again" script. 1.420 + 1.421 +;exten => s-TORTURE,1,Goto(${ARG4},s,1) ; Callee chose to send this call to a telemarketer torture script. 1.422 + 1.423 +;exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer 1.424 + 1.425 +;exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the user into VoicemailMain 1.426 + 1.427 +;[macro-page]; 1.428 +; 1.429 +; Paging macro: 1.430 +; 1.431 +; Check to see if SIP device is in use and DO NOT PAGE if they are 1.432 +; 1.433 +; ${ARG1} - Device to page 1.434 + 1.435 +;exten => s,1,ChanIsAvail(${ARG1}|js) ; j is for Jump and s is for ANY call 1.436 +;exten => s,n,GoToIf([${AVAILSTATUS} = "1"]?autoanswer:fail) 1.437 +;exten => s,n(autoanswer),Set(_ALERT_INFO="RA") ; This is for the PolyComs 1.438 +;exten => s,n,SIPAddHeader(Call-Info: Answer-After=0) ; This is for the Grandstream, Snoms, and Others 1.439 +;exten => s,n,NoOp() ; Add others here and Post on the Wiki!!!! 1.440 +;exten => s,n,Dial(${ARG1}||) 1.441 +;exten => s,n(fail),Hangup 1.442 + 1.443 + 1.444 +;[demo] 1.445 +; 1.446 +; We start with what to do when a call first comes in. 1.447 +; 1.448 +;exten => s,1,Wait(1) ; Wait a second, just for fun 1.449 +;exten => s,n,Answer ; Answer the line 1.450 +;exten => s,n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds 1.451 +;exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds 1.452 +;exten => s,n(restart),BackGround(demo-congrats) ; Play a congratulatory message 1.453 +;exten => s,n(instruct),BackGround(demo-instruct) ; Play some instructions 1.454 +;exten => s,n,WaitExten ; Wait for an extension to be dialed. 1.455 + 1.456 +;exten => 2,1,BackGround(demo-moreinfo) ; Give some more information. 1.457 +;exten => 2,n,Goto(s,instruct) 1.458 + 1.459 +;exten => 3,1,Set(LANGUAGE()=fr) ; Set language to french 1.460 +;exten => 3,n,Goto(s,restart) ; Start with the congratulations 1.461 + 1.462 +;exten => 1000,1,Goto(default,s,1) 1.463 +; 1.464 +; We also create an example user, 1234, who is on the console and has 1.465 +; voicemail, etc. 1.466 +; 1.467 +;exten => 1234,1,Playback(transfer,skip) ; "Please hold while..." 1.468 + ; (but skip if channel is not up) 1.469 +;exten => 1234,n,Macro(stdexten,1234,${GLOBAL(CONSOLE)}) 1.470 + 1.471 +;exten => 1235,1,Voicemail(1234,u) ; Right to voicemail 1.472 + 1.473 +;exten => 1236,1,Dial(Console/dsp) ; Ring forever 1.474 +;exten => 1236,n,Voicemail(1234,b) ; Unless busy 1.475 + 1.476 +; 1.477 +; # for when they're done with the demo 1.478 +; 1.479 +;exten => #,1,Playback(demo-thanks) ; "Thanks for trying the demo" 1.480 +;exten => #,n,Hangup ; Hang them up. 1.481 + 1.482 +; 1.483 +; A timeout and "invalid extension rule" 1.484 +; 1.485 +;exten => t,1,Goto(#,1) ; If they take too long, give up 1.486 +;exten => i,1,Playback(invalid) ; "That's not valid, try again" 1.487 + 1.488 +; 1.489 +; Create an extension, 500, for dialing the 1.490 +; Asterisk demo. 1.491 +; 1.492 +;exten => 500,1,Playback(demo-abouttotry); Let them know what's going on 1.493 +;exten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default) ; Call the Asterisk demo 1.494 +;exten => 500,n,Playback(demo-nogo) ; Couldn't connect to the demo site 1.495 +;exten => 500,n,Goto(s,6) ; Return to the start over message. 1.496 + 1.497 +; 1.498 +; Create an extension, 600, for evaluating echo latency. 1.499 +; 1.500 +;exten => 600,1,Playback(demo-echotest) ; Let them know what's going on 1.501 +;exten => 600,n,Echo ; Do the echo test 1.502 +;exten => 600,n,Playback(demo-echodone) ; Let them know it's over 1.503 +;exten => 600,n,Goto(s,6) ; Start over 1.504 + 1.505 +; 1.506 +; You can use the Macro Page to intercom a individual user 1.507 +;exten => 76245,1,Macro(page,SIP/Grandstream1) 1.508 +; or if your peernames are the same as extensions 1.509 +;exten => _7XXX,1,Macro(page,SIP/${EXTEN}) 1.510 +; 1.511 +; 1.512 +; System Wide Page at extension 7999 1.513 +; 1.514 +;exten => 7999,1,Set(TIMEOUT(absolute)=60) 1.515 +;exten => 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n|d) 1.516 + 1.517 +; Give voicemail at extension 8500 1.518 +; 1.519 +;exten => 8500,1,VoicemailMain 1.520 +;exten => 8500,n,Goto(s,6) 1.521 +; 1.522 +; Here's what a phone entry would look like (IXJ for example) 1.523 +; 1.524 +;exten => 1265,1,Dial(Phone/phone0,15) 1.525 +;exten => 1265,n,Goto(s,5) 1.526 + 1.527 +; 1.528 +; The page context calls up the page macro that sets variables needed for auto-answer 1.529 +; It is in is own context to make calling it from the Page() application as simple as 1.530 +; Local/{peername}@page 1.531 +; 1.532 +;[page] 1.533 +;exten => _X.,1,Macro(page,SIP/${EXTEN}) 1.534 + 1.535 +;[mainmenu] 1.536 +; 1.537 +; Example "main menu" context with submenu 1.538 +; 1.539 +;exten => s,1,Answer 1.540 +;exten => s,n,Background(thanks) ; "Thanks for calling press 1 for sales, 2 for support, ..." 1.541 +;exten => s,n,WaitExten 1.542 +;exten => 1,1,Goto(submenu,s,1) 1.543 +;exten => 2,1,Hangup 1.544 +;include => default 1.545 +; 1.546 +;[submenu] 1.547 +;exten => s,1,Ringing ; Make them comfortable with 2 seconds of ringback 1.548 +;exten => s,n,Wait,2 1.549 +;exten => s,n,Background(submenuopts) ; "Thanks for calling the sales department. Press 1 for steve, 2 for..." 1.550 +;exten => s,n,WaitExten 1.551 +;exten => 1,1,Goto(default,steve,1) 1.552 +;exten => 2,1,Goto(default,mark,2) 1.553 + 1.554 +;[default] 1.555 +; 1.556 +; By default we include the demo. In a production system, you 1.557 +; probably don't want to have the demo there. 1.558 +; 1.559 +;include => demo 1.560 + 1.561 +; 1.562 +; An extension like the one below can be used for FWD, Nikotel, sipgate etc. 1.563 +; Note that you must have a [sipprovider] section in sip.conf 1.564 +; 1.565 +;exten => _41X.,1,Dial(SIP/${EXTEN:2}@sipprovider,,r) 1.566 + 1.567 +; Real extensions would go here. Generally you want real extensions to be 1.568 +; 4 or 5 digits long (although there is no such requirement) and start with a 1.569 +; single digit that is fairly large (like 6 or 7) so that you have plenty of 1.570 +; room to overlap extensions and menu options without conflict. You can alias 1.571 +; them with names, too, and use global variables 1.572 + 1.573 +;exten => 6245,hint,SIP/Grandstream1&SIP/Xlite1,Joe Schmoe ; Channel hints for presence 1.574 +;exten => 6245,1,Dial(SIP/Grandstream1,20,rt) ; permit transfer 1.575 +;exten => 6245,n(dial),Dial(${HINT},20,rtT) ; Use hint as listed 1.576 +;exten => 6245,n,Voicemail(6245,u) ; Voicemail (unavailable) 1.577 +;exten => 6245,s+1,Hangup ; s+1, same as n 1.578 +;exten => 6245,dial+101,Voicemail(6245,b) ; Voicemail (busy) 1.579 +;exten => 6361,1,Dial(IAX2/JaneDoe,,rm) ; ring without time limit 1.580 +;exten => 6389,1,Dial(MGCP/aaln/1@192.168.0.14) 1.581 +;exten => 6390,1,Dial(JINGLE/caller/callee) ; Dial via jingle using labels 1.582 +;exten => 6391,1,Dial(JINGLE/asterisk@digium.com/mogorman@astjab.org) ;Dial via jingle using asterisk as the transport and calling mogorman. 1.583 +;exten => 6394,1,Dial(Local/6275/n) ; this will dial ${MARK} 1.584 + 1.585 +;exten => 6275,1,Macro(stdexten,6275,${MARK}) ; assuming ${MARK} is something like Zap/2 1.586 +;exten => mark,1,Goto(6275|1) ; alias mark to 6275 1.587 +;exten => 6536,1,Macro(stdexten,6236,${WIL}) ; Ditto for wil 1.588 +;exten => wil,1,Goto(6236|1) 1.589 + 1.590 +;If you want to subscribe to the status of a parking space, this is 1.591 +;how you do it. Subscribe to extension 6600 in sip, and you will see 1.592 +;the status of the first parking lot with this extensions' help 1.593 +;exten => 6600,hint,park:701@parkedcalls 1.594 +;exten => 6600,1,noop 1.595 +; 1.596 +; Some other handy things are an extension for checking voicemail via 1.597 +; voicemailmain 1.598 +; 1.599 +;exten => 8500,1,VoicemailMain 1.600 +;exten => 8500,n,Hangup 1.601 +; 1.602 +; Or a conference room (you'll need to edit meetme.conf to enable this room) 1.603 +; 1.604 +;exten => 8600,1,Meetme(1234) 1.605 +; 1.606 +; Or playing an announcement to the called party, as soon it answers 1.607 +; 1.608 +;exten = 8700,1,Dial(${MARK},30,A(/path/to/my/announcemsg)) 1.609 +; 1.610 +; For more information on applications, just type "core show applications" at your 1.611 +; friendly Asterisk CLI prompt. 1.612 +; 1.613 +; "core show application <command>" will show details of how you 1.614 +; use that particular application in this file, the dial plan. 1.615 +; "core show functions" will list all dialplan functions 1.616 +; "core show function <COMMAND>" will show you more information about 1.617 +; one function. Remember that function names are UPPER CASE.