Страница 1 из 1

Исходящий вызов через разные транки, диалплан

Добавлено: 23 янв 2012, 15:52
drTr0jan
Для выхода на города использую два разных транка - SIP (по умолчанию) и аналоговый через шлюз (когда заняты все исходящие линии или когда интернет лежит).

Как правильно описать план набора?

Код: Выделить всё

exten => _NXXXXX, 1, Dial(SIP/trunk1/${EXTEN})
exten => _NXXXXX, 2, Dial(SIP/trunk2/${EXTEN})
exten => _NXXXXX, 3, HangUp()
В этом случае, если номер вызываемого абонента занят (или абонент отклонил вызов), то вызов автоматически продолжается через второй транк.

Код: Выделить всё

exten => _NXXXXX, 1, Dial(SIP/trunk1/${EXTEN})
exten => _NXXXXX, 2, Goto(_NXXXXX-${DIALSTATUS},1)
exten => _NXXXXX-CHANUNAVAIL,1,Dial(SIP/trunk2/${EXTEN:0:7})
exten => _NXXXXX-CHANUNAVAIL,2,HangUp()
exten => _NXXXXX-CONGESTION,1,Dial(SIP/trunk2/${EXTEN:0:7})
exten => _NXXXXX-CONGESTION,2,HangUp()
exten => _NXXXXX-BUSY,1,Busy()
exten => _NXXXXX-NOANSWER,1,HangUp()
exten => _NXXXXX-CANCEL,1,HangUp()
Нагуглил такой способ, который можно оформить в виде макроса.

Правильно - использовать второй вариант? Или есть другие более правильные решения?

Re: Исходящий вызов через разные транки, диалплан

Добавлено: 23 янв 2012, 17:08
ded
Вполне рабочее решение. Макросом - правильно. Современные версии Астериск предлагают вместо макросов GoSub, но макросы тоже поддерживают.
exten => _NXXXXX, 1, Dial(SIP/trunk1/${EXTEN}) меняется на
exten => _NXXXXX, 1, Macro(dial-main,${EXTEN})
в котором нет нужды отсекать что-то ${EXTEN:0:7}