<div dir="ltr"><div dir="ltr">On Sat, Sep 2, 2023 at 7:33 PM <<a href="mailto:asterisk@phreaknet.org">asterisk@phreaknet.org</a>> wrote:</div><div dir="ltr"><br></div><div><snip></div><div dir="ltr"><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
  * Semantically, should the above scenario work with the builtin pickup<br>
    functionality, or is it by design that this case is excluded, e.g.<br>
    channels with a PBX but not yet answered (I'm guessing no, since how<br>
    would one distinguish between valid cases such as these, and most<br>
    any other? After all, to the core, it's a channel that's executing<br>
    dialplan)<br></blockquote><div><br></div><div>The pickup implementation is not written for such a scenario. It requires a dialed channel to exist so the channel picking up can take its place, otherwise you are essentially doing the ChannelRedirect you mention to rip the calling channel out of its existing flow which the code doesn't do, likely since it predates even having the ability to set up a bridge to allow the exchange of audio. It was written for a particular use case.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  * What would be the prototypical "Asterisk way" of doing the above<br>
    scenario? Something like ChannelRedirect() should work, but I mean<br>
    more within the bounds of the pickup construct (and maybe there<br>
    isn't any, just want to confirm I haven't missed something). Put<br>
    another way, how would you do the above, in the simplest way<br>
    possible? (high level, no code necessary)<br></blockquote><div><br></div><div>There isn't for pickup.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  * I'm thinking that one way to accomplish this given the way that<br>
    pickup is would be to have some kind of dummy "sink" channel driver,<br>
    e.g. something that can be called, but will never actually answer,<br>
    and can't do anything useful. This should make the above scenario<br>
    function without creating any further additional channels or ringing<br>
    any "real" endpoints. Local channels would not suffice, because they<br>
    begin executing dialplan immediately. The dummy channel driver<br>
    wouldn't do that, or really do anything, it would just be a valid<br>
    target for Dial() that would satisfy the properties expected by<br>
    pickup.c, to allow a channel currently ringing the dummy channel<br>
    driver to be picked up. A toy example:<br></blockquote><div><br></div><div>A Local channel should work, because there are two of them and the one you pick up (;1) should be the one that is not executing dialplan. The dialplan one (;2) just has to do a Wait(360) or something.</div></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="font-family:tahoma,sans-serif"><font color="#073763">Joshua C. Colp</font></div><div style="font-family:tahoma,sans-serif"><font color="#073763">Asterisk Project Lead</font></div><div style="font-family:tahoma,sans-serif"><font color="#073763">Sangoma Technologies</font></div><div style="font-family:tahoma,sans-serif"><font color="#073763">Check us out at <a href="http://www.sangoma.com" target="_blank">www.sangoma.com</a> and <a href="http://www.asterisk.org" target="_blank">www.asterisk.org</a></font><br></div></div></div></div></div></div></div></div></div></div></div>