Add press * to return to previous menu (#6064)

Added the ability to press * to transfer back to the previous menu based on value of ${rdnis}.
This commit is contained in:
emak 2021-10-29 16:31:56 -04:00 committed by GitHub
parent 0004a44d1c
commit 0b76d90875
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 40 additions and 12 deletions

View File

@ -96,6 +96,9 @@
--get the timeout destination
timeout_destination = session:getVariable("timeout_destination");
--get the previous menu location
previous_menu = session:getVariable("rdnis");
--set the sounds path for the language, dialect and voice
default_language = session:getVariable("default_language");
@ -191,22 +194,31 @@
digit_timeout = "500";
max_digits = 1;
max_tries = 1;
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/directory/dir-to_select_entry.wav", "", "\\d+");
if (string.len(dtmf_digits) == 0) then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/voicemail/vm-press.wav", "", "\\d+");
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/directory/dir-to_select_entry.wav", "", "\\d+|\\*");
if (string.len(dtmf_digits) == 0 and dtmf_digits~="*") then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/voicemail/vm-press.wav", "", "\\d+|\\*");
end
if (string.len(dtmf_digits) == 0) then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/digits/1.wav", "", "\\d+");
if (string.len(dtmf_digits) == 0 and dtmf_digits~="*") then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/digits/1.wav", "", "\\d+|\\*");
end
if (string.len(dtmf_digits) == 0) then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/directory/dir-for_next.wav", "", "\\d+");
if (string.len(dtmf_digits) == 0 and dtmf_digits~="*") then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/directory/dir-for_next.wav", "", "\\d+|\\*");
end
if (string.len(dtmf_digits) == 0) then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/voicemail/vm-press.wav", "", "\\d+");
if (string.len(dtmf_digits) == 0 and dtmf_digits~="*") then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/voicemail/vm-press.wav", "", "\\d+|\\*");
end
if (string.len(dtmf_digits) == 0) then
if (string.len(dtmf_digits) == 0 and dtmf_digits~="*") then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/digits/6.wav", "", "\\d+|\\*");
end
if (string.len(dtmf_digits) == 0 and dtmf_digits~="*") then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/ivr/ivr-to_return_to_previous_menu.wav", "", "\\d+|\\*");
end
if (string.len(dtmf_digits) == 0 and dtmf_digits~="*") then
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/voicemail/vm-press.wav", "", "\\d+|\\*");
end
if (string.len(dtmf_digits) == 0 and dtmf_digits~="*") then
digit_timeout = "5000";
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/digits/6.wav", "", "\\d+");
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/digits/star.wav", "", "\\d+|\\*");
end
return dtmf_digits;
end
@ -216,7 +228,18 @@
dtmf_digits = "";
min_digits=0; max_digits=3; max_tries=3; digit_timeout = "5000";
directory_prompt = directory_prompt or sounds_dir.."/directory/dir-enter_person_first_or_last.wav";
dtmf_digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", directory_prompt, "", "\\d+");
session:setVariable("read_terminator_used", "");
dtmf_digits = session:read(min_digits, max_digits, directory_prompt, digit_timeout, "#*");
--allow exit to previous menu
if (session:getVariable("read_terminator_used")) then
terminator = session:getVariable("read_terminator_used");
if (terminator == "*") then
session:execute("transfer",previous_menu);
end
end
return dtmf_digits;
end
@ -335,6 +358,11 @@
if (dtmf_digits == "1") then
session:execute("transfer", row.extension.." XML "..row.context);
end
--if * is pressed, transfer to referred extension
if (dtmf_digits == "*") then
session:execute("transfer",previous_menu);
end
end
found = true;
end