MyPBX: добавить failover (транки разных типов)
Добавлено: 09 дек 2015, 16:33
В качестве офисной IP-АТС трудится коробочка ‘Yeastar MyPBX Standard’ с Asterisk версии 1.6.2.6 на борту. У нас 2 транка: мультиканальный SIP и аналоговая линия. У них разные правила набора номера (strip/prepend). Через web-интерфейс в настройке 'Outbound Routes' правила набора номера можно задать только целиком для всего маршрута, поэтому оба транка сразу (для автоматического выбора доступного) указать нельзя.
К счастью, коробочка поддерживает создание кастомных конфигов, поэтому внести изменения в dialplan напрямую возможность есть.
Вот часть конфига, которая, на мой взгляд, отвечает за интересующий меня функционал:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: скрин
Вот часть конфига, которая, на мой взгляд, отвечает за интересующий меня функционал:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: extensions.conf
Маршрут со скрина, используется SIP-транк:
Предыдущий маршрут, используется аналоговый транк:
Код: Выделить всё
[CallingRule_Default]
exten = _8XXXXXXXXX.,1,Set(agiresult=0)
exten = _8XXXXXXXXX.,n,GotoIf($[${agiresult}=1]?play-no-balance,${EXTEN},1)
exten = _8XXXXXXXXX.,n,GotoIf($[${agiresult}=2]?play-ext-disabled,${EXTEN},1)
exten = _8XXXXXXXXX.,n,GotoIf($[${agiresult}=4]?ext-no-rate,${EXTEN},1)
exten = _8XXXXXXXXX.,n,noop(no pinset)
exten = _8XXXXXXXXX.,n(a8),Set(ORGINEXTEN=${EXTEN})
exten = _8XXXXXXXXX.,n,Set(ORGINCONTEXT=${IF($[${LEN(${ORGINCONTEXT})} > 0]?${ORGINCONTEXT}: ${CONTEXT})})
exten = _8XXXXXXXXX.,n,GetNextOutRouter(${ORGINCONTEXT},)
exten = _8XXXXXXXXX.,n,GotoByTimeConditionOutbound(,0)
exten = _8XXXXXXXXX.,n,Macro(trunkdial-failover-0.3,1,,${EXTEN:},trunk-SIPProvider)
Код: Выделить всё
[CallingRule_Analogue]
exten = _849[59]XXXXXXX,1,Set(agiresult=0)
exten = _849[59]XXXXXXX,n,GotoIf($[${agiresult}=1]?play-no-balance,${EXTEN},1)
exten = _849[59]XXXXXXX,n,GotoIf($[${agiresult}=2]?play-ext-disabled,${EXTEN},1)
exten = _849[59]XXXXXXX,n,GotoIf($[${agiresult}=4]?ext-no-rate,${EXTEN},1)
exten = _849[59]XXXXXXX,n,noop(no pinset)
exten = _849[59]XXXXXXX,n(a8),Set(ORGINEXTEN=${EXTEN})
exten = _849[59]XXXXXXX,n,Set(ORGINCONTEXT=${IF($[${LEN(${ORGINCONTEXT})} > 0]?${ORGINCONTEXT}: ${CONTEXT})})
exten = _849[59]XXXXXXX,n,GetNextOutRouter(${ORGINCONTEXT},)
exten = _849[59]XXXXXXX,n,GotoByTimeConditionOutbound(,0)
exten = _849[59]XXXXXXX,n,Macro(trunkdial-failover-0.3,1,99,${EXTEN:},trunk_2)