I can't seem to get transfer_on_fail to work. I'm not sure what I'm doing wrong, it just doesn't transfer to the transfer_on_fail extension. The dialplan is below.
The idea is to set leg_progress_timeout = 3, so that if the device isn't responding to INVITEs, we use transfer_on_fail with the cause PROGRESS_TIMEOUT to send the call somewhere else. But transfer_on_fail never seems to get executed when we test it out. The FS logs show that we're hitting PROGRESS_TIMEOUT when the device doesn't respond to INVITEs, so I'm pretty sure we have the right hangup cause, but it's just not catching transfer_on_fail ...
<document type="freeswitch/xml">
<section name="dialplan" description="Dial Plan for FreeSWITCH">
<context name="default">
<extension name="call to 12225551212">
<condition field="destination_number" expression="12225551212">
<action application="set" data="bypass_media=true"/>
<action application="set" data="continue_on_fail=true"/>
<action application="set" data="hangup_on_bridge=true"/>
<action application="export" data="leg_progress_timeout=3"/>
<action application="set" data="transfer_on_fail=PROGRESS_TIMEOUT NETWORK_UNAVAIL xml error"/>
<action application="bridge" data="${sofia_contact(12225551212@switch.local)"/>
</condition>
</extension>
</context>
<context name="error">
<extension name="NETWORK_UNAVAIL">
<condition field="${originate_disposition}" expression="PROGRESS_TIMEOUT" continue="false" break="on-true">
<action application="bridge" data="sofia/external/12345551212@switch2.local"/>
</condition>
</extension>
</context>
</section>
</document>
Here's a small snippet of the logs when leg_progress_timeout expires ...
b54a79cd-85f1-4c15-929d-15b1654ff1de 2015-11-24 22:06:21.021538 [DEBUG] switch_ivr_originate.c:3727 Originate Resulted in Error Cause: 607 [PROGRESS_TIMEOUT]
b54a79cd-85f1-4c15-929d-15b1654ff1de 2015-11-24 22:06:21.021538 [INFO] mod_dptools.c:3333 Originate Failed. Cause: PROGRESS_TIMEOUT
Thanks ...