I use inbound to monitor switches as a socket client and mod_xml_curl to direct call flow from a seperate web app. This allows me to receive events across multiple channels across multiple switches without worrying about call flow, which is a good design for what I am doing in this example ... monitoring call flow and conferencing events for realtime display in a UI. Our call flow systems are critical and monitoring is non-critical so it works well to seperate them. As a calling card app your system will probably require tighter integration of call flow and billing, so combining them could make sense.<br>
<br>The main benefit of outbound is you can use a socket server and each of your clients represents a distinct channel on one of your switches. It can make directing call flow easy and it is simple to require your socket server or play an &quot;oops we are busy&quot; message when it is down ... and it helped everyone quickly port their FAGI apps to this project :)<br>
<br>You are correct that you can just use event socket and sendmsg to control call flow and not use lua at all. Yes there is overlap of functionality between inbound/outbound because both allow you to do basically the same thing, but as different roles in the socket connection.<br>
<br><div class="gmail_quote">On Fri, Dec 24, 2010 at 6:55 AM, Rafqat . <span dir="ltr">&lt;<a href="mailto:rafonline@hotmail.com">rafonline@hotmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">




<div>
Hi Chris<br><br>In terms of the projects you eluded too, do you use inbound or outbound event sockets?  The reason I am asking is that it seems to me that either could be used for billing monitoring.  At the moment I am thinking in terms of purely using inbound mode to listen to events (and controlling what freeswitch does via sendmsg).  <br>
<br>I would appreciate it if you could clarify this point for me as I am failing to understand the true difference between inbound and outbound mode and when each should be used (there seems to be alot of overlap imo - correct me if i am wrong).<br>
<br>Cheers<br><br>Raf<br><br><hr>Date: Thu, 23 Dec 2010 18:39:19 -0500<br>From: <a href="mailto:chris@cloudtel.com" target="_blank">chris@cloudtel.com</a><div><div></div><div class="h5"><br>To: <a href="mailto:freeswitch-users@lists.freeswitch.org" target="_blank">freeswitch-users@lists.freeswitch.org</a><br>
Subject: Re: [Freeswitch-users] ESL outbound /inbound<br><br>Billing is not so much a question of scalability, but accuracy.
Inline lua can verify the PIN against the DB, but it cant accurately calculate billing.<br><br>Anything making a calculation on how much money your customer just spent on minutes should not be done inline, as many tricks can happen and channels have their own state (CS_REPORTING) when the optimal information for accounting is available. For prompting the user for their calling card PIN, there is nothing wrong with lua connecting to your database. For subtracting minutes from an account while the user is on call then event socket or a module listening to events is a better method. The latter is how mod_nibblebill works.<br>

<br>Personally, for several large projects I chose to monitor events across multiple switches via event socket and it worked out very nicely.<br><br><div>On Thu, Dec 23, 2010 at 4:07 PM, Rafqat . <span dir="ltr">&lt;<a href="mailto:rafonline@hotmail.com" target="_blank">rafonline@hotmail.com</a>&gt;</span> wrote:<br>

<blockquote style="padding-left: 1ex;">



<div>
Hi,<br><br>I could get lua to do the lookup, I was wondering i guess where does one draw the line between when to do stuff inline and when to do stuff outside of freeswitch (in terms of load and scalability of solution etc.)<br>

<br>Cheers<br><br>Raf<br><br><hr>Date: Thu, 23 Dec 2010 12:37:26 -0800<br>From: <a href="mailto:msc@freeswitch.org" target="_blank">msc@freeswitch.org</a><br>To: <a href="mailto:freeswitch-users@lists.freeswitch.org" target="_blank">freeswitch-users@lists.freeswitch.org</a><br>

Subject: Re: [Freeswitch-users] ESL outbound /inbound<div><div></div><div><br><br>What is wrong with having Lua do the db lookup? <div>-MC<br><br><div>On Thu, Dec 23, 2010 at 9:42 AM, Rafqat . <span dir="ltr">&lt;<a href="mailto:rafonline@hotmail.com" target="_blank">rafonline@hotmail.com</a>&gt;</span> wrote:<br>


<blockquote style="padding-left: 1ex;">



<div>
Hi,<br><br>I am writing a calling card app using lua and java.  <br><br>As advised, Java will predominatley do all the billing side of things (via ESL) leaving lua do simple things like asking for the calling card pin number etc.<br>


<br>When a call comes in, my lua script answers the call and asks the user for a pin.  Instead of querying the DB inline from within lua, I would like my app server to do this (please let me know if this should be done inline instead).  I understand my app server (Java ESL inbound socket) can register for a pin checking custom event and I can generate such an event from within my lua script.  My lua script would then wait for an appropriate repsonse event:<br>


<br>-- Check if pin is valid<br>local event = freeswitch.Event(&quot;CUSTOM&quot;, &quot;check_pin_request&quot;);<br>event:addHeader(&quot;pin_number&quot;, digits);<br>event:fire();<br><br>-- wait for response<br>con = freeswitch.EventConsumer(&quot;CUSTOM&quot;, &quot;check_pin_reponse&quot;);<br>


con:pop(1);<br>print(&quot;event\n&quot; .. e:serialize(&quot;xml&quot;));<br><br>I was wondering if the above is the right way of doing things, or should I be using ESLOutboundSocket and have lua script do something like this instead:<br>


<br>session:execute(&quot;set&quot;, &quot;pin_to_check=12345&quot;);<br>session:execute(&quot;socket&quot;, &quot;<a href="http://192.168.0.2:8084" target="_blank">192.168.0.2:8084</a>&quot;);<br><br>Not sure how lua will be told whether the pin is valid or not in this scenario.<br>


<br>I appreciate FreeSWITCH is very flexible and would like to make sure I develop a scalable and performant application.<br><br>Any help will be much appreciated.<br><br>Cheers<br><br>Raf<br><br><br><br>                                               </div>



<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" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<br></blockquote></div><br></div>
<br></div></div>_______________________________________________
FreeSWITCH-users mailing list
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a>                                               </div>
<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" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<br></blockquote></div><br>
<br></div></div>_______________________________________________
FreeSWITCH-users mailing list
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a>                                               </div>
<br>_______________________________________________<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<br></blockquote></div><br>