<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div class="PlainText">Thank you very much for the advise. I accidentally found it to be useful as well.<br>
<br>
--- Original Message ---<br>
<br>
From: &quot;Anthony Minessale&quot; &lt;anthony.minessale@gmail.com&gt;<br>
Sent: March 6, 2015 2:23 PM<br>
To: &quot;FreeSWITCH Users Help&quot; &lt;freeswitch-users@lists.freeswitch.org&gt;<br>
Subject: Re: [Freeswitch-users] sessions and CS_INIT events<br>
<br>
</div>
<div>
<div dir="ltr">You probably want to look at the dialplan module interface as well.&nbsp; And pay attention to the direction variable to distinguish inbound from out bound Especially at the routing state not init.
<div><br>
</div>
</div>
<div class="x_gmail_extra"><br>
<div class="x_gmail_quote">On Thu, Mar 5, 2015 at 12:05 PM, Juan Pablo L. <span dir="ltr">
&lt;<a href="mailto:jpablolorenzetti@hotmail.com" target="_blank">jpablolorenzetti@hotmail.com</a>&gt;</span> wrote:<br>
<blockquote class="x_gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div>
<div dir="ltr">Hi, yes i had a look at it, and yes the needs are similar, i used it at the beginning<br>
to get started, and i m using as a reference at this point but it seems that the use cases<br>
are different . thanks!<br>
<br>
<br>
<br>
<div>
<hr>
From: <a href="mailto:mike@jerris.com" target="_blank">mike@jerris.com</a><br>
Date: Thu, 5 Mar 2015 12:46:28 -0500
<div>
<div class="x_h5"><br>
To: <a href="mailto:freeswitch-users@lists.freeswitch.org" target="_blank">freeswitch-users@lists.freeswitch.org</a><br>
Subject: Re: [Freeswitch-users] sessions and CS_INIT events<br>
<br>
Given the similarity in purpose, I would look closely at how mod_nibblebill interfaces with freeswitch.&nbsp; It sounds like your interface needs are nearly identical.
<div><br>
</div>
<div><br>
<div>
<blockquote>
<div>On Mar 5, 2015, at 9:23 AM, Juan Pablo L. &lt;<a href="mailto:jpablolorenzetti@hotmail.com" target="_blank">jpablolorenzetti@hotmail.com</a>&gt; wrote:</div>
<br>
<div>
<div dir="ltr" style="font-family:Calibri; font-size:16px; font-style:normal; font-variant:normal; font-weight:normal; letter-spacing:normal; line-height:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px">
Thank you very much guys for your contributions.<br>
<br>
I m doing it as a module for couple of reasons, being the<br>
most important (i believe) performance, because the module<br>
i m working on is to do real time charging of voice calls on a switch<br>
that is already&nbsp; serving as a RBT service plus a bunch of IVR's to purchase<br>
services, this is for a ~150K user base on a single machine (cold standby)<br>
this switch is also scheduled to soon start providing hosted PBX services,<span>&nbsp;</span><br>
so going the script direction<br>
i personally dont see that as an option at all. I do use scripts for small no so much used<br>
much simpler stuff though, e.g: a lua script takes care of authenticating users<br>
when doing international calls from company extensions in the hosted PBX solution.<br>
<br>
The other reason i chose to do<br>
this as a module because C is the language i feel more comfortable with.<span>&nbsp;</span><br>
i hope this clarifies i little bit this.<br>
<br>
Moving on, right now i m developing on a test freeswitch that we have and yes i noticed<br>
that subscribing to the CS_INIT event does represent a big problem<br>
because i get notified for every single of those events that is generated on<br>
freeswitch which would be very inconvenient because as i mentioned, the same<br>
switch does many other things that i m not interested in, so i m going to try the advise<br>
provided and try to do it in the dial plan, i will explore this option.<span>&nbsp;</span><br>
<br>
thank you very much all!<br>
<br>
<br>
<br>
<br>
<br>
<div>&gt; Date: Thu, 5 Mar 2015 14:19:51 &#43;0100<br>
&gt; From:<span>&nbsp;</span><a href="mailto:ssinyagin@gmail.com" target="_blank">ssinyagin@gmail.com</a><br>
&gt; To:<span>&nbsp;</span><a href="mailto:freeswitch-users@lists.freeswitch.org" target="_blank">freeswitch-users@lists.freeswitch.org</a><br>
&gt; Subject: Re: [Freeswitch-users] sessions and CS_INIT events<br>
&gt;<span>&nbsp;</span><br>
&gt; but for the task that OP has described, writing (and maintaining it in<br>
&gt; the long term) a module is really an overkill. Plus, he would also<br>
&gt; need to take care of multithreading within FreeSWITCH, as well as<br>
&gt; memory management, etc.<br>
&gt;<span>&nbsp;</span><br>
&gt; Also, a module makes sense if it's some common task which can be<br>
&gt; re-used by others and published as open source. If it's some<br>
&gt; closed-source module for a specific enterprise task that Juan has, it<br>
&gt; just doesn't make sense and too much risk for a long-term solution.<br>
&gt;<span>&nbsp;</span><br>
&gt;<span>&nbsp;</span><br>
&gt;<span>&nbsp;</span><br>
&gt;<span>&nbsp;</span><br>
&gt;<span>&nbsp;</span><br>
&gt; On Thu, Mar 5, 2015 at 1:56 PM, Vik Killa &lt;<a href="mailto:vipkilla@gmail.com" target="_blank">vipkilla@gmail.com</a>&gt; wrote:<br>
&gt; &gt; It all depends on what you are trying to do with your module.<br>
&gt; &gt; You can use a dialplan handler in your module (see mod_enum for example) to<br>
&gt; &gt; route inbound calls using your custom dialplan.<br>
&gt; &gt; You can use a state handler in your module and bind to channel states (much<br>
&gt; &gt; like binding to events).<br>
&gt; &gt; You can create a dialplan app in your module to execute code when the app is<br>
&gt; &gt; called in dialplan<br>
&gt; &gt; (Example: &lt;application action=&quot;mycustom_module&quot; data=&quot;${uuid} arg1 arg2&quot;/&gt;)<br>
&gt; &gt; You can use an endpoint in your module to originate calls outbound (see<br>
&gt; &gt; mod_lcr or mod_callcenter for an example)<br>
&gt; &gt; Also, you can create an API for your module<br>
&gt; &gt;<br>
&gt; &gt; IMO creating a module is much more powerful than using a script with ESL.<br>
&gt; &gt; But if you are going to create a module, you really don't need to mess with<br>
&gt; &gt; events (unless they are very specific events like CUSTOM::) because your<br>
&gt; &gt; module has access to much of the freeswitch core.<br>
&gt; &gt;<br>
&gt; &gt; Thanks.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On Thu, Mar 5, 2015 at 5:07 AM, Stanislav Sinyagin &lt;<a href="mailto:ssinyagin@gmail.com" target="_blank">ssinyagin@gmail.com</a>&gt;<br>
&gt; &gt; wrote:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; why at all do you need it to be a C module inside FreeSWITCH?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Why not writing an ESL program which would subscribe to events and<br>
&gt; &gt;&gt; perform the needed actions?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; How about the following scenario:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; 1. In the XML dialplan, you execute &quot;park&quot; application on the incoming<br>
&gt; &gt;&gt; call.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; 2. Your program is listening to events via ESL, and it recognizes that<br>
&gt; &gt;&gt; a channel has been parked<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; 3. Your program starts to playback the ringback tone into that channel<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; 4. Your program performs all the needed lookups and sets needed<br>
&gt; &gt;&gt; variables on the channel<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; 5. Your program transfers or bridges the call where needed.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; This is quite easy to implement in any programming language of your<br>
&gt; &gt;&gt; choice, easy to debug, and it's easily scalable. It can be done in a<br>
&gt; &gt;&gt; multi-threading fashion, like Go or Erlang, or even Java, and perform<br>
&gt; &gt;&gt; as many parallel calls as required.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; quite easy, and you don't have to mess with FreeSWITCH internals :)<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; On Thu, Mar 5, 2015 at 4:07 AM, Juan Pablo L.<br>
&gt; &gt;&gt; &lt;<a href="mailto:jpablolorenzetti@hotmail.com" target="_blank">jpablolorenzetti@hotmail.com</a>&gt; wrote:<br>
&gt; &gt;&gt; &gt; Hi, i m writing a module in C that needs to check for certain<br>
&gt; &gt;&gt; &gt; information in<br>
&gt; &gt;&gt; &gt; a<br>
&gt; &gt;&gt; &gt; database for the caller and the destination number,<br>
&gt; &gt;&gt; &gt; for this the module is subscribing to the CS_INIT channel events, so<br>
&gt; &gt;&gt; &gt; everytime a channel is created<br>
&gt; &gt;&gt; &gt; the module callback is called and it checks the numbers,<br>
&gt; &gt;&gt; &gt; the problem is that the callback gets called twice,<br>
&gt; &gt;&gt; &gt; for the creation of the a-leg of the call and the creation of the b-leg.<br>
&gt; &gt;&gt; &gt; Is there any way to accomplish what i m trying to do ?<br>
&gt; &gt;&gt; &gt; Am i doing it the wrong way?<br>
&gt; &gt;&gt; &gt; I have already try getting testing for the flags in the channel but it<br>
&gt; &gt;&gt; &gt; did<br>
&gt; &gt;&gt; &gt; not work,<br>
&gt; &gt;&gt; &gt; testing of originator or originating does not yield anything ....<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt; i might be doing it wrong maybe ?<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt; Thanks!<br>
&gt; &gt;&gt; &gt;</div>
</div>
</div>
</blockquote>
</div>
</div>
<br>
</div>
</div>
<span class="">_________________________________________________________________________ Professional FreeSWITCH Consulting Services:
<a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a>
<a href="http://www.freeswitchsolutions.com" target="_blank">http://www.freeswitchsolutions.com</a> Official FreeSWITCH Sites
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a>
<a href="http://confluence.freeswitch.org" target="_blank">http://confluence.freeswitch.org</a>
<a href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a> 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></span></div>
</div>
</div>
<br>
_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://confluence.freeswitch.org" target="_blank">http://confluence.freeswitch.org</a><br>
<a href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a><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>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="x_gmail_signature">
<div dir="ltr">Anthony Minessale II &nbsp; &nbsp; &nbsp; ♬ @anthmfs&nbsp;&nbsp;♬ @FreeSWITCH&nbsp;&nbsp;♬
<div><br>
<div>☞ <a href="http://freeswitch.org/" target="_blank">http://freeswitch.org/</a> &nbsp;☞
<a href="http://cluecon.com/" target="_blank">http://cluecon.com/</a> &nbsp;☞ <a href="http://twitter.com/FreeSWITCH" target="_blank">
http://twitter.com/FreeSWITCH</a></div>
<div>
<div>☞ <a href="http://irc.freenode.net" target="_blank">irc.freenode.net</a> #freeswitch&nbsp;☞
<u><a href="http://freeswitch.org/g&#43;" target="_blank">http://freeswitch.org/g&#43;</a></u><br>
<br>
</div>
<div>ClueCon Weekly Development Call&nbsp;<br>
</div>
<div>☎&nbsp;<a href="mailto:sip%3A888@conference.freeswitch.org" target="_blank">sip:888@conference.freeswitch.org</a> &nbsp;☎ &#43;19193869900&nbsp;</div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>