diff --git a/resources/install/scripts/app/ring_groups/index.lua b/resources/install/scripts/app/ring_groups/index.lua index bf4d2a193f..dc6ac4eaa6 100644 --- a/resources/install/scripts/app/ring_groups/index.lua +++ b/resources/install/scripts/app/ring_groups/index.lua @@ -39,6 +39,7 @@ local log = require "resources.functions.log".ring_group require "resources.functions.base64"; require "resources.functions.file_exists"; require "resources.functions.channel_utils" + require "resources.functions.format_ringback" --get the variables domain_name = session:getVariable("domain_name"); @@ -321,27 +322,7 @@ local log = require "resources.functions.log".ring_group domain_name = row.domain_name; --set ringback - if (ring_group_ringback == "${uk-ring}") then - ring_group_ringback = "tone_stream://%(400,200,400,450);%(400,2200,400,450);loops=-1"; - end - if (ring_group_ringback == "${us-ring}") then - ring_group_ringback = "tone_stream://%(2000,4000,440.0,480.0);loops=-1"; - end - if (ring_group_ringback == "${pt-ring}") then - ring_group_ringback = "tone_stream://%(1000,5000,400.0,0.0);loops=-1"; - end - if (ring_group_ringback == "${fr-ring}") then - ring_group_ringback = "tone_stream://%(1500,3500,440.0,0.0);loops=-1"; - end - if (ring_group_ringback == "${rs-ring}") then - ring_group_ringback = "tone_stream://%(1000,4000,425.0,0.0);loops=-1"; - end - if (ring_group_ringback == "${it-ring}") then - ring_group_ringback = "tone_stream://%(1000,4000,425.0,0.0);loops=-1"; - end - if (ring_group_ringback == "") then - ring_group_ringback = "local_stream://default"; - end + ring_group_ringback = format_ringback(ring_group_ringback); session:setVariable("ringback", ring_group_ringback); session:setVariable("transfer_ringback", ring_group_ringback); diff --git a/resources/install/scripts/app/xml_handler/resources/scripts/configuration/callcenter.conf.lua b/resources/install/scripts/app/xml_handler/resources/scripts/configuration/callcenter.conf.lua index 9806d6a76d..a7169c70ab 100644 --- a/resources/install/scripts/app/xml_handler/resources/scripts/configuration/callcenter.conf.lua +++ b/resources/install/scripts/app/xml_handler/resources/scripts/configuration/callcenter.conf.lua @@ -24,6 +24,9 @@ -- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -- POSSIBILITY OF SUCH DAMAGE. +--include functions + require "resources.functions.format_ringback" + --get the cache hostname = trim(api:execute("switchname", "")); if (trim(api:execute("module_exists", "mod_memcache")) == "true") then @@ -95,25 +98,9 @@ table.insert(xml, [[ ]]); table.insert(xml, [[ ]]); - if (string.len(queue_moh_sound) == 0) then - table.insert(xml, [[ ]]); - else - if (string.sub(queue_moh_sound, 0, 14) == 'tone_stream://' or string.sub(queue_moh_sound, 0, 2) == '${') then - --given this string --tone_stream://${us-ring};loops=-1 --return us-ring - a, b, tone_string = string.find(queue_moh_sound, ".*{(.*)}.*"); - if (tone_string ~= nil) then - tone_string = trim(api:execute("global_getvar", tone_string)); - table.insert(xml, [[ ]]); - end - elseif (string.sub(queue_moh_sound, 0, 15) == 'local_stream://') then - table.insert(xml, [[ ]]); - else - if (queue_moh_sound == nil or queue_moh_sound == "") then - queue_moh_sound = "local_stream://default"; - end - table.insert(xml, [[ ]]); - end - end + --set ringback + queue_ringback = format_ringback(queue_moh_sound); + table.insert(xml, [[ ]]); if (queue_record_template ~= nil) then table.insert(xml, [[ ]]); end diff --git a/resources/install/scripts/directory.lua b/resources/install/scripts/directory.lua index 7232974912..f0f6ab8ac2 100644 --- a/resources/install/scripts/directory.lua +++ b/resources/install/scripts/directory.lua @@ -40,6 +40,9 @@ require "resources.functions.database_handle"; dbh = database_handle('system'); +--include functions + require "resources.functions.format_ringback" + --settings require "resources.functions.settings"; settings = settings(domain_uuid); @@ -88,40 +91,14 @@ if (not default_dialect) then default_dialect = 'us'; end if (not default_voice) then default_voice = 'callie'; end + --set ringback + directory_ringback = format_ringback(session:getVariable("ringback")); + session:setVariable("ringback", directory_ringback); + session:setVariable("transfer_ringback", directory_ringback); + --set the sounds path for the language, dialect and voice - ringback = session:getVariable("ringback"); - if (ringback) then - ringback = ringback:gsub("$", ""); - ringback = ringback:gsub("{", ""); - ringback = ringback:gsub("}", ""); - end session:setVariable("instant_ringback", "true"); session:setVariable("ignore_early_media", "true"); - if (not ringback) then - session:execute("set", "ringback=local_stream://default"); --set to ringtone - session:execute("set", "transfer_ringback=local_stream://default"); --set to ringtone - elseif (ringback == "uk-ring") then - session:setVariable("ringback", "%(400,200,400,450);%(400,2200,400,450)"); - session:setVariable("transfer_ringback", "%(400,200,400,450);%(400,2200,400,450)"); - elseif (ringback == "us-ring") then - session:setVariable("ringback", "%(2000, 4000, 440.0, 480.0)"); - session:setVariable("transfer_ringback", "%(2000, 4000, 440.0, 480.0)"); - elseif (ringback == "pt-ring") then - session:setVariable("ringback", "%(1000, 5000, 400.0, 0.0)"); - session:setVariable("transfer_ringback", "%(1000, 5000, 400.0, 0.0)"); - elseif (ringback == "fr-ring") then - session:setVariable("ringback", "%(1500, 3500, 440.0, 0.0)"); - session:setVariable("transfer_ringback", "%(1500, 3500, 440.0, 0.0)"); - elseif (ringback == "rs-ring") then - session:setVariable("ringback", "%(1000, 4000, 425.0, 0.0)"); - session:setVariable("transfer_ringback", "%(1000, 4000, 425.0, 0.0)"); - elseif (ringback == "it-ring") then - session:setVariable("ringback", "%(1000, 4000, 425.0, 0.0)"); - session:setVariable("transfer_ringback", "%(1000, 4000, 425.0, 0.0)"); - else - session:execute("set", "ringback=local_stream://default"); --set to ringtone - session:execute("set", "transfer_ringback=local_stream://default"); --set to ringtone - end --define the sounds directory sounds_dir = session:getVariable("sounds_dir"); diff --git a/resources/install/scripts/ivr_menu.lua b/resources/install/scripts/ivr_menu.lua index 25fef0210c..e1154c8d61 100644 --- a/resources/install/scripts/ivr_menu.lua +++ b/resources/install/scripts/ivr_menu.lua @@ -38,6 +38,9 @@ require "resources.functions.database_handle"; dbh = database_handle('system'); +--include functions + require "resources.functions.format_ringback" + --get the variables domain_name = session:getVariable("domain_name"); context = session:getVariable("context"); @@ -133,27 +136,7 @@ end --set ringback - if (ivr_menu_ringback == "${uk-ring}") then - ivr_menu_ringback = "tone_stream://%(400,200,400,450);%(400,2200,400,450);loops=-1"; - end - if (ivr_menu_ringback == "${us-ring}") then - ivr_menu_ringback = "tone_stream://%(2000,4000,440.0,480.0);loops=-1"; - end - if (ivr_menu_ringback == "${pt-ring}") then - ivr_menu_ringback = "tone_stream://%(1000,5000,400.0,0.0);loops=-1"; - end - if (ivr_menu_ringback == "${fr-ring}") then - ivr_menu_ringback = "tone_stream://%(1500,3500,440.0,0.0);loops=-1"; - end - if (ivr_menu_ringback == "${rs-ring}") then - ivr_menu_ringback = "tone_stream://%(1000,4000,425.0,0.0);loops=-1"; - end - if (ivr_menu_ringback == "${it-ring}") then - ivr_menu_ringback = "tone_stream://%(1000,4000,425.0,0.0);loops=-1"; - end - if (ivr_menu_ringback == nil or ivr_menu_ringback == "") then - ivr_menu_ringback = "local_stream://default"; - end + ivr_menu_ringback = format_ringback(ivr_menu_ringback); session:setVariable("ringback", ivr_menu_ringback); session:setVariable("transfer_ringback", ivr_menu_ringback); diff --git a/resources/install/scripts/resources/functions/format_ringback.lua b/resources/install/scripts/resources/functions/format_ringback.lua new file mode 100644 index 0000000000..832a6d625a --- /dev/null +++ b/resources/install/scripts/resources/functions/format_ringback.lua @@ -0,0 +1,22 @@ + +--add the format_ringback function + function format_ringback ( ringback ) + if (ringback == "default_ringback") then + --fetch the default_ringback + ringback = session:getVariable("ringback"); + end + if (ringback:match("%${.*}")) then + ringback = ringback:gsub("%${", ""); + ringback = ringback:gsub("}", ""); + ringback = session:getVariable(ringback); + if (ringback == "") then + --fallback to us-ring + ringback = session:getVariable("us-ring"); + end + --convert to tone_stream + ringback = "tone_stream://" .. ringback .. ";loops=-1"; + elseif (ringback == "") then + ringback = session:getVariable(hold_music); + end + return ringback; + end \ No newline at end of file