Re: очередь для исходящих каналов
Так как колличество исходящих номеров разное у каждой группы (кому то 3 транка дали, кому то 4 и т.д.) пришлось писать такую вешь :
в переменной определяю список транков через разделитель '-' и передаю ее макросу
в макросе разбиваю строку на отдельные токены и обзваниваю каждый
Почему так сделал? Потому что по другому передать разное колличество аргументов в один и тот же макрос не знаю как.
extensions.conf
[globals]
OUTBOUND-TRUNKS-GROUP1=780103-780102-780101
extensions_custom.conf
[macro-outbound-group1]
exten => s,1,Set(trunks=${ARG1})
exten => s,n,Set(called_number=${ARG2})
exten => s,n,Set(index=1)
exten => s,n,Set(nb_trunks=${FIELDQTY(trunks|-)})
exten => s,n,GotoIf($[${nb_trunks} < 1]?done)
exten => s,n,While($[${index} <= ${nb_trunks}])
exten => s,n,Set(curr_trunk=${CUT(trunks,,${index})})
exten => s,n,Dial(Sip/${curr_trunk}/${called_number})
exten => s,n,Set(index=$[${index} + 1])
exten => s,n,EndWhile
exten => s,n(done),Congestion
[outbound-group1]
exten => _0XXXXXX,1,Macro(outbound-group1,${OUTBOUND-TRUNKS-GROUP1},${EXTEN:1}) ;
exten => _088722XXXXXX,1,Macro(outbound-group1,${OUTBOUND-TRUNKS-GROUP1},${EXTEN:1}) ; LONG CALL
осталось лишь добавить побольше проверок в макрос на пустые строки или некорректные данные и можно использовать думаю.
|