
[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]
CONSOLE=Console/dsp		; Console interface for demo
TRUNK=DAHDI/4		; Trunk interface, third port on card one
TRUNKMSD=1			; MSD digits to strip (usually 1 or 0)

[default]
include => cohncom2


[iaxprovider]

[trunkld]
exten => _91NXXNXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})

[trunklocal]
exten => _9NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/520${EXTEN:${GLOBAL(TRUNKMSD)}})

;;[trunklocal]
;exten => _NXXXXXX,1,NoOp()
;exten => _NXXXXXX,n,Dial(IAX2/gwcohn/520${EXTEN})
;exten => _NXXXXXX,n,Playback(all-outgoing-lines-unavailable)
;exten => _NXXXXXX,n,Wait(2)
;exten => _NXXXXXX,n,Playback(goodbye)
;exten => _NXXXXXX,n,Hangup()





[trunktollfree]
exten => _91800NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
exten => _91888NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
exten => _91877NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
exten => _91866NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})

[international]  		; This context not configured
ignorepat => 9
include => longdistance

[longdistance]
ignorepat => 9
include => local
include => trunkld

[local]
ignorepat => 9

include => trunklocal
include => trunktollfree

[incoming2]
include => cohncom2

exten => s,1,Goto(cohncom2,6104,1)

[incoming]

exten => s,1,Answer()
exten => s,2,Wait(2)
exten => s,3,Background(enter-ext-of-person)
exten => s,4,WaitExten()

;exten => _XXXX,1,Set(CALLERID(num)=5202826106)
;exten => _XXXX,n,Set(CALLERID(name)=Phoenix)
;exten => _XXXX,n,NoOp() ; Wildcard extensions for Tucson pbx
;exten => _XXXX,n,Dial(SIP/phoenix/${EXTEN})
;exten => _XXXX,n,Playback(all-outgoing-lines-unavailable)
;exten => _XXXX,n,Wait(2)
;exten => _XXXX,n,Playback(goodbye)
;exten => _XXXX,n,Hangup()

exten => 6000,1,Gosub(ani)
exten => 6101,1,Goto(cohncom2,6101,1)
exten => 6102,1,Goto(cohncom2,6102,1)
exten => 6103,1,Goto(cohncom2,6103,1)
exten => 6104,1,Goto(cohncom2,6104,1)
exten => 2222,1,Goto(telemarketer,s,1)
exten => 6107,1,Goto(cohncom2,6107,1)

exten => 6109,1,Goto(cohncom2,6109,1)

exten => i,1,Wait(2)
exten => i,2,Playback(pbx-invalid)
exten => i,3,Goto(incoming,s,4)
exten => t,1,Playback(goodbye)
exten => t,2,Hangup()

[telemarketer]
include => incoming

exten => s,1,Answer()
exten => s,n,Wait(2)
exten => s,n,GoToIf($[${CALLERID(num)} = 5203490859]?allow)

exten => s,n,Zapateller()
exten => s,n,Background(telemarketer)
exten => s,n,WaitExten()
exten => s,n(allow),Goto(cohncom2,6104,1)

exten => 4,1,Goto(cohncom2,6104,1)

exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(telemarketer,s,1)

exten => t,1,Playback(goodbye)
exten => t,n,Hangup()

[weather]
exten => s,1,Answer()                        ; This calls the weather forcast application
exten => s,n,Wait(1)
exten => s,n,SayUnixTime()
exten => s,n,AGI(weather.php)
exten => s,n,Playback(vm-goodbye)
exten => s,n,Hangup()


[conference]
exten => 6107,1,MeetMe(6107,Mic)
exten => 6107,n,Hangup()

[channel_bank]
include => cohncom2

exten => 4101,1,Dial(DAHDI/1/4101,rt) 
exten => 4101,n,Playback(nbdy-avail-to-take-call)
exten => 4101,n,Playback(goodbye)
exten => 4101,n,Hangup



