Won't hang up after multiple incorrect extention entries

question

New Member
Mar 30, 2026
17
0
1
64
I am setting up the IVR menu for direct dial. One extension retry is allowed and then I want it to hangup. But after multiple wrong extension number entries it replays the main long message.

Greet Long > Recording > please_enter_the_extension
Timeout 3000
Exit Action Hangup
Direct Dial Enabled

ADVANCED
Confirm Attempts 1
Inter-Digit Timeout 3000
Max Failures 1
Max Timeouts 1
Digit Length 3

Here is the log output
2026-06-03 20:44:40.094188 97.27% [DEBUG] switch_ivr_menu.c:425 digits '789'
2026-06-03 20:44:40.094188 97.27% [DEBUG] switch_ivr_menu.c:562 action regex [789] [/^((?!^(102)$)\d{2,8})$/] [2]
2026-06-03 20:44:40.094188 97.27% [DEBUG] switch_ivr_menu.c:581 IVR action on menu 'f6f00930-fd7a-4181-9960-057ae322fea5' matched '789' param 'set ${cond(${user_exists id 789 PBX_PUB_DOMAIN} == true ? user_exists=true : user_exists=false)}'
2026-06-03 20:44:40.094188 97.27% [DEBUG] switch_ivr_menu.c:585 switch_ivr_menu_execute todo=[2]
EXECUTE [depth=0] sofia/internal/+CALLER_NUM@PBX_PUB_DOMAIN:5060 set(user_exists=false)
2026-06-03 20:44:40.094188 97.27% [DEBUG] mod_dptools.c:1671 SET sofia/internal/+CALLER_NUM@PBX_PUB_DOMAIN:5060 [user_exists]=[false]
2026-06-03 20:44:40.094188 97.27% [DEBUG] switch_ivr_menu.c:562 action regex [789] [/^((?!^(102)$)\d{2,8})$/] [2]
2026-06-03 20:44:40.094188 97.27% [DEBUG] switch_ivr_menu.c:581 IVR action on menu 'f6f00930-fd7a-4181-9960-057ae322fea5' matched '789' param 'playback ${cond(${user_exists} == true ? /usr/share/freeswitch/sounds/${default_language}/${default_dialect}/${default_voice}/ivr/ivr-call_being_transferred.wav : /usr/share/freeswitch/sounds/${default_language}/${default_dialect}/${default_voice}/ivr/ivr-that_was_an_invalid_entry.wav)}'
2026-06-03 20:44:40.094188 97.27% [DEBUG] switch_ivr_menu.c:585 switch_ivr_menu_execute todo=[2]
EXECUTE [depth=0] sofia/internal/+CALLER_NUM@PBX_PUB_DOMAIN:5060 playback(/usr/share/freeswitch/sounds/en/us/callie/ivr/ivr-that_was_an_invalid_entry.wav
2026-06-03 20:44:40.094188 97.27% [DEBUG] switch_ivr_play_say.c:1564 Codec Activated L16@8000hz 1 channels 20ms
2026-06-03 20:44:41.754169 97.23% [DEBUG] switch_ivr_play_say.c:2013 done playing file /usr/share/freeswitch/sounds/en/us/callie/ivr/ivr-that_was_an_invalid_entry.wav
2026-06-03 20:44:41.754169 97.23% [DEBUG] switch_ivr_menu.c:562 action regex [789] [/^((?!^(102)$)\d{2,8})$/] [2]
2026-06-03 20:44:41.754169 97.23% [DEBUG] switch_ivr_menu.c:581 IVR action on menu 'f6f00930-fd7a-4181-9960-057ae322fea5' matched '789' param 'transfer ${cond(${user_exists} == true ? 789 XML PBX_PUB_DOMAIN)}'
2026-06-03 20:44:41.754169 97.23% [DEBUG] switch_ivr_menu.c:585 switch_ivr_menu_execute todo=[2]
EXECUTE [depth=0] sofia/internal/+CALLER_NUM@PBX_PUB_DOMAIN:5060 transfer()
2026-06-03 20:44:41.754169 97.23% [DEBUG] switch_core_file.c:444 File /var/lib/freeswitch/recordings/PBX_PUB_DOMAIN/please_enter_the_extension.wav sample rate 16000 doesn't match requested rate 8000
2026-06-03 20:44:41.754169 97.23% [DEBUG] switch_ivr_play_say.c:1564 Codec Activated L16@8000hz 1 channels 20ms
2026-06-03 20:44:44.334175 97.13% [DEBUG] switch_rtp.c:7961 RTP RECV DTMF 4:960
2026-06-03 20:44:44.334175 97.13% [INFO] switch_channel.c:529 RECV DTMF 4:960
=================== replaying the main message again ===================
2026-06-03 20:44:44.334175 97.13% [DEBUG] switch_ivr_play_say.c:2013 done playing file /var/lib/freeswitch/recordings/PBX_PUB_DOMAIN/please_enter_the_extension.wav
2026-06-03 20:44:44.334175 97.13% [DEBUG] switch_ivr_menu.c:378 waiting for 2/3 digits t/o 3000
2026-06-03 20:44:44.334175 97.13% [DEBUG] switch_ivr.c:1385 Codec Activated L16@8000hz 1 channels 20ms
2026-06-03 20:44:44.854175 97.13% [DEBUG] switch_rtp.c:7961 RTP RECV DTMF 5:960
 
I read through this again and have a better idea of what you are doing.

The Max Failures is looking at whether the digits match one of the IVR Menu Options. With the Direct Dial it is matching it and sending it to the direct dial. So for this reason Max Failures would not be used with direct dial. The direct dial is not a feature of FreeSWITCH's IVR Menu so it is not able to account for it as you want.

The work around as you said is to add the extensions directly into the IVR Menu individually as then it could trigger the MAX Failure.
 
  • Like
Reactions: question