Nik,<div><br class="webkit-block-placeholder"></div><div>There are a lot of ways to make FS dial out and deliver messaging etc. &nbsp;We are going through the process of replacing * for this purpose. &nbsp;For us (getting started with the help of our friends here on the list) it has been pretty easy.</div>
<div><br class="webkit-block-placeholder"></div><div>With * we were using AMI to originate calls ... to migrate to FS we just changed that to use event_socket with bgapi to originate the call and connect the call to a context and extension. &nbsp;There are several ways to get the dialplan to FS after that ... a script, xml_curl, or statically configured in the conf directory.</div>
<div><br class="webkit-block-placeholder"></div><div>So as an example the application we have just logs into the FS socket (similar to * but much better) and then rips off calls like this:</div><div><br class="webkit-block-placeholder">
</div><div>bgapi originate{$set_some_vars}sofia/external/$ANI@$IP:$PORT $EXTENSION xml $CONTEXT</div><div><br class="webkit-block-placeholder"></div><div>The beauty of it all is that:</div><div>&nbsp;&nbsp;-- a lot of flexibility in what you can do (like drive the call through events)</div>
<div>&nbsp;&nbsp;-- the CDR reporting is about 3 million times better than *</div><div>&nbsp;&nbsp;-- obviously higher capacity</div><div><br class="webkit-block-placeholder"></div><div>I&#39;d start playing with event_socket and some static dialplans to get the feel for it ... but if you have an application written already to work with * (i.e. the logic and backend) it will be very easy to migrate and you&#39;ll be glad you did it!</div>
<div><br class="webkit-block-placeholder"></div><div>Shelby</div><div><br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div><div class="gmail_quote">
On Tue, Feb 3, 2009 at 10:53 AM, Nik Middleton <span dir="ltr">&lt;<a href="mailto:nik.middleton@noblesolutions.co.uk">nik.middleton@noblesolutions.co.uk</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Are you suggesting that I should process the call externally instead of<br>
using the dialplan? &nbsp;That would be neat as the audio file select could<br>
be driven from the db select for the number. &nbsp;I presume that I could<br>
also bridge the call to another number as well dependant on DTMF<br>
selection?<br>
<br>
Regards<br>
<div class="Ih2E3d"><br>
<br>
-----Original Message-----<br>
From: <a href="mailto:freeswitch-users-bounces@lists.freeswitch.org">freeswitch-users-bounces@lists.freeswitch.org</a><br>
</div><div><div></div><div class="Wj3C7c">[mailto:<a href="mailto:freeswitch-users-bounces@lists.freeswitch.org">freeswitch-users-bounces@lists.freeswitch.org</a>] On Behalf Of Raul<br>
Fragoso<br>
Sent: 03 February 2009 13:12<br>
To: <a href="mailto:freeswitch-users@lists.freeswitch.org">freeswitch-users@lists.freeswitch.org</a><br>
Subject: Re: [Freeswitch-users] Generating calls from external source<br>
<br>
In addition do David&#39;s suggestion, you probably want to have your<br>
application to watch for some specific events after the call is<br>
originated and take action based on them. For example, you could watch<br>
for the CHANNEL_ANSWER event and play some audio file waiting for some<br>
digit, which is generated by the DTMF event.<br>
To watch only for those specific events, you should do the following<br>
just after authentication (still using Perl as an example, but the<br>
mod_event_socket is language agnostic), then you will receive those<br>
events from FreeSWITCH through the socket stream:<br>
<br>
...<br>
print $sock &quot;auth XXX\n\n&quot;;<br>
print $sock &quot;event plain CHANNEL_ANSWER DTMF\n\n&quot;;<br>
...<br>
<br>
To see a list of available events, please look at the following wiki<br>
pages:<br>
<a href="http://wiki.freeswitch.org/wiki/Mod_event_socket#event" target="_blank">http://wiki.freeswitch.org/wiki/Mod_event_socket#event</a><br>
<a href="http://wiki.freeswitch.org/wiki/Event_list" target="_blank">http://wiki.freeswitch.org/wiki/Event_list</a><br>
<br>
Regards,<br>
<br>
Raul<br>
<br>
On Tue, 2009-02-03 at 09:46 +0000, David Knell wrote:<br>
&gt; Hi Nik,<br>
&gt;<br>
&gt;<br>
&gt; Here&#39;s a snipped in Perl that launches an outbound call:<br>
&gt;<br>
&gt;<br>
&gt; if (my $sock = IO::Socket::INET-&gt;new(Proto =&gt;&#39;tcp&#39;, PeerAddr =&gt;<br>
&gt; &#39;127.0.0.1&#39;, PeerPort =&gt; 8021)) {<br>
&gt; print $sock &quot;auth XXX\n\n&quot;;<br>
&gt; print $sock &quot;api originate {softivr_id=$siid,src_softivr_id=<br>
&gt; $siid,softivr_outdial=true}sofia/frombt/$<a href="mailto:ntd@1.2.3.4">ntd@1.2.3.4</a> $service\n\n&quot;;<br>
&gt; $sock-&gt;close();<br>
&gt; }<br>
&gt;<br>
&gt;<br>
&gt; - it does no error checking or anything, but (line by line) it:<br>
&gt; &nbsp;- opens a socket to the event socket interface<br>
&gt; &nbsp;- authenticates<br>
&gt; &nbsp;- issues an originate which dials out to the number in $ntd. &nbsp;The<br>
&gt; bits in {} set a bunch of variables on the channel, which are used by<br>
&gt; the software which processes the call later on. &nbsp;The call is linked to<br>
&gt; the extension in $service - FS looks this up in the dialplan - which<br>
&gt; handles our end.<br>
&gt; &nbsp;- closes the socket<br>
&gt;<br>
&gt;<br>
&gt; Cheers --<br>
&gt;<br>
&gt;<br>
&gt; Dave<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &gt; Thanks for that, coming from a C++ background it&#39;s a refreshing<br>
&gt; &gt; change to be looking at something that seems logical and efficient.<br>
&gt; &gt;<br>
&gt; &gt; I&#39;d briefly looked at the event socket and wondered if that was the<br>
&gt; &gt; way to go. &nbsp;I presume that there&#39;s some sort of event generation<br>
&gt; &gt; that can trigger and external process as well somewhere, though all<br>
&gt; &gt; I need to do is update mysql (hopefully using some sort of pooled<br>
&gt; &gt; connection)<br>
&gt; &gt;<br>
&gt; &gt; I&#39;m not using a TDM card, I have a direct interconnect with the PSTN<br>
&gt; &gt; breakout provider with 1,500 channels available to me. &nbsp;I&#39;m finding<br>
&gt; &gt; Asterisk proving to be less than stable at high call volumes and<br>
&gt; &gt; load values spike at more than 100 calls with billing/accounting in<br>
&gt; &gt; place, hence my interest in FS. &nbsp;The only thing that&#39;s concerning me<br>
&gt; &gt; is XML at the moment. &nbsp;Lots of code and very wordy. &nbsp;I&#39;m sure I&#39;ll<br>
&gt; &gt; appreciate why XML given time<br>
&gt; &gt;<br>
&gt; &gt; Regards,<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; ____________________________________________________________________<br>
&gt; &gt; From: <a href="mailto:freeswitch-users-bounces@lists.freeswitch.org">freeswitch-users-bounces@lists.freeswitch.org</a><br>
[mailto:<a href="mailto:freeswitch-users-bounces@lists.freeswitch.org">freeswitch-users-bounces@lists.freeswitch.org</a>] On Behalf Of<br>
Michael S Collins<br>
&gt; &gt; Sent: 03 February 2009 01:17<br>
&gt; &gt; To: <a href="mailto:freeswitch-users@lists.freeswitch.org">freeswitch-users@lists.freeswitch.org</a><br>
&gt; &gt; Subject: Re: [Freeswitch-users] Generating calls from external<br>
&gt; &gt; source<br>
&gt; &gt;<br>
&gt; &gt; Nik,<br>
&gt; &gt;<br>
&gt; &gt; Welcome to FreeSWITCH! The short answer is &quot;yes, FS can do that.&quot;<br>
&gt; &gt; The first thing that you should do is unlearn &quot;the Asterisk way&quot; of<br>
&gt; &gt; thinking. Usually there is an elegant way of doing things in FS that<br>
&gt; &gt; wasn&#39;t possible in Ast.<br>
&gt; &gt;<br>
&gt; &gt; I would recommend that you start by looking at the event socket,<br>
&gt; &gt; which is somewhat analogous to the AMI only cooler. :) I have<br>
&gt; &gt; personally done something similar to this using the event socket and<br>
&gt; &gt; a Perl script. The key is to learn the syntax of the originate<br>
&gt; &gt; command. (definitely hit the wiki and IRC channel)<br>
&gt; &gt; Are you using TDM cards for this? Just curious.<br>
&gt; &gt;<br>
&gt; &gt; -MC (IRC nick: mercutioviz)<br>
&gt; &gt;<br>
&gt; &gt; Sent from my iPhone<br>
&gt; &gt;<br>
&gt; &gt; On Feb 2, 2009, at 3:35 PM, &quot;Nik Middleton&quot;<br>
&gt; &gt; &lt;<a href="mailto:nik.middleton@noblesolutions.co.uk">nik.middleton@noblesolutions.co.uk</a>&gt; wrote:<br>
&gt; &gt; &gt; Hi Guys,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; As a long time Asterisk user, I&#39;m looking into freeswitch as an<br>
&gt; &gt; &gt; alternative mainly due to (list multiple reasons here)<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Can anyone give me a pointer as to how I would achieve the<br>
&gt; &gt; &gt; following?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I need to replicate an emergency broadcast system currently<br>
&gt; &gt; &gt; running under Asterisk.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; At the moment, I run through a Mysql database and using the<br>
&gt; &gt; &gt; manager API, issues an Originate command to dial a number.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; When the call is answered, a message is played, and the recipient<br>
&gt; &gt; &gt; has the option of hitting a digit to confirm receipt. &nbsp;I then call<br>
&gt; &gt; &gt; an AGI script to update the database.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Is this fairly easy to do in Freeswitch?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Not looking for code, just some pointers as to what&#39;s available to<br>
&gt; &gt; &gt; do the above /<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Regards,<br>
&gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; Freeswitch-users mailing list<br>
&gt; &gt; &gt; <a href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</a><br>
&gt; &gt; &gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt; &gt; &gt;<br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt; &gt; &gt; <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Freeswitch-users mailing list<br>
&gt; &gt; <a href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</a><br>
&gt; &gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt; &gt;<br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt; &gt; <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Freeswitch-users mailing list<br>
&gt; <a href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</a><br>
&gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
&gt;<br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
&gt; <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<br>
<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>
_______________________________________________<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>
</div></div></blockquote></div><br></div>