[Help] DTMF detect in Conference


I’m using Meetme application for conference. Call conference is working fine! The problem i’m facing is related to DTMF detection in call conference. Assume me, my friend and a IVR banking system is in conference. When i enter account number,etc (via my phone key pad) the IVR system in the conference is not detecting it. Any suggestions/ideas?

I’m using Asterisk with SIP Only. Codec used is G 711 ulaw and dtmf mode is inband.

Please help me in solving this issue.


There is not good solution for this. DTMF only passes through meetme seemlessly when you use only Zap channels.

You could try the altered version of app_conference I wrote a few months ago which has DTMF broadcasting, but on heavy usage it can crash your Asterisk server:

DTMF only passes through meetme seemlessly when you use only Zap channels.

Then why is it that SIP standard was developed to replace POTS?

The solution for this is that you have to try the different values
(inband, rfc2833, info etc) for dtmfmode in sip.conf for the specific context
to see which dtmf mode works.

refer the link :- voip-info.org/wiki/view/Aste … p+dtmfmode

Digium wrote meetme around the Zaptel channel so it is not flexible in how it handles DTMF. Inband SIP DTMF can sometimes get one DTMF tone out of 5 through, but more often it does not get any.

app_conference is not wrapped around Zaptel so it does not have these limitations which is why it was relatively easy to write DTMF broadcasting into it as opposed to meetme.

Thanks for your reply. I got back from my other priority work and started looking into your code set for conference app. I’ve few questions on it,

  1. Is the conference application is part of any latest version of asterisk or it’s just a separate module you developed for internal use / testing.
  2. If it crashes asterisk on heavy load. Can you explain a little bit more on what call volume it would do (atleast a appx figure).

Thanks again,

I tested the conference app with my sample dial plans. But, still it doesn’t work. No DTMF tones are getting broadcasted.

Any suggestions?


Please post your extensions.conf records for entry into the conference as well as Asterisk CLI output of when DMF digits were pressed by participants.

As for the code, it was created by the iaxclient-dev team and I simply modified it to work with DTMF broadcasting. My bundle can be installed on existing Asterisk 1.2 tree builds.

As for capacity, it seems to kill Asterisk somewhere around 2000 DTMF tones per hour, but this is not predictable and is random. I once had it running fine for 2 weeks at about 10000 calls per day, then it crashed twice in one day. It is a double-free memory crash and happens randomly, and since I am no good at debugging Asterisk C memory issues I have not been able to take this any further until someone else can help.

Thanks for your reply.

Using Originate manager api i execute these dial plans. It calls any US number and puts it in the conference say test.

exten => _X.,1,Dial(SIP/+1${EXTEN}@to-bandwidth,60,mt)
exten => _X.,2,NoOp(${DIALSTATUS})
exten => _X.,3,Hangup
exten => _X.,102,NoOp(${DIALSTATUS})
exten => _X.,103,Hangup

exten => h,1,Hangup

exten => _X.,1,Conferene(test/S/1)

exten => h,1,Hangup

From my SIP phone i’m already in the conference test using the below dialplan


exten => 100,1,Conference(test/S/1)

exten => h,1,Hangup

Here are the steps,

  1. From SIP phone get into the conference test using internal dial plan context.
  2. Using Originate call my pbx (It’s an Avaya Partner system)
  3. Once PBX answers the call the call-leg2 executes and puts the call into the conference test. Conference happens successfully.
  4. Now my sip phone as a paricipant of Conference test hears the voice of my PBX to enter for extension.
  5. From my SIP phone entering my extension. It doesn’t get recognized.

Asterisk CLI Output

– Executing Conference(“SIP/200-c5c3”, “test/S/1”) in new stack
== Manager ‘admin’ logged on from
– Executing Dial(“Local/7033911255@call-leg1-d686,2”, “SIP/+17033911255@to-bandwidth|60|mt”) in new stack
– Called +17033911255@to-bandwidth
– Started music on hold, class ‘default’, on channel ‘Local/7033911255@call-leg1-d686,2’
– SIP/to-bandwidth-19e8 is making progress passing it to Local/7033911255@call-leg1-d686,2
– doing lookup for ‘iax.jnctn.net
– SIP/to-bandwidth-19e8 answered Local/7033911255@call-leg1-d686,2
– Stopped music on hold on Local/7033911255@call-leg1-d686,2
> Channel Local/7033911255@call-leg1-d686,1 was answered.
== Manager ‘admin’ logged off from
– Executing Conference(“Local/7033911255@call-leg1-d686,1”, “test/S/1”) in new stack
– Executing NoOp(“Local/7033911255@call-leg1-d686,2”, “SIP/to-bandwidth-19e8 <—> ANSWER”) in new stack
– Executing Hangup(“Local/7033911255@call-leg1-d686,2”, “”) in new stack


Apart from my sip phone i also tried with other regular phones. But, it didn’t work…
Also, i tried changing different DTMF mode settings. Still it didn’t work.

On the Asterisk crash problem with your version of Conference happens only on dtmf tones being used but, not without it - right?

Looks like you are not using the suggested extensions.conf entries with the proper flags as I mention in the release:

Flags for Conference:
o M: Moderator (presently same as speaker)
o S: Speaker
o L: Listener
o T: “Telephone caller” (just for stats?).
o V: Do VAD on this caller
o D: Use Denoise filter on this caller.
o d: Send manager events when DTMF is received.
o q: Do not play enter or exit sounds.
o i: use inband dtmf broadcast.
o t: use rfc dtmf signal broadcast.

So you would want to use:
exten => _X.,1,Conferene(test|Sit)

It worked. But, not consistent.

Sometimes it recognizes 2 out of 3 digits, sometimes none, sometimes last digit,… Anyway will get back to you with more questions and suggestions as i walk into the code. Meanwhile, if you have any suggestions. Please write.

Thanks for your help!