DTMF sometimes gets ignored (but only for some people)

Hi, I have a very strange problem and don’t even know where to begin to look.

We’re using AGI and the Java libraries to present an IVR but have gotten complaints from the users that their keypresses are being ignored.

In my sip.conf, under the general section, I have DTMF defined like this (the “relax” line being commented out):

dtmfmode = rfc2833
;relaxdtmf=yes

I’ve confirmed with the provider that it should be rfc2833 as that is what they specifically configured for us.

I turned on dtmf debug level in my logger.conf to my messages file:

I now see lines like these:

DTMF[8744] channel.c: DTMF begin '1' received on SIP/veracity-00005052
DTMF[8744] channel.c: DTMF begin ignored '1' on SIP/veracity-00005052
DTMF[8744] channel.c: DTMF end '1' received on SIP/veracity-00005052, duration 270 ms
DTMF[8744] channel.c: DTMF end passthrough '1' on SIP/veracity-00005052
DTMF[8741] channel.c: DTMF begin '1' received on SIP/veracity-00005056
DTMF[8741] channel.c: DTMF begin ignored '1' on SIP/veracity-00005056
DTMF[8741] channel.c: DTMF end '1' received on SIP/veracity-00005056, duration 415 ms
DTMF[8741] channel.c: DTMF end passthrough '1' on SIP/veracity-00005056

The fact that it says, “ignored” concerns me but I haven’t read any info or forum posts that would indicate this is unwanted behavior.

The Java code that receives the input looks like this. Basically it acts whatever digit gets returned by key or-- if it’s zero-- replays the menu.

char key = 0;

if ( validOptions.contains( "1" ) )
	key = agiChan.streamFile( menu( "menu1" ), validOptions );

if ( validOptions.contains( "2" ) && key == 0 )
	key = agiChan.streamFile( menu( "menu2" ), validOptions );

if ( validOptions.contains( "3" ) && key == 0 )
	key = agiChan.streamFile( menu( "menu3" ), validOptions );

// Press star to hang up.
if ( !validOptions.contains( "1" ) && !validOptions.contains( "2" ) && key == 0 )
	key = agiChan.streamFile( menu( "menu4" ), validOptions );

if ( key == 0 )
	key = agiChan.waitForDigit( 5000 );

return key;

I’m at a loss on this one, especially since it doesn’t happen for everyone. Where would I even start looking/debugging something like this?

Thank you in advance!

Quick update: I uncommented the line:

and will monitor the logs.

Any update on this?

we have only two customers that call in where the dtmf(ivr menu) is ignored. All other calls are fine

Hi

If its just 2 , check what they are dialing in from, we have seen issues like this but in the end he problem is often at tehir end , some pbx and mobile phones send very short dtmf pulses, or users are dialing on handsfree so the dtmf is heard on the line as well

Our provider made some changes on their end and the problem seems to have gone away. I still have no idea what it was that caused or even fixed it.