[demo]

;exten => s,1,Wait(1)			; Wait a second, just for fun
exten => s,1,Answer			; Answer the line
exten => s,n,Set(TIMEOUT(digit)=5)	; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10)	; Set Response Timeout to 10 seconds
exten => s,n(restart),BackGround(demo-congrats)	; Play a congratulatory message
exten => s,n(instruct),BackGround(demo-instruct)	; Play some instructions
exten => s,n,WaitExten			; Wait for an extension to be dialed.

exten => 2,1,BackGround(demo-moreinfo)	; Give some more information.
exten => 2,n,Goto(s,instruct)

exten => 3,1,Set(LANGUAGE()=fr)		; Set language to french
exten => 3,n,Goto(s,restart)		; Start with the congratulations

exten => 1000,1,Goto(default,s,1)
exten => 1234,1,Playback(transfer,skip)		; "Please hold while..." 
					; (but skip if channel is not up)
exten => 1234,n,Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)}))
exten => 1234,n,Goto(default,s,1)		; exited Voicemail

exten => 1235,1,Voicemail(1234,u)		; Right to voicemail

exten => 1236,1,Dial(Console/dsp)		; Ring forever
exten => 1236,n,Voicemail(1234,b)		; Unless busy

exten => #,1,Playback(demo-thanks)	; "Thanks for trying the demo"
exten => #,n,Hangup			; Hang them up.

exten => t,1,Goto(#,1)			; If they take too long, give up
exten => i,1,Playback(invalid)		; "That's not valid, try again"

exten => 500,1,Playback(demo-abouttotry); Let them know what's going on
exten => 500,n,Dial(IAX2/guest@pbx.digium.com/s@default)	; Call the Asterisk demo
exten => 500,n,Playback(demo-nogo)	; Couldn't connect to the demo site
exten => 500,n,Goto(s,6)		; Return to the start over message.

exten => 600,1,Playback(demo-echotest)	; Let them know what's going on
exten => 600,n,Echo			; Do the echo test
exten => 600,n,Playback(demo-echodone)	; Let them know it's over
exten => 600,n,Goto(s,6)		; Start over

exten => 76245,1,Macro(page,SIP/Grandstream1)
exten => _7XXX,1,Macro(page,SIP/${EXTEN})
exten => 7999,1,Set(TIMEOUT(absolute)=60)
exten => 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n,d)


[voicemail]
exten => 8500,1,VoiceMailMain()

[page]
exten => _X.,1,Macro(page,SIP/${EXTEN})

[time]
exten => _X.,30000(time),NoOp(Time: ${EXTEN} ${timezone})
exten => _X.,n,Wait(0.25)
exten => _X.,n,Answer()
exten => _X.,n,Set(FUTURETIME=$[${EPOCH} + 12])
exten => _X.,n,SayUnixTime(${FUTURETIME},Zulu,HNS)
exten => _X.,n,SayPhonetic(z)
exten => _X.,n,SayUnixTime(${FUTURETIME},${timezone},HNS)
exten => _X.,n,Playback(spy-local)
exten => _X.,n,WaitUntil(${FUTURETIME})
exten => _X.,n,Playback(beep)
exten => _X.,n,Return()

[ani]
exten => _X.,50000(ani),NoOp(ANI: ${EXTEN})
exten => _X.,n,Wait(0.25)
exten => _X.,n,Answer()
exten => _X.,n,Wait(1.00)
exten => _X.,n,SayDigits(${CALLERID(ani)})
exten => _X.,n,Wait(1.00)
exten => _X.,n,SayDigits(${CALLERID(ani)})      ; playback again in case of missed digit
exten => _X.,n,Wait(1.00)
exten => _X.,n,Playback(goodbye)
exten => _X.,n,Return()

[cohncom2]
include => default
include => ani
include => demo
include => incoming
include => telemarketer
include => local
include => trunklocal
include => weather
include => conference
include => channel_bank

