DTMF issues in a conference

Hello, I’ve done quite a few google searches, but can’t find a resolution to my issue, which is:

  1. When I dial a number straight from MicroSIP through my PBX, DTMF works just fine
  2. When I use a “merge” context in to a conference, DTMF does not pass

I have tried all DTMF options (Auto, inband, sip-info, RFC2833), and I’ve matched it to my trunk, but when an inbound call to the conference is received, DTMF does not pass.

use case: I call “scammer” numbers and my calls are often sent to voicemail. My DID is logged and they robo-dial me back. The call-back puts them in a conference (inbound route sends to the conference) which other friends (scam-baiters) are dialed in to. When the IVR inbound says “press 1 to speak to a scamazon agent”, we can press 1 all day long, but the IVR doesn’t detect it.

Why would DTMF responses work when the call is sent to an extension (MicroSIP auto-answer), but DTMF isn’t passed in the conference?

What do you exactly mean by a ‘merge context’ ?

[merge]
exten => s,1,Answer
exten => s,2,Set(CALLFILENAME=${STRFTIME(${EPOCH},%Y%m%d-%H%M%S)},g)
exten => s,3,Monitor(wav,MERGE-${CALLFILENAME},m)
exten => s,4,ConfBridge()
exten => s,5,Hangup()

That’s in my /etc/asterisk/extensions_custom.conf. When I use a call file to call out, it merges the outbound call in to the conference. If I call direct with a client (microsip), as mentioned, DTMF passes. If I use a call file to “merge” them in to a conference, DTMF doesn’t pass.

The “real” issue, however, is on the inbound call. When they call in directly to my DID, the inbound route puts them in the conference, and DTMF won’t pass there either.

What parameters are you using when you send an inbound all to the conference bridge

you will need dtmf-passthrough=yes

Testing now!!! I had a feeling it was going to be simple. My knowledge of PBXs is only a year old (with 20+ years of IT experience). I hope to reply with success!! thank you!

No luck yet, but I need to do more testing. I have added that to my confbridge (/etc/asterisk/confbridge_custom.conf), but no luck with it. Is there a better place to put it? Can I put something in the “merge context” in extensions_custom.conf ?

I haven’t yet been able to get this working, the dtmf-passthrough=yes isn’t working (or I’m putting it in the wrong place)

This is a log with DTMF logging on. The PBX detects it, but the caller that was merged in to the conference from an outbound call is not hearing the DTMF.

[2021-12-04 11:32:51] VERBOSE[13233] dial.c: SIP/ob-00000012 answered
[2021-12-04 11:32:51] VERBOSE[13233][C-0000001b] pbx.c: Executing [s@merge:1] Answer(“SIP/ob-00000012”, “”) in new stack
[2021-12-04 11:32:51] VERBOSE[13233][C-0000001b] pbx.c: Executing [s@merge:2] Set(“SIP/ob-00000012”, “CALLFILENAME=20211204-113251,g”) in new stack
[2021-12-04 11:32:51] VERBOSE[13233][C-0000001b] pbx.c: Executing [s@merge:3] Monitor(“SIP/ob-00000012”, “wav,MERGE-20211204-113251,g,m”) in new stack
[2021-12-04 11:32:51] VERBOSE[13233][C-0000001b] pbx.c: Executing [s@merge:4] ConfBridge(“SIP/ob-00000012”, “9001”) in new stack
[2021-12-04 11:32:51] VERBOSE[13233][C-0000001b] bridge_channel.c: Channel SIP/ob-00000012 joined ‘softmix’ base-bridge <3357d5e8-9cf4-46ae-99f2-0f83f8d14df0>
[2021-12-04 11:32:51] VERBOSE[3958] file.c: <CBAnn/9001-00000000;1> Playing ‘confbridge-join.slin16’ (language ‘en’)
[2021-12-04 11:33:09] DTMF[3930][C-00000001] channel.c: DTMF begin ‘1’ received on PJSIP/2001-00000000
[2021-12-04 11:33:09] DTMF[3930][C-00000001] channel.c: DTMF begin passthrough ‘1’ on PJSIP/2001-00000000
[2021-12-04 11:33:09] DTMF[3930][C-00000001] channel.c: DTMF end ‘1’ received on PJSIP/2001-00000000, duration 200 ms
[2021-12-04 11:33:09] DTMF[3930][C-00000001] channel.c: DTMF end accepted with begin ‘1’ on PJSIP/2001-00000000
[2021-12-04 11:33:09] DTMF[3930][C-00000001] channel.c: DTMF end passthrough ‘1’ on PJSIP/2001-00000000
[2021-12-04 11:33:13] DTMF[3930][C-00000001] channel.c: DTMF begin ‘1’ received on PJSIP/2001-00000000
[2021-12-04 11:33:13] DTMF[3930][C-00000001] channel.c: DTMF begin passthrough ‘1’ on PJSIP/2001-00000000
[2021-12-04 11:33:13] DTMF[3930][C-00000001] channel.c: DTMF end ‘1’ received on PJSIP/2001-00000000, duration 200 ms
[2021-12-04 11:33:13] DTMF[3930][C-00000001] channel.c: DTMF end accepted with begin ‘1’ on PJSIP/2001-00000000
[2021-12-04 11:33:13] DTMF[3930][C-00000001] channel.c: DTMF end passthrough ‘1’ on PJSIP/2001-00000000
[2021-12-04 11:33:19] DTMF[3930][C-00000001] channel.c: DTMF begin ‘1’ received on PJSIP/2001-00000000
[2021-12-04 11:33:19] DTMF[3930][C-00000001] channel.c: DTMF begin passthrough ‘1’ on PJSIP/2001-00000000
[2021-12-04 11:33:19] DTMF[3930][C-00000001] channel.c: DTMF end ‘1’ received on PJSIP/2001-00000000, duration 200 ms
[2021-12-04 11:33:19] DTMF[3930][C-00000001] channel.c: DTMF end accepted with begin ‘1’ on PJSIP/2001-00000000
[2021-12-04 11:33:19] DTMF[3930][C-00000001] channel.c: DTMF end passthrough ‘1’ on PJSIP/2001-00000000
[2021-12-04 11:33:23] DTMF[3930][C-00000001] channel.c: DTMF begin ‘#’ received on PJSIP/2001-00000000
[2021-12-04 11:33:23] DTMF[3930][C-00000001] channel.c: DTMF begin passthrough ‘#’ on PJSIP/2001-00000000
[2021-12-04 11:33:23] DTMF[3930][C-00000001] channel.c: DTMF end ‘#’ received on PJSIP/2001-00000000, duration 200 ms
[2021-12-04 11:33:23] DTMF[3930][C-00000001] channel.c: DTMF end accepted with begin ‘#’ on PJSIP/2001-00000000
[2021-12-04 11:33:23] DTMF[3930][C-00000001] channel.c: DTMF end passthrough ‘#’ on PJSIP/2001-00000000

The option is dtmf_passthrough[1]. I can’t comment otherwise on how to enable it for FreePBX.

[1] Asterisk 16 Configuration_app_confbridge - Asterisk Project - Asterisk Project Wiki

Solved, thanks for suggestions.

It was a 2-part issue
Trunk #1 won’t let DTMF through (I’ll have to figure that out later)
Trunk #2 passes DTMF only if my SIP client is using “In-band”.

So, I’ll just use the second trunk with in-band set

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.