t34.tiamat писал(а):
Между железками не пробовал
Ващета я у себя в экстенах обнаружил совсем даже вот это, немного подумав (совсем немного), я закомментировал последние строки (это где сразу 3 ;;; ) и теперь транки перебираются сами как им и положено вне зависимости от того одна это железка или ваще сипнет. Но честно признаюсь что почти не понял что сделап и чем это грозит потому как народ стучал "ложками" и вопил требуя связи и зрелищ. Так что отдаю содеянное на комментарии тем кто в этом хорошо понимает, а кто не понимает прежде чем копировать лучше спросите чем это чревато... У меня вроде пашет как надо. Пока.
[macro-dialout-trunk]
exten => s,1,GotoIf($["${ARG3}" = ""]?3:2) ; arg3 is pattern password
exten => s,2,Authenticate(${ARG3})
exten => s,3,Macro(user-callerid)
exten => s,4,Macro(record-enable,${CALLERID(number)},OUT)
exten => s,5,Macro(outbound-callerid,${ARG1})
exten => s,6,Set(GROUP()=OUT_${ARG1})
exten => s,7,GotoIf($[ ${GROUP_COUNT()} > ${OUTMAXCHANS_${ARG1}} ]?108)
; if we've used up the max channels, continue at (n+101)
exten => s,8,Set(DIAL_NUMBER=${ARG2})
exten => s,9,Set(DIAL_TRUNK=${ARG1})
exten => s,10,AGI(fixlocalprefix) ; this sets DIAL_NUMBER to the proper dial strin
g for this trunk
exten => s,11,Set(OUTNUM=${OUTPREFIX_${ARG1}}${DIAL_NUMBER}) ; OUTNUM is the fina
l dial number
exten => s,12,Set(custom=${CUT(OUT_${ARG1},:,1)}) ; Custom trunks are prefixed wi
th "AMP:"
exten => s,13,GotoIf($["${custom}" = "AMP"]?16)
exten => s,14,Dial(${OUT_${ARG1}}/${OUTNUM},120,${TRUNK_OPTIONS}) ; Regular Trunk
Dial
exten => s,15,Goto(s-${DIALSTATUS},1)
; This is a custom trunk. Substitute $OUTNUM$ with the actual number and rebuild
the dialstring
; example trunks: "AMP:CAPI/XXXXXXXX:b$OUTNUM$,30,r", "AMP:OH323/$OUTNUM$@XX.XX.XX
.XX:XXXX"
exten => s,16,Set(pre_num=${CUT(OUT_${ARG1},$,1)})
exten => s,17,Set(the_num=${CUT(OUT_${ARG1},$,2)}) ; this is where we expect to f
ind string OUTNUM
exten => s,18,Set(post_num=${CUT(OUT_${ARG1},$,3)})
exten => s,19,GotoIf($["${the_num}" = "OUTNUM"]?20:21) ; if we didn't find "OUTNUM
", then skip to Dial
exten => s,20,Set(the_num=${OUTNUM}) ; replace "OUTNUM" with the actual number to
dial
exten => s,21,Dial(${pre_num:4}${the_num}${post_num},120,${TRUNK_OPTIONS})
exten => s,22,Goto(s-${DIALSTATUS},1)
exten => s,108,Noop(max channels used up)
;;;exten => s-BUSY,1,NoOp(Trunk is reporting BUSY)
;;;exten => s-BUSY,2,Busy()
;;;exten => s-BUSY,3,Wait(60)
;;;exten => s-BUSY,4,NoOp()
;;;exten => _s-.,1,NoOp(Dial failed due to ${DIALSTATUS})