[macro-stdexten] ; ; Standard extension macro: ; ${ARG1} - Device(s) to ring ; ${ARG2} - flags for Dial: if empty: tr. pass '-' for no flags. ; ${ARG3} - voicemail box. If empty: use the extension number. exten => s,1,SetVar(VMBOX=${MACRO_EXTEN}); default for VMBOX, if no ARG3 exten => s,2,GotoIf($[${LEN(${ARG3})} > 0]?4) exten => s,3,SetVar(VMBOX=${ARG3}) ; Ring the interface, 20 seconds maximum exten => s,4,SetVar(FLAGS=tr) ; why 'x'? see bourne shell 101 exten => s,5,GotoIf($[ "x${ARG2}" : x- ]:7); '-' as the 'flags' argument exten => s,6,SetVar(FLAGS=${ARG2}) exten => s,7,Dial(${ARG1},20,${ARG2}) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s,8,Goto(s-${DIALSTATUS},1) ; If unavailable, send to voicemail w/ unavail announce exten => s-NOANSWER,1,Voicemail(u${VMBOX}) ; If they press #, return to start exten => s-NOANSWER,2,Goto(default,s,1) ; If busy, send to voicemail w/ busy announce exten => s-BUSY,1,Voicemail(b${VMBOX}) ; If they press #, return to start exten => s-BUSY,2,Goto(default,s,1) ; Treat anything exten => _s-.,1,Goto(s-NOANSWER,1) ;