[macro-stdexten]
;
; Standard extension macro:
; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well
; ${ARG2} - Device(s) to ring
; Retrieve the Call Forward number if available.
exten => s,1,Set(CFIM=${DB(CFIM/${ARG1:-4})})
;
; Dial the appropriate number depending on whether the Call Forward
exten => s,n,GotoIf($["${vmbox}"!=""]?s-NoCFIM,1)
exten => s,n,Set(_vmbox=${MACRO_EXTEN:-4})
exten => s,n,GotoIf($["${CFIM}"!=""]?s-CFIM,1:s-NoCFIM,1)
;
; Hangup.
exten => s,n,Hangup
;
; Dial Call Forward number & return.
exten => s-CFIM,1,SetCIDName(Forwarded From ${vmbox})
exten => s-CFIM,n,Dial(Local/${CFIM},30,Ttr)
exten => s-CFIM,n,GosubIf($[${DIALSTATUS}=NOANSWER]?s-NOANSWER,1:s-BUSY,1)
exten => s-CFIM,n,Hangup
; Dial actual extension & return.
exten => s-NoCFIM,1,Dial(${ARG1},30,Ttr)
exten => s-NoCFIM,n,GosubIf($[${DIALSTATUS}=NOANSWER]?s-NOANSWER,1:s-BUSY,1)
exten => s-NoCFIM,n,Hangup
;
; Unavailable voicemail message if there is no answer.
exten => s-NOANSWER,1,Voicemail(u${vmbox})
exten => s-NOANSWER,n,Return
; Busy voicemail message for any DIALSTATUS other than NOANSWER (or ANSWER).
exten => s-BUSY,1,Voicemail(b${vmbox})
exten => s-BUSY,n,Return