[macro-level1] exten => s,1,Set(ref=${ARG1}) exten => s,2,Goto(sw-4-${ref}|1) exten => s,3,NoOp(Finish switch-level1-4) exten => sw-4-postcall,1,Verbose(1|Entering ${CONTEXT} with ARG1 = ${ARG1}) exten => sw-4-postcall,2,Macro(level2|postcall) exten => sw-4-postcall,3,Verbose(1|Exiting ${CONTEXT}) exten => sw-4-postcall,4,Goto(s|3) exten => sw-4-precall,1,Verbose(1|Entering ${CONTEXT} with ARG1 = ${ARG1}) exten => sw-4-precall,2,Macro(level2|precall) exten => sw-4-precall,3,Verbose(1|Exiting ${CONTEXT}) exten => sw-4-precall,4,Goto(s|3) [macro-level2] exten => s,1,Set(ref=${ARG1}) exten => s,2,Goto(sw-5-${ref}|1) exten => s,3,NoOp(Finish switch-level2-5) exten => sw-5-postcall,1,Verbose(1|Entering ${CONTEXT} with ARG1 = ${ARG1}) exten => sw-5-postcall,2,Macro(level3|"-----POST CALL-------") exten => sw-5-postcall,3,Verbose(1|Exiting ${CONTEXT}) exten => sw-5-postcall,4,Goto(s|3) exten => sw-5-precall,1,Verbose(1|Entering ${CONTEXT} with ARG1 = ${ARG1}) exten => sw-5-precall,2,Macro(level3|"This should be output ONLY during PRECALL") exten => sw-5-precall,3,Verbose(1|Exiting ${CONTEXT}) exten => sw-5-precall,4,Goto(s|3) [macro-level3] exten => s,1,Set(ref=${ARG1}) exten => s,2,Verbose(1|Entering ${CONTEXT} with ARG1 = ${ARG1}) exten => s,3,Verbose(1|${ref}) exten => s,4,Verbose(1|Exiting ${CONTEXT}) [workext] exten => 772,1,Verbose(1|Start Test Call In ${CONTEXT}) exten => 772,2,Macro(level1|precall) exten => 772,3,Dial(Zap/1/13075878001|60|g) exten => 772,4,Verbose(1|Far side hung up| manually hanging up local side and continuing to h exten) exten => 772,5,Softhangup(${CHANNEL}) exten => 772,6,Goto(h|1) exten => h,1,NoOp(Hey-- you just hung up| there!!) exten => h,2,Verbose(1|Entering ${EXTEN} extension in ${CONTEXT}) exten => h,3,Macro(level1|postcall) exten => h,4,Verbose(1|ALL 3 macros should have been run| check your output) exten => h,5,Verbose(1|Finishing post call processing)