<div dir="ltr">Alright, this is the solution I ended up building. <div><br></div><div>1. Kamailio receives the call, detects everyone is busy, parks the call and updates a Redis queue</div><div><br></div><div>2. FS polls for updates using a Lua script querying the Redis queue from time to time</div><div><br></div><div>3. As soon as an agent gets available, the script transfers the call back to Kamailio </div><div><br></div><div>There&#39;s some non-ordinary Redis manipulation in the middle, making this solution not easy and probably, not ideal. Nevertheless, it works quite well and helped me keep my main logic inside Kamailio.</div><div><br></div><div>Thank you Sammy for your help!</div><div>Carlos</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 28, 2015 at 5:54 PM, Carlos Ruiz Díaz <span dir="ltr">&lt;<a href="mailto:carlos.ruizdiaz@gmail.com" target="_blank">carlos.ruizdiaz@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thank you very much Sammy.<div><br></div><div>Some of the alternatives you suggested crossed my mind already, but I lack the required FS experience to implement them so I&#39;m getting it now :).</div><div><br></div><div>I will let you know what solution I ended up using so that everyone could benefit from it.</div><div><br></div><div>Have a nice day.</div><span class="HOEnZb"><font color="#888888"><div>Carlos</div><div><br></div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 28, 2015 at 5:46 PM, SamyGo <span dir="ltr">&lt;<a href="mailto:govoiper@gmail.com" target="_blank">govoiper@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><b>Stage-1 Kamailio</b></div>You&#39;ll have three things at Kamailio <div>1-  Call-ID and</div><div>2-  FS Server IP hosting this parking lot </div><div>3-  Destination Number which was busy. </div><div><br></div><div>store 1,and 2 in redis hash with Call-ID as Key. Store 3 at a redis hash &quot;TriggerUnPark&quot;</div><div><br></div><div><b>Stage-2: FreeSwitch</b><br><div><br></div><div>At FS the first thing you do is get the sip header Call-ID, and update the redis Call-ID Hash with the FS uuid of this call. </div><div><br></div><div><b>Stage-3: Kamailio if(is_method(&quot;BYE&quot;)) {</b></div><div>check the redis hash &quot;TriggerUnPark&quot; if the $tU is found in there, </div><div>if yes delete it from the hash and execute a small lua script &quot;unpark.lua&quot; with Call-ID as its argument<br></div><div><b>}</b></div><div><br></div><div><br></div><div><b>Stage-4:</b></div><div>the unpark.lua will retrieve the Call-ID, find the relevant FS Server IP, connect to its ESL layer, and originate a call towards the Kamailio Server for the destination number.</div><div><br></div><div>If destination number is available call gets bridged in the lua script else it drops back to the parking lot and Stage-1 repeats.</div><div><br></div><div><br></div><div>I just wrote this as I could possibly think of how this would work, so I imagine there must be easier and efficient ways to do this all.</div><div><br></div><div>Regards,</div></div><div>Sammy</div><div><br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 28, 2015 at 6:34 PM, SamyGo <span dir="ltr">&lt;<a href="mailto:govoiper@gmail.com" target="_blank">govoiper@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">my idea in line.<br><div class="gmail_extra"><br><div class="gmail_quote"><span>On Tue, Jul 28, 2015 at 5:41 PM, Carlos Ruiz Díaz <span dir="ltr">&lt;<a href="mailto:carlos.ruizdiaz@gmail.com" target="_blank">carlos.ruizdiaz@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On Tue, Jul 28, 2015 at 4:30 PM, SamyGo <span dir="ltr">&lt;<a href="mailto:govoiper@gmail.com" target="_blank">govoiper@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi,<div> <div>Can you tell if FS is involved in all calls or Kamailio dials A and B party and only sends calls to a parking lot in failure route ?</div></div></div></blockquote><div><br></div></span><div>Yes. I maintain state of which calls went to FS, and which ones didn&#39;t.</div><div><br></div><div>I was thinking of using something like a notifier that should be fired from Kamailio (using http maybe?) and be received by FS somewhere. This would tell which parking queue to process and later &quot;deflect&quot; or &quot;bridge&quot; the call again to Kamailio which will forward it to the right agent.</div><div><br></div><div>Is this achievable?</div></div></div></div></blockquote></span><div>Yes. I beleive if you&#39;ve the uuid of the call stored in a redis hash corresponding to the SIP Call-ID header , and you tell you maintain state of which calls sent ..so as soon as B party gets diconnected you can trigger an ESL/API command to FS to &quot;bridge&quot; that uuid with a particular destination_number.</div><span><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><br></div><div>We did this long time ago with OpenSIPS where A party goes into fake ringing at a FS server and keeps dialing B party number@OpenSIPS gw every after 45 or so seconds, if B party is available FS bridges the call, if not then again stay at the parking lot. You need to set some valet_parking_ variables for timeout and orbit extension.</div></div></div></blockquote><div><br></div></span><div>This looks like a polling procedure, right? I will have to study valet parking first to see what I can do with it.</div></div></div></div></blockquote><div><br></div></span><div>Yes exactly what it is, that how valet_parking_timeout works. Its upto you whichever way you like to go with.</div><div><div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>Thank you Sammy!</div><div><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>Given some more details I think I can help you out here.</div><div><br></div><div>BR,</div><div>Sammy</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Tue, Jul 28, 2015 at 4:22 PM, Carlos Ruiz Díaz <span dir="ltr">&lt;<a href="mailto:carlos.ruizdiaz@gmail.com" target="_blank">carlos.ruizdiaz@gmail.com</a>&gt;</span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr">Hi,<div><br></div><div>I&#39;m looking for a way to unpark a call remotely.</div><div><br></div><div>I have this scenario that involves Kamailio as registrar and proxy, and I&#39;m sending calls to FS whenever an user is busy and can&#39;t pick up a call. This call is parked by FS.</div><div><br></div><div>When Kamailio detects the user in question got available, I want to unpark the previous call and connect it to the original destination.</div><div><br></div><div>Any ideas on how to do this in a clean way? </div><div><div><br></div><div>Regards,</div><span><font color="#888888">-- <br><div><div dir="ltr">Carlos<div><a href="http://caruizdiaz.com" target="_blank">http://caruizdiaz.com</a></div></div></div>
</font></span></div></div>
<br></div></div>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br></blockquote></div><br></div>
<br>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br></blockquote></div></div></div><div><div><br><br clear="all"><div><br></div>-- <br><div><div dir="ltr">Carlos<div><a href="http://caruizdiaz.com" target="_blank">http://caruizdiaz.com</a></div></div></div>
</div></div></div></div>
<br>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br></blockquote></div></div></div><br></div></div>
</blockquote></div><br></div>
</div></div><br>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" rel="noreferrer" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org" rel="noreferrer" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com" rel="noreferrer" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" rel="noreferrer" target="_blank">http://www.freeswitch.org</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><div dir="ltr">Carlos<div><a href="http://caruizdiaz.com" target="_blank">http://caruizdiaz.com</a></div></div></div>
</div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Carlos<div><a href="http://caruizdiaz.com" target="_blank">http://caruizdiaz.com</a></div></div></div>
</div>