exten => 6101,1,Set(CALLERID(num)=6101) 
exten => 6101,n,Dial(DAHDI/25,20,rt)
exten => 6101,n,Voicemail(6101,u)
exten => 6101,n,dial+101,Voicemail(6101,b)

exten => 6102,1,Set(CALLERID(num)=6102)
exten => 6102,n,Dial(DAHDI/26,20,rt)
exten => 6102,n,Playback(nbdy-avail-to-take-call)
exten => 6102,n,Wait(1)
exten => 6102,n,Playback(goodbye)
exten => 6102,n,Hangup()

exten => 4000,1,Gosub(ani)
exten => 4000,n,Hangup()

exten => 2222,1,Goto(telemarketer,s,1)
exten => 2222,n,Hangup()


exten => 6107,1,Goto(conference,6107,1)
exten => 6107,n,Hangup()

exten => 6109,1,Goto(weather,s,1)
exten => 6109,n,Hangup()


exten => 6103,1,Dial(SIP/6103,20,rt);
exten => 6103,n,Voicemail(6103,u)              ; Voicemail (unavailable)
exten => 6103,n,Hangup()                       ; s+1, same as n
exten => 6103,n,dial+101,Voicemail(6103,b)     ; Voicemail (busy)


exten => 6104,1,Dial(SIP/6104,20,rt);
exten => 6104,n,Voicemail(6104,u)              ; Voicemail (unavailable)
exten => 6104,n,Hangup()                       ; s+1, same as n
exten => 6104,n,dial+101,Voicemail(6104,b)     ; Voicemail (busy)


exten => 7001,1,Dial(DAHDI/1,20,rt)
exten => 7001,n,Playback(nbdy-avail-to-take-call)
exten => 7001,n,Playback(goodbye)
exten => 7001,n,Hangup

exten => 7002,1,Dial(DAHDI/2,20,rt)
exten => 7002,n,Playback(nbdy-avail-to-take-call)
exten => 7002,n,Playback(goodbye)
exten => 7002,n,Hangup

exten => 7003,1,Dial(DAHDI/3,20,rt)
exten => 7003,n,Playback(nbdy-avail-to-take-call)
exten => 7003,n,Playback(goodbye)
exten => 7003,n,Hangup

exten => 7004,1,Dial(DAHDI/4,20,rt)
exten => 7004,n,Playback(nbdy-avail-to-take-call)
exten => 7004,n,Playback(goodbye)
exten => 7004,n,Hangup

exten => 7005,1,Dial(DAHDI/5,20,rt)
exten => 7005,n,Playback(nbdy-avail-to-take-call)
exten => 7005,n,Playback(goodbye)
exten => 7005,n,Hangup

exten => 7006,1,Dial(DAHDI/6,20,rt)
exten => 7006,n,Playback(nbdy-avail-to-take-call)
exten => 7006,n,Playback(goodbye)
exten => 7006,n,Hangup

exten => 7007,1,Dial(DAHDI/7,20,rt)
exten => 7007,n,Playback(nbdy-avail-to-take-call)
exten => 7007,n,Playback(goodbye)
exten => 7007,n,Hangup

exten => 7008,1,Dial(DAHDI/8,20,rt)
exten => 7008,n,Playback(nbdy-avail-to-take-call)
exten => 7008,n,Playback(goodbye)
exten => 7008,n,Hangup

exten => 7009,1,Dial(DAHDI/9,20,rt)
exten => 7009,n,Playback(nbdy-avail-to-take-call)
exten => 7009,n,Playback(goodbye)
exten => 7009,n,Hangup

exten => 7010,1,Dial(DAHDI/10,20,rt)
exten => 7010,n,Playback(nbdy-avail-to-take-call)
exten => 7010,n,Playback(goodbye)
exten => 7010,n,Hangup

exten => 7011,1,Dial(DAHDI/11,20,rt)
exten => 7011,n,Playback(nbdy-avail-to-take-call)
exten => 7011,n,Playback(goodbye)
exten => 7011,n,Hangup

