Sure.
[general]
static=yes
writeprotect=no
; Global variables used in the application
[globals]
TRUNK=Zap/g1 ; Trunk interface
TRUNK2=Zap/g2 ; 2nd Trunk interface
TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)
Reception = 7000
; Extension variables
Ext_01 = 3640
Ext_02 = 3661
Ext_03 = 3627
Ext_04 = 3624
Ext_05 = 3610
Ext_06 = 3612
Ext_07 = 3645
Ext_08 = 3629
Ext_09 = 3647
Ext_10 = 3616
Ext_11 = 3625
Ext_12 = 3611
Ext_80 = 7000
Ext_81 = 3602
Ext_82 = 4001
Ext_83 = 4002
Ext_20 = 3654
Ext_21 = 3655
[trunkint]
;
; International long distance through trunk
;
exten => _9011.,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _9011.,2,Congestion
[trunkld]
;
; Long distance context accessed through trunk
;
exten => _91NXXNXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91NXXNXXXXXX,2,Congestion
;exten => _1NXXNXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
;exten => _1NXXNXXXXXX,2,Congestion
[trunklocal]
;
; Local seven-digit dialing accessed through trunk interface
;
exten => _9NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _9NXXXXXX,2,Congestion
[trunktollfree]
;
; Long distance context accessed through trunk interface
;
exten => _91800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91800NXXXXXX,2,Congestion
exten => _91888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91888NXXXXXX,2,Congestion
exten => _91877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91877NXXXXXX,2,Congestion
exten => _91866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
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 => iaxprovider
;
; 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
; Asterisk PBX
;
; switch => IAX2/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,Answer
exten => s,2,Ringing
exten => s,3,Wait(2)
exten => s,4,Dial(${ARG2},20,tTr) ; Ring the interface, 20 seconds maximum
exten => s,5,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-NOANSWER,1,Voicemail(u${ARG1}) ; If unavailable, send to voicemail w/ unavail announce
exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start
exten => s-BUSY,1,Voicemail(b${ARG1}) ; If busy, send to voicemail w/ busy announce
exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start
exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer
exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the user into VoicemailMain
[incoming]
;
; We start with what to do when a call first comes in.
; All standard extensions
exten => ${Ext_01},1,Macro(stdexten,${Ext_01},SIP/Ext_01)
exten => ${Ext_02},1,Macro(stdexten,${Ext_02},SIP/Ext_02)
exten => ${Ext_03},1,Macro(stdexten,${Ext_03},SIP/Ext_03)
exten => ${Ext_04},1,Macro(stdexten,${Ext_04},SIP/Ext_04)
exten => ${Ext_05},1,Macro(stdexten,${Ext_05},SIP/Ext_05)
exten => ${Ext_06},1,Macro(stdexten,${Ext_06},SIP/Ext_06)
exten => ${Ext_07},1,Macro(stdexten,${Ext_07},SIP/Ext_07)
exten => ${Ext_08},1,Macro(stdexten,${Ext_08},SIP/Ext_08)
exten => ${Ext_09},1,Macro(stdexten,${Ext_09},SIP/Ext_09)
exten => ${Ext_10},1,Macro(stdexten,${Ext_10},SIP/Ext_10)
exten => ${Ext_11},1,Macro(stdexten,${Ext_11},SIP/Ext_11)
exten => ${Ext_20},1,Macro(stdexten,${Ext_20},SIP/Ext_20)
exten => ${Ext_21},1,Macro(stdexten,${Ext_21},SIP/Ext_21)
;Reception,Sales and Support
exten => ${Ext_80},1,Goto(reception,s,1)
exten => ${Ext_81},1,Goto(support-direct,s,1)
;Conference rooms
exten => ${Ext_82},1,Macro(stdexten,${Ext_82},SIP/Ext_82)
exten => ${Ext_83},1,Macro(stdexten,${Ext_83},SIP/Ext_83)
;Fax
exten => 2383,1,Dial(Zap/25,20)
exten => 3695,1,Dial(Zap/26,20)
exten => t,1,Hangup
[reception]
exten => s,1,Answer
exten => s,2,Ringing
exten => s,3,Wait(2)
exten => s,4,Dial(SIP/Ext_05,8,tTr)
exten => s,5,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
;temp testing
;exten => s,4,Goto(mainmenu,s,1)
exten => s-NOANSWER,1,Goto(mainmenu,s,1) ; If unavailable ring the sales group
exten => s-BUSY,1,Goto(mainmenu,s,1)
exten => t,1,Goto(mainmenu,s,1) ;time out
[sales]
exten => s,1,Answer
exten => s,2,Background(custom/thank-you)
exten => s,3,Background(custom/one-moment-plz)
exten => s,4,Ringing
exten => s,5,Wait(2)
exten => s,6,Dial(SIP/Ext_10&SIP/Ext_06,20,tTr)
exten => s,102,Voicemail(u${Ext_80})
exten => t,1,Voicemail(u7000)
[support]
exten => s,1,Answer
exten => s,2,Background(custom/thank-you)
exten => s,3,Background(custom/one-moment-plz)
exten => s,4,Ringing
exten => s,5,Wait(2)
exten => s,6,Dial(SIP/Ext_02&SIP/Ext_08&SIP/Ext_07&SIP/Ext_11,20,tTr)
exten => s,102,Voicemail(u${Ext_81}) ;put them into voicemail
exten => t,1,Voicemail(u3602)
[support-direct]
exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Background(custom/dm-support-1st-announcement)
exten => s,4,Ringing
exten => s,5,Wait(2)
exten => s,6,Dial(SIP/Ext_02&SIP/Ext_08&SIP/Ext_07&SIP/Ext_11,20,tTr)
exten => s,102,Voicemail(u${Ext_81}) ;put them into voicemail
exten => t,1,Voicemail(u3602) ;timeout into voicemail
[mainmenu]
include => incoming
exten => s,1,Answer
exten => s,2,Ringing
exten => s,3,Wait(1sss)
exten => s,4,Background(custom/main-menu) ;for sales press 1 for support press 2
exten => 1,1,Goto(sales,s,1)
exten => 2,1,Goto(support,s,1)
;exten => 3,1,Directory(default)
;exten => 2,5,Wait(3)
;exten => 2,6,Goto(s,4) ;no response repeat options again
exten => t,1,Hangup
[default]
include => incoming
include => parkedcalls
exten => 8000,1,Answer
exten => 8000,2,DigitTimeout(2)
exten => 8000,3,ResponseTimeout(10)
exten => 8000,4,Goto(mainmenu,s,1)
exten => 7000,1,Answer
exten => 7000,2,DigitTimeout(2)
exten => 7000,3,ResponseTimeout(10)
exten => 7000,4,Goto(reception,s,1)
; recording of phrases
exten => 205,1,Goto(phrase-menu,s,1)
exten => 206,1,Goto(recording,s,1)
; conference rooms (you’ll need to edit meetme.conf to enable this room)
exten => 8601,1,Meetme(8601)
exten => 8602,1,Meetme(8602)
; Intercom
exten => 6000,1,Dial,console/dsp
; Monitor an extension
exten => 8159,1,ZapBarge
exten => 8159,2,Hangup
; Call Pickup
exten => *8,1,Pickup
; Give voicemail at extension 9999
exten => 3900,1,Answer
exten => 3900,2,Wait(1)
exten => 3900,3,VoicemailMain
exten => 3900,4,Hangup
; #=hangup
exten => #,1,Background(custom/goodbye)
exten => #,2,Hangup
; hangup if caller does nothing
exten => t,1,Hangup
; Invaild
exten => i,1,Playback(invalid)
; Repeats Previous Menu
exten => *,1,Goto(s,1)
[phrase-menu]
exten => s,1,Answer ; Answer the line
exten => s,2,Wait(1)
exten => s,3,DigitTimeout,3 ; Set Digit Timeout to 5 seconds
exten => s,4,ResponseTimeout,10 ; Set Response Timeout to 10 seconds
exten => s,5,BackGround(custom/phrase-menu) ; Play main menu.
; Phrase Recording
exten => 1,1,Wait(1)
exten => 1,2,Read(PHRASEID|custom/enter-phrase-num)
exten => 1,3,Wait(2) ; give yourself 2 secs to take a breath and wait for beep
exten => 1,4,Record(custom/${PHRASEID}:gsm)
exten => 1,5,Wait(2)
exten => 1,6,Playback(custom/${PHRASEID})
exten => 1,7,Wait(1)
exten => 1,8,Goto(s,2)
; Phrase review
exten => 2,1,Wait(1)
exten => 2,2,Read(PHRASEID|custom/enter-phrase-num)
exten => 2,3,Wait(1)
exten => 2,4,Playback(custom/${PHRASEID})
exten => 2,5,Wait(1)
exten => 2,6,Goto(s,2)
; #=hangup
exten => #,1,Background(custom/goodbye)
exten => #,2,Hangup
exten => t,1,Hangup
exten => i,1,Playback(invalid)
exten => i,2,Goto(s,2)