From 5ec163b488c12699e34266f83dab6e784bf4e086 Mon Sep 17 00:00:00 2001 From: agree <37550360+greenbea@users.noreply.github.com> Date: Mon, 22 Jun 2020 12:20:37 -0400 Subject: [PATCH] Update ivr.conf.lua (#5309) --- .../scripts/configuration/ivr.conf.lua | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/ivr.conf.lua b/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/ivr.conf.lua index 8d4cbe0ad1..046b4bc37a 100644 --- a/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/ivr.conf.lua +++ b/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/ivr.conf.lua @@ -68,11 +68,20 @@ assert(dbh:connected()); --get the ivr menu from the database - local sql = [[SELECT * FROM v_ivr_menus - WHERE (ivr_menu_uuid = :ivr_menu_uuid or ivr_menu_parent_uuid = :ivr_menu_uuid) - AND ivr_menu_enabled = 'true' - ORDER BY ivr_menu_parent_uuid desc - ]]; + local sql = [[ + with recursive ivr_menus as ( + select * + from v_ivr_menus + where ivr_menu_uuid = :ivr_menu_uuid + and ivr_menu_enabled = 'true' + union all + select child.* + from v_ivr_menus as child, ivr_menus as parent + where child.ivr_menu_parent_uuid = parent.ivr_menu_uuid + and child.ivr_menu_enabled = 'true' + ) + select * from ivr_menus + ]]; local params = {ivr_menu_uuid = ivr_menu_uuid}; if (debug["sql"]) then freeswitch.consoleLog("notice", "[ivr_menu] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n");