[Freeswitch-users] A DTMF issue

Steven Ayre steveayre at gmail.com
Tue Jun 7 19:54:26 MSD 2011


It's a simple fix. Always check session.ready when you loop. Yes, that's how
it's designed to work.

-Steve



On 7 June 2011 16:05, Yungwei Chen <yungwei at resolvity.com> wrote:

> That's how it's supposed to work and no workaround?
>
>
>
> *From:* freeswitch-users-bounces at lists.freeswitch.org [mailto:
> freeswitch-users-bounces at lists.freeswitch.org] *On Behalf Of *Steven Ayre
> *Sent:* Friday, June 03, 2011 5:46 PM
> *To:* FreeSWITCH Users Help
> *Subject:* Re: [Freeswitch-users] A DTMF issue
>
>
>
> You should be checking session.ready() in that loop, as it is I think
> you'll find the scripts are never ending when the channel is hung up.
>
> streamFile/flushDigits probably return instantly, but then get called again
> on the next loop iteration. The problem would get slightly worse after each
> test call since there would be an extra copy of the script running.
>
> Try replacing:
>     while(true) {
> with:
>     while(session.ready()) {
>
> -Steve
>
> On 3 June 2011 23:35, Yungwei Chen wrote:
>
> Hi,
>
> When testing the following javascript program, I notice a problem that it
> takes longer and longer for freeswitch to respond to DTMF input for some
> reason.
> Please refer to http://pastebin.freeswitch.org/16435 for debug logs.
> Notice that the difference in time between any adjacent pairs of the
> following is increasing as time goes by. Am I missing something here?
>        switch_ivr_play_say.c:1279 Codec Activated L16 at 8000hz 1 channels
> 20ms
>        switch_rtp.c:3302 RTP RECV DTMF 2:960
> Thanks.
>
> Here's the javascript program:
> var dtmf_digits = "";
>
>
> function on_dtmf_28(session, type, digits, arg)
> {
>    if (type == "dtmf")
>    {
>
>        dtmf_digits = digits.digit;
>
>        console_log("dtmf_digits=" + dtmf_digits + "\n");
>
>        return false; // barge-in / done
>    }
>    return true;
> }
>
> while (true)
> {
>        dtmf_digits = "";
>        session.flushDigits();
>        session.streamFile("/usr/local/freeswitch/sounds/long-prompt.wav",
> on_dtmf_28, false);
>
>        if(dtmf_digits.length == 0)
>        {
>            /* no input */
>            console_log("no input\n");
>            session.speak('flite', 'kal', 'no input!', null);
>        }
>        else if(dtmf_digits == "1" || dtmf_digits == "2")
>        {
>                console_log("match "+dtmf_digits+"\n");
>                session.speak('flite', 'kal', 'you pressed ' + dtmf_digits+
> '!', null);
>        }
>        else
>        {
>            /* no match */
>            console_log("no match\n");
>            session.speak('flite', 'kal', "no match!", null);
>        }
>
> }
>
>
>
> _______________________________________________
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20110607/6e5a42ee/attachment-0001.html 


More information about the FreeSWITCH-users mailing list