<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'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"><<a href="mailto:carlos.ruizdiaz@gmail.com" target="_blank">carlos.ruizdiaz@gmail.com</a>></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'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"><<a href="mailto:govoiper@gmail.com" target="_blank">govoiper@gmail.com</a>></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'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 "TriggerUnPark"</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("BYE")) {</b></div><div>check the redis hash "TriggerUnPark" if the $tU is found in there, </div><div>if yes delete it from the hash and execute a small lua script "unpark.lua" 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"><<a href="mailto:govoiper@gmail.com" target="_blank">govoiper@gmail.com</a>></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"><<a href="mailto:carlos.ruizdiaz@gmail.com" target="_blank">carlos.ruizdiaz@gmail.com</a>></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"><<a href="mailto:govoiper@gmail.com" target="_blank">govoiper@gmail.com</a>></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'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 "deflect" or "bridge" 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'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 "bridge" 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"><<a href="mailto:carlos.ruizdiaz@gmail.com" target="_blank">carlos.ruizdiaz@gmail.com</a>></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'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'm sending calls to FS whenever an user is busy and can'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>