All pastes #32547 Raw Edit

Mine

public text v1 · immutable
#32547 ·published 2005-12-05 18:33 UTC
rendered paste body
; An Extensions.conf that WORKS <----

[general]

static=yes
writeprotect=no
autofallthrough=no

[globals]

CONSOLE=Console/dsp ; Console interface for demo

[macro-stdexten]

;exten => s,1,GotoIf($[${CALLERID(number)}=${ARG1}]?500) ; Dial yourself to access VM

exten => s,1,Set(extension=${ARG1})
exten => s,2,DBget(forward=EXT${extension}/FWDI)
exten => s,3,GotoIf($[${forward}=NO]?DIAL|1)
exten => s,4,Set(type=I)
exten => s,5,Goto(fwd-${forward},1)
exten => s,103,Macro(setup-entension,${extension})
exten => s,104,Goto(DIAL,1)

exten => fwd-NO,1,Hangup

exten => fwd-VOICEMAIL,1,DBGet(box=EXT${extension}/FWD${type}TARGET)
exten => fwd-VOICEMAIL,2,DBGet(msg=EXT${extension}/FWD${type}DATA)
exten => fwd-VOICEMAIL,3,Voicemail(${msg}${box)})
exten => fwd-VOICEMAIL,4,Hangup

exten => fwd-EXTENSION,1,DBGet(extension=EXT${extension}/FWD${type}TARGET)
exten => fwd-EXTENSION,2,Goto(s,2)

exten => fwd-EXTERNAL,1,DBGet(externalnumber=EXT${extension}/FWD${type}TARGET)
exten => fwd-EXTERNAL,2,Dial(Local/${externalnuber}@full)
exten => fwd-EXTERNAL,3,Hangup

exten => DIAL,1,DBGet(dnd=EXT${extension}/DND)
exten => DIAL,2,GotoIf($[${dnd}=YES]?DIAL-BUSY|1)
exten => DIAL,3,DBGet(tech=EXT${extension}/TECH)
exten => DIAL,4,Dial(${tech}/${extension},15)
exten => DIAL,5,Goto(DIAL-${DIALSTATUS},1) 

exten => DIAL-BUSY,1,DBGet(forward=EXT${extension}/FWDB)
exten => DIAL-BUSY,2,Set(type=B)
exten => DIAL-BUSY,3,Goto(fwd-${forward},1)
exten => DIAL-BUSY,4,Hangup

exten => DIAL-NOANSWER,1,DBGet(forward=EXT${extension}/FWDU)
exten => DIAL-NOANSWER,2,Set(type=U)
exten => DIAL-NOANSWER,3,Goto(fwd-${forward},1)
exten => DIAL-NOANSWER,4,Hangup

exten => _DIAL-.,1,Goto(DIAL-NOANSWER,1) ; Treat anything else as no answer 

exten => s,500,VoicemailMain(${extension})
exten => s,501,2,Hangup

[macro-setup-extension]

exten => s,1,Set(theexten=${ARG1})
exten => s,n,DBput(EXT${theexten}/TECH=SIP)
exten => s,n,DBput(EXT${theexten}/HASVM=NO)
exten => s,n,DBput(EXT${theexten}/VMBOX=0)
exten => s,n,DBput(EXT${theexten}/DND=NO)

exten => s,n,DBput(EXT${theexten}/FWDI=NO)
exten => s,n,DBput(EXT${theexten}/FWDITARGET=NO)
exten => s,n,DBput(EXT${theexten}/FWDIDATA=NO)

exten => s,n,DBput(EXT${theexten}/FWDB=NO)
exten => s,n,DBput(EXT${theexten}/FWDBTARGET=NO)
exten => s,n,DBput(EXT${theexten}/FWDBDATA=NO)

exten => s,n,DBput(EXT${theexten}/FWDU=NO)
exten => s,n,DBput(EXT${theexten}/FWDUTARGET=NO)
exten => s,n,DBput(EXT${theexten}/FWDUDATA=NO)

[forwarding-menu]

exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Background(forwardingmenu)
exten => s,4,Set(TIMEOUT(digit)=3)
exten => s,5,Set(TIMEOUT(response)=15)

; 1 - Immediate
exten => 1,1,Set(fwdtype=I)
exten => 1,2,Goto(forwarding-type,s,1)

; 2 - Busy
exten => 2,1,Set(fwdtype=B)
exten => 2,2,Goto(forwarding-type,s,1)

