<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7654.12">
<TITLE>RE: [Freeswitch-users] Bridge calls to Java ESL socket does not work as expected</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Hi Anthony,<BR>
<BR>
I appreciate your points, thank you very much for your helps!<BR>
<BR>
Cheers,<BR>
Xing<BR>
<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: freeswitch-users-bounces@lists.freeswitch.org on behalf of Anthony Minessale<BR>
Sent: Fri 10/7/2011 22:55<BR>
To: FreeSWITCH Users Help<BR>
Subject: Re: [Freeswitch-users] Bridge calls to Java ESL socket does not work as expected<BR>
<BR>
My only real point is that pushing subsequent calls into the dial-plan<BR>
mechanism of FreeSWITCH and failing over to another &quot;slot&quot; is not<BR>
going to work very well in the FreeSWITCH architecture coming from<BR>
first hand experience of developing it myself.&nbsp; Rather than question<BR>
the motive I just restate that you can use one call to the socket app<BR>
and limit the connections on the other side in a forking process or<BR>
use mod_limit ....<BR>
<BR>
<BR>
On Fri, Oct 7, 2011 at 4:10 PM, Hector Geraldino<BR>
&lt;Hector.Geraldino@ip-soft.net&gt; wrote:<BR>
&gt; Hi,<BR>
&gt;<BR>
&gt; Most of the issues you've can be addressed with a 'single instanced' application, but I understand why you designed the application to work this way. If at any moment you think about enabling this application to handle several calls, you can overtake these issues in various ways, for example:<BR>
&gt;<BR>
&gt; - Controlling the number of calls: you can register all answered calls (uuids) in a data structure (list, map), remove them when disconnected, and decide when to accept a new call by getting the collection size and comparing it to your parameter. If you ever get more Nuance licenses, increasing the number of managed calls would be as easy as change a parameter in a property file.<BR>
&gt;<BR>
&gt; - You can have as many MRCP profiles as you want defined in the configuration xml files on mrcp_profiles/ directory. Coming up with the algorithm to assign channels to MRCP engines (Nuance server/port) won't be that hard. I can think of one: having all mrcp profiles in a map with a flag (in use/free), when the call comes I lock the first available profile so it's attached to this call. When the call is disconnected the profile is freed.<BR>
&gt;<BR>
&gt; - log mixed, sure. But, is this really a problem? The same with the publishing of topics, you can replicate the same behavior of having multiple instances in a single one. I mean, if you make an abstraction and say: one instance of my java application equals one thread of my new java app you'll see how easy is to overcome this and other problems.<BR>
&gt;<BR>
&gt; Sorry for such a long message, but as many others I feel real passion about application design topics. My intention is never to criticize what you've done, as each mind is a different world.<BR>
&gt;<BR>
&gt; Anyway, good luck with that!<BR>
&gt;<BR>
&gt; -----Original Message-----<BR>
&gt; From: freeswitch-users-bounces@lists.freeswitch.org [<A HREF="mailto:freeswitch-users-bounces@lists.freeswitch.org">mailto:freeswitch-users-bounces@lists.freeswitch.org</A>] On Behalf Of xl127<BR>
&gt; Sent: Friday, October 07, 2011 6:55 AM<BR>
&gt; To: FreeSWITCH Users Help<BR>
&gt; Subject: Re: [Freeswitch-users] Bridge calls to Java ESL socket does not work as expected<BR>
&gt;<BR>
&gt; Hi Hector,<BR>
&gt;<BR>
&gt; Your points make sense but I have some specific issues for my<BR>
&gt; application so I thought of binding only one call per runnning instance.<BR>
&gt;<BR>
&gt; 1. My outbound socket application is one component/server of our Spoken<BR>
&gt; Dialogue System (SDS).<BR>
&gt; We have four ports Nuance ASR/TTS licenses, each port is specific to one<BR>
&gt; machine( yeah, we have four seperate license files for four machines).<BR>
&gt; It seems to be difficult to specify which channel uses which Nuance MRCP<BR>
&gt; profile if simultenous calls are answered by only one instance.<BR>
&gt;<BR>
&gt; 2. It seems to me that the log info would be mixed for simultenous calls<BR>
&gt; if running one instance.<BR>
&gt;<BR>
&gt; 3. My socket app will be communicating with other components/servers of<BR>
&gt; the SDS via ICE middleware (<A HREF="http://www.zeroc.com/">http://www.zeroc.com/</A>).<BR>
&gt; It will register to the central ICE server when starting the system via<BR>
&gt; a Topic name which is a static name given by the developer,<BR>
&gt; it will keep publishing ASR results on that topic so the other<BR>
&gt; components listening on the topic will get the results,<BR>
&gt; and it also subscribes and listens to other topics from other components<BR>
&gt; for TTS.<BR>
&gt;<BR>
&gt; In simultenous calls to one running instance scenario, the<BR>
&gt; distinguishable thing between channels would be the channel UUID which I<BR>
&gt; could use<BR>
&gt; as a part of the topic name, but it is dynamic and other servers could<BR>
&gt; not know it when registering to the central server.<BR>
&gt;<BR>
&gt; I could let the all channels publish results with a same static topic<BR>
&gt; name and channel UUID, the interested parties could parse the results<BR>
&gt; they want based on the UUID, but I worried this would cause more burdens<BR>
&gt; to the whole system.<BR>
&gt;<BR>
&gt;<BR>
&gt; 4. Even if running one instance, I still need some ways to check and<BR>
&gt; control the maximum number of calls as we have limited ASR/TTS resources.<BR>
&gt;<BR>
&gt; Cheers,<BR>
&gt; Xing<BR>
&gt;<BR>
&gt; On 06/10/11 22:34, Hector Geraldino wrote:<BR>
&gt;&gt; This might sound a little bit Off-Topic but, why are you willing to bind only one call per running instance? I cannot imagine any user scenario where this is desirable. Maybe as a proof of concept is Ok, but having an equivalence between calls and instances mmm... I don't know.<BR>
&gt;&gt;<BR>
&gt;&gt; Can you please tell me what are you willing to accomplish? I'm really curious about it.<BR>
&gt;&gt;<BR>
&gt;&gt; -----Original Message-----<BR>
&gt;&gt; From: freeswitch-users-bounces@lists.freeswitch.org [<A HREF="mailto:freeswitch-users-bounces@lists.freeswitch.org">mailto:freeswitch-users-bounces@lists.freeswitch.org</A>] On Behalf Of Anthony Minessale<BR>
&gt;&gt; Sent: Thursday, October 06, 2011 3:20 PM<BR>
&gt;&gt; To: FreeSWITCH Users Help<BR>
&gt;&gt; Subject: Re: [Freeswitch-users] Bridge calls to Java ESL socket does not work as expected<BR>
&gt;&gt;<BR>
&gt;&gt; don't actually hang it up just don't connect the socket or connnect it<BR>
&gt;&gt; and disconnect it right away and the app will fail on in the<BR>
&gt;&gt; dial-plan.<BR>
&gt;&gt;<BR>
&gt;&gt; again you could try mod_limit otherwise.<BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt; On Thu, Oct 6, 2011 at 11:28 AM, xl127&lt;x.liu@hw.ac.uk&gt;  wrote:<BR>
&gt;&gt;&gt; Thanks for the suggestions!<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; I thought about and tried to make my outbound socket application<BR>
&gt;&gt;&gt; fail e.g. by send a hangup message but it didn't work.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; What I did is that I set a public variable channelUUID with initial<BR>
&gt;&gt;&gt; value null in MyOutboundHandler,<BR>
&gt;&gt;&gt; I check if it is null in the handleConnectionResponse method. If it not<BR>
&gt;&gt;&gt; null, a hangup command is sent to FS.<BR>
&gt;&gt;&gt; But it looks like each call channel creates its own Java thread, so the<BR>
&gt;&gt;&gt; channelUUID is always null before the connection.<BR>
&gt;&gt;&gt; So my approach doesn't work.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; Any idea about checking if the remote application is answering a call?<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; Thanks!<BR>
&gt;&gt;&gt; Xing<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; On 06/10/11 16:43, Anthony Minessale wrote:<BR>
&gt;&gt;&gt;&gt; Really the socket app has not limit to how many simultaneous<BR>
&gt;&gt;&gt;&gt; connections it can handle.<BR>
&gt;&gt;&gt;&gt; You could try mod_limit, or make the remote end of you application<BR>
&gt;&gt;&gt;&gt; fail when there are too many connections.<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt; On Thu, Oct 6, 2011 at 10:30 AM, xl127&lt;x.liu@hw.ac.uk&gt;    wrote:<BR>
&gt;&gt;&gt;&gt;&gt; Hello,<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; I am trying to bridge multiple calls to multiple Java ESL outbound<BR>
&gt;&gt;&gt;&gt;&gt; socket applications.<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; Basically I want to check if the first socket app is engaged then the<BR>
&gt;&gt;&gt;&gt;&gt; call should be transferred<BR>
&gt;&gt;&gt;&gt;&gt; to the second socket app and so on.<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; For initial test, I tried two concurrent calls, the problem is both<BR>
&gt;&gt;&gt;&gt;&gt; calls are always answered<BR>
&gt;&gt;&gt;&gt;&gt; by the first outbound socket.<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; I have following setting in the dialplan:<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;extension name=&quot;sipgateDialedIn&quot;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;condition field=&quot;destination_number&quot; expression=&quot;^5800$&quot;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;set&quot; data=&quot;continue_on_fail=true&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;set&quot; data=&quot;hangup_after_bridge=true&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;bridge&quot; data=&quot;loopback/5801&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;bridge&quot; data=&quot;loopback/5802&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;set&quot; data=&quot;tts_engine=flite&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;set&quot; data=&quot;tts_voice=kal&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;speak&quot; data=&quot;Sorry, I am busy at the moment. Please<BR>
&gt;&gt;&gt;&gt;&gt; try again later.&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;sleep&quot; data=&quot;10&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;hangup&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;/condition&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;/extension&gt;<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;extension name=&quot;myOutboundESL5801&quot;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;condition field=&quot;destination_number&quot; expression=&quot;^5801$&quot;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;socket&quot; data=&quot;127.0.0.1:9981 async full&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;/condition&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;/extension&gt;<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;extension name=&quot;myOutboundESL5802&quot;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;condition field=&quot;destination_number&quot; expression=&quot;^5802$&quot;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;action application=&quot;socket&quot; data=&quot;127.0.0.1:9982 async full&quot;/&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;/condition&gt;<BR>
&gt;&gt;&gt;&gt;&gt; &lt;/extension&gt;<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; I expect the first call to 5800 would be asnwered by extension 5801, the<BR>
&gt;&gt;&gt;&gt;&gt; second concurrent call to 5800 will be<BR>
&gt;&gt;&gt;&gt;&gt; answered by extension 5802, and the third call gets a busy message.<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; I use Java ESL client-0.9.2 libraries. How do I check in the dialplan if<BR>
&gt;&gt;&gt;&gt;&gt; the socket is engaged?<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; I've tried and googled a while but without success.<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; Any advices please?<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; Many thanks!<BR>
&gt;&gt;&gt;&gt;&gt; Xing<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; --<BR>
&gt;&gt;&gt;&gt;&gt; Heriot-Watt University is a Scottish charity<BR>
&gt;&gt;&gt;&gt;&gt; registered under charity number SC000278.<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; Heriot-Watt University is the Sunday Times<BR>
&gt;&gt;&gt;&gt;&gt; Scottish University of the Year 2011-2012<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;&gt; FreeSWITCH-users mailing list<BR>
&gt;&gt;&gt;&gt;&gt; FreeSWITCH-users@lists.freeswitch.org<BR>
&gt;&gt;&gt;&gt;&gt; <A HREF="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>
&gt;&gt;&gt;&gt;&gt; UNSUBSCRIBE:<A HREF="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR>
&gt;&gt;&gt;&gt;&gt; <A HREF="http://www.freeswitch.org">http://www.freeswitch.org</A><BR>
&gt;&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;&gt;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; --<BR>
&gt;&gt;&gt; Heriot-Watt University is a Scottish charity<BR>
&gt;&gt;&gt; registered under charity number SC000278.<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; Heriot-Watt University is the Sunday Times<BR>
&gt;&gt;&gt; Scottish University of the Year 2011-2012<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt;<BR>
&gt;&gt;&gt; FreeSWITCH-users mailing list<BR>
&gt;&gt;&gt; FreeSWITCH-users@lists.freeswitch.org<BR>
&gt;&gt;&gt; <A HREF="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>
&gt;&gt;&gt; UNSUBSCRIBE:<A HREF="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR>
&gt;&gt;&gt; <A HREF="http://www.freeswitch.org">http://www.freeswitch.org</A><BR>
&gt;&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt; --<BR>
&gt; Heriot-Watt University is a Scottish charity<BR>
&gt; registered under charity number SC000278.<BR>
&gt;<BR>
&gt; Heriot-Watt University is the Sunday Times<BR>
&gt; Scottish University of the Year 2011-2012<BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt; FreeSWITCH-users mailing list<BR>
&gt; FreeSWITCH-users@lists.freeswitch.org<BR>
&gt; <A HREF="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>
&gt; UNSUBSCRIBE:<A HREF="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR>
&gt; <A HREF="http://www.freeswitch.org">http://www.freeswitch.org</A><BR>
&gt;<BR>
&gt;<BR>
&gt; FreeSWITCH-users mailing list<BR>
&gt; FreeSWITCH-users@lists.freeswitch.org<BR>
&gt; <A HREF="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>
&gt; UNSUBSCRIBE:<A HREF="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR>
&gt; <A HREF="http://www.freeswitch.org">http://www.freeswitch.org</A><BR>
&gt;<BR>
<BR>
<BR>
<BR>
--<BR>
Anthony Minessale II<BR>
<BR>
FreeSWITCH <A HREF="http://www.freeswitch.org/">http://www.freeswitch.org/</A><BR>
ClueCon <A HREF="http://www.cluecon.com/">http://www.cluecon.com/</A><BR>
Twitter: <A HREF="http://twitter.com/FreeSWITCH_wire">http://twitter.com/FreeSWITCH_wire</A><BR>
<BR>
AIM: anthm<BR>
MSN:anthony_minessale@hotmail.com<BR>
GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com<BR>
IRC: irc.freenode.net #freeswitch<BR>
<BR>
FreeSWITCH Developer Conference<BR>
sip:888@conference.freeswitch.org<BR>
googletalk:conf+888@conference.freeswitch.org<BR>
pstn:+19193869900<BR>
<BR>
<BR>
FreeSWITCH-users mailing list<BR>
FreeSWITCH-users@lists.freeswitch.org<BR>
<A HREF="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>
UNSUBSCRIBE:<A HREF="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR>
<A HREF="http://www.freeswitch.org">http://www.freeswitch.org</A><BR>
<BR>
</FONT>
</P>

</BODY>
<BR />
<HR>
<FONT FACE="ARIAL,HELVETICA" SIZE="-1" COLOR="GRAY">
Heriot-Watt University is a Scottish charity 
registered under charity number SC000278.
<BR />
<BR />
Heriot-Watt University is the Sunday Times 
Scottish University of the Year 2011-2012
<BR />
</FONT>
</HTML>