[asterisk-dev] Does Asterisk 'queue' DTMFs?

Steven S. Critchfield critch at basesys.com
Fri Jul 25 14:35:59 CDT 2008


----- "Saúl Ibarra" <saghul at gmail.com> wrote:
> > I think maybe you might not understand DTMF as well as you should.
> >
> > First DTMF events won't be triggered until at least 40msec has
> passed from the beginning of the tone. This is required to know it is
> a DTMF tone and not just a spurious tone heard or one spoken close
> enough. There is some logic to keep a long tone from returning
> multiple digits as well. There is supposed to be a similar 40msec gap
> between tones. BTW, these values may not be the exact proper values,
> but ones I know have worked with MaBell before.
> >
> > Since you haven't specified what type of game you are trying to
> code, you should think whether or not a dropped command is what the
> user would want or expect.
> >
> 
> Hi!
> 
> I'll try to explain it again :)
> 
> This game-like app pretends to use DTMF tones to move up, down, left
> and right (2 ,8 ,4 ,6). The tests I made (described above) showed me
> that uf I press key 2 for 50 times, for example, DTMFs are 'queued'
> and the last ones get into Asterisk wih 10s of delay. This delay is
> too big for something 'realtime', so waht I'm trying to achieve is
> not
> to get DTMFs queued, even if I loose them.
> 
> Did I make myself cleared now? Thank you very much for your interest.

Better. But now for the heatache for you.

I guess first we have to also define what it is you are dialing with. I don't know how much buffer some phones have, but many with displays have some form of buffer. So while you are pressing 2, it first places it in the buffer and then plays the tone. If you are dialing faster than the tones can be played, it becomes queued on the phone to be transfered over the wire. 

So, with the idea that you aren't likely to have dropped tones on the phone itself, let us look at timing.
Total time from the begining of a tone till another tone can be played is 80 msec(40msec of tone, and 40msec of silence). 50*80msec = 4000msec = 4 seconds.
More likely, you are going to have timings in the 50ms each range. 50*100msec = 5000msec = 5 seconds.

You would probably do well to use more than one phone on the same extension/wire so you can monitor the actuall tone generation. You could possibly use the monitor app as well if you wanted to place audio queues in the reply from your script.

So anything longer than the value listed above is due to either your finger not being faster than the DTMF tones, or your script faultering on getting responses returned. Please remember that as a general rule, telephony is about accurate and reliable transmission of data. It is not a design goal to lose information such as key presses.

-- 
Steven Critchfield critch at basesys.com



More information about the asterisk-dev mailing list