You also could probably do session.execute(&quot;sleep&quot;, &quot;2000&quot;);<br>But a beep is a more logical indication of when you can start recording.<br><br>I would not avoid phrase macros, they were designed to make ivr more flexible and easy to design.<br>
I think the problem is not related to performance it&#39;s a temporal issue so the beep buys time for a lead-in on the recording.<br><br>The XML from the phrases are stored in memory and parsing them does not become a bottleneck until about the 500 calls per second mark.<br>
<br><br><div class="gmail_quote">On Thu, Apr 10, 2008 at 9:30 PM, Chris Danielson &lt;<a href="mailto:chris@maxpowersoft.com">chris@maxpowersoft.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
After debugging and fiddling with this further I discovered something of<br>
a useful workaround. &nbsp;Here it is. &nbsp;(works every time)<br>
<div class="Ih2E3d"><br>
&nbsp;while (session.ready() &amp;&amp; dtmf.indexOf(&quot;#&quot;) &lt; 0) {<br>
</div> &nbsp; &nbsp;sayphrase(&quot;sayit&quot;, &quot;Say something after the tone and press pound.&quot;);<br>
 &nbsp; &nbsp;var tts = new TeleTone(session);<br>
<br>
tts.generate(&quot;v=-7;%(100,0,941.0,1477.0);v=-7;&gt;=2;+=.1;%(1400,0,350,440)&quot;);<br>
 &nbsp; &nbsp;session.recordFile(FILELOC+filename,on_record_file,&quot;&quot;,30,500,10);<br>
}<br>
<br>
The catch is to trick the user into letting the speech engine catch up<br>
by signaling when it is ready. &nbsp;BTW, are there any plans of integrating<br>
something of a memcache (I know supjigator was researching it)?<br>
<br>
As-is every time a phrase is executed a call is made to the speech<br>
engine &nbsp;switch_ivr_phrase_macro(...) and that call invokes a huge amount<br>
of iteration across the xml elements. &nbsp;For testing, I did minimize the<br>
amount of iterations and found no significant difference in the time<br>
that the phrases stopped and the recording began. &nbsp;I suppose the better<br>
way of doing things is to avoid using phrase macros and stick<br>
predominantly to pre-recorded sound files.<br>
Cheers,<br>
<font color="#888888">Chris<br>
</font><div><div></div><div class="Wj3C7c"><br>
<br>
Chris Danielson wrote:<br>
&gt; The following code seems to always perform the session.recordFile(...)<br>
&gt; function late. &nbsp;And this leads to cutting off the first second of the<br>
&gt; recording. &nbsp;The problem goes away when you remove the<br>
&gt; session.execute(&quot;phrase&quot;,&quot;...&quot;) call. &nbsp;I even ran FreeSWITCH with the<br>
&gt; &quot;-hp&quot; mode to see if that changed things. &nbsp;No luck. &nbsp;Any ideas on what I<br>
&gt; can do other than setup a pre-recorded message to play?<br>
&gt; Cheers,<br>
&gt; Chris<br>
&gt;<br>
&gt; /*<br>
&gt; &lt;macro name=&quot;sayit&quot;&gt;<br>
&gt; &nbsp; &nbsp; &lt;input pattern=&quot;(.*)&quot;&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &lt;match&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;action function=&quot;speak-text&quot; data=&quot;$1&quot;/&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/match&gt;<br>
&gt; &nbsp; &nbsp; &lt;/input&gt;<br>
&gt; &nbsp; &lt;/macro&gt;<br>
&gt; */<br>
&gt;<br>
&gt; function on_record_file(sess, type, obj, arg) {<br>
&gt; &nbsp; &nbsp; try {<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; if (type==&quot;dtmf&quot;) {<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dtmf += obj.digit;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (dtmf.indexOf(&quot;#&quot;) &gt; -1) return false;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&gt; &nbsp; &nbsp; } catch (e) {<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; console_log(&quot;error: &quot; + e + &quot;\n&quot;);<br>
&gt; &nbsp; &nbsp; }<br>
&gt; &nbsp; &nbsp; return true;<br>
&gt; }<br>
&gt;<br>
&gt; var dtmf = &quot;&quot;;<br>
&gt; var FILELOC = &quot;/var/sounds/&quot;;<br>
&gt; var filename = session.uuid+&quot;.wav&quot;;<br>
&gt; while (session.ready() &amp;&amp; dtmf.indexOf(&quot;#&quot;) &lt; 0) {<br>
&gt; &nbsp; session.execute(&quot;phrase&quot;, &quot;sayit, Your life is a joke say something<br>
&gt; and press pound.&quot;);<br>
&gt; &nbsp; session.recordFile(FILELOC+filename,on_record_file,&quot;&quot;,30,800,10);<br>
&gt; }<br>
&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; 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>
&gt;<br>
&gt;<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><br clear="all"><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>
<br>AIM: anthm<br><a href="mailto:MSN%3Aanthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</a><br>GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com">PAYPAL:anthony.minessale@gmail.com</a><br>
IRC: <a href="http://irc.freenode.net">irc.freenode.net</a> #freeswitch<br><br>FreeSWITCH Developer Conference<br><a href="mailto:sip%3A888@conference.freeswitch.org">sip:888@conference.freeswitch.org</a><br><a href="http://iax:guest@conference.freeswitch.org/888">iax:guest@conference.freeswitch.org/888</a><br>
<a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org">googletalk:conf+888@conference.freeswitch.org</a><br>pstn:213-799-1400