; screen global -- yuck, default to hungup SCREEN_HUNGUP=1 ALLSTATIONS=Local/101@screen&Local/102@screen&Local/105@screen [incoming_calls] exten => s,1,Goto(in|1) exten => _XX.,1,Goto(in|1) exten => in,1,NoOp(Answering call) ; o=callerid, g=proceed if dest hangs up, j=jump to [12]01, M=Macro exten => in,2,Dial(${ALLSTATIONS},${SCREENTIMEOUT},og) ;P exten => in,n,NoOp(Dialstatus = ${DIALSTATUS}, screen_hungup = ${SCREEN_HUNGUP}) exten => in,n,Wait(5) exten => in,n,GotoIf($[${DIALSTATUS} = ANSWER & ${SCREEN_HUNGUP} = 0] ?done:) exten => in,n,Goto(vm) exten => in,500(vm),Answer() exten => in,n,Voicemail(1234|u) exten => in,n(done),Hangup() exten => t,1,Hangup() [macro-screen] exten => s,1,Wait(0.2) exten => s,n,NoOp(${SCREEN_HUNGUP}) exten => s,n,Playback(followme/call-from) ;exten => s,n,SayDigits(${CALLERID(num)}) exten => s,n,Read(ACCEPT|followme/options|1) exten => s,n,GotoIf($[${EXISTS(${ACCEPT})} = 0] ?no) exten => s,n,GotoIf($[${ACCEPT} = 1 ] ?yes) exten => s,n,Goto(no) exten => s,n+1(no),Set(MACRO_RESULT=CONTINUE) exten => s,n+1(yes),Set(SCREEN_HUNGUP=0|g) [macro-callwithscreen] exten => s,1,NoOp(exten: ${ARG1}) exten => s,n,Dial(Local/${ARG1}@phones,${SCREENTIMEOUT},M(screen)) [screen] exten => _XXX,1,Macro(callwithscreen|${EXTEN}) exten => t,1,NoOp(Timeout in screen) Log excerpt: -- Executing [s@macro-screen:4] Read("SIP/rlaptop-08237220", "ACCEPT|followme/options|1") in new stack -- Accepting a maximum of 1 digits. -- Playing 'followme/options' (language 'en') -- User disconnected == Spawn extension (macro-screen, s, 4) exited non-zero on 'SIP/rlaptop-08237220' in macro 'screen' == Spawn extension (macro-callwithscreen, s, 2) exited non-zero on 'Local/105@screen-9038,2' in macro 'callwithscreen' == Spawn extension (macro-callwithscreen, s, 2) exited non-zero on 'Local/105@screen-9038,2' -- Local/105@screen-9038,1 answered SIP/from-voicepulse-08223a38 -- Executing [in@incoming_calls:3] NoOp("SIP/from-voicepulse-08223a38", "Dialstatus = ANSWER| screen_hungup = 1") in new stack