; 3 - Unavailable
exten => 3,1,Set(fwdtype=U)
exten => 3,2,Goto(forwarding-type,s,1)

exten => i,1,Playback(pleasetryagain)
exten => i,2,Goto(s,3)

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

[forwarding-type]

exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Background(forwardingtypemenu)
exten => s,4,Set(TIMEOUT(digit)=3)
exten => s,5,Set(TIMEOUT(response)=15)

; 1 - None
exten => 1,1,DBput(EXT${fwdsource}/FWD${fwdtype}=NO)
exten => 1,2,DBput(EXT${fwdsource}/FWD${fwdtype}TARGET=NO)
exten => 1,3,DBput(EXT${fwdsource}/FWD${fwdtype}DATA=NO)
exten => 1,4,Playback(forwardingtype${fwdtype})
exten => 1,5,Playback(removed)
exten => 1,6,Hangup

; 2 - Voicemail
exten => 2,1,Goto(forwarding-voicemail,s,1)

; 3 - Extension
exten => 3,1,Goto(forwarding-extension,s,1)

; 4 - External
exten => 4,1,Goto(forwarding-external,s,1)

exten => i,1,Playback(pleasetryagain)
exten => i,2,Goto(s,3)

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

[forwarding-voicemail]

exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Background(entervoicemailbox)
exten => s,4,Read(fwdvmbox)
exten => s,5,Gotoif($[${LEN(fwdvmbox)}<1]?100)

exten => s,6,Background(forwardtovmbox)
exten => s,7,SayDigits(fwdvmbox)
exten => s,8,Background(press1toaccept)
exten => s,9,Background(press2tochange)
exten => s,10,Set(TIMEOUT(digit)=3)
exten => s,11,Set(TIMEOUT(response)=15)

exten => s,100,Playback(pleasetryagain)
exten => s,101,Goto(s,3)

; 1 - Accept
exten => 2,1,Goto(forwarding-voicemail-playmsg)

; 2 - Change
exten => 2,1,Goto(s,3)

exten => i,1,Playback(pleasetryagain)
exten => i,2,Goto(s,6)

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

[macro-forwarding-voicemail-playmsg]

exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Background(selectmsgtoplay)
exten => s,4,Set(TIMEOUT(digit)=3)
exten => s,5,Set(TIMEOUT(response)=15)

; None
exten => 1,1,Set(fwdvmplaymsg=)
exten => 1,2,Goto(forwarding-voicemail-set,s,1)

; Busy
exten => 2,1,Set(fwdvmplaymsg=b)
exten => 2,2,Goto(forwarding-voicemail-set,s,1)

; Unavailable
exten => 3,1,Set(fwdvmplaymsg=u)
exten => 3,2,Goto(forwarding-voicemail-set,s,1)

exten => i,1,Playback(pleasetryagain)
exten => i,2,Goto(s,3)

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

[macro-forwarding-voicemail-set]

exten => s,1,Answer
exten => s,n,DBput(EXT${fwdsource}/FWD${fwdtype}=VOICEMAIL)
exten => s,n,DBput(EXT${fwdsource}/FWD${fwdtype}TARGET=${fwdvmbox})
exten => s,n,DBput(EXT${fwdsource}/FWD${fwdtype}DATA=${fwdvmplaymsg})
exten => s,n,Playback(forwardingtype${ARG2})
exten => s,n,Playback(configured)
exten => s,n,Hangup

[macro-forwarding-extension]

exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Background(enterextension)
exten => s,n,Read(fwdextension)
exten => s,n,Gotoif($[${LEN(fwdextension)}<>4]?100)
exten => s,n,Gotoif($[${fwdextension}<1000]?100)
exten => s,n,Gotoif($[${fwdextension}>8999]?100)

exten => s,n,DBput(EXT${fwdsource}/FWD${fwdtype}=EXTENSION)
exten => s,n,DBput(EXT${fwdsource}/FWD${fwdtype}TARGET=${fwdextension})
exten => s,n,DBput(EXT${ARG1}/FWD${ARG2}DATA=NO)

exten => s,n,Playback(forwardingtype${fwdtype})
exten => s,n,Playback(settoextension)
exten => s,n,SayDigits(fwdextension)
exten => s,n,Playback(configured)
exten => s,n,Hangup

exten => s,100,Playback(pleasetryagain)
exten => s,101,Goto(s,3)

