; Pretty simple extensions.conf file for Asterisk 1.2 which includes extensions for 4 users at different extensions,
; a meetme conference room, voicemail and calling out for authenticated users.
; Written by Rob Russell, Late Night PC Service,
http://www.latenightpc.com/blog/
; Do what you want with this file but I offer no warranty on it's use, misuse or abuse.
; Read a description of this file at
http://www.latenightpc.com/blog/archives/2006/11/19/taking-the-call-my-e...
[general]
writeprotect=no
autofallthrough=yes
clearglobalvars=yes
priorityjumping=no
[globals]
; "the only limiting factor is that macros use only the s extension." p128 from TFOT
[macro-mainmenu-login]
exten => s,1,SayDigits(${ARG1})
exten => s,n,VMAuthenticate(${ARG1})
[macro-mainmenu-voicemail]
; ${ARG1} is the user's extension
; calling example for extension 55
; exten => 7, 1, macro(mainmenu-voicemail, 55)
exten => s,1,VoicemailMain(s${ARG1})
exten => s,n,Goto(known-user,s,nextchoice)
[macro-mainmenu-default-conference]
; ${ARG1} is the user's extension
; calling example for extension 55
; exten => 8, 1, macro(mainmenu-default-conference, 55)
exten => s,1,meetme(101,,123456)
exten => s,n,Goto(known-user,s,nextchoice)
[macro-mainmenu-outbound]
; ${ARG1} is the user's extension
; ${ARG2} is ${EXTEN}
; calling example for extension 55
; exten => _9XXXXXXXXXXX,1,macro(mainmenu-outbound, 55, ${EXTEN})
exten => s,1,Dial(SIP/lesnet_peer/${EXTEN:1})
exten => s,n,Goto(known-user,s,nextchoice)
[macro-calluser]
; ${ARG1} is the user's outside extension, often we're connecting over SIP to PSTN
; so something like 'SIP/lesnet_peer/15195551212'
; allow dialing out, phonebook dialing and voicemail
exten => s,1,SayDigits(${MACRO_EXTEN})
exten => s,n,Dial(${ARG1},30) ; Ring the interface, 30 seconds maximum
exten => s,n,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-NOANSWER,1,Voicemail(u${MACRO_EXTEN}) ; If unavailable, send to voicemail w/ unavail announce
exten => s-NOANSWER,2,Goto(incoming,s,1) ; If they press #, return to start
exten => s-BUSY,1,Voicemail(${MACRO_EXTEN}b) ; If busy, send to voicemail w/ busy announce
exten => s-BUSY,2,Goto(incoming,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(${MACRO_EXTEN}) ; If they press *, send the user into VoicemailMain
[lesnet-incoming]
exten => _X.,1,Answer ; Answer the line
exten => _X.,n,Goto(incoming,s,1)
[incoming]
exten => s,1,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(rob-enter-extension-or-2) ; "Enter the extension of the party you wish to reach or press 2 for a list of extensions"
exten => s,n,WaitExten ; Wait for an extension to be dialed.
;exten => _[67][0-9]!,1,Set(TRYEXT=${EXTEN})
;exten => _[67][0-9]!,1,Macro(calluser,1)
exten => _1[67]X,1,Set(TRYEXT=${EXTEN:1})
exten => _1[67]X,n,Goto(known-user,s,1)
;exten => 177,1,Goto(known-user,s,1)
exten => 77,1,Macro(calluser,SIP/lesnet_peer/15195551212) ; Rob
exten => 63,1,Macro(calluser,SIP/lesnet_peer/15195551213) ; Alex
exten => 71,1,Macro(calluser,SIP/lesnet_peer/15195551214) ; Candace
exten => 72,1,Macro(calluser,SIP/lesnet_peer/18475551215) ; Jeff
exten => t,1,Goto(s,restart)
exten => i,1,Playback(invalid) ; "That's not valid, try again"
exten => i,n,Goto(s,restart)
[known-user]
;7 for voicemail
;8 for meetings
;9 to dial out
exten => s,1,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), Macro(mainmenu-login,${TRYEXT},1)
exten => s,n(nextchoice), NoOp()
exten => s,n,WaitExten ; Wait for an extension to be dialed.
exten => 7,1,macro(mainmenu-voicemail,${TRYEXT})
exten => 8,1,macro(mainmenu-default-conference,${TRYEXT})
exten => _9XXXXXXXXXXX,1,macro(mainmenu-outbound,${TRYEXT},${EXTEN})
exten => t,1,Goto(s,nextchoice)
exten => i,1,Playback(invalid) ; "That's not valid, try again"
exten => i,n,Goto(s,nextchoice)