<div style="font-family: 'Courier New'; font-size: 13px; ">I honest believe that you won't be able to accomplish what you want like that. I don't think you can modify the core state machine from a script and by the time you get the control back on the script, the channel is already gone because of the att_xfer inner working…<div><br></div><div>But I am really not an expert and I can barely understand how the att_xfer code works.</div><div><br></div><div><br></div><div>Regards,</div></div>
                <div><div><br></div><div>--&nbsp;</div><div>João Mesquita</div><div>Sent with <a href="http://www.sparrowmailapp.com/?sig">Sparrow</a></div><div><br></div></div>
                 
                <p style="color: #A0A0A8;">On Friday, March 9, 2012 at 9:13 AM, Christian Benke wrote:</p>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
                    <span><div><div><div>*sigh* No answer yet :-(</div><div><br></div><div>Was my explanation comprehensive?</div><div><br></div><div>On 8 March 2012 19:31, Christian Benke &lt;<a href="mailto:benkokakao@gmail.com">benkokakao@gmail.com</a>&gt; wrote:</div><blockquote type="cite"><div><div>Hello!</div><div><br></div><div>I have written a DB-based routing-script to be able to configure</div><div>complex and dynamic call-behaviours but i'm currently stuck with</div><div>scenarious where different call-channels are merged(att_xfer,</div><div>intercept, et al), as my script fails with these scenarious.</div><div><br></div><div>I'm testing using a simplified version of the script(nxo_test.py) to</div><div>understand the mechanism behind those scenarious and now i'm at a</div><div>point where i no longer know the proper tools to handle these</div><div>situations. Here's what is happening:</div><div><br></div><div>This is the test-script in pseudocode:</div><div><br></div><blockquote type="cite"><div><div>SRC=A</div><div>DEST=B</div><div>log("Test1")</div><div>sleep(1000)</div><div>log("Test2")</div><div>sleep(1000)</div><div>log("Test3")</div><div>bridge([origination_caller_id_number="${SRC}"]user/${DEST}@${domain_name})</div><div>log("Test4")</div><div>sleep(1000)</div><div>"log" "Test5"</div><div>sleep(1000)</div><div>"log" "Test6"</div></div></blockquote><div><br></div><div>A dials B. The call enters the default context where the test-script</div><div>is called, the first steps are executed and the bridge is initiated.</div><div><br></div><div>B picks up the call, the following (truncated) channel-uuids exist at</div><div>this point:</div><div>"a7c4"(A-&gt;)</div><div>"a7cc"(-&gt;B)</div><div><br></div><div>B then initiates an attended transfer to C, which follows the same</div><div>path and script as the first call(But the call is bridged to C instead</div><div>of B this time). Two new channels are set up - uuid's "a7d5"(B-&gt;) and</div><div>"a7dd"(-&gt;C)</div><div><br></div><div>B immediately transfers the call before C has picked up.</div><div><br></div><div>Channel "a7cc"(-&gt;B) is killed by att_xfer while Channel "a7c4"(A-&gt;)</div><div>finishes the script(The remaining Steps Test3-Test5 are executed) and</div><div>is then automatically parked in endless_playback by att_xfer, waiting</div><div>for C to pick up.</div><div><br></div><div>C lets it ring until the timeout of 15s ends, "a7c4" and "a7dd" are</div><div>hung up while a7d5 continues as a ZOMBIE-channel, trying to execute</div><div>the remaining steps in the script(The "sleep"-commands fail due to the</div><div>zombie-state).</div><div><br></div><div>And this is where i'm stuck - i would like channel "a7c4" to not get</div><div>hung up but to continue with the steps which "a7d5" could no longer</div><div>execute. Is there some way to prevent a7c4 from getting hung up when</div><div>the ATTENDED_TRANSFER to C fails? Algorithmically i can figure out how</div><div>the remaining steps can get memorised and executed, i just don't know</div><div>how to prevent "a7c4" from getting hung up and beeing transfer to a</div><div>place where i can still work with it :-/ I can't use the HangupHook</div><div>either, as a7c4 is already in zombie-state at that point.</div><div><br></div><div>For reference, i've attached the test-script and a freeswitch-log of</div><div>the call above.</div><div><br></div><div>I hope someone can lead me on the right track...</div><div><br></div><div>Best regards</div><div>Christian</div></div></blockquote><div><br></div><div>_________________________________________________________________________</div><div>Professional FreeSWITCH Consulting Services:</div><div><a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a></div><div><a href="http://www.freeswitchsolutions.com">http://www.freeswitchsolutions.com</a></div><div><br></div><div>FreeSWITCH-powered IP PBX: The CudaTel Communication Server</div><div><a href="http://www.cudatel.com">http://www.cudatel.com</a></div><div><br></div><div>Official FreeSWITCH Sites</div><div><a href="http://www.freeswitch.org">http://www.freeswitch.org</a></div><div><a href="http://wiki.freeswitch.org">http://wiki.freeswitch.org</a></div><div><a href="http://www.cluecon.com">http://www.cluecon.com</a></div><div><br></div><div>FreeSWITCH-users mailing list</div><div><a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a></div><div><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a></div><div>UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</a></div><div><a href="http://www.freeswitch.org">http://www.freeswitch.org</a></div></div></div></span>
                 
                 
                 
                 
                </blockquote>
                 
                <div>
                    <br>
                </div>