[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)