rendered paste body[macro-stdexten]
exten => s,1,Set(extension=${ARG1})
exten => s,2,GotoIF($[${DB_EXISTS(EXT${extension}/FWDI)}=0]?NOTSETUP|1)
exten => s,3,Set(forward=${DB(EXT${extension}/FWDI)})
exten => s,4,GotoIf($[${forward}=NO]?DIAL|1)
exten => s,5,Set(type=I)
exten => s,6,Goto(FWD-${forward},1)
exten => NOTSETUP,1,Background(custom/extensionnotconfigured)
exten => NOTSETUP,2,Playback(custom/goodbye)
exten => NOTSETUP,3,Hangup
exten => FWD-NO,1,GotoIf($[${DIALSTATUS}=CHANUNAVAIL]?4)
exten => FWD-NO,2,Congestion(5)
exten => FWD-NO,3,Hangup
exten => FWD-NO,4,Playback(custom/channelnotresponding)
exten => FWD-NO,5,Playback(custom/goodbye)
exten => FWD-NO,6,Congestion(5)
exten => FWD-NO,7,Hangup
exten => FWD-VOICEMAIL,1,Set(box=${DB(EXT${extension}/FWD${type}TARGET)})
exten => FWD-VOICEMAIL,n,Set(msg=${DB(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,Set(extension=${DB(EXT${extension}/FWD${type}TARGET)})
exten => FWD-EXTENSION,n,Goto(s,2)
exten => FWD-EXTERNAL,1,Set(externalnumber=${DB(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,Set(dnd=${DB(EXT${extension}/DND)})
exten => DIAL,n,GotoIf($[${dnd}=YES]?DIAL-BUSY|1)
exten => DIAL,n,Set(tech=${DB(EXT${extension}/TECH)})
exten => DIAL,n,Dial(${tech}/${extension},15)
exten => DIAL,n,Goto(DIAL-${DIALSTATUS},1)
exten => DIAL-BUSY,1,Set(forward=${DB(EXT${extension}/FWDB)})
exten => DIAL-BUSY,2,Set(type=B)
exten => DIAL-BUSY,3,Goto(FWD-${forward},1)
exten => DIAL-NOANSWER,1,Set(forward=${DB(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