diff --git a/app/switch/resources/scripts/app/voicemail/resources/functions/send_email.lua b/app/switch/resources/scripts/app/voicemail/resources/functions/send_email.lua index eaaa53dbb2..05ed42cb48 100644 --- a/app/switch/resources/scripts/app/voicemail/resources/functions/send_email.lua +++ b/app/switch/resources/scripts/app/voicemail/resources/functions/send_email.lua @@ -25,364 +25,361 @@ -- POSSIBILITY OF SUCH DAMAGE. --load libraries - local send_mail = require 'resources.functions.send_mail' - local Database = require "resources.functions.database" - local Settings = require "resources.functions.lazy_settings" +local send_mail = require 'resources.functions.send_mail' +local Database = require "resources.functions.database" +local Settings = require "resources.functions.lazy_settings" --define a function to send email - function send_email(id, uuid) +function send_email(id, uuid) + --prepare the database, settings and variables local db = dbh or Database.new('system'); local settings = Settings.new(db, domain_name, domain_uuid); local http_protocol = settings:get('domain', 'http_protocol', 'text') or "https"; local email_queue_enabled = "true"; - --get voicemail message details - local sql = [[SELECT * FROM v_voicemails - WHERE domain_uuid = :domain_uuid - AND voicemail_id = :voicemail_id]] - local params = {domain_uuid = domain_uuid, voicemail_id = id}; - if (debug["sql"]) then - freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); - end - dbh:query(sql, params, function(row) - db_voicemail_uuid = string.lower(row["voicemail_uuid"]); - --voicemail_password = row["voicemail_password"]; - --greeting_id = row["greeting_id"]; - voicemail_mail_to = row["voicemail_mail_to"]; - voicemail_transcription_enabled = row["voicemail_transcription_enabled"]; - voicemail_file = row["voicemail_file"]; - voicemail_local_after_email = row["voicemail_local_after_email"]; - voicemail_local_after_forward = row["voicemail_local_after_forward"]; - voicemail_description = row["voicemail_description"]; - end); + --get voicemail message details + local sql = [[SELECT * FROM v_voicemails + WHERE domain_uuid = :domain_uuid + AND voicemail_id = :voicemail_id]] + local params = {domain_uuid = domain_uuid, voicemail_id = id}; + if (debug["sql"]) then + freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); + end + dbh:query(sql, params, function(row) + db_voicemail_uuid = string.lower(row["voicemail_uuid"]); + --voicemail_password = row["voicemail_password"]; + --greeting_id = row["greeting_id"]; + voicemail_mail_to = row["voicemail_mail_to"]; + voicemail_transcription_enabled = row["voicemail_transcription_enabled"]; + voicemail_file = row["voicemail_file"]; + voicemail_local_after_email = row["voicemail_local_after_email"]; + voicemail_description = row["voicemail_description"]; + end); - --set default values - if (voicemail_file == nil) then - voicemail_file = "listen"; - end - if (voicemail_local_after_email == nil) then - voicemail_local_after_email = "true"; - end - if (voicemail_local_after_forward == nil) then - voicemail_local_after_forward = "true"; - end + --set default values + if (voicemail_file == nil or voicemail_file == '') then + voicemail_file = "listen"; + end + if (voicemail_local_after_email == nil or voicemail_local_after_email == '') then + voicemail_local_after_email = "true"; + end - --require the email address to send the email - if (string.len(voicemail_mail_to) > 2) then - --include languages file - local Text = require "resources.functions.text" - local text = Text.new("app.voicemail.app_languages") - local dbh = dbh + --require the email address to send the email + if (string.len(voicemail_mail_to) > 2) then + --include languages file + local Text = require "resources.functions.text" + local text = Text.new("app.voicemail.app_languages") + local dbh = dbh - --user setting time zone, if set - local sql = [[ - select - us.user_setting_value as time_zone - from - v_user_settings as us, - v_extension_users as eu, - v_extensions as e, - v_voicemails as v - where - v.voicemail_id = :voicemail_id and - v.domain_uuid = :domain_uuid and - v.voicemail_id = e.extension and - e.domain_uuid = :domain_uuid and - e.extension_uuid = eu.extension_uuid and - eu.domain_uuid = :domain_uuid and - eu.user_uuid = us.user_uuid and - us.domain_uuid = :domain_uuid and - us.user_setting_category = 'domain' and - us.user_setting_subcategory = 'time_zone' and - us.user_setting_name = 'name' and - us.user_setting_enabled = 'true' - order by - eu.insert_date asc - limit 1 - ]] - local params = {domain_uuid = domain_uuid, voicemail_id = id}; - if (debug["sql"]) then - freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); - end - dbh:query(sql, params, function(row) - time_zone = row["time_zone"]; - end); + --user setting time zone, if set + local sql = [[ + select + us.user_setting_value as time_zone + from + v_user_settings as us, + v_extension_users as eu, + v_extensions as e, + v_voicemails as v + where + v.voicemail_id = :voicemail_id and + v.domain_uuid = :domain_uuid and + v.voicemail_id = e.extension and + e.domain_uuid = :domain_uuid and + e.extension_uuid = eu.extension_uuid and + eu.domain_uuid = :domain_uuid and + eu.user_uuid = us.user_uuid and + us.domain_uuid = :domain_uuid and + us.user_setting_category = 'domain' and + us.user_setting_subcategory = 'time_zone' and + us.user_setting_name = 'name' and + us.user_setting_enabled = 'true' + order by + eu.insert_date asc + limit 1 + ]] + local params = {domain_uuid = domain_uuid, voicemail_id = id}; + if (debug["sql"]) then + freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); + end + dbh:query(sql, params, function(row) + time_zone = row["time_zone"]; + end); - --default/domain setting time zone - if (time_zone == nil or time_zone == '') then - time_zone = settings:get('domain', 'time_zone', 'name'); - end - - --default time zone - if (time_zone == nil or time_zone == '') then - time_zone = 'UTC'; - end - - --connect using other backend if needed - if storage_type == "base64" then - dbh = Database.new('system', 'base64/read') - end - - --get voicemail message details - local sql = [[SELECT to_char(timezone(:time_zone, to_timestamp(created_epoch)), 'Day DD Mon YYYY HH:MI:SS PM') as message_date, * - FROM v_voicemail_messages - WHERE domain_uuid = :domain_uuid - AND voicemail_message_uuid = :uuid]] - local params = {domain_uuid = domain_uuid, uuid = uuid, time_zone = time_zone}; - if (debug["sql"]) then - freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); - end - dbh:query(sql, params, function(row) - --get the values from the database - --uuid = row["voicemail_message_uuid"]; - created_epoch = row["created_epoch"]; - caller_id_name = row["caller_id_name"]; - caller_id_number = row["caller_id_number"]; - message_date = row["message_date"]; - message_length = row["message_length"]; - --message_status = row["message_status"]; - --message_priority = row["message_priority"]; - --get the recordings from the database - if (storage_type == "base64") then - --set the voicemail intro and message paths - message_location = voicemail_dir.."/"..id.."/msg_"..uuid.."."..vm_message_ext; - intro_location = voicemail_dir.."/"..id.."/intro_"..uuid.."."..vm_message_ext; - - --save the recordings to the file system - if (string.len(row["message_base64"]) > 32) then - --save the value to a variable - voicemail_base64 = row["message_base64"]; - - --include the file io - local file = require "resources.functions.file" - - --write decoded message string to file - file.write_base64(message_location, row["message_base64"]); - - --write decoded intro string to file, if any - if (string.len(row["message_intro_base64"]) > 32) then - file.write_base64(intro_location, row["message_intro_base64"]); - end - end - end - end); - - --close temporary connection - if storage_type == "base64" then - dbh:release() - end - - --format the message length and date - message_length_formatted = format_seconds(message_length); - if (debug["info"]) then - freeswitch.consoleLog("notice", "[voicemail] message date: " .. message_date .. "\n"); - freeswitch.consoleLog("notice", "[voicemail] message length: " .. message_length .. "\n"); - end - --local message_date = os.date("%A, %d %b %Y %I:%M %p", created_epoch); - - --connect to the database - local dbh = Database.new('system'); - - --get the templates - local sql = "SELECT * FROM v_email_templates "; - sql = sql .. "WHERE (domain_uuid = :domain_uuid or domain_uuid is null) "; - sql = sql .. "AND template_language = :template_language "; - sql = sql .. "AND template_category = 'voicemail' " - if (voicemail_transcription_enabled == 'true') then - sql = sql .. "AND template_subcategory = 'transcription' " - else - sql = sql .. "AND template_subcategory = 'default' " - end - sql = sql .. "AND template_enabled = 'true' " - sql = sql .. "ORDER BY domain_uuid DESC " - local params = {domain_uuid = domain_uuid, template_language = default_language.."-"..default_dialect}; - if (debug["sql"]) then - freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); - end - dbh:query(sql, params, function(row) - subject = row["template_subject"]; - body = row["template_body"]; - end); - - --get the link_address - link_address = http_protocol.."://"..domain_name..project_path; - - --set proper delete status - local local_after_email = ''; - if (voicemail_local_after_email == "false" or voicemail_local_after_forward == "false") then - local_after_email = "false"; - else - local_after_email = "true"; - end - - --prepare the headers - local headers = { - ["X-FusionPBX-Domain-UUID"] = domain_uuid; - ["X-FusionPBX-Domain-Name"] = domain_name; - ["X-FusionPBX-Call-UUID"] = uuid; - ["X-FusionPBX-Email-Type"] = 'voicemail'; - ["X-FusionPBX-local_after_email"] = local_after_email; - } - - --prepare the voicemail_name_formatted - voicemail_name_formatted = id; - local display_domain_name = settings:get('voicemail', 'display_domain_name', 'boolean'); - - if (display_domain_name == 'true') then - voicemail_name_formatted = id.."@"..domain_name; - end - if (voicemail_description ~= nil and voicemail_description ~= "" and voicemail_description ~= id) then - voicemail_name_formatted = voicemail_name_formatted.." ("..voicemail_description..")"; - end - - --prepare file - file = voicemail_dir.."/"..id.."/msg_"..uuid.."."..vm_message_ext; - - --combine intro, if exists, with message for emailing (only) - intro = voicemail_dir.."/"..id.."/intro_"..uuid.."."..vm_message_ext; - combined = voicemail_dir.."/"..id.."/intro_msg_"..uuid.."."..vm_message_ext; - if (file_exists(intro) and file_exists(file)) then - os.execute("sox "..intro.." "..file.." "..combined); - end - - --prepare the subject - if (subject ~= nil) then - subject = subject:gsub("${caller_id_name}", caller_id_name); - subject = subject:gsub("${caller_id_number}", caller_id_number); - subject = subject:gsub("${message_date}", message_date); - subject = subject:gsub("${message_duration}", message_length_formatted); - subject = subject:gsub("${account}", voicemail_name_formatted); - subject = subject:gsub("${voicemail_id}", id); - subject = subject:gsub("${voicemail_description}", voicemail_description); - subject = subject:gsub("${voicemail_name_formatted}", voicemail_name_formatted); - subject = subject:gsub("${domain_name}", domain_name); - subject = subject:gsub("${new_messages}", new_messages); - subject = trim(subject); - else - subject = text['label-voicemail'] .. ' ' .. caller_id_name .. ' <' .. caller_id_number .. '> ' .. message_length_formatted; - end - subject = '=?utf-8?B?'..base64.encode(subject)..'?='; - - --prepare the body - if (body ~= nil) then - body = body:gsub("${caller_id_name}", caller_id_name); - body = body:gsub("${caller_id_number}", caller_id_number); - body = body:gsub("${message_date}", message_date); - if (transcription ~= nil) then - transcription = transcription:gsub("%%", "*"); - body = body:gsub("${message_text}", transcription); - end - body = body:gsub("${message_duration}", message_length_formatted); - body = body:gsub("${account}", voicemail_name_formatted); - body = body:gsub("${voicemail_id}", id); - body = body:gsub("${voicemail_description}", voicemail_description); - body = body:gsub("${voicemail_name_formatted}", voicemail_name_formatted); - body = body:gsub("${domain_name}", domain_name); - body = body:gsub("${sip_to_user}", id); - if (origination_callee_id_name ~= nil) then - body = body:gsub("${origination_callee_id_name}", origination_callee_id_name); - end - body = body:gsub("${dialed_user}", id); - if (voicemail_file == "attach" and file) then - body = body:gsub("${message}", text['label-attached']); - elseif (voicemail_file == "link") then - body = body:gsub("${message}", ""..text['label-download']..""); - else - body = body:gsub("${message}", ""..text['label-listen']..""); - end - --body = body:gsub(" ", " "); - --body = body:gsub("%s+", ""); - --body = body:gsub(" ", " "); - body = trim(body); - else - body = ''; - if (caller_id_name ~= nil and caller_id_name ~= caller_id_number) then - body = body .. caller_id_name .. '
'; - end - body = body .. caller_id_number .. '
'; - body = body .. message_date .. '
'; - if (voicemail_file == "attach" and file) then - body = body .. '
' .. text['label-attached']; - elseif (voicemail_file == "link") then - body = body .. "
"..text['label-download']..""; - else - body = body .. "
"..text['label-listen']..""; - end - body = body .. ''; - end - - --get the smtp from address and name - smtp_from = settings:get('voicemail', 'smtp_from', 'text'); - smtp_from_name = settings:get('voicemail', 'smtp_from_name', 'text'); - if (smtp_from == nil or smtp_from == '') then - smtp_from = settings:get('email', 'smtp_from', 'text'); - end - if (smtp_from_name == nil or smtp_from_name == '') then - smtp_from_name = settings:get('email', 'smtp_from_name', 'text'); - end - if (smtp_from_name and string.len(smtp_from_name) > 0 and smtp_from and string.len(smtp_from) > 2) then - smtp_from = smtp_from_name.."<"..smtp_from..">"; - end - - --send the email with, or without, including the intro - if (file_exists(combined)) then - voicemail_path = combined - else - voicemail_path = file - end - - --send the email - send_mail(headers, - smtp_from, - voicemail_mail_to, - {subject, body}, - (voicemail_file == "attach") and voicemail_path, - voicemail_base64 - ); - - end - - --whether to keep the voicemail message and details local after email - if (string.len(voicemail_mail_to) > 2 and email_queue_enabled == 'false') then - if (voicemail_local_after_email == "false" and voicemail_local_after_forward == "false") then - --delete the voicemail message details - local sql = [[DELETE FROM v_voicemail_messages - WHERE domain_uuid = :domain_uuid - AND voicemail_uuid = :voicemail_uuid - AND voicemail_message_uuid = :uuid]] - local params = {domain_uuid = domain_uuid, - voicemail_uuid = db_voicemail_uuid, uuid = uuid}; - if (debug["sql"]) then - freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); - end - dbh:query(sql, params); - --delete voicemail recording files - if (file_exists(file)) then - os.remove(file); - end - if (file_exists(intro)) then - os.remove(intro); - end - if (file_exists(combined)) then - os.remove(combined); - end - --set message waiting indicator - message_waiting(id, domain_uuid); - --clear the variable - db_voicemail_uuid = ''; - elseif (storage_type == "base64") then - --delete voicemail recording files - if (file_exists(file)) then - os.remove(file); - end - if (file_exists(intro)) then - os.remove(intro); - end - if (file_exists(combined)) then - os.remove(combined); - end + --default/domain setting time zone + if (time_zone == nil or time_zone == '') then + time_zone = settings:get('domain', 'time_zone', 'name'); end + --default time zone + if (time_zone == nil or time_zone == '') then + time_zone = 'UTC'; + end + + --connect using other backend if needed + if storage_type == "base64" then + dbh = Database.new('system', 'base64/read') + end + + --get voicemail message details + local sql = [[SELECT to_char(timezone(:time_zone, to_timestamp(created_epoch)), 'Day DD Mon YYYY HH:MI:SS PM') as message_date, * + FROM v_voicemail_messages + WHERE domain_uuid = :domain_uuid + AND voicemail_message_uuid = :uuid]] + local params = {domain_uuid = domain_uuid, uuid = uuid, time_zone = time_zone}; + if (debug["sql"]) then + freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); + end + dbh:query(sql, params, function(row) + --get the values from the database + --uuid = row["voicemail_message_uuid"]; + created_epoch = row["created_epoch"]; + caller_id_name = row["caller_id_name"]; + caller_id_number = row["caller_id_number"]; + message_date = row["message_date"]; + message_length = row["message_length"]; + --message_status = row["message_status"]; + --message_priority = row["message_priority"]; + --get the recordings from the database + if (storage_type == "base64") then + --set the voicemail intro and message paths + message_location = voicemail_dir.."/"..id.."/msg_"..uuid.."."..vm_message_ext; + intro_location = voicemail_dir.."/"..id.."/intro_"..uuid.."."..vm_message_ext; + + --save the recordings to the file system + if (string.len(row["message_base64"]) > 32) then + --save the value to a variable + voicemail_base64 = row["message_base64"]; + + --include the file io + local file = require "resources.functions.file" + + --write decoded message string to file + file.write_base64(message_location, row["message_base64"]); + + --write decoded intro string to file, if any + if (string.len(row["message_intro_base64"]) > 32) then + file.write_base64(intro_location, row["message_intro_base64"]); + end + end + end + end); + + --close temporary connection + if storage_type == "base64" then + dbh:release() + end + + --format the message length and date + message_length_formatted = format_seconds(message_length); + if (debug["info"]) then + freeswitch.consoleLog("notice", "[voicemail] message date: " .. message_date .. "\n"); + freeswitch.consoleLog("notice", "[voicemail] message length: " .. message_length .. "\n"); + end + --local message_date = os.date("%A, %d %b %Y %I:%M %p", created_epoch); + + --connect to the database + local dbh = Database.new('system'); + + --get the templates + local sql = "SELECT * FROM v_email_templates "; + sql = sql .. "WHERE (domain_uuid = :domain_uuid or domain_uuid is null) "; + sql = sql .. "AND template_language = :template_language "; + sql = sql .. "AND template_category = 'voicemail' " + if (voicemail_transcription_enabled == 'true') then + sql = sql .. "AND template_subcategory = 'transcription' " + else + sql = sql .. "AND template_subcategory = 'default' " + end + sql = sql .. "AND template_enabled = 'true' " + sql = sql .. "ORDER BY domain_uuid DESC " + local params = {domain_uuid = domain_uuid, template_language = default_language.."-"..default_dialect}; + if (debug["sql"]) then + freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); + end + dbh:query(sql, params, function(row) + subject = row["template_subject"]; + body = row["template_body"]; + end); + + --get the link_address + link_address = http_protocol.."://"..domain_name..project_path; + + --set proper delete status + local local_after_email = ''; + if (voicemail_local_after_email == "false") then + local_after_email = "false"; + else + local_after_email = "true"; + end + + --prepare the headers + local headers = { + ["X-FusionPBX-Domain-UUID"] = domain_uuid; + ["X-FusionPBX-Domain-Name"] = domain_name; + ["X-FusionPBX-Call-UUID"] = uuid; + ["X-FusionPBX-Email-Type"] = 'voicemail'; + ["X-FusionPBX-local_after_email"] = local_after_email; + } + + --prepare the voicemail_name_formatted + voicemail_name_formatted = id; + local display_domain_name = settings:get('voicemail', 'display_domain_name', 'boolean'); + + if (display_domain_name == 'true') then + voicemail_name_formatted = id.."@"..domain_name; + end + if (voicemail_description ~= nil and voicemail_description ~= "" and voicemail_description ~= id) then + voicemail_name_formatted = voicemail_name_formatted.." ("..voicemail_description..")"; + end + + --prepare file + file = voicemail_dir.."/"..id.."/msg_"..uuid.."."..vm_message_ext; + + --combine intro, if exists, with message for emailing (only) + intro = voicemail_dir.."/"..id.."/intro_"..uuid.."."..vm_message_ext; + combined = voicemail_dir.."/"..id.."/intro_msg_"..uuid.."."..vm_message_ext; + if (file_exists(intro) and file_exists(file)) then + os.execute("sox "..intro.." "..file.." "..combined); + end + + --prepare the subject + if (subject ~= nil) then + subject = subject:gsub("${caller_id_name}", caller_id_name); + subject = subject:gsub("${caller_id_number}", caller_id_number); + subject = subject:gsub("${message_date}", message_date); + subject = subject:gsub("${message_duration}", message_length_formatted); + subject = subject:gsub("${account}", voicemail_name_formatted); + subject = subject:gsub("${voicemail_id}", id); + subject = subject:gsub("${voicemail_description}", voicemail_description); + subject = subject:gsub("${voicemail_name_formatted}", voicemail_name_formatted); + subject = subject:gsub("${domain_name}", domain_name); + subject = subject:gsub("${new_messages}", new_messages); + subject = trim(subject); + else + subject = text['label-voicemail'] .. ' ' .. caller_id_name .. ' <' .. caller_id_number .. '> ' .. message_length_formatted; + end + subject = '=?utf-8?B?'..base64.encode(subject)..'?='; + + --prepare the body + if (body ~= nil) then + body = body:gsub("${caller_id_name}", caller_id_name); + body = body:gsub("${caller_id_number}", caller_id_number); + body = body:gsub("${message_date}", message_date); + if (transcription ~= nil) then + transcription = transcription:gsub("%%", "*"); + body = body:gsub("${message_text}", transcription); + end + body = body:gsub("${message_duration}", message_length_formatted); + body = body:gsub("${account}", voicemail_name_formatted); + body = body:gsub("${voicemail_id}", id); + body = body:gsub("${voicemail_description}", voicemail_description); + body = body:gsub("${voicemail_name_formatted}", voicemail_name_formatted); + body = body:gsub("${domain_name}", domain_name); + body = body:gsub("${sip_to_user}", id); + if (origination_callee_id_name ~= nil) then + body = body:gsub("${origination_callee_id_name}", origination_callee_id_name); + end + body = body:gsub("${dialed_user}", id); + if (voicemail_file == "attach" and file) then + body = body:gsub("${message}", text['label-attached']); + elseif (voicemail_file == "link") then + body = body:gsub("${message}", ""..text['label-download']..""); + else + body = body:gsub("${message}", ""..text['label-listen']..""); + end + --body = body:gsub(" ", " "); + --body = body:gsub("%s+", ""); + --body = body:gsub(" ", " "); + body = trim(body); + else + body = ''; + if (caller_id_name ~= nil and caller_id_name ~= caller_id_number) then + body = body .. caller_id_name .. '
'; + end + body = body .. caller_id_number .. '
'; + body = body .. message_date .. '
'; + if (voicemail_file == "attach" and file) then + body = body .. '
' .. text['label-attached']; + elseif (voicemail_file == "link") then + body = body .. "
"..text['label-download']..""; + else + body = body .. "
"..text['label-listen']..""; + end + body = body .. ''; + end + + --get the smtp from address and name + smtp_from = settings:get('voicemail', 'smtp_from', 'text'); + smtp_from_name = settings:get('voicemail', 'smtp_from_name', 'text'); + if (smtp_from == nil or smtp_from == '') then + smtp_from = settings:get('email', 'smtp_from', 'text'); + end + if (smtp_from_name == nil or smtp_from_name == '') then + smtp_from_name = settings:get('email', 'smtp_from_name', 'text'); + end + if (smtp_from_name and string.len(smtp_from_name) > 0 and smtp_from and string.len(smtp_from) > 2) then + smtp_from = smtp_from_name.."<"..smtp_from..">"; + end + + --send the email with, or without, including the intro + if (file_exists(combined)) then + voicemail_path = combined + else + voicemail_path = file + end + + --send the email + send_mail(headers, + smtp_from, + voicemail_mail_to, + {subject, body}, + (voicemail_file == "attach") and voicemail_path, + voicemail_base64 + ); + + end + + --whether to keep the voicemail message and details local after email + if (string.len(voicemail_mail_to) > 2 and email_queue_enabled == 'false') then + if (voicemail_local_after_email == "false") then + --delete the voicemail message details + local sql = [[DELETE FROM v_voicemail_messages + WHERE domain_uuid = :domain_uuid + AND voicemail_uuid = :voicemail_uuid + AND voicemail_message_uuid = :uuid]] + local params = {domain_uuid = domain_uuid, + voicemail_uuid = db_voicemail_uuid, uuid = uuid}; + if (debug["sql"]) then + freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); + end + dbh:query(sql, params); + --delete voicemail recording files + if (file_exists(file)) then + os.remove(file); + end + if (file_exists(intro)) then + os.remove(intro); + end + if (file_exists(combined)) then + os.remove(combined); + end + --set message waiting indicator + message_waiting(id, domain_uuid); + --clear the variable + db_voicemail_uuid = ''; + elseif (storage_type == "base64") then + --delete voicemail recording files + if (file_exists(file)) then + os.remove(file); + end + if (file_exists(intro)) then + os.remove(intro); + end + if (file_exists(combined)) then + os.remove(combined); + end end - end + end + +end diff --git a/app/voicemails/app_config.php b/app/voicemails/app_config.php index 11d6f974b0..6adc844b91 100644 --- a/app/voicemails/app_config.php +++ b/app/voicemails/app_config.php @@ -180,10 +180,6 @@ $apps[$x]['permissions'][$y]['groups'][] = "user"; $apps[$x]['permissions'][$y]['groups'][] = "agent"; $y++; - $apps[$x]['permissions'][$y]['name'] = "voicemail_local_after_forward"; - $apps[$x]['permissions'][$y]['groups'][] = "superadmin"; - $apps[$x]['permissions'][$y]['groups'][] = "admin"; - $y++; $apps[$x]['permissions'][$y]['name'] = "voicemail_recording_instructions"; $apps[$x]['permissions'][$y]['groups'][] = "superadmin"; $apps[$x]['permissions'][$y]['groups'][] = "admin"; @@ -491,6 +487,7 @@ $apps[$x]['db'][$y]['fields'][$z]['type'] = "text"; $apps[$x]['db'][$y]['fields'][$z]['search'] = 'true'; $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Choose to keep the voicemail file after sending to forward destinations."; + $apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true"; $z++; $apps[$x]['db'][$y]['fields'][$z]['name'] = "voicemail_enabled"; $apps[$x]['db'][$y]['fields'][$z]['type'] = "text"; @@ -751,4 +748,4 @@ $apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)"; $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = ""; -?> +?> \ No newline at end of file diff --git a/app/voicemails/app_languages.php b/app/voicemails/app_languages.php index ecaa6b0d9c..6c0ec4839a 100644 --- a/app/voicemails/app_languages.php +++ b/app/voicemails/app_languages.php @@ -649,33 +649,6 @@ $text['label-voicemail_local_after_email']['zh-cn'] = "保持本地"; $text['label-voicemail_local_after_email']['ja-jp'] = "ローカルに保つ"; $text['label-voicemail_local_after_email']['ko-kr'] = "로컬 유지"; -$text['label-voicemail_local_after_forward']['en-us'] = "Keep Local After Forward"; -$text['label-voicemail_local_after_forward']['en-gb'] = "Keep Local After Forward"; -$text['label-voicemail_local_after_forward']['ar-eg'] = "الحفاظ على المحلية بعد الأمام"; -$text['label-voicemail_local_after_forward']['de-at'] = "Nach Weiterleitung lokal behalten"; -$text['label-voicemail_local_after_forward']['de-ch'] = "Nach Weiterleitung lokal behalten"; -$text['label-voicemail_local_after_forward']['de-de'] = "Nach Weiterleitung lokal behalten"; -$text['label-voicemail_local_after_forward']['el-gr'] = "Keep Local After Forward"; -$text['label-voicemail_local_after_forward']['es-cl'] = "Mantener local después de avanzar"; -$text['label-voicemail_local_after_forward']['es-mx'] = "Mantener local después de avanzar"; -$text['label-voicemail_local_after_forward']['fr-ca'] = "Rester local après le transfert"; -$text['label-voicemail_local_after_forward']['fr-fr'] = "Rester local après le transfert"; -$text['label-voicemail_local_after_forward']['he-il'] = "שמור על מקומי לאחר קדימה"; -$text['label-voicemail_local_after_forward']['it-it'] = "Mantieni locale dopo l'inoltro"; -$text['label-voicemail_local_after_forward']['ka-ge'] = "გადაგზავნის შემდეგ ადგილობრივად შენარჩუნება"; -$text['label-voicemail_local_after_forward']['nl-nl'] = "Lokaal behouden na doorsturen"; -$text['label-voicemail_local_after_forward']['pl-pl'] = "Zachowaj lokalny po przesłaniu dalej"; -$text['label-voicemail_local_after_forward']['pt-br'] = "Manter local depois de encaminhar"; -$text['label-voicemail_local_after_forward']['pt-pt'] = "Manter local depois de encaminhar"; -$text['label-voicemail_local_after_forward']['ro-ro'] = "Păstrați local după redirecționare"; -$text['label-voicemail_local_after_forward']['ru-ru'] = "Сохранять локальное значение после пересылки"; -$text['label-voicemail_local_after_forward']['sv-se'] = "Håll lokal efter Forward"; -$text['label-voicemail_local_after_forward']['uk-ua'] = "Зберігати локальні після пересилання"; -$text['label-voicemail_local_after_forward']['tr-tr'] = "İleriden Sonra Yerel Tut"; -$text['label-voicemail_local_after_forward']['zh-cn'] = "转发后保持本地"; -$text['label-voicemail_local_after_forward']['ja-jp'] = "転送後もローカルに保持"; -$text['label-voicemail_local_after_forward']['ko-kr'] = "전달 후 로컬 유지"; - $text['label-voicemail_transcribe_enabled']['en-us'] = "Transcribe"; $text['label-voicemail_transcribe_enabled']['en-gb'] = "Transcribe"; $text['label-voicemail_transcribe_enabled']['ar-eg'] = "نسخ"; @@ -1836,33 +1809,6 @@ $text['description-voicemail_local_after_email']['zh-cn'] = "选择发送电子 $text['description-voicemail_local_after_email']['ja-jp'] = "電子メール通知の送信後にボイスメールをシステムに保持するかどうかを選択します。"; $text['description-voicemail_local_after_email']['ko-kr'] = "이메일 알림을 보낸 후 시스템에 음성 메일을 유지할지 여부를 선택합니다."; -$text['description-voicemail_local_after_forward']['en-us'] = "Choose whether to keep the voicemail in this mailbox after sending to the defined Forward Destination(s)."; -$text['description-voicemail_local_after_forward']['en-gb'] = "Choose whether to keep the voicemail in this mailbox after sending to the defined Forward Destination(s)."; -$text['description-voicemail_local_after_forward']['ar-eg'] = "اختر ما إذا كنت تريد الاحتفاظ بالبريد الصوتي في صندوق البريد هذا بعد إرساله إلى وجهة (وجهات) إعادة التوجيه المحددة."; -$text['description-voicemail_local_after_forward']['de-at'] = "Wählen Sie, ob die Voicemail nach dem Senden an die definierten Weiterleitungsziele in dieser Mailbox bleiben soll."; -$text['description-voicemail_local_after_forward']['de-ch'] = "Wählen Sie, ob die Voicemail nach dem Senden an die definierten Weiterleitungsziele in dieser Mailbox bleiben soll."; -$text['description-voicemail_local_after_forward']['de-de'] = "Wählen Sie, ob die Voicemail nach dem Senden an die definierten Weiterleitungsziele in dieser Mailbox bleiben soll."; -$text['description-voicemail_local_after_forward']['el-gr'] = "Επιλέξτε εάν θα διατηρηθεί ο τηλεφωνητής σε αυτό το γραμματοκιβώτιο μετά την αποστολή στον καθορισμένο(ους) Προορισμό(ους)."; -$text['description-voicemail_local_after_forward']['es-cl'] = "Elija si desea conservar el correo de voz en este buzón después de enviarlo a los destinos de reenvío definidos."; -$text['description-voicemail_local_after_forward']['es-mx'] = "Elija si desea conservar el correo de voz en este buzón después de enviarlo a los destinos de reenvío definidos."; -$text['description-voicemail_local_after_forward']['fr-ca'] = "Choisissez si vous souhaitez conserver la messagerie vocale dans cette boîte aux lettres après l'envoi vers la ou les destinations de transfert définies."; -$text['description-voicemail_local_after_forward']['fr-fr'] = "Choisissez si vous souhaitez conserver la messagerie vocale dans cette boîte aux lettres après l'envoi vers la ou les destinations de transfert définies."; -$text['description-voicemail_local_after_forward']['he-il'] = "בחר אם לשמור את הדואר הקולי בתיבת הדואר הזו לאחר השליחה ליעד/ים המוגדרים."; -$text['description-voicemail_local_after_forward']['it-it'] = "Scegliere se conservare i messaggi vocali in questa casella di posta dopo l'invio alle destinazioni di inoltro definite."; -$text['description-voicemail_local_after_forward']['ka-ge'] = "აირჩიეთ, დარჩება თუ არა ხმოვანი ფოსტა ამ საფოსტო ყუთში განსაზღვრულ დანიშნულების პუნქტებამდე გაგზავნის შემდეგ."; -$text['description-voicemail_local_after_forward']['nl-nl'] = "Kies of u de voicemail in deze mailbox wilt bewaren na verzending naar de gedefinieerde doorstuurbestemming(en)."; -$text['description-voicemail_local_after_forward']['pl-pl'] = "Wybierz, czy poczta głosowa ma być przechowywana w tej skrzynce pocztowej po wysłaniu do określonych miejsc docelowych przekazywania."; -$text['description-voicemail_local_after_forward']['pt-br'] = "Escolha se deseja manter o correio de voz nesta caixa postal após enviar para o(s) destino(s) de encaminhamento definido(s)."; -$text['description-voicemail_local_after_forward']['pt-pt'] = "Escolha se deseja manter o correio de voz nesta caixa postal após enviar para o(s) destino(s) de encaminhamento definido(s)."; -$text['description-voicemail_local_after_forward']['ro-ro'] = "Alegeți dacă doriți să păstrați mesageria vocală în această cutie poștală după trimiterea către destinația (destinațiile) de redirecționare definite."; -$text['description-voicemail_local_after_forward']['ru-ru'] = "Выберите, следует ли сохранять голосовую почту в этом почтовом ящике после отправки в определенные пункты назначения пересылки."; -$text['description-voicemail_local_after_forward']['sv-se'] = "Välj om du vill behålla röstbrevlådan i den här brevlådan efter att ha skickats till den eller de definierade vidarebefordrandestinationerna."; -$text['description-voicemail_local_after_forward']['uk-ua'] = "Виберіть, чи зберігати голосову пошту в цій поштовій скриньці після надсилання на визначені пункти призначення."; -$text['description-voicemail_local_after_forward']['tr-tr'] = "Tanımlanan İletme Hedef(ler)ine gönderdikten sonra sesli postanın bu posta kutusunda tutulup tutulmayacağını seçin."; -$text['description-voicemail_local_after_forward']['zh-cn'] = "选择在发送到定义的转发目的地后是否将语音邮件保留在此邮箱中。"; -$text['description-voicemail_local_after_forward']['ja-jp'] = "定義された転送先に送信した後、ボイスメールをこのメールボックスに保持するかどうかを選択します。"; -$text['description-voicemail_local_after_forward']['ko-kr'] = "정의된 전달 대상으로 음성 메일을 보낸 후 이 사서함에 음성 메일을 보관할지 여부를 선택합니다."; - $text['description-voicemail_id']['en-us'] = "Enter the Voicemail ID"; $text['description-voicemail_id']['en-gb'] = "Enter the Voicemail ID"; $text['description-voicemail_id']['ar-eg'] = "أدخل معرف البريد الصوتي"; @@ -2726,4 +2672,4 @@ $text['message-emails_resent']['zh-cn'] = "电子邮件已重新发送"; $text['message-emails_resent']['ja-jp'] = "再送信メール"; $text['message-emails_resent']['ko-kr'] = "이메일 재전송"; -?> +?> \ No newline at end of file diff --git a/app/voicemails/voicemail_edit.php b/app/voicemails/voicemail_edit.php index a5aaec41da..1da52e957e 100644 --- a/app/voicemails/voicemail_edit.php +++ b/app/voicemails/voicemail_edit.php @@ -100,7 +100,6 @@ $voicemail_file = $_POST["voicemail_file"]; $voicemail_local_after_email = $_POST["voicemail_local_after_email"] ?? null; $voicemail_destination = $_POST["voicemail_destination"]; - $voicemail_local_after_forward = $_POST["voicemail_local_after_forward"] ?? null; $voicemail_enabled = $_POST["voicemail_enabled"] ?? 'false'; $voicemail_description = $_POST["voicemail_description"]; $voicemail_tutorial = $_POST["voicemail_tutorial"] ?? null; @@ -181,21 +180,6 @@ if (permission_exists('voicemail_local_after_email') && !empty($voicemail_mail_to)) { $array['voicemails'][0]['voicemail_local_after_email'] = $voicemail_local_after_email ?? 'false'; } - else if (permission_exists('voicemail_local_after_forward')) { - $array['voicemails'][0]['voicemail_local_after_email'] = $voicemail_local_after_forward ?? 'false'; - } - else { - $array['voicemails'][0]['voicemail_local_after_email'] = 'true'; - } - if (permission_exists('voicemail_local_after_forward')) { - $array['voicemails'][0]['voicemail_local_after_forward'] = $voicemail_local_after_forward ?? 'false'; - } - else if (permission_exists('voicemail_local_after_email') && !empty($voicemail_mail_to)) { - $array['voicemails'][0]['voicemail_local_after_forward'] = $voicemail_local_after_email ?? 'false'; - } - else { - $array['voicemails'][0]['voicemail_local_after_forward'] = 'true'; - } $array['voicemails'][0]['voicemail_enabled'] = $voicemail_enabled; $array['voicemails'][0]['voicemail_description'] = $voicemail_description; @@ -362,7 +346,6 @@ $voicemail_recording_options = $row["voicemail_recording_options"]; $voicemail_file = $row["voicemail_file"]; $voicemail_local_after_email = $row["voicemail_local_after_email"]; - $voicemail_local_after_forward = $row["voicemail_local_after_forward"]; $voicemail_enabled = $row["voicemail_enabled"]; $voicemail_description = $row["voicemail_description"]; } @@ -371,7 +354,6 @@ else { $voicemail_file = $_SESSION['voicemail']['voicemail_file']['text']; $voicemail_local_after_email = $_SESSION['voicemail']['keep_local']['boolean']; - $voicemail_local_after_forward = $_SESSION['voicemail']['keep_local']['boolean']; } //remove the spaces @@ -381,7 +363,6 @@ //set the defaults if (empty($voicemail_local_after_email)) { $voicemail_local_after_email = 'true'; } - if (empty($voicemail_local_after_forward)) { $voicemail_local_after_forward = 'true'; } if (empty($voicemail_enabled)) { $voicemail_enabled = 'true'; } if (empty($voicemail_transcription_enabled)) { $voicemail_transcription_enabled = $_SESSION['voicemail']['transcription_enabled_default']['boolean']; } if (empty($voicemail_tutorial)) { $voicemail_tutorial = 'false'; } @@ -970,36 +951,6 @@ echo " "; } - if ( - permission_exists('voicemail_forward') && - permission_exists('voicemail_local_after_forward') && - !empty($voicemail_destinations_assigned) && - is_array($voicemail_destinations_assigned) - ) { - echo "\n"; - echo "\n"; - echo " ".$text['label-voicemail_local_after_forward']."\n"; - echo "\n"; - echo "\n"; - if (substr($_SESSION['theme']['input_toggle_style']['text'], 0, 6) == 'switch') { - echo " \n"; - } - else { - echo " \n"; - } - echo "
\n"; - echo $text['description-voicemail_local_after_forward']."\n"; - echo "\n"; - echo "\n"; - unset($voicemail_destinations_assigned); - } - echo "\n"; echo "\n"; echo " ".$text['label-voicemail_enabled']."\n";