<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">If its in park thats one thing, if you are doing ANYTHING to the channel, you have potential concurrency issues, if you are doing anything with audio from different threads, nothing good will come from it. &nbsp;As for another possible solution to the original problem, you could sched_api and uuid_transfer to a different extension that played what you needed to play and then hung up too.<div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 26, 2016, at 3:37 PM, Matt Broad &lt;<a href="mailto:matt@supportedbusiness.com" class="">matt@supportedbusiness.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">:/&nbsp;<div class="">&nbsp;<br class=""></div><div class=""><div class="">I only came across this method after trying to get the sched_broadcast to not block.&nbsp; An answer from Anthony on the 17th Sept 2015 (shown below) gave me the idea, though I have never implemented it into anything other than test code.</div><div class=""><span style="font-size:12.8px" class=""><i class=""><br class=""></i></span></div><div class=""><span style="font-size:12.8px" class=""><i class="">"uuid_broadcast does not block.</i></span><div style="font-size:12.8px" class=""><i class="">The problem is you are calling it from your js app which is occupying the session thread.</i></div><div style="font-size:12.8px" class=""><i class=""><br class=""></i></div><div style="font-size:12.8px" class=""><i class="">To perform async operation you need to run your script outside the session thread by calling the script via the api interface via jsrun&nbsp;and pass the uuid then put the channel into park or use an esl script to control the session externally."</i></div><div class="" style="font-size:12.8px"><div class="adm"><div id="q_14fd9e54ca839b9d_1" class="h4"></div></div></div></div><div class=""><br class=""></div><div class=""><div class="">I must admit the inner workings of the session thread is not something I have looked into personally (one day maybe). &nbsp;</div><div class="">If you could give me a quick explanation as to why this wouldn't work that would be appreciated :)</div></div><div class=""><br class=""></div><div class="">&nbsp;</div></div><div class="">Thanks</div><div class="">Matt</div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On 26 January 2016 at 17:09, Michael Jerris <span dir="ltr" class="">&lt;<a href="mailto:mike@jerris.com" target="_blank" class="">mike@jerris.com</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">This isn't supposed to work.. and might cause crashes.<div class=""><div class="h5"><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Jan 26, 2016, at 10:18 AM, Matt Broad &lt;<a href="mailto:matt@supportedbusiness.com" target="_blank" class="">matt@supportedbusiness.com</a>&gt; wrote:</div><br class=""><div class=""><div dir="ltr" class="">works fine for me :)<div class=""><br class=""></div><div class=""><b class="">DialPlan</b></div><div class=""><div class="">&nbsp;&lt;condition field="destination_number" expression="^1234$"&gt;</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;action application="answer" /&gt;</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &lt;action application="javascript" data="test.js" /&gt;</div></div><div class="">&lt;/condition&gt;<br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><b class="">test.js</b></div><div class=""><div class="">result = apiExecute("sched_api","+5 "+session.uuid+" jsrun /scripts/inc.js "+session.uuid);</div><div class="">console_log("notice", "entering loop\n");</div><div class="">while (session.ready())</div><div class="">{</div><div class="">&nbsp; &nbsp; //sit here whilst the call is still connected &nbsp; &nbsp;</div><div class="">}</div><div class="">console_log("notice", "call ended\n");</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><b class="">inc.js</b><br class=""></div><div class=""><div class="">include("includes/General.js"); //this includes a function "Output" to log to screen<br class=""></div><div class=""><br class=""></div><div class="">var session = new Session(argv[0]);</div><div class=""><br class=""></div><div class="">if (session.ready()) {</div><div class="">&nbsp; &nbsp; Output("TIMEOUT");</div><div class="">&nbsp; &nbsp; session.execute("playback", "/sounds/en/us/callie/test.wav");</div><div class="">&nbsp; &nbsp; session.execute("sleep","500");</div><div class="">&nbsp; &nbsp; session.hangup();</div><div class="">}</div><div class="">exit("TIMEOUT");</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Thanks</div><div class="">Matt</div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On 26 January 2016 at 14:43, Michael Jerris <span dir="ltr" class="">&lt;<a href="mailto:mike@jerris.com" target="_blank" class="">mike@jerris.com</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">this won't actually work.&nbsp; You can't session execute from outside the session thread like this.<div class=""><div class=""><span class=""></span><br class=""><br class="">On Tuesday, January 26, 2016, Matt Broad &lt;<a href="mailto:matt@supportedbusiness.com" target="_blank" class="">matt@supportedbusiness.com</a>&gt; wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Hi Normando,<div class=""><br class=""></div><div class="">from your description I assumed you were just trying to schedule a file to play and hang up.</div><div class="">&nbsp;&nbsp;</div><div class="">If you are trying to run a block of code at a certain time in the future then you could use sched_api. <a href="https://freeswitch.org/confluence/display/FREESWITCH/mod_commands#mod_commands-sched_api" target="_blank" class="">https://freeswitch.org/confluence/display/FREESWITCH/mod_commands#mod_commands-sched_api</a>&nbsp; This will execute an API command after a given time.&nbsp; In your case you could use the API command <b class="">jsrun</b> to run a script containing your function.</div><div class=""><br class=""></div><div class="">An example would be:</div><div class=""><br class=""></div><div class=""><i class="">result = apiExecute("sched_api","120 "+session.uuid+" jsrun /scripts/function.js "+session.uuid+" "+<span style="font-size:12.8px" class="">despedida</span>);</i></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">The above will execute jsrun after 120 seconds (this is linked to the session.uuid so if the channel is destroyed the task will be removed automatically).&nbsp; This will run the function.js file and pass it the current session uuid along with the&nbsp;<span style="font-size:12.8px" class="">despedida variable</span>. &nbsp;</div><div class="">Within the function.js file, you can create a session object using the uuid passed through and then use this to play the file etc</div><div class=""><br class=""></div><div class="">e.g of function.js</div><div class=""><br class=""></div><div class="">var session = new Session(argv[0]);</div><div class="">var&nbsp;<span style="font-size:12.8px" class="">despedida = argv[1];</span></div><div class=""><span style="font-size:12.8px" class=""><br class=""></span></div><div class=""><span style="font-size:12.8px" class="">if (session.ready()) {</span><br class=""></div><div class=""><span style="font-size:12.8px" class="">&nbsp; &nbsp; logger("TIMEOUT");</span><br style="font-size:12.8px" class=""><span style="font-size:12.8px" class="">&nbsp; &nbsp; session.execute("playback", sonidos + "/TIMEOUT.wav");</span><br style="font-size:12.8px" class=""><span style="font-size:12.8px" class="">&nbsp; &nbsp; session.execute("sleep","500")</span><span style="font-size:12.8px" class="">;</span><br style="font-size:12.8px" class=""><span style="font-size:12.8px" class="">&nbsp; &nbsp; logger(despedida);</span><br style="font-size:12.8px" class=""><span style="font-size:12.8px" class="">&nbsp; &nbsp; session.execute("playback", sonidos + "/" + despedida + ".wav");</span><br style="font-size:12.8px" class=""><span style="font-size:12.8px" class="">&nbsp; &nbsp; session.hangup();</span><br style="font-size:12.8px" class=""><span style="font-size:12.8px" class="">}</span><br style="font-size:12.8px" class=""><span style="font-size:12.8px" class="">exit("TIMEOUT");</span><br style="font-size:12.8px" class=""><br style="font-size:12.8px" class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">thanks</div><div class="">Matt</div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On 25 January 2016 at 22:11, Michael Jerris <span dir="ltr" class="">&lt;<a class="">mike@jerris.com</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">&nbsp;If you are trying to trigger that code to run at a specific time, regardless of what else it is doing, that will be very difficult to do with embedded js, and running with something async is probably required.&nbsp; A note, you might want to look at phrase macros as they will greatly simplify some of that code as well.\<div class="">Mike</div><div class=""><div class=""><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Jan 25, 2016, at 4:24 PM, Normando Hall &lt;<a class="">nhall@unixlan.com.ar</a>&gt; wrote:</div><br class=""><div class="">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000" class="">
    Hi Michael.<br class="">
    <br class="">
    Yes, you are right, maybe the better is to use ESL. <br class="">
    My script is basically an IVR. When all the audio files are played,
    then wait until the user press a dtmf key or timeout occur. Because
    there are a lot of files to play based on caller ID, I wait for the
    user input at the end of the script, but prior to finish the script,
    because hangsup.<br class="">
    <br class="">
    I workaround this with:<br class="">
    <br class="">
    session.collectInput(onPlay, services, afterMenuTimeOut,
    totalTimeOut);<br class="">
    playTimeout(despedida)<br class="">
    <br class="">
    and return always "true" from "onPlay" callback.<br class="">
    <br class="">
    Respond to your question, this is the function I want to run in
    setTimeout:<br class="">
    <br class="">
    function playTimeout(despedida){<br class="">
    &nbsp;&nbsp;&nbsp; if (session.ready()) {<br class="">
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger("TIMEOUT");<br class="">
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; session.execute("sleep","400");<br class="">
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; session.execute("playback", sonidos + "/TIMEOUT.wav");<br class="">
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; session.execute("sleep","400");<br class="">
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger(despedida);<br class="">
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; session.execute("playback", sonidos + "/" + despedida +
    ".wav");<br class="">
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; session.hangup();<br class="">
    &nbsp;&nbsp;&nbsp; }<br class="">
    &nbsp;&nbsp;&nbsp; exit("TIMEOUT");<br class="">
    }<br class="">
    <br class="">
    Thanks<br class="">
    Normando<br class="">
    <br class="">
    <div class="">El 25/01/2016 a las 05:20 p.m., Michael
      Jerris escribió:<br class="">
    </div>
    <blockquote type="cite" class="">What exactly is the javascript doing when you want to
      call that callback? &nbsp;this is probably not possible due to how the
      JavaScript is blocked by native functions when doing actions such
      as handling audio due to the threading model of the embedded
      languages.&nbsp; They run in the session thread so they are not as
      async as people tend to be used to with js. &nbsp; This sort of
      approach might be more appropriate when using js in a remote
      control type structure such as when controlling a session over
      esl, but not in the embedded mod_v8. &nbsp;we have discussed doing a
      truly async type control for embedded languages but have never
      implemented it.<span class=""></span>
      <div class=""><br class="">
        On Monday, January 25, 2016, Normando Hall &lt;<a class=""></a><a class="">nhall@unixlan.com.ar</a>&gt;
        wrote:<br class="">
        <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div bgcolor="#FFFFFF" text="#000000" class=""> Thanks Matt, I can play
            a file, but still can't run the function. Are there any
            application can run a function instead a file?<br class="">
            <br class="">
            Thanks!<br class="">
            Normando<br class="">
            <br class="">
            <br class="">
            <div class="">El 25/01/2016 a las 05:59 a.m., Matt Broad escribió:<br class="">
            </div>
            <blockquote type="cite" class="">
              <div dir="ltr" class="">try using the 1 liner sched_broadcast&nbsp;<a href="https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+sched+broadcast" target="_blank" class=""></a><a href="https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+sched+broadcast" target="_blank" class="">https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+sched+broadcast</a>
                <div class=""><br class="">
                </div>
                <div class="">The below will schedule a broadcast to play
                  /tmp/hangupfile.mp3 to both legs after 60 seconds.&nbsp;</div>
                <div class=""><br class="">
                </div>
                <div class=""><i class="">maxTimeTaskID =&nbsp;</i><i class="">session.execute("sched_broadcast",

                    "+60 playback!normal_clearing::/tmp/hangupfile.mp3
                    both")</i>;<br class="">
                </div>
                <div class=""><br class="">
                </div>
                <div class="">If you find you need to cancel the broadcast use:</div>
                <div class=""><br class="">
                </div>
                <div class=""><i class="">session.execute("sched_cancel",maxTimeTaskID);</i><br class="">
                </div>
                <div class=""><br class="">
                </div>
                <div class="">hope this helps.</div>
                <div class=""><br class="">
                </div>
                <div class="">thanks</div>
                <div class="">Matt</div>
              </div>
              <div class="gmail_extra"><br class="">
                <div class="gmail_quote">On 25 January 2016 at 06:58, <span dir="ltr" class="">&lt;<a class="">royj@yandex.ru</a>&gt;</span>
                  wrote:<br class="">
                  <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">have
                    no relationship to the resource, but first link to
                    request 'asynchronous code javascript'<br class="">
                    <br class="">
                    <a href="http://www.hiddenwebgenius.com/blog/guides/understanding-javascripts-asynchronous-code/" rel="noreferrer" target="_blank" class="">http://www.hiddenwebgenius.com/blog/guides/understanding-javascripts-asynchronous-code/</a><br class="">
                    <br class="">
                    25.01.2016, 09:16, "Normando Hall" &lt;<a class=""></a><a class="">nhall@unixlan.com.ar</a>&gt;:<br class="">
                    <div class="">
                      <div class="">&gt; Sorry, I missed to say it is Freeswitch
                        1.4<br class="">
                        &gt;<br class="">
                        &gt; El 25/01/2016 a las 02:53 a.m., Normando
                        Hall escribió:<br class="">
                        &gt;&gt; &nbsp;Hello everybody.<br class="">
                        &gt;&gt;<br class="">
                        &gt;&gt; &nbsp;I am coding a js script to do
                        somethings, and I want to add a global<br class="">
                        &gt;&gt; &nbsp;timeout, to call a function to play a
                        file and hangup. But the function<br class="">
                        &gt;&gt; &nbsp;called inmediatelly.<br class="">
                        &gt;&gt; &nbsp;Also tested with setInterval, the same
                        behaviour.<br class="">
                        &gt;&gt;<br class="">
                        &gt;&gt; &nbsp;function playTimeout(despedida){<br class="">
                        &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (session.ready()) {<br class="">
                        &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger("TIMEOUT");<br class="">
                        &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.execute("playback",
                        sonidos + "/TIMEOUT.wav");<br class="">
                        &gt;&gt;
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.execute("sleep","500");<br class="">
                        &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger(despedida);<br class="">
                        &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.execute("playback",
                        sonidos + "/" + despedida + ".wav");<br class="">
                        &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.hangup();<br class="">
                        &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br class="">
                        &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit("TIMEOUT");<br class="">
                        &gt;&gt; &nbsp;}<br class="">
                        &gt;&gt;<br class="">
                        &gt;&gt;
                        &nbsp;setTimeout(playTimeout(despedida),120000);<br class="">
                        &gt;&gt; &nbsp;.<br class="">
                        &gt;&gt; &nbsp;.<br class="">
                        &gt;&gt; &nbsp;.<br class="">
                        &gt;&gt; &nbsp;my script continue<br class="">
                        &gt;&gt;<br class="">
                        &gt;&gt; &nbsp;Any help is welcome!<br class="">
                        &gt;&gt;<br class="">
                        &gt;&gt; &nbsp;Thank you<br class="">
                        &gt;&gt; &nbsp;Normando<br class="">
                        &gt;&gt;<br class="">
                        &gt;&gt;
&nbsp;_________________________________________________________________________<br class="">
                        &gt;&gt; &nbsp;Professional FreeSWITCH Consulting
                        Services:<br class="">
                        &gt;&gt; &nbsp;<a class="">consulting@freeswitch.org</a><br class="">
                        &gt;&gt; &nbsp;<a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank" class="">http://www.freeswitchsolutions.com</a><br class="">
                        &gt;&gt;<br class="">
                        &gt;&gt; &nbsp;Official FreeSWITCH Sites<br class="">
                        &gt;&gt; &nbsp;<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class="">
                        &gt;&gt; &nbsp;<a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://confluence.freeswitch.org</a><br class="">
                        &gt;&gt; &nbsp;<a href="http://www.cluecon.com/" rel="noreferrer" target="_blank" class="">http://www.cluecon.com</a><br class="">
                        &gt;&gt;<br class="">
                        &gt;&gt; &nbsp;FreeSWITCH-users mailing list<br class="">
                        &gt;&gt; &nbsp;<a class="">FreeSWITCH-users@lists.freeswitch.org</a><br class="">
                        &gt;&gt; &nbsp;<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br class="">
                        &gt;&gt; &nbsp;UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br class="">
                        &gt;&gt; &nbsp;<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class="">
                        &gt;<br class="">
                        &gt;
_________________________________________________________________________<br class="">
                        &gt; Professional FreeSWITCH Consulting
                        Services:<br class="">
                        &gt; <a class="">consulting@freeswitch.org</a><br class="">
                        &gt; <a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank" class="">http://www.freeswitchsolutions.com</a><br class="">
                        &gt;<br class="">
                        &gt; Official FreeSWITCH Sites<br class="">
                        &gt; <a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class="">
                        &gt; <a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://confluence.freeswitch.org</a><br class="">
                        &gt; <a href="http://www.cluecon.com/" rel="noreferrer" target="_blank" class="">http://www.cluecon.com</a><br class="">
                        &gt;<br class="">
                        &gt; FreeSWITCH-users mailing list<br class="">
                        &gt; <a class="">FreeSWITCH-users@lists.freeswitch.org</a><br class="">
                        &gt; <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br class="">
                        &gt; UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br class="">
                        &gt; <a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class="">
                        <br class="">
_________________________________________________________________________<br class="">
                        Professional FreeSWITCH Consulting Services:<br class="">
                        <a class="">consulting@freeswitch.org</a><br class="">
                        <a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank" class="">http://www.freeswitchsolutions.com</a><br class="">
                        <br class="">
                        Official FreeSWITCH Sites<br class="">
                        <a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class="">
                        <a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://confluence.freeswitch.org</a><br class="">
                        <a href="http://www.cluecon.com/" rel="noreferrer" target="_blank" class="">http://www.cluecon.com</a><br class="">
                        <br class="">
                        FreeSWITCH-users mailing list<br class="">
                        <a class="">FreeSWITCH-users@lists.freeswitch.org</a><br class="">
                        <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br class="">
                        UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br class="">
                        <a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a></div>
                    </div>
                  </blockquote>
                </div>
                <br class="">
              </div>
              <br class="">
              <fieldset class=""></fieldset>
              <br class="">
              <pre class="">_________________________________________________________________________
Professional FreeSWITCH Consulting Services: 
<a class="">consulting@freeswitch.org</a>
<a href="http://www.freeswitchsolutions.com/" target="_blank" class="">http://www.freeswitchsolutions.com</a>

Official FreeSWITCH Sites
<a href="http://www.freeswitch.org/" target="_blank" class="">http://www.freeswitch.org</a>
<a href="http://confluence.freeswitch.org/" target="_blank" class="">http://confluence.freeswitch.org</a>
<a href="http://www.cluecon.com/" target="_blank" class="">http://www.cluecon.com</a>

FreeSWITCH-users mailing list
<a class="">FreeSWITCH-users@lists.freeswitch.org</a>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank" class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank" class="">http://lists.freeswitch.org/mailman/options/freeswitch-users</a>
<a href="http://www.freeswitch.org/" target="_blank" class="">http://www.freeswitch.org</a></pre>
            </blockquote>
            <br class="">
          </div>
        </blockquote>
      </div>
      <br class="">
      <fieldset class=""></fieldset>
      <br class="">
      <pre class="">_________________________________________________________________________
Professional FreeSWITCH Consulting Services: 
<a class="">consulting@freeswitch.org</a>
<a href="http://www.freeswitchsolutions.com/" target="_blank" class="">http://www.freeswitchsolutions.com</a>

Official FreeSWITCH Sites
<a href="http://www.freeswitch.org/" target="_blank" class="">http://www.freeswitch.org</a>
<a href="http://confluence.freeswitch.org/" target="_blank" class="">http://confluence.freeswitch.org</a>
<a href="http://www.cluecon.com/" target="_blank" class="">http://www.cluecon.com</a>

FreeSWITCH-users mailing list
<a class="">FreeSWITCH-users@lists.freeswitch.org</a>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank" class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank" class="">http://lists.freeswitch.org/mailman/options/freeswitch-users</a>
<a href="http://www.freeswitch.org/" target="_blank" class="">http://www.freeswitch.org</a></pre>
    </blockquote>
    <br class="">
  </div>

_________________________________________________________________________<br class="">Professional FreeSWITCH Consulting Services: <br class=""><a class="">consulting@freeswitch.org</a><br class=""><a href="http://www.freeswitchsolutions.com/" target="_blank" class="">http://www.freeswitchsolutions.com</a><br class=""><br class="">Official FreeSWITCH Sites<br class=""><a href="http://www.freeswitch.org/" target="_blank" class="">http://www.freeswitch.org</a><br class=""><a href="http://confluence.freeswitch.org/" target="_blank" class="">http://confluence.freeswitch.org</a><br class=""><a href="http://www.cluecon.com/" target="_blank" class="">http://www.cluecon.com</a><br class=""><br class="">FreeSWITCH-users mailing list<br class=""><a class="">FreeSWITCH-users@lists.freeswitch.org</a><br class=""><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank" class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br class="">UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank" class="">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br class=""><a href="http://www.freeswitch.org/" target="_blank" class="">http://www.freeswitch.org</a></div></blockquote></div><br class=""></div></div></div></div><br class="">_________________________________________________________________________<br class="">
Professional FreeSWITCH Consulting Services:<br class="">
<a class="">consulting@freeswitch.org</a><br class="">
<a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank" class="">http://www.freeswitchsolutions.com</a><br class="">
<br class="">
Official FreeSWITCH Sites<br class="">
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class="">
<a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://confluence.freeswitch.org</a><br class="">
<a href="http://www.cluecon.com/" rel="noreferrer" target="_blank" class="">http://www.cluecon.com</a><br class="">
<br class="">
FreeSWITCH-users mailing list<br class="">
<a class="">FreeSWITCH-users@lists.freeswitch.org</a><br class="">
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br class="">
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br class="">
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class=""></blockquote></div><br class=""></div>
</blockquote>
</div></div><br class="">_________________________________________________________________________<br class="">
Professional FreeSWITCH Consulting Services:<br class="">
<a href="mailto:consulting@freeswitch.org" target="_blank" class="">consulting@freeswitch.org</a><br class="">
<a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank" class="">http://www.freeswitchsolutions.com</a><br class="">
<br class="">
Official FreeSWITCH Sites<br class="">
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class="">
<a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://confluence.freeswitch.org</a><br class="">
<a href="http://www.cluecon.com/" rel="noreferrer" target="_blank" class="">http://www.cluecon.com</a><br class="">
<br class="">
FreeSWITCH-users mailing list<br class="">
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank" class="">FreeSWITCH-users@lists.freeswitch.org</a><br class="">
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br class="">
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br class="">
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class=""></blockquote></div><br class=""></div>
_________________________________________________________________________<br class="">Professional FreeSWITCH Consulting Services: <br class=""><a href="mailto:consulting@freeswitch.org" target="_blank" class="">consulting@freeswitch.org</a><br class=""><a href="http://www.freeswitchsolutions.com/" target="_blank" class="">http://www.freeswitchsolutions.com</a><br class=""><br class="">Official FreeSWITCH Sites<br class=""><a href="http://www.freeswitch.org/" target="_blank" class="">http://www.freeswitch.org</a><br class=""><a href="http://confluence.freeswitch.org/" target="_blank" class="">http://confluence.freeswitch.org</a><br class=""><a href="http://www.cluecon.com/" target="_blank" class="">http://www.cluecon.com</a><br class=""><br class="">FreeSWITCH-users mailing list<br class=""><a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank" class="">FreeSWITCH-users@lists.freeswitch.org</a><br class=""><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank" class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br class="">UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank" class="">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br class=""><a href="http://www.freeswitch.org/" target="_blank" class="">http://www.freeswitch.org</a></div></blockquote></div><br class=""></div></div></div></div><br class="">_________________________________________________________________________<br class="">
Professional FreeSWITCH Consulting Services:<br class="">
<a href="mailto:consulting@freeswitch.org" class="">consulting@freeswitch.org</a><br class="">
<a href="http://www.freeswitchsolutions.com/" rel="noreferrer" target="_blank" class="">http://www.freeswitchsolutions.com</a><br class="">
<br class="">
Official FreeSWITCH Sites<br class="">
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class="">
<a href="http://confluence.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://confluence.freeswitch.org</a><br class="">
<a href="http://www.cluecon.com/" rel="noreferrer" target="_blank" class="">http://www.cluecon.com</a><br class="">
<br class="">
FreeSWITCH-users mailing list<br class="">
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org" class="">FreeSWITCH-users@lists.freeswitch.org</a><br class="">
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br class="">
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" rel="noreferrer" target="_blank" class="">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br class="">
<a href="http://www.freeswitch.org/" rel="noreferrer" target="_blank" class="">http://www.freeswitch.org</a><br class=""></blockquote></div><br class=""></div>
_________________________________________________________________________<br class="">Professional FreeSWITCH Consulting Services: <br class=""><a href="mailto:consulting@freeswitch.org" class="">consulting@freeswitch.org</a><br class="">http://www.freeswitchsolutions.com<br class=""><br class="">Official FreeSWITCH Sites<br class="">http://www.freeswitch.org<br class="">http://confluence.freeswitch.org<br class="">http://www.cluecon.com<br class=""><br class="">FreeSWITCH-users mailing list<br class="">FreeSWITCH-users@lists.freeswitch.org<br class="">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users<br class="">UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users<br class="">http://www.freeswitch.org</div></blockquote></div><br class=""></div></body></html>