[macro-dial-std-exten] ; ; test for CFIM (Call Forwarding Immediate) exten=s,1,DBget(temp=CFIM/${MACRO_EXTEN}) exten=s,2,Goto(default,${temp}) ; no CFIM exten=s,102,DBGet(temp=DND/${MACRO_EXTEN}) ; no CFIM, DND set exten=s,103,GotoIf($[${ARG2}vm = 1vm]?105:104) ; no CFIM, DND set, but no voicemaiL: ;TODO: set cause code exten=s,104,Hangup ; no CFIM, DND set, voicemail set: exten=s,105,Macro(voicemail,u${MACRO_EXTEN}) exten=s,106,Hangup ; no CFIM, no DND exten=s,203,DBGet(dsec=DSEC/${MACRO_EXTEN}) exten=s,204,NoOp exten=s,205,DBGet(dopt=DOPT/{MACRO_EXTEN}) exten=s,206,NoOp exten=s,207,Dial(${ARG1},${dsec},${dopt}) ; Dial result Dial Timeout exten=s,208,SetVar(vmopt=u) exten=s,209,Noop exten=s,210,DBGet(temp=CFBS/${MACRO_EXTEN}) exten=s,211,Goto(default,${temp}) ; no CFIM, no DND, no DSEC (Dial Seconds) exten=s,304,SetVar(dsec=5) exten=s,305,Goto(205) ; no CFIM, no DND, no DOPT (Dial Options) exten=s,306,SetVar(dopt=Ttr) exten=s,307,Goto(207) ; Dial result was Unavailable exten=s,308,SetVar(vmopt=b) exten=s,309,Noop exten=s,310,Goto(210) ; it was busy, CFBS not set exten=s,311,GotoIf($[${ARG2}vm = 1vm]?313:312) exten=s,312,Hangup exten=s,313,Macro(voicemail,${vmopt}${MACRO_EXTEN}) ; ; format: Macro(voicemail,) ; [macro-voicemail] exten => s,1,Answer exten => s,2,Wait(1) exten => s,3,VoiceMail2(${ARG1})