Different IVR routes (success vs error) when auto-dialing an extension on iPhone vs Android (Pixel)

An employee on an iPhone has a saved contact that dials his office extension: 1-555-555-1212,1021. He states that before a few weeks ago this worked fine, and now it doesn’t. It dials all 4 digits of his extension in under a second.

[2023-05-10 16:44:44] VERBOSE[75136][C-000000a9] pbx.c: Executing [[email protected]:10] ExecIf("PJSIP/5555551212-00000069", "1?Background(custom/corp-greeting)") in new stack
[2023-05-10 16:44:44] VERBOSE[75136][C-000000a9] file.c: <PJSIP/5555551212-00000069> Playing 'custom/corp-greeting.slin' (language 'en')
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] pbx.c: Executing [[email protected]:1] GotoIf("PJSIP/5555551212-00000069", "1?i,1") in new stack
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] pbx_builtins.c: Goto (ivr-1,i,1)
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] pbx.c: Executing [[email protected]:1] Set("PJSIP/5555551212-00000069", "INVALID_LOOPCOUNT=1") in new stack
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] pbx.c: Executing [[email protected]:2] GotoIf("PJSIP/5555551212-00000069", "0?final") in new stack
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] pbx.c: Executing [[email protected]:3] Set("PJSIP/5555551212-00000069", "IVR_MSG=no-valid-responce-pls-try-again") in new stack
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] pbx.c: Executing [[email protected]:4] Goto("PJSIP/5555551212-00000069", "s,start") in new stack
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] pbx_builtins.c: Goto (ivr-1,s,9)
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] pbx.c: Executing [[email protected]:9] Set("PJSIP/5555551212-00000069", "TIMEOUT(digit)=3") in new stack
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] func_timeout.c: Digit timeout set to 3.000
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] pbx.c: Executing [[email protected]:10] ExecIf("PJSIP/5555551212-00000069", "1?Background(no-valid-responce-pls-try-again)") in new stack
[2023-05-10 16:44:51] VERBOSE[75136][C-000000a9] file.c: <PJSIP/5555551212-00000069> Playing 'no-valid-responce-pls-try-again.slin' (language 'en')
[2023-05-10 16:44:55] VERBOSE[75136][C-000000a9] pbx.c: Executing [[email protected]:11] WaitExten("PJSIP/5555551212-00000069", "10,") in new stack

When I try the same thing on my Google Pixel phone, it dials the extension MUCH faster (like all 4 digits within 1/4 of a second) and I get connected just fine.

If I go into IVR settings -> Force Strict Dial Timeout and set it from No - Legacy to Yes, it will log the attempted extension entry…when dialing the extension by hand 2x and then via iPhone 2x, i see:

/var/log/asterisk/full:[2023-05-10 16:57:20] VERBOSE[77461][C-000000ad] app_read.c: User entered '1021'
/var/log/asterisk/full:[2023-05-10 16:58:13] VERBOSE[78092][C-000000ae] app_read.c: User entered '1021'
/var/log/asterisk/full:[2023-05-10 16:59:13] VERBOSE[78302][C-000000af] app_read.c: User entered '1002211'
/var/log/asterisk/full:[2023-05-10 16:59:28] VERBOSE[78334][C-000000b0] app_read.c: User entered '1002211'

So obviously it looks like the iPhone is doubling up numbers, but is that only during Yes setting and not No - Legacy? Is there a way to log the Legacy extension that’s dialed in order to be sure this is the case? is this just a known problem with iPhones that I should just Google? Lol…thanks!

In Settings → Asterisk Logfile Settings → Log Files, check the box for DTMF in the ‘full’ line. Then, all DTMF activity will appear in /var/log/asterisk/full, along with the regular entries.

For troubleshooting, try setting DTMF Mode for the trunk to RFC 4733 and also to Inband, to see whether either setting is more reliable.