На freeswitch-е, помощью инструкции continue_on_fail, можно отправлять вызовы на резервного оператора, если по какой либо причине не получилось сделать вызов через основного оператора.
Синтаксис continue_on_fail
<action application="set" data="continue_on_fail=true"/>
Диалплан будет выполнятся при любом коде отбоя
<action application="set" data="continue_on_fail=false"/>
При любом коде отбоя выполнение диалплана останавливается
Так же можно перечислить коды Q.850 при которых выполнение диалплана будет продолжено, например
<action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE,USER_BUSY,NO_ANSWER,NO_ROUTE_DESTINATION"/>
или
<action application="set" data="continue_on_fail=3,17,18,27"/>
Полную таблицу кодов можно взять здесь
Пример диалплана для переключения на другого оператора при ошибки с каналом.
<extension name="operator1-operator2" > <condition field="destination_number" expression="^(7|8)(\d{10})$" > <action application="set" data="hangup_after_bridge=true"/>. <action application="set" data="continue_on_fail=GATEWAY_DOWN,NORMAL_TEMPORARY_FAILURE,NO_ROUTE_DESTINATION,CALL_REJECTED,SERVICE_UNAVAILABLE"/> <action application="bridge" data="sofia/gateway/operator1/$1" /> <action application="bridge" data="sofia/gateway/operator2/$1" /> </condition> </extension>