[general] static=yes writeprotect=no autofallthrough=no clearglobalvars=no ; [globals] DIAL_OPTIONS = t TRUNK_OPTIONS = RINGTIMER = 60 OUTMAXCHANS_1 = 105 OUTPREFIX_1 = 011 OUT_1 = SIP/inphonex ; [inbound] exten => _52X.,1,Macro(dialout-trunk,1,${EXTEN},,) exten => _52X.,n,Macro(outisbusy,) ; [macro-dialout-trunk] exten => s,1,Set(REALCALLERIDNUM=${CALLERID(number)}) exten => s,n,NoOp(REALCALLERIDNUM is ${REALCALLERIDNUM}) exten => s,n,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,Set($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]) exten => s,n,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,n,Playback(all-circuits-busy-now) exten => s,n,Playtones(congestion) exten => s,n,Congestion(20) ; 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) exten => t,1,Macro(hangupcall) ; [macro-hangupcall] exten => s,1,ResetCDR(w) exten => s,n,NoCDR() exten => s,n,Hangup