Child IVR extension doesn't work

We have an IVR that is a child of another IVR and we have setup 3 different IVR digit extensions. However when attempting to dial any of these extensions the caller will reach the timeout set inside the IVR and the call is disconnected. I have tried toggling “enable direct dial” on and off which doesn’t fix it. The only thing that will fix the problem is by setting “Force Strict Dial Timeout” to “No”. I believe this may actually be a bug in the software but I can’t be certain. On our parent IVR’s we don’t have to set “Force Strict Dial Timeout” to no and can have “Enable Direct Dial” enabled. I am just wondering why a child IVR would have behave differently?

Very possible it’s a DTMF issue, enable DTMF logging and see if you receive any DTMF.

Also, update your PBX and set force strict dial timeout to No - Legacy

I can see the DTMF that was entered in the logs. While I could just flip all the IVR’s over to No - Legacy I would still like to understand what might be causing the problem I am having. Below is a flow of the call that fails.
User calls in and hits our main IVR, the user will dial a direct extension for an agent that isn’t available (soft phone turned off). The Find/Me Follow Me “No Answer” destination along with all “Optional Destinations” under Advanced settings for that extension are set to a time condition. The time condition will send the user to an IVR (let’s call it the “Agent Unavailable IVR”) if the time condition matches or to the agent’s voicemail if the time condition does not match. In this case the time condition matches and sends the user to the “Agent Unavailable IVR”. The “Agent Unavailable IVR” has 3 options, digit 0 takes them into a Queue, digit 1 takes them to the agent’s voicemail and digit 2 takes them to a different queue. In this case the user presses digit 1 and the timeout set on the “Agent Unavailable IVR” is reached and the call is disconnected with the following messages in the logs:

[2020-04-28 21:12:27] VERBOSE[5172][C-0000a293] app_read.c: User entered '1'
[2020-04-28 21:12:27] VERBOSE[5172][C-0000a293] pbx.c: Executing [[email protected]:10] GotoIf("SIP/voipinnovations-inbound1-00015fe0", "0?#,1") in new stack
[2020-04-28 21:12:27] VERBOSE[5172][C-0000a293] pbx.c: Executing [[email protected]:11] GotoIf("SIP/voipinnovations-inbound1-00015fe0", "0?t,1") in new stack
[2020-04-28 21:12:27] VERBOSE[5172][C-0000a293] pbx.c: Executing [[email protected]:12] ExecIf("SIP/voipinnovations-inbound1-00015fe0", "0?Set(LOCALEXT=1)") in new stack
[2020-04-28 21:12:27] VERBOSE[5172][C-0000a293] pbx.c: Executing [[email protected]:13] GotoIf("SIP/voipinnovations-inbound1-00015fe0", "0?i,1") in new stack
[2020-04-28 21:12:27] VERBOSE[5172][C-0000a293] pbx.c: Executing [[email protected]:14] GotoIf("SIP/voipinnovations-inbound1-00015fe0", "1?from-did-direct-ivr,1,1") in new stack
[2020-04-28 21:12:27] VERBOSE[5172][C-0000a293] pbx_builtins.c: Goto (from-did-direct-ivr,1,1)
[2020-04-28 21:12:27] WARNING[5172][C-0000a293] pbx.c: Channel 'SIP/voipinnovations-inbound1-00015fe0' sent to invalid extension but no invalid handler: context,exten,priority=from-did-direct-ivr,1,1
[2020-04-28 21:12:27] VERBOSE[5172][C-0000a293] app_stack.c: SIP/voipinnovations-inbound1-00015fe0 Internal Gosub(crm-hangup,s,1) start

The weird thing is that if I add an IVR digit entry in the primary IVR for example 4545 and have that take the user directly to the “Agent Unavailable IVR”, the digit press of 1 will work just fine, even with Direct Dial Enabled and Force Strict Dial Timeout set to Yes. Here is the log entry for the working method:

[2020-04-28 21:10:41] VERBOSE[4527][C-0000a292] app_read.c: User entered '1'
[2020-04-28 21:10:41] VERBOSE[4527][C-0000a292] pbx.c: Executing [[email protected]:10] GotoIf("SIP/voipinnovations-inbound1-00015fdf", "0?#,1") in new stack
[2020-04-28 21:10:41] VERBOSE[4527][C-0000a292] pbx.c: Executing [[email protected]:11] GotoIf("SIP/voipinnovations-inbound1-00015fdf", "0?t,1") in new stack
[2020-04-28 21:10:41] VERBOSE[4527][C-0000a292] pbx.c: Executing [[email protected]:12] ExecIf("SIP/voipinnovations-inbound1-00015fdf", "0?Set(LOCALEXT=1)") in new stack
[2020-04-28 21:10:41] VERBOSE[4527][C-0000a292] pbx.c: Executing [[email protected]:13] GotoIf("SIP/voipinnovations-inbound1-00015fdf", "0?i,1") in new stack
[2020-04-28 21:10:41] VERBOSE[4527][C-0000a292] pbx.c: Executing [[email protected]:14] GotoIf("SIP/voipinnovations-inbound1-00015fdf", "0?from-did-direct-ivr,1,1") in new stack
[2020-04-28 21:10:41] VERBOSE[4527][C-0000a292] pbx.c: Executing [[email protected]:15] Goto("SIP/voipinnovations-inbound1-00015fdf", "1,1") in new stack
[2020-04-28 21:10:41] VERBOSE[4527][C-0000a292] pbx_builtins.c: Goto (ivr-129,1,1)

From what I can tell between the log entries only one line appears to really be different and that is the line that executes the from-did-direct-ivr context. In the working instance it reads as "0?from-did-direct-ivr,1,1" and in the non-working instance it reads as "1?from-did-direct-ivr,1,1"

In your example, the from-did-direct context check succeeded in the working instance and failed in the other.

So what would cause it to fail the check in one instance but not the other if it is the same IVR? The only difference is how you arrived at the IVR.

1 Like

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