Inbound DTMF issues on PRI

FreePBX 13.0.192.8 and A101D - IVR not recognizing DTMF tones on some inbound calls.

I have tried enabling/disabling DTMF detection and removal both with no noticeable effect.

I have tried to monitor in log, but I don’t see any DTMF entries. I did verify that it is enabled under Asterisk Logfile Settings.

Sometimes it acts like it doesn’t receive anything and other times it will send the call to a different extension or IVR menu.

Thanks,
Steve

Anyone have any ideas on this issue or why I can’t see anything in the logs?

Thanks,
Steve

There is a setting you can modify for logging that will take care of showing DTMF recognition.
Use the following link as a starting point

https://www.voip-info.org/wiki/view/Asterisk+DTMF

Good info. Thanks.

Do you have any update on this issue? I have been dealing with the same issue over a Comcast PRI circuit.
I contacted Digium and they were able to confirm that the tones do make it to the phone system when the person that always has this issue tried calling in. So the tones reach the PRI card (they executed the dahdi_monitor on the channel), but they passed the issue now onto FreePBX.

Sorry for the delay, just saw this. I am still dealing with the issue on two separate FreePBX systems from the same PRI provider. The thing I am looking into now is that apparently GSM cell carriers handle DTMF different than others. I consistently have trouble with the IVR’s from my GSM cell. Most callers are fine, but some always have trouble. I have read that GSM is different, but haven’t gotten to the bottom of exactly what is different.

We’ve seen this on a few PRIs. Comcast in particular. There is a way they can modify the minimum DTMF time in their AdTran. Getting them to do it is not a simple task, though. It’s outside the knowledge of most of their tech, but this is what needs to go in the config file of their AdTran:

ip rtp dtmf-relay min-duration 250

I know this is old, but I suddenly started to have this problem…
I opened a ticket with comcast
Did this solve the problem?
Is 250 the minimum?

Thanks

In every case where it’s come up for us, having that line added to the Adtran resolved it entirely.

Getting a Comcast engineer to do it has been the most difficult part; many are reticent to do so.

Thanks for the reply
I’ll try to get them to do it

I finally got Comcast to change it, but I still have the problem…
Here is my asterisk -vvvvvvvvvvvr:
I called from my cellphone (so I renamed it My-Cell-Num)

