From 1762dabfab79fb5ff1ae2b943cd5f55fcf892375 Mon Sep 17 00:00:00 2001 From: frytimo Date: Thu, 26 Sep 2024 10:59:31 -0300 Subject: [PATCH] add detect audio length of recording (#7140) * add detect audio length of recording * Update page.lua --- app/switch/resources/scripts/page.lua | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/app/switch/resources/scripts/page.lua b/app/switch/resources/scripts/page.lua index 6c41104dde..818225abad 100644 --- a/app/switch/resources/scripts/page.lua +++ b/app/switch/resources/scripts/page.lua @@ -64,6 +64,14 @@ local function each_number(value) end end +--create a function to determine length of a recording +local function get_recording_length(file_name) + local handle = io.popen("sox --i -D " .. file_name); + local result = handle:read("*a"); + handle:close(); + return result; +end + --make sure the session is ready if ( session:ready() ) then --answer the call @@ -86,6 +94,7 @@ if ( session:ready() ) then sip_from_user = session:getVariable("sip_from_user"); mute = session:getVariable("mute"); delay = session:getVariable("delay"); + recording_filename = session:getVariable("recording_filename"); --if the call is transferred then return the call backe to the referred by user referred_by = session:getVariable("sip_h_Referred-By"); @@ -188,11 +197,17 @@ if ( session:ready() ) then flags = "flags{}"; end - --if announce delay is true then an option for a preset recording filename and length - if (delay == "true") then - recording_filename = session:getVariable("recording_filename"); - recording_length = session:getVariable("recording_length"); + --if recording filename was set then enable delay + if (recording_filename ~= nil) then + delay = "true"; dtmf_entered = 1; + + --get the recording length + recording_length = session:getVariable("recording_length"); + if (recording_length == nil) then + --get the recording length using sox + recording_length = get_recording_length(recording_filename); + end end --if announce delay is active and audio file is not provided then prompt for recording