[forwarding-external]

exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Background(enterextension)
exten => s,n,Read(fwdexternal)
exten => s,n,Gotoif($[${LEN(fwdexternal)}<2?100)
exten => s,n,Gotoif($[${fwdexternal:1:1}<>9]?100)

exten => s,n,DBput(EXT${fwdsource}/FWD${fwdtype}=EXTERNAL)
exten => s,n,DBput(EXT${fwdsource}/FWD${fwdtype}TARGET=${fwdexternal})
exten => s,n,DBput(EXT${fwdsource}/FWD${fwdtype}DATA=NO)

exten => s,n,Playback(forwardingtype${fwdtype})
exten => s,n,Playback(settoextension)
exten => s,n,SayDigits(fwdexternal)
exten => s,n,Playback(configured)
exten => s,n,Hangup

exten => s,100,Playback(pleasetryagain)
exten => s,101,Goto(s,3)

[features]

; Record new prompts.  Don't forget to rename and move these!
exten => *40,1,Answer 
exten => *40,2,Playback(pleaserecordafterbeep) 
exten => *40,3,Record(/tmp/asterisk-recording:gsm) 
exten => *40,4,Wait(2) 
exten => *40,5,Playback(/tmp/asterisk-recording) 
exten => *40,6,Wait(2) 
exten => *40,7,Hangup 

; Playback the last recorded prompt
exten => *41,1,Answer 
exten => *41,2,Wait(1)
exten => *41,3,Playback(/tmp/asterisk-recording) 
exten => *41,4,Hangup 

; Test out our main menu
exten => *42,1,Goto(mainmenu,s,1)

; test to hear your CallerID
exten => *43,1,Answer
exten => *43,2,Playback(yourcalleridis)
exten => *43,3,SayDigits(${CALLERID(number)})
exten => *43,4,Hangup

; Queue Login
exten => *50,1,AgentCallbackLogin(${CALLERID(number)}|${CALLERID(number)}@QueueAgentCallback)

; Queue Logout (need to enter NOTHING)
exten => *51,1,AgentCallbackLogin()

; Queue Pause Agent
exten => *52,1,Answer
exten => *52,2,PauseQueueMember(Agent/${CALLERID(number)})
exten => *52,3,Playback(agentpaused)
exten => *52,4,Hangup

; Queue Unpause Agent
exten => *53,1,Answer
exten => *53,2,UnpauseQueueMember(Agent/${CALLERID(number)})
exten => *53,3,Playback(agentunpaused)
exten => *53,4,Hangup

; Voicemail (by added mailbox #)
exten => _*97.,1,Answer
exten => _*97.,2,VoicemailMain(${EXTEN:3}@default)
exten => _*97.,3,Hangup

; Voicemail (by callerID)
exten => *98,1,Answer
exten => *98,2,VoicemailMain(${CALLERID(number)$}@default)
exten => *98,3,Hangup

; Voicemail (main)
exten => *99,1,Answer
exten => *99,2,VoicemailMain()
exten => *99,3,Hangup

[callqueue]

exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Set(CALLERID(name)= Q:${CALLERID(name)})
exten => s,4,Playback(welcometomyqueue)
exten => s,5,Queue(myqueue)
exten => s,6,VoiceMail(u5555)
exten => s,7,Hangup

[QueueAgentCallback]

exten => _XXXX,1,ChanIsAvail(SIP/${EXTEN},s,)
exten => _XXXX,102,Set(DIALSTATUS=BUSY)
exten => _XXXX,103,Hangup
exten => _XXXX,2,Dial(SIP/${EXTEN},15)

exten => t,1,hangup

[QueueMenu]

exten => #,1,VoiceMail(u5555)
exten => #,2,Hangup

[local-internal]

; Floor 2 (Main) Cordless
exten => 2021,hint,SIP/2031
exten => 2021,1,Macro(stdexten,2021,0)

; Floor 3 (Office) SPA-941
exten => 2031,hint,SIP/2031
exten => 2031,1,Macro(stdexten,2031,0)

; Floor 3 (Office) Aastra PT390
exten => 2032,hint,SIP/2002
exten => 2032,1,Macro(stdexten,2032,0)

; Floor 3 (Bedroom) Wireless
exten => 2033,hint,SIP/2003
exten => 2033,1,Macro(stdexten,2033,0)

[receivefax]
exten => s,1,SetVar(FAXFILE=/var/spool/asterisk/fax/${UNIQUEID}.tif)
exten => s,2,rxfax(${FAXFILE})

[incoming]
; this is where voip stuff comes in on right now....

exten => s,1,NoOp("S" incoming connection)
exten => s,2,NoOp(CallerID "${CALLERID(name)}" <${CALLERID(number)}>)
exten => s,3,Goto(mainmenu,s,1)

exten => i,1,NoOp(INVALID incoming connection)
exten => i,2,NoOp(CallerID "${CALLERID(name)}" <${CALLERID(number)}>)
exten => i,3,Goto(mainmenu,s,1)

exten => 8323,1,NoOp("Belanger 8323 incoming connection)
exten => 8323,2,NoOp(CallerID "${CALLERID(name)}" <${CALLERID(number)}>)
exten => 8323,3,Goto(mainmenu,s,1)

exten => 5144264825,1,GotoIf($["${CALLERID(name)}"="Incoming Line"]?5)
exten => 5144264825,2,Goto(mainmenu,s,1)
exten => 5144264825,5,Set(CALLERID(name)=No CID Name)
exten => 5144264825,6,Goto(mainmenu,s,1)

include => local-internal

[mainmenu]

exten => fax,1,Goto(receivefax,s,1)

exten => s,1,Answer
exten => s,2,NoOp(Filler 1)
exten => s,3,Set(iATTEMPTS=0)
exten => s,4,Set(tATTEMPTS=0)

exten => s,5,Background(welcomemessage)
exten => s,6,Background(pleaseenterextension)
exten => s,7,NoOp(Filler 2)
exten => s,8,Set(TIMEOUT(digit)=3)
exten => s,9,Set(TIMEOUT(response)=15)

exten => h,1,Hangup

exten => i,1,Set(iATTEMPTS=$[${iATTEMPTS}+1])
exten => i,2,GotoIf($[${iATTEMPTS}=4]:?4])
exten => i,3,Goto(s,5)
exten => i,4,Playback(sorryyouarehavingtrouble)
exten => i,5,Hangup

exten => t,1,Set(tATTEMPTS=$[${tATTEMPTS}+1])
exten => t,2,GotoIf($[${tATTEMPTS}=4]:?4])
exten => t,3,Goto(s,5)
exten => t,4,Playback(sorryyouarehavingtrouble)
exten => t,5,Hangup

include => local-internal ; Let them dial internal extensions directly

; **************** Leaving this in just to examine later ************
[ext-fax]

exten => s,1,Answer
exten => s,2,Goto(in_fax,1)
exten => in_fax,1,GotoIf($[${FAX_RX} = system]?2:analog_fax,1)
exten => in_fax,2,Macro(faxreceive)
exten => in_fax,3,system(tiff2ps -2eaz -w 8.5 -h 11 ${FAXFILE} | ps2pdf - ${FAXFILE}.pdf)
exten => in_fax,4,system(mime-construct --to ${EMAILADDR} --subject "Fax from ${CALLERIDNUM} ${CALLERIDNAME}" --attachment ${CALLERIDNUM}.pdf --type application/pdf --file ${FAXFILE}.pdf)
exten => in_fax,5,system(rm ${FAXFILE} ${FAXFILE}.pdf)
exten => in_fax,6,Hangup
exten => analog_fax,1,GotoIf($[${FAX_RX} = disabled]?3:2)  ;if fax is disabled, just hang up
exten => analog_fax,2,DBGet(DIAL=DEVICE/${FAX_RX}/dial);
exten => analog_fax,3,Dial(${DIAL},20,d)
exten => analog_fax,4,Hangup
;exten => out_fax,1,wait(7)
exten => out_fax,1,txfax(${TXFAX_NAME}|caller)
exten => out_fax,2,Hangup
exten => h,1,Hangup()

; *******************************************************************

[local-external]

;exten => _9x.,1,Dial(SIP/2999/${EXTEN:1})
;exten => _9x.,2,Congestion

[belanger-external]

exten => _9x.,1,Dial(SIP/8323/9${EXTEN:1})
exten => _9x.,2,Congestion

[belanger-internal]

exten => _8xxx,1,Dial(SIP/8323/${EXTEN})
exten => _8xxx,2,Congestion

[guest]

include => local-internal
include => features

[full]

include => guest
include => local-external
include => belanger-internal
include => belanger-external