[inbound] exten => _X.,1,Macro(dialout-trunk,1,${EXTEN},,) exten => _X.,n,Macro(outisbusy,) [general] static=yes writeprotect=no autofallthrough=no clearglobalvars=no [globals] DIAL_OPTIONS = tr TRUNK_OPTIONS = r OUTMAXCHANS_1 =50 OUTPREFIX_1 =00 OUT_1 = SIP/VD-OUT [macro-dialout-trunk] exten => s,1,Set(DIAL_TRUNK=${ARG1}) exten => s,n,Set(DIAL_NUMBER=${ARG2}) exten => s,n,Set(DIAL_TRUNK_OPTIONS=${DIAL_OPTIONS}) exten => s,n,Set(GROUP()=OUT_${DIAL_TRUNK}) exten => s,n,Set(DIAL_TRUNK_OPTIONS=${TRUNK_OPTIONS}) exten => s,n,GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]?nomax) exten => s,n(checkmax),GotoIf($[ ${GROUP_COUNT()} > ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull) exten => s,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER}) exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM},300,${DIAL_TRUNK_OPTIONS}) exten => s,n,Goto(s-${DIALSTATUS},1) exten => s,n(chanfull),Noop(max channels used up) exten => s-BUSY,1,NoOp(Dial failed due to trunk reporting BUSY - giving up) exten => s-BUSY,2,Busy(20) exten => s-NOANSWER,1,NoOp(Dial failed due to trunk reporting NOANSWER - giving up) exten => s-NOANSWER,2,Playtones(congestion) exten => s-NOANSWER,3,Congestion(20) exten => s-CANCEL,1,NoOp(Dial failed due to trunk reporting CANCEL - giving up) exten => s-CANCEL,2,Playtones(congestion) exten => s-CANCEL,3,Congestion(20) exten => h,1,Macro(hangupcall) [macro-outisbusy] exten => s,1,Playback(all-circuits-busy-now,noanswer) exten => s,n,Playback(pls-try-call-later,noanswer) exten => s,n,Macro(hangupcall) ; What to do on hangup. [macro-hangupcall] exten => s,1,ResetCDR(w) exten => s,n,NoCDR()