; ; randomize pstn gw ; exten => _XX.,1,SetVar(NUMERO=${EXTEN}) exten => _XX.,2,Random(50:pstngw-1,1) exten => _XX.,3,Goto(default,1) ; ; define every pstngw-1, beside the last one ; exten => pstngw-1,1,Dial(IAX2/${EXTEN}/${NUMERO}@pstn) exten => pstngw-1,2,GotoIf($[ "${DIALSTATUS}" : "CHANUNAVAIL" ]?default,1:${EXTEN},3) ; if qualify fails gw check exten => pstngw-1,3,Hangup ; ; if we're on default, be sure to go in reverse order ; Also we get something if one box is down ; exten => default,1,Dial(IAX2/pstngw-2/${NUMERO}@pstn) exten => default,2,GotoIf($[ "${DIALSTATUS}" : "CHANUNAVAIL" ]?${EXTEN},$[ ${PRIORITY} + 1 ]:stophere,1) exten => default,3,Dial(IAX2/pstngw-1/${NUMERO}@pstn) exten => default,4,GotoIf($[ "${DIALSTATUS}" : "CHANUNAVAIL" ]?${EXTEN},$[ ${PRIORITY} + 1 ]:stophere,1) exten => default,5,Goto(stophere,1) exten => stophere,1,Hangup