[macro-stdexten]
; Standard extension macro
; ${ARG1} - Tech
; ${ARG2} - Extension
; ${ARG3} - VM Box
; Usage : exten => 1000,1,Macro(stdexten,[SIP/IAX2/ZAP],[EXTENSION],[VMBOX])
exten => s,1,GotoIf($[${CALLERID(num)}=${ARG2}]?a|1)
exten => s,2,Dial(${ARG1}/${ARG2},20) ; Ring the interface, 20 seconds maximum
exten => s,3,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-BUSY,1,GotoIf($[${ARG3}=NONE]?:3) ; If no VM just give Congestion for 5 seconds
exten => s-BUSY,2,Voicemail(b${ARG3})
exten => s-BUSY,3,Congestion(5)
exten => s-BUSY,4,Hangup
exten => s-NOANSWER,1,GotoIf($[${ARG3}=NONE]?:3) ; If no VM just give Congestion for 5 seconds
exten => s-NOANSWER,2,Voicemail(u${ARG3})
exten => s-NOANSWER,3,Congestion(5)
exten => s-NOANSWER,4,Hangup
exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer
exten => a,1,VoiceMailMain(${ARG3}) ; Extension either called itself or hit * in voicemail.
exten => a,2,Congestion(5)
exten => a,3,Hangup