[Asterisk-Users] AGI and fast-entered DTMF codes

Steven Critchfield critch at basesys.com
Wed Feb 26 11:46:39 MST 2003


On Wed, 2003-02-26 at 11:44, Alan Murphy wrote:
> Hi everyone,
> 
> We are using an AGI script (Java) to read a code and other details sent
> by a user using DTMF tones. The version of Asterisk we are using is one
> from CVS - approximately 2 weeks old. We have two X100Ps as interfaces
> to the POTS lines. We are based in Ireland, using KewlStart signalling.
> 
> The problem is that, when a user enters the 6 digit code too quickly,
> Asterisk does not seem to be able to keep up. Firstly, we used the "GET
> DATA" method to retrieve all the digits. What usually happens is that
> only the first 3 digits are returned, although sometimes it simply
> returns a null string if the digits are pressed very quickly. When the
> script identifies that this code is invalid, it loops to ask the user to
> re-enter. However, when we attempt to read the input again from
> Asterisk, through the standard input as before, it returns a null
> string. In fact, any attempts after this to read from the input stream
> fail (of course I issue a command to Asterisk before each attempted
> read). 
> 
> We tried increasing the number of digits for Asterisk to read, but it
> had no affect. We also tried the "WAIT FOR DIGIT" method and looped for
> each digit. It was a little better, but failed when the digits were
> pressed very quickly.
> 
> To me, it looks like Asterisk is receiving the tones, but is overflowing
> some buffer somewhere. Can anyone shed some light on where the problem
> lies? 

What do you consider too quickly? I think the standard is for the tone
to be atleast 80 ms, but most hardware will tolerate as low as 45 ms. If
you drop below this amount you are not going to get decoded period. Also
on a phone that lets you send such short DTMF codes, you may run into a
problem of them not generating a true DTMF code. I have noticed
screechings out of cheap phones before it settles on a proper tone, and
sometimes wiggling the key made the tone variable.

On a slightly nicer phone like the one I have on my desk, it seems to
send a constant length tone no matter how short or long the keypress was
for. I even can type ahead of it and it will eventually catch up to me.
In this arrangement and with a perl based AGI script, I have never
received a bad DTMF decode. I also use 'wait for digit' as I have need
to build my own buffer that is clearable. 

Also do you feel that java will be able to scale on your current
hardware to a point that you are comfortable. I know that I start having
trouble on my current hardware at around 18-20 concurrent perl apps
running, but only when they are moving lots of data, or during initial
startup. 
-- 
Steven Critchfield  <critch at basesys.com>




More information about the asterisk-users mailing list