diff --git a/resources/install/scripts/disa.lua b/resources/install/scripts/disa.lua index 9f173bc7d2..0a5e0986c6 100644 --- a/resources/install/scripts/disa.lua +++ b/resources/install/scripts/disa.lua @@ -22,9 +22,10 @@ -- Contributor(s): -- Mark J Crane -predefined_destination = ""; -max_tries = "3"; -digit_timeout = "5000"; +--predefined variables + predefined_destination = ""; + max_tries = "3"; + digit_timeout = "5000"; --define the trim function require "resources.functions.trim"; @@ -32,56 +33,66 @@ digit_timeout = "5000"; --define the explode function require "resources.functions.explode"; -if ( session:ready() ) then - session:answer( ); - pin_number = session:getVariable("pin_number"); - sounds_dir = session:getVariable("sounds_dir"); - caller_id_name = session:getVariable("caller_id_name"); - caller_id_number = session:getVariable("caller_id_number"); - predefined_destination = session:getVariable("predefined_destination"); - digit_min_length = session:getVariable("digit_min_length"); - digit_max_length = session:getVariable("digit_max_length"); - gateway = session:getVariable("gateway"); - context = session:getVariable("context"); +--answer the call + if (session:ready()) then + session:answer(); + end - --set the sounds path for the language, dialect and voice +--get and save the variables + if (session:ready()) then + pin_number = session:getVariable("pin_number"); + sounds_dir = session:getVariable("sounds_dir"); + caller_id_name = session:getVariable("caller_id_name"); + caller_id_number = session:getVariable("caller_id_number"); + predefined_destination = session:getVariable("predefined_destination"); + digit_min_length = session:getVariable("digit_min_length"); + digit_max_length = session:getVariable("digit_max_length"); + gateway = session:getVariable("gateway"); + context = session:getVariable("context"); + privacy = session:getVariable("privacy"); + end + +--set the sounds path for the language, dialect and voice + if (session:ready()) then default_language = session:getVariable("default_language"); default_dialect = session:getVariable("default_dialect"); default_voice = session:getVariable("default_voice"); if (not default_language) then default_language = 'en'; end if (not default_dialect) then default_dialect = 'us'; end if (not default_voice) then default_voice = 'callie'; end + end - --set defaults - if (digit_min_length) then - --do nothing +--set defaults + if (digit_min_length) then + --do nothing + else + digit_min_length = "2"; + end + + if (digit_max_length) then + --do nothing + else + digit_max_length = "11"; + end + +--if the pin number is provided then require it + if (session:ready() and pin_number) then + min_digits = string.len(pin_number); + max_digits = string.len(pin_number)+1; + digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/ivr/ivr-please_enter_pin_followed_by_pound.wav", "", "\\d+"); + if (digits == pin_number) then + --pin is correct else - digit_min_length = "2"; + session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/ivr/ivr-pin_or_extension_is-invalid.wav"); + session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/ivr/ivr-im_sorry.wav"); + session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/voicemail/vm-goodbye.wav"); + session:hangup("NORMAL_CLEARING"); + return; end + end - if (digit_max_length) then - --do nothing - else - digit_max_length = "11"; - end - - --if the pin number is provided then require it - if (pin_number) then - min_digits = string.len(pin_number); - max_digits = string.len(pin_number)+1; - digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, "#", sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/ivr/ivr-please_enter_pin_followed_by_pound.wav", "", "\\d+"); - if (digits == pin_number) then - --pin is correct - else - session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/ivr/ivr-pin_or_extension_is-invalid.wav"); - session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/ivr/ivr-im_sorry.wav"); - session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/voicemail/vm-goodbye.wav"); - session:hangup("NORMAL_CLEARING"); - return; - end - end - - --if a predefined_destination is provided then set the number to the predefined_destination +--if a predefined_destination is provided then set the number to the predefined_destination + if (session:ready()) then if (predefined_destination) then destination_number = predefined_destination; else @@ -89,8 +100,10 @@ if ( session:ready() ) then destination_number = session:playAndGetDigits(digit_min_length, digit_max_length, max_tries, digit_timeout, "#", sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/ivr/ivr-enter_destination_telephone_number.wav", "", "\\d+"); --if (string.len(destination_number) == 10) then destination_number = "1"..destination_number; end end + end - --set the caller id anme and number +--set the caller id name and number + if (session:ready()) then if (string.len(destination_number) < 7) then if (caller_id_name) then --caller id name provided do nothing @@ -114,8 +127,10 @@ if ( session:ready() ) then caller_id_number = session:getVariable("outbound_caller_id_number"); end end + end - --transfer or bridge the call +--transfer or bridge the call + if (session:ready()) then if (string.len(destination_number) < 7) then --local call session:execute("transfer", destination_number .. " XML " .. context); @@ -126,22 +141,16 @@ if ( session:ready() ) then for index,value in pairs(gateway_table) do session:execute("bridge", "{continue_on_fail=true,hangup_after_bridge=true,origination_caller_id_name="..caller_id_name..",origination_caller_id_number="..caller_id_number.."}sofia/gateway/"..value.."/"..destination_number); end - else + else session:execute("set", "effective_caller_id_name="..caller_id_name); session:execute("set", "effective_caller_id_number="..caller_id_number); session:execute("transfer", destination_number .. " XML " .. context); end end + end - --alternate method - --local session2 = freeswitch.Session("{ignore_early_media=true}sofia/gateway/flowroute.com/"..destination_number); - --t1 = os.date('*t'); - --call_start_time = os.time(t1); - --freeswitch.bridge(session, session2); -end - ---function HangupHook(s, status, arg) - --session:execute("info", ""); - --freeswitch.consoleLog("NOTICE", "HangupHook: " .. status .. "\n"); ---end ---session:setHangupHook("HangupHook", ""); +--alternate method + --local session2 = freeswitch.Session("{ignore_early_media=true}sofia/gateway/flowroute.com/"..destination_number); + --t1 = os.date('*t'); + --call_start_time = os.time(t1); + --freeswitch.bridge(session, session2);