exten => 7012,1,Dial(DAHDI/12,20,rt)
exten => 7012,n,Playback(nbdy-avail-to-take-call)
exten => 7012,n,Playback(goodbye)
exten => 7012,n,Hangup

exten => 7013,1,Dial(DAHDI/13,20,rt)
exten => 7013,n,Playback(nbdy-avail-to-take-call)
exten => 7013,n,Playback(goodbye)
exten => 7013,n,Hangup

exten => 7014,1,Dial(DAHDI/14,20,rt)
exten => 7014,n,Playback(nbdy-avail-to-take-call)
exten => 7014,n,Playback(goodbye)
exten => 7014,n,Hangup

exten => 7015,1,Dial(DAHDI/15,20,rt)
exten => 7015,n,Playback(nbdy-avail-to-take-call)
exten => 7015,n,Playback(goodbye)
exten => 7015,n,Hangup

exten => 7016,1,Dial(DAHDI/16,20,rt)
exten => 7016,n,Playback(nbdy-avail-to-take-call)
exten => 7016,n,Playback(goodbye)
exten => 7016,n,Hangup

exten => 7017,1,Dial(DAHDI/17,20,rt)
exten => 7017,n,Playback(nbdy-avail-to-take-call)
exten => 7017,n,Playback(goodbye)
exten => 7017,n,Hangup

exten => 7018,1,Dial(DAHDI/18,20,rt)
exten => 7018,n,Playback(nbdy-avail-to-take-call)
exten => 7018,n,Playback(goodbye)
exten => 7018,n,Hangup

exten => 7019,1,Dial(DAHDI/19,20,rt)
exten => 7019,n,Playback(nbdy-avail-to-take-call)
exten => 7019,n,Playback(goodbye)
exten => 7019,n,Hangup

exten => 7020,1,Dial(DAHDI/20,20,rt)
exten => 7020,n,Playback(nbdy-avail-to-take-call)
exten => 7020,n,Playback(goodbye)
exten => 7020,n,Hangup

exten => 7021,1,Dial(DAHDI/21,20,rt)
exten => 7021,n,Playback(nbdy-avail-to-take-call)
exten => 7021,n,Playback(goodbye)
exten => 7021,n,Hangup

exten => 7022,1,Dial(DAHDI/22,20,rt)
exten => 7022,n,Playback(nbdy-avail-to-take-call)
exten => 7022,n,Playback(goodbye)
exten => 7022,n,Hangup

exten => 7023,1,Dial(DAHDI/23,20,rt)
exten => 7023,n,Playback(nbdy-avail-to-take-call)
exten => 7023,n,Playback(goodbye)
exten => 7023,n,Hangup

exten => 7024,1,Dial(DAHDI/24,20,rt)
exten => 7024,n,Playback(nbdy-avail-to-take-call)
exten => 7024,n,Playback(goodbye)
exten => 7024,n,Hangup

exten => 7025,1,Dial(DAHDI/25,20,rt)
exten => 7025,n,Playback(nbdy-avail-to-take-call)
exten => 7025,n,Playback(goodbye)
exten => 7025,n,Hangup

exten => 7026,1,Dial(DAHDI/26,20,rt)
exten => 7026,n,Playback(nbdy-avail-to-take-call)
exten => 7026,n,Playback(goodbye)
exten => 7025,n,Hangup









; Dialing other systems in the room
exten => _XXXX,1,Set(IPtocall=$[${EXTEN:0:2} + 70])
exten => _XXXX,n,Dial(IAX2/10.227.5.${IPtocall}/${EXTEN},25,rt)
exten => _XXXX,n,Hangup()

exten => 8500,1,VoiceMailMAin()

; exten => 5202826106,1,Dial(SIP/6104,20,rt)
exten => 5202826106,1,Goto(incoming,s,1)
exten => 5202826106,n,Hangup()
