;
; Static extension configuration files, used by
; the pbx_config module.
;
; The "General" category is for certain variables.  
;
[general]
;
; If static is set to no, or omitted, then the pbx_config will rewrite
; this file when extensions are modified.  Remember that all comments
; made in the file will be lost when that happens. 
;
; XXX Not yet implemented XXX
;
static=yes
;
; if static=yes and writeprotect=no, you can save dialplan by
; CLI command 'save dialplan' too
;
writeprotect=no

;
; The "Globals" category contains global variables that can be referenced
; in the dialplan with ${VARIABLE}
;
[globals]
;CONSOLE=Console/dsp				; Console interface for demo
;CONSOLE=Zap/1
;CONSOLE=Phone/phone0
;IAXINFO=guest					; IAXtel username/password
;IAXINFO=myuser:mypass
TRUNK=Phone/phone0				; Trunk interface
;TRUNK=IAX/user:pass@provider

;
; Any category other than "General" and "Globals" represent 
; extension contexts, which are collections of extensions.  
;
; Extension names may be numbers, letters, or combinations
; thereof. If an extension name is prefixed by a '_'
; character, it is interpreted as a pattern rather than a
; literal.  In patterns, some characters have special meanings:
;
;   X - any digit from 0-9
;   N - any digit from 2-9
;   [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)
;   . - wildcard, matches anything remaining (e.g. _9011. matches anything starting with 9011 including 9011)
;
; For example the extenion _NXXXXXX would match normal 7 digit dialings, while
; _1NXXNXXXXXX would represent an area code plus phone number
; preceeded by a one.
;
; Contexts contain several lines, one for each step of each
; extension, which can take one of two forms as listed below,
; with the first form being preferred.  One may include another
; context in the current one as well, optionally with a
; date and time.  Included contexts are included in the order
; they are listed.
;
;[context]
;exten => someexten,priority,application(arg1,arg2,...)
;exten => someexten,priority,application,arg1|arg2...
;
; Timing list for includes is 
;
;   <time range>|<days of week>|<days of month>|<months>
;
;include => daytime|9:00-17:00|mon-fri|*|*
;
; ignorepat can be used to instruct drivers to not cancel dialtone upon
; receipt of a particular pattern.  The most commonly used example is
; of course '9' like this:
;
;ignorepat => 9
;
; so that dialtone remains even after dialing a 9.
;

;
; Here are the entries you need to participate in the IAXTEL
; call routing system.  Most IAXTEL numbers begin with 1-700, but
; there are exceptions.  For more information, and to sign
; up, please go to www.gnophone.com or www.iaxtel.com
;
;[iaxtel700]
;exten => _91700NXXXXXX,1,Dial(IAX/${IAXINFO}@iaxtel.com/${EXTEN:1}@iaxtel)

;[iaxprovider]
;switch => IAX/user:[key]@myserver/mycontext

[trunkint]
;
; International long distance through trunk
;
exten => 9011.,1,Dial(${TRUNK}/${EXTEN:1})
exten => 9011.,2,Congestion

[trunkld]
;
; Long distance context accessed through trunk
;
exten => _91NXXNXXXXXX,1,Dial(${TRUNK}/${EXTEN:1})
exten => _91NXXNXXXXXX,2,Congestion

[trunklocal]
;
; Local seven-digit dialing accessed through trunk interface
;
exten => _9NXXNXXX,1,StripMSD,1
exten => _NXXNXXX,2,Dial,Phone/phone0/${EXTEN}


[trunktollfree]
;
; Long distance context accessed through trunk interface
;
exten => _91800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:1})
exten => _91800NXXXXXX,2,Congestion
exten => _91888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:1})
exten => _91888NXXXXXX,2,Congestion
exten => _91877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:1})
exten => _91877NXXXXXX,2,Congestion
exten => _91866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:1})
exten => _91866NXXXXXX,2,Congestion

[international]
;
; Master context for international long distance
;
ignorepat => 9
include => longdistance
include => trunkint

[longdistance]
;
; Master context for long distance
;
ignorepat => 9
include => local
include => trunkld

[local]
;
; Master context for local, toll-free, and iaxtel calls only
;
ignorepat => 9
include => default
include => parkedcalls
include => trunklocal
;include => iaxtel700
include => trunktollfree
include => provider
;
; You can use an alternative switch type as well, to resolve
; extensions that are not known here, for example with remote 
; IAX switching you transparently get access to the remote
; 
; switch => IAX/user:password@bigserver/local

;[macro-stdexten];
;
; Standard extension macro:
;   ${ARG1} - Extension  (we could have used ${MACRO_EXTEN} here as well
;   ${ARG2} - Device(s) to ring
;
;exten => s,1,Dial(${ARG2},20)			; Ring the interface, 20 seconds maximum
;exten => s,2,Voicemail(u${ARG1})		; If unavailable, send to voicemail w/ unavail announce
;exten => s,3,Goto(default,s,1)			; If they press #, return to start
;exten => s,70907,Voicemail(b${ARG1})		; If busy, send to voicemail w/ busy announce
;exten => s,103,Goto(default,s,1)		; If they press #, return to start


[default]
;
; By default we include the demo.  In a production system, you 
; probably don't want to have the demo there.
;
; Real extensions would go here.  Generally you want real extensions to be 4 or 5
; digits long (although there is no such requirement) and start with a single
; digit that is fairly large (like 6 or 7) so that you have plenty of room to
; overlap extensions and menu options without conflict.  You can alias them with
; names, too and use global variables

exten => s,1,Background,radsgreet
;exten => s,2,Setmusiconhold,default
;exten => s,2,Dial,Phone/phone1|20
exten => t,1,Hangup
exten => i,1,Playback,invalid
exten => i,2,Goto,s|1

; Dave's Extension
exten => 70907,1,Dial,SIP/70907|30
exten => 70907,2,VoiceMail,u70907
exten => 70907,102,VoiceMail,b70907
exten => 70907,103,Hangup

; Andrew's Extension
exten => 70902,1,Dial,SIP/70902|30
exten => 70902,2,VoiceMail,u70902
exten => 70902,102,VoiceMail,b70902
exten => 70902,103,Hangup

; POTS Phone
;exten => 70900,1,Dial,Phone/phone1|30
;exten => 70900,2,VoiceMail,u70900
;exten => 70900,102,VoiceMail,b70900
;exten => 70900,103,Hangup

; Record upload.gsm to /var/lib/asterisk/sounds
exten => 8000,1,Record,upload:gsm

; Some other handy things are an extension for checking voicemail via
; voicemailmain
;
exten => 8500,1,VoicemailMain
exten => 8500,2,Hangup
;
; Or a conference room (you'll need to edit meetme.conf to enable this room)
;
exten => 8600,1,Meetme
;
; For more information on applications, just type "show applications" at your
; friendly Asterisk CLI prompt.
;
