rendered paste body[macro-stdexten]
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-extension,${extension})
exten => s,104,Goto(DIAL,1)
exten => fwd-NO,1,Playback(custom/goodbye)
exten => fwd-NO,n,Hangup
exten => fwd-VOICEMAIL,1,DBGet(box=EXT${extension}/FWD${type}TARGET)
exten => fwd-VOICEMAIL,n,DBGet(msg=EXT${extension}/FWD${type}DATA)
exten => fwd-VOICEMAIL,n,Voicemail(${msg}${box})
exten => fwd-VOICEMAIL,n,Playback(custom/goodbye)
exten => fwd-VOICEMAIL,n,Hangup
exten => fwd-EXTENSION,1,DBGet(extension=EXT${extension}/FWD${type}TARGET)
exten => fwd-EXTENSION,n,Goto(s,2)
exten => fwd-EXTERNAL,1,DBGet(externalnumber=EXT${extension}/FWD${type}TARGET)
exten => fwd-EXTERNAL,n,Dial(Local/${externalnumber}@full)
exten => fwd-EXTERNAL,n,Playback(custom/goodbye)
exten => fwd-EXTERNAL,n,Hangup
exten => DIAL,1,DBGet(dnd=EXT${extension}/DND)
exten => DIAL,n,GotoIf($[${dnd}=YES]?DIAL-BUSY|1)
exten => DIAL,n,DBGet(tech=EXT${extension}/TECH)
exten => DIAL,n,Dial(${tech}/${extension},15)
exten => DIAL,n,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-NOANSWER,1,DBGet(forward=EXT${extension}/FWDU)
exten => DIAL-NOANSWER,2,Set(type=U)
exten => DIAL-NOANSWER,3,Goto(fwd-${forward},1)
exten => _DIAL-.,1,Goto(DIAL-NOANSWER,1) ; Treat anything else as no answer
exten => a,1,VoicemailMain(${box}) ; Press * during VM message to enter
exten => a,n,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)