On Mon, Nov 15, 2010 at 3:19 PM, Anthony Cosgrove <acosgrov@gmail.com> wrote:
I would think in this situation you would need to either use a dynamic dialplan to return the 302 to whatever destination you wish (http://wiki.freeswitch.org/wiki/Mod_xml_curl), or if staying static a continue_on_fail branch along with lua to fetch your destination value.

After a quick look at google looks like my line of thinking is somewhat on track... 

Old Nabble - Freeswitch-users - 302 redirects and continue_on_fail ...
302 redirects and continue_on_fail=true‎ - Jul 18, 2009
[Freeswitch-users] "continue on fail" howto



thanks for your answer ....

actually im looking at something like this... still need to test it and see what the scalability might be.




put this in context features:


  <extension name="A-CFU">
    <condition field="destination_number" expression="^\*21\*(\d.*)$">

      <action application="db" data="insert/FWD-${caller_id_number}/U/$1"/>
     
      <!-- play appropriate confirmation tone -->
      <action application="hangup"/>
    </condition>
  </extension>



  <extension name="D-CFU">
    <condition field="destination_number" expression="^\#21\#$">

      <action application="db" data="delete/FWD-${caller_id_number}/U"/>

      <!-- play appropriate confirmation tone -->
      <action application="hangup"/>
    </condition>
  </extension>


  <extension name="check_if_forwarded">

    <condition field="destination_number" expression="^check_if_forwarded$"/>
    <condition field="${forwarded-to}" expression="^$"/>
        <action application="export" data="to_dial=user/${dialed_extension}"/>
    </condition>

    <condition field="destination_number" expression="^check_if_forwarded$"/>
    <condition field="${forwarded-to}" expression="^(10[01][0-9])$"/>
        <action application="set" data="sip_h_Diversion=<sip:${dialed_extension}@${sip_from_host};user=phone>;reason=unconditional"/>       
        <action application="export" data="to_dial=user/${forwarded-to}"/>
    </condition>

    <condition field="destination_number" expression="^check_if_forwarded$"/>
    <condition field="${forwarded-to}" expression="^(0.*)$"/>
        <action application="set" data="sip_h_Diversion=<sip:${dialed_extension}@${sip_from_host};user=phone>;reason=unconditional"/>
        <action application="export" data="to_dial=loopback/${forwarded-to}"/>
    </condition>
  </extension>



In context default just execute this to populate forwarded-to variable:

  <extension name="isForwarded">
    <condition>
      <action application="set" data="forwarded-to=${db(select/FWD-${destination_number}/U)}"/>
    </condition>
  </extension>





modify just a bit the LocalExtension :)


    <extension name="Local_Extension">
      <condition field="destination_number" expression="^(10[01][0-9])$">
        <action application="set" data="dialed_extension=$1"/>
        <action application="export" data="dialed_extension=$1"/>
        <!-- bind_meta_app can have these args <key> [a|b|ab] [a|b|o|s] <app> -->
        <action application="bind_meta_app" data="1 b s execute_extension::dx XML features"/>
        <action application="bind_meta_app" data="2 b s record_session::$${recordings_dir}/${caller_id_number}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
        <action application="bind_meta_app" data="3 b s execute_extension::cf XML features"/>
        <action application="set" data="ringback=${us-ring}"/>
        <action application="set" data="transfer_ringback=$${hold_music}"/>
        <action application="set" data="call_timeout=30"/>
        <!-- <action application="set" data="sip_exclude_contact=${network_addr}"/> -->
        <action application="set" data="hangup_after_bridge=true"/>
        <!--<action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE,USER_BUSY,NO_ANSWER,TIMEOUT,NO_ROUTE_DESTINATION"/> -->
        <action application="set" data="continue_on_fail=true"/>
        <action application="hash" data="insert/${domain_name}-call_return/${dialed_extension}/${caller_id_number}"/>
        <action application="hash" data="insert/${domain_name}-last_dial_ext/${dialed_extension}/${uuid}"/>
        <action application="set" data="called_party_callgroup=${user_data(${dialed_extension}@${domain_name} var callgroup)}"/>
        <!--<action application="export" data="nolocal:sip_secure_media=${user_data(${dialed_extension}@${domain_name} var sip_secure_media)}"/>-->
        <action application="hash" data="insert/${domain_name}-last_dial/${called_party_callgroup}/${uuid}"/>


        <!-- check if the destination is actually forwarded -->
        <action application="execute_extension" data="check_if_forwarded" XML features/>


        <action application="bridge" data="${to_dial}@${domain_name}"/>


        <action application="answer"/>
        <action application="sleep" data="1000"/>
        <action application="bridge" data="loopback/app=voicemail:default ${domain_name} ${dialed_extension}"/>
      </condition>
    </extension>