[root@My-VOIP ~]# asterisk -vvvvvvvvvvvr | grep My-Cell-Num
– Accepting call from ‘My-Cell-Num’ to ‘PBX-Line’ on channel 0/1, span 1
– Executing [PBX-Line@from-digital:1] Set(“DAHDI/i1/My-Cell-Num-6”, “__DIRECTION=INBOUND”) in new stack
– Executing [PBX-Line@from-digital:2] Gosub(“DAHDI/i1/My-Cell-Num-6”, “sub-record-check,s,1(in,PBX-Line,dontcare)”) in new stack
– Executing [s@sub-record-check:1] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?initialized”) in new stack
– Executing [s@sub-record-check:2] Set(“DAHDI/i1/My-Cell-Num-6”, “__REC_STATUS=INITIALIZED”) in new stack
– Executing [s@sub-record-check:3] Set(“DAHDI/i1/My-Cell-Num-6”, “NOW=1572449811”) in new stack
– Executing [s@sub-record-check:4] Set(“DAHDI/i1/My-Cell-Num-6”, “__DAY=30”) in new stack
– Executing [s@sub-record-check:5] Set(“DAHDI/i1/My-Cell-Num-6”, “__MONTH=10”) in new stack
– Executing [s@sub-record-check:6] Set(“DAHDI/i1/My-Cell-Num-6”, “__YEAR=2019”) in new stack
– Executing [s@sub-record-check:7] Set(“DAHDI/i1/My-Cell-Num-6”, “__TIMESTR=20191030-113651”) in new stack
– Executing [s@sub-record-check:8] Set(“DAHDI/i1/My-Cell-Num-6”, “__FROMEXTEN=unknown”) in new stack
– Executing [s@sub-record-check:9] Set(“DAHDI/i1/My-Cell-Num-6”, “__MON_FMT=wav”) in new stack
– Executing [s@sub-record-check:10] NoOp(“DAHDI/i1/My-Cell-Num-6”, “Recordings initialized”) in new stack
– Executing [s@sub-record-check:11] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(ARG3=dontcare)”) in new stack
– Executing [s@sub-record-check:12] Set(“DAHDI/i1/My-Cell-Num-6”, “REC_POLICY_MODE_SAVE=”) in new stack
– Executing [s@sub-record-check:13] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(REC_STATUS=NO)”) in new stack
– Executing [s@sub-record-check:14] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “2?checkaction”) in new stack
– Executing [s@sub-record-check:17] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “1?sub-record-check,in,1”) in new stack
– Executing [in@sub-record-check:1] NoOp(“DAHDI/i1/My-Cell-Num-6”, “Inbound Recording Check to PBX-Line”) in new stack
– Executing [in@sub-record-check:2] Set(“DAHDI/i1/My-Cell-Num-6”, “FROMEXTEN=unknown”) in new stack
– Executing [in@sub-record-check:3] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “10?Set(FROMEXTEN=My-Cell-Num)”) in new stack
– Executing [in@sub-record-check:4] Gosub(“DAHDI/i1/My-Cell-Num-6”, “recordcheck,1(dontcare,in,PBX-Line)”) in new stack
– Executing [recordcheck@sub-record-check:1] NoOp(“DAHDI/i1/My-Cell-Num-6”, “Starting recording check against dontcare”) in new stack
– Executing [recordcheck@sub-record-check:2] Goto(“DAHDI/i1/My-Cell-Num-6”, “dontcare”) in new stack
– Executing [recordcheck@sub-record-check:3] Return(“DAHDI/i1/My-Cell-Num-6”, “”) in new stack
– Executing [in@sub-record-check:5] Return(“DAHDI/i1/My-Cell-Num-6”, “”) in new stack
– Executing [PBX-Line@from-digital:3] Set(“DAHDI/i1/My-Cell-Num-6”, “CHANNEL(tonezone)=us”) in new stack
– Executing [PBX-Line@from-digital:4] Set(“DAHDI/i1/My-Cell-Num-6”, “__FROM_DID=PBX-Line”) in new stack
– Executing [PBX-Line@from-digital:5] Set(“DAHDI/i1/My-Cell-Num-6”, “returnhere=1”) in new stack
– Executing [PBX-Line@from-digital:6] Gosub(“DAHDI/i1/My-Cell-Num-6”, “app-blacklist-check,s,1()”) in new stack
– Executing [s@app-blacklist-check:1] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?blacklisted”) in new stack
– Executing [s@app-blacklist-check:2] Set(“DAHDI/i1/My-Cell-Num-6”, “CALLED_BLACKLIST=1”) in new stack
– Executing [s@app-blacklist-check:3] Return(“DAHDI/i1/My-Cell-Num-6”, “”) in new stack
– Executing [PBX-Line@from-digital:7] Set(“DAHDI/i1/My-Cell-Num-6”, “CDR(did)=PBX-Line”) in new stack
– Executing [PBX-Line@from-digital:8] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?”) in new stack
– Executing [PBX-Line@from-digital:9] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0 ?Set(CALLERID(name)=My-Cell-Num)”) in new stack
– Executing [PBX-Line@from-digital:10] Set(“DAHDI/i1/My-Cell-Num-6”, “CHANNEL(musicclass)=test”) in new stack
– Executing [PBX-Line@from-digital:11] Set(“DAHDI/i1/My-Cell-Num-6”, “__MOHCLASS=test”) in new stack
– Executing [PBX-Line@from-digital:12] Set(“DAHDI/i1/My-Cell-Num-6”, “__REVERSAL_REJECT=FALSE”) in new stack
– Executing [PBX-Line@from-digital:13] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “1?post-reverse-charge”) in new stack
– Executing [PBX-Line@from-digital:15] NoOp(“DAHDI/i1/My-Cell-Num-6”, “”) in new stack
– Executing [PBX-Line@from-digital:16] Set(“DAHDI/i1/My-Cell-Num-6”, “__CALLINGNAMEPRES_SV=allowed_not_screened”) in new stack
– Executing [PBX-Line@from-digital:17] Set(“DAHDI/i1/My-Cell-Num-6”, “__CALLINGNUMPRES_SV=allowed_not_screened”) in new stack
– Executing [PBX-Line@from-digital:18] Set(“DAHDI/i1/My-Cell-Num-6”, “CALLERID(name-pres)=allowed_not_screened”) in new stack
– Executing [PBX-Line@from-digital:19] Set(“DAHDI/i1/My-Cell-Num-6”, “CALLERID(num-pres)=allowed_not_screened”) in new stack
– Executing [PBX-Line@from-digital:20] NoOp(“DAHDI/i1/My-Cell-Num-6”, “CallerID Entry Point”) in new stack
– Executing [PBX-Line@from-digital:21] Goto(“DAHDI/i1/My-Cell-Num-6”, “ivr-4,s,1”) in new stack
– Executing [s@ivr-4:1] Set(“DAHDI/i1/My-Cell-Num-6”, “TIMEOUT_LOOPCOUNT=0”) in new stack
– Executing [s@ivr-4:2] Set(“DAHDI/i1/My-Cell-Num-6”, “INVALID_LOOPCOUNT=0”) in new stack
– Executing [s@ivr-4:3] Set(“DAHDI/i1/My-Cell-Num-6”, “_IVR_CONTEXT_ivr-4=”) in new stack
– Executing [s@ivr-4:4] Set(“DAHDI/i1/My-Cell-Num-6”, “_IVR_CONTEXT=ivr-4”) in new stack
– Executing [s@ivr-4:5] Set(“DAHDI/i1/My-Cell-Num-6”, “__IVR_RETVM=”) in new stack
– Executing [s@ivr-4:6] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?skip”) in new stack
– Executing [s@ivr-4:7] Answer(“DAHDI/i1/My-Cell-Num-6”, “”) in new stack
– Executing [s@ivr-4:8] Set(“DAHDI/i1/My-Cell-Num-6”, “IVR_MSG=custom/0a—all&custom/0b—all&custom/0c—all&custom/1a—all&custom/1b—all&custom/1c&custom/1d—all&custom/1e&custom/1f&custom/1g&custom/1h&custom/1i&custom/1j&custom/1k—all”) in new stack
– Executing [s@ivr-4:9] Set(“DAHDI/i1/My-Cell-Num-6”, “DIGITS=”) in new stack
– Executing [s@ivr-4:10] Set(“DAHDI/i1/My-Cell-Num-6”, “IVREXT=”) in new stack
– Executing [s@ivr-4:11] Set(“DAHDI/i1/My-Cell-Num-6”, “NODEFOUND=0”) in new stack
– Executing [s@ivr-4:12] Set(“DAHDI/i1/My-Cell-Num-6”, “LOCALEXT=0”) in new stack
– Executing [s@ivr-4:13] Set(“DAHDI/i1/My-Cell-Num-6”, “DIREXT=0”) in new stack
– Executing [s@ivr-4:14] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(DIGITS=)”) in new stack
– Executing [s@ivr-4:15] While(“DAHDI/i1/My-Cell-Num-6”, "1 ") in new stack
– Executing [s@ivr-4:16] Read(“DAHDI/i1/My-Cell-Num-6”, “IVREXT,custom/0a—all&custom/0b—all&custom/0c—all&custom/1a—all&custom/1b—all&custom/1c&custom/1d—all&custom/1e&custom/1f&custom/1g&custom/1h&custom/1i&custom/1j&custom/1k—all,1,0,10”) in new stack
– <DAHDI/i1/My-Cell-Num-6> Playing ‘custom/0a—all.slin’ (language ‘en’)
[2019-10-30 11:36:55] DTMF[27096][C-0000000a]: channel.c:4126 __ast_read: DTMF begin ‘2’ received on DAHDI/i1/My-Cell-Num-6
[2019-10-30 11:36:55] DTMF[27096][C-0000000a]: channel.c:4130 __ast_read: DTMF begin ignored ‘2’ on DAHDI/i1/My-Cell-Num-6
[2019-10-30 11:36:55] DTMF[27096][C-0000000a]: channel.c:4040 __ast_read: DTMF end ‘2’ received on DAHDI/i1/My-Cell-Num-6, duration 63 ms
[2019-10-30 11:36:55] DTMF[27096][C-0000000a]: channel.c:4110 __ast_read: DTMF end passthrough ‘2’ on DAHDI/i1/My-Cell-Num-6
– Executing [s@ivr-4:17] Set(“DAHDI/i1/My-Cell-Num-6”, “IVR_MSG=”) in new stack
– Executing [s@ivr-4:18] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?i,1”) in new stack
– Executing [s@ivr-4:19] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?t,1”) in new stack
– Executing [s@ivr-4:20] NoOp(“DAHDI/i1/My-Cell-Num-6”, “”) in new stack
– Executing [s@ivr-4:21] ExecIf(“DAHDI/i1/My-Cell-Num-6”, ““0” != “0”]?Set(DIREXT=1)”) in new stack
– Executing [s@ivr-4:22] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “1?Set(NODEFOUND=1)”) in new stack
– Executing [s@ivr-4:23] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?beforewhile:nodedial”) in new stack
– Executing [s@ivr-4:26] Goto(“DAHDI/i1/My-Cell-Num-6”, “2,1”) in new stack
– Executing [2@ivr-4:1] Set(“DAHDI/i1/My-Cell-Num-6”, “__ivrreturn=0”) in new stack
– Executing [2@ivr-4:2] Goto(“DAHDI/i1/My-Cell-Num-6”, “ivr-6,s,1”) in new stack
– Executing [s@ivr-6:1] Set(“DAHDI/i1/My-Cell-Num-6”, “TIMEOUT_LOOPCOUNT=0”) in new stack
– Executing [s@ivr-6:2] Set(“DAHDI/i1/My-Cell-Num-6”, “INVALID_LOOPCOUNT=0”) in new stack
– Executing [s@ivr-6:3] Set(“DAHDI/i1/My-Cell-Num-6”, “_IVR_CONTEXT_ivr-6=ivr-4”) in new stack
– Executing [s@ivr-6:4] Set(“DAHDI/i1/My-Cell-Num-6”, “_IVR_CONTEXT=ivr-6”) in new stack
– Executing [s@ivr-6:5] Set(“DAHDI/i1/My-Cell-Num-6”, “__IVR_RETVM=”) in new stack
– Executing [s@ivr-6:6] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “1?skip”) in new stack
– Executing [s@ivr-6:8] Set(“DAHDI/i1/My-Cell-Num-6”, “IVR_MSG=custom/3a&custom/3b&custom/3c&custom/3d”) in new stack
– Executing [s@ivr-6:9] Set(“DAHDI/i1/My-Cell-Num-6”, “DIGITS=”) in new stack
– Executing [s@ivr-6:10] Set(“DAHDI/i1/My-Cell-Num-6”, “IVREXT=”) in new stack
– Executing [s@ivr-6:11] Set(“DAHDI/i1/My-Cell-Num-6”, “NODEFOUND=0”) in new stack
– Executing [s@ivr-6:12] Set(“DAHDI/i1/My-Cell-Num-6”, “LOCALEXT=0”) in new stack
– Executing [s@ivr-6:13] Set(“DAHDI/i1/My-Cell-Num-6”, “DIREXT=0”) in new stack
– Executing [s@ivr-6:14] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(DIGITS=)”) in new stack
– Executing [s@ivr-6:15] While(“DAHDI/i1/My-Cell-Num-6”, "1 ") in new stack
– Executing [s@ivr-6:16] Read(“DAHDI/i1/My-Cell-Num-6”, “IVREXT,custom/3a&custom/3b&custom/3c&custom/3d,1,0,10”) in new stack
– <DAHDI/i1/My-Cell-Num-6> Playing ‘custom/3a.slin’ (language ‘en’)
[2019-10-30 11:36:55] DTMF[27096][C-0000000a]: channel.c:4126 __ast_read: DTMF begin ‘0’ received on DAHDI/i1/My-Cell-Num-6
[2019-10-30 11:36:55] DTMF[27096][C-0000000a]: channel.c:4130 __ast_read: DTMF begin ignored ‘0’ on DAHDI/i1/My-Cell-Num-6
[2019-10-30 11:36:55] DTMF[27096][C-0000000a]: channel.c:4040 __ast_read: DTMF end ‘0’ received on DAHDI/i1/My-Cell-Num-6, duration 51 ms
[2019-10-30 11:36:55] DTMF[27096][C-0000000a]: channel.c:4110 __ast_read: DTMF end passthrough ‘0’ on DAHDI/i1/My-Cell-Num-6
– Executing [s@ivr-6:17] Set(“DAHDI/i1/My-Cell-Num-6”, “IVR_MSG=”) in new stack
– Executing [s@ivr-6:18] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?i,1”) in new stack
– Executing [s@ivr-6:19] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?t,1”) in new stack
– Executing [s@ivr-6:20] NoOp(“DAHDI/i1/My-Cell-Num-6”, “”) in new stack
– Executing [s@ivr-6:21] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(LOCALEXT=1)”) in new stack
– Executing [s@ivr-6:22] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?from-did-direct-ivr,0,1”) in new stack
– Executing [s@ivr-6:23] NoOp(“DAHDI/i1/My-Cell-Num-6”, “ivr-6,0,1”) in new stack
– Executing [s@ivr-6:24] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(NODEFOUND=1)”) in new stack
– Executing [s@ivr-6:25] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “1?beforewhile:nodedial”) in new stack
– Executing [s@ivr-6:14] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “1?Set(DIGITS=0)”) in new stack
– Executing [s@ivr-6:15] While(“DAHDI/i1/My-Cell-Num-6”, "1 ") in new stack
– Executing [s@ivr-6:16] Read(“DAHDI/i1/My-Cell-Num-6”, “IVREXT,1,0,10”) in new stack
[2019-10-30 11:36:56] DTMF[27096][C-0000000a]: channel.c:4126 __ast_read: DTMF begin ‘3’ received on DAHDI/i1/My-Cell-Num-6
[2019-10-30 11:36:56] DTMF[27096][C-0000000a]: channel.c:4130 __ast_read: DTMF begin ignored ‘3’ on DAHDI/i1/My-Cell-Num-6
[2019-10-30 11:36:56] DTMF[27096][C-0000000a]: channel.c:4040 __ast_read: DTMF end ‘3’ received on DAHDI/i1/My-Cell-Num-6, duration 63 ms
[2019-10-30 11:36:56] DTMF[27096][C-0000000a]: channel.c:4110 __ast_read: DTMF end passthrough ‘3’ on DAHDI/i1/My-Cell-Num-6
– Executing [s@ivr-6:17] Set(“DAHDI/i1/My-Cell-Num-6”, “IVR_MSG=”) in new stack
– Executing [s@ivr-6:18] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?i,1”) in new stack
– Executing [s@ivr-6:19] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?t,1”) in new stack
– Executing [s@ivr-6:20] NoOp(“DAHDI/i1/My-Cell-Num-6”, “”) in new stack
– Executing [s@ivr-6:21] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(LOCALEXT=1)”) in new stack
– Executing [s@ivr-6:22] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?from-did-direct-ivr,03,1”) in new stack
– Executing [s@ivr-6:23] NoOp(“DAHDI/i1/My-Cell-Num-6”, “ivr-60,3,1”) in new stack
– Executing [s@ivr-6:24] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(NODEFOUND=1)”) in new stack
– Executing [s@ivr-6:25] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “1?beforewhile:nodedial”) in new stack
– Executing [s@ivr-6:14] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “1?Set(DIGITS=03)”) in new stack
– Executing [s@ivr-6:15] While(“DAHDI/i1/My-Cell-Num-6”, "1 ") in new stack
– Executing [s@ivr-6:16] Read(“DAHDI/i1/My-Cell-Num-6”, “IVREXT,1,0,10”) in new stack
[2019-10-30 11:36:56] DTMF[27096][C-0000000a]: channel.c:4126 __ast_read: DTMF begin ‘5’ received on DAHDI/i1/My-Cell-Num-6
[2019-10-30 11:36:56] DTMF[27096][C-0000000a]: channel.c:4130 __ast_read: DTMF begin ignored ‘5’ on DAHDI/i1/My-Cell-Num-6
[2019-10-30 11:36:56] DTMF[27096][C-0000000a]: channel.c:4040 __ast_read: DTMF end ‘5’ received on DAHDI/i1/My-Cell-Num-6, duration 63 ms
[2019-10-30 11:36:56] DTMF[27096][C-0000000a]: channel.c:4110 __ast_read: DTMF end passthrough ‘5’ on DAHDI/i1/My-Cell-Num-6
– Executing [s@ivr-6:17] Set(“DAHDI/i1/My-Cell-Num-6”, “IVR_MSG=”) in new stack
– Executing [s@ivr-6:18] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?i,1”) in new stack
– Executing [s@ivr-6:19] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?t,1”) in new stack
– Executing [s@ivr-6:20] NoOp(“DAHDI/i1/My-Cell-Num-6”, “”) in new stack
– Executing [s@ivr-6:21] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(LOCALEXT=1)”) in new stack
– Executing [s@ivr-6:22] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?from-did-direct-ivr,035,1”) in new stack
– Executing [s@ivr-6:23] NoOp(“DAHDI/i1/My-Cell-Num-6”, “ivr-603,5,1”) in new stack
– Executing [s@ivr-6:24] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(NODEFOUND=1)”) in new stack
– Executing [s@ivr-6:25] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “1?beforewhile:nodedial”) in new stack
– Executing [s@ivr-6:14] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “1?Set(DIGITS=035)”) in new stack
– Executing [s@ivr-6:15] While(“DAHDI/i1/My-Cell-Num-6”, "1 ") in new stack
– Executing [s@ivr-6:16] Read(“DAHDI/i1/My-Cell-Num-6”, “IVREXT,1,0,10”) in new stack
– Executing [s@ivr-6:17] Set(“DAHDI/i1/My-Cell-Num-6”, “IVR_MSG=”) in new stack
– Executing [s@ivr-6:18] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “1?i,1”) in new stack
– Executing [i@ivr-6:1] Set(“DAHDI/i1/My-Cell-Num-6”, “INVALID_LOOPCOUNT=1”) in new stack
– Executing [i@ivr-6:2] GotoIf(“DAHDI/i1/My-Cell-Num-6”, “0?final”) in new stack
– Executing [i@ivr-6:3] Set(“DAHDI/i1/My-Cell-Num-6”, “IVR_MSG=no-valid-responce-pls-try-again”) in new stack
– Executing [i@ivr-6:4] Goto(“DAHDI/i1/My-Cell-Num-6”, “s,start”) in new stack
– Executing [s@ivr-6:9] Set(“DAHDI/i1/My-Cell-Num-6”, “DIGITS=”) in new stack
– Executing [s@ivr-6:10] Set(“DAHDI/i1/My-Cell-Num-6”, “IVREXT=”) in new stack
– Executing [s@ivr-6:11] Set(“DAHDI/i1/My-Cell-Num-6”, “NODEFOUND=0”) in new stack
– Executing [s@ivr-6:12] Set(“DAHDI/i1/My-Cell-Num-6”, “LOCALEXT=0”) in new stack
– Executing [s@ivr-6:13] Set(“DAHDI/i1/My-Cell-Num-6”, “DIREXT=0”) in new stack
– Executing [s@ivr-6:14] ExecIf(“DAHDI/i1/My-Cell-Num-6”, “0?Set(DIGITS=)”) in new stack
– Executing [s@ivr-6:15] While(“DAHDI/i1/My-Cell-Num-6”, "1 ") in new stack
– Executing [s@ivr-6:16] Read(“DAHDI/i1/My-Cell-Num-6”, “IVREXT,no-valid-responce-pls-try-again,1,0,10”) in new stack
– <DAHDI/i1/My-Cell-Num-6> Playing ‘no-valid-responce-pls-try-again.slin’ (language ‘en’)
– Executing [h@ivr-6:1] Hangup(“DAHDI/i1/My-Cell-Num-6”, “”) in new stack
== Spawn extension (ivr-6, h, 1) exited non-zero on ‘DAHDI/i1/My-Cell-Num-6’
– Hungup ‘DAHDI/i1/My-Cell-Num-6’
[root@My-VOIP ~]#

Thanks

NVM, I fixed it…
It wasn’t a Comcast problem after all (or at least I don’t think so)
There was an update to the IVR module:
Now there are 2 new options:
Force Strict Dial Timeout - with 3 options - Yes, No and No-Legacy

If set to ‘No’ then IVR will match on the first digit(s) that match IVR entries, thus if you have entries of 1 and 123 when the caller presses 1 it will dial entry 1, when they press 123 it will match on the first entry so it will dial 1. If set to ‘Yes’ then IVR will wait the full timeout for the entry so that 123 will match 123. If set to ‘No - Legacy’ then the IVR will work as it did in previous PBX versions, utilizing the extenwait functionality, if ivr codes conflict with mapped extensions there could possibly be undesired results, however this is the typical default setting for the PBX. Default is ‘No - Legacy’

And the second is Timeout

Amount of time to be considered a timeout.
A value of 0 disables the timeout

I set the first to Yes, and the second to 3
Now it’s finally working!!!

Thanks for the help