Add voicemail to email, whether to save the save the voicemail locally and whether to attach the voicemail to the email.
This commit is contained in:
parent
dba0fd3f76
commit
54ee755134
|
|
@ -448,6 +448,9 @@
|
||||||
voicemail_uuid = row["voicemail_uuid"];
|
voicemail_uuid = row["voicemail_uuid"];
|
||||||
voicemail_password = row["voicemail_password"];
|
voicemail_password = row["voicemail_password"];
|
||||||
greeting_id = row["greeting_id"];
|
greeting_id = row["greeting_id"];
|
||||||
|
voicemail_mail_to = row["voicemail_mail_to"];
|
||||||
|
voicemail_attach_file = row["voicemail_attach_file"];
|
||||||
|
voicemail_local_after_email = row["voicemail_local_after_email"];
|
||||||
end);
|
end);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -474,6 +477,12 @@
|
||||||
result = session:recordFile(voicemail_dir.."/"..voicemail_id.."/msg_"..uuid..".wav", max_len_seconds, silence_threshold, silence_seconds);
|
result = session:recordFile(voicemail_dir.."/"..voicemail_id.."/msg_"..uuid..".wav", max_len_seconds, silence_threshold, silence_seconds);
|
||||||
--session:execute("record", voicemail_dir.."/"..uuid.." 180 200");
|
--session:execute("record", voicemail_dir.."/"..uuid.." 180 200");
|
||||||
|
|
||||||
|
--set the message waiting event
|
||||||
|
local event = freeswitch.Event("message_waiting");
|
||||||
|
event:addHeader("MWI-Messages-Waiting", "yes");
|
||||||
|
event:addHeader("MWI-Message-Account", "sip:"..voicemail_id.."@"..domain_name);
|
||||||
|
event:fire();
|
||||||
|
|
||||||
--set the epoch
|
--set the epoch
|
||||||
stop_epoch = os.time();
|
stop_epoch = os.time();
|
||||||
freeswitch.consoleLog("notice", "[voicemail] start epoch: " .. stop_epoch .. "\n");
|
freeswitch.consoleLog("notice", "[voicemail] start epoch: " .. stop_epoch .. "\n");
|
||||||
|
|
@ -483,12 +492,29 @@
|
||||||
freeswitch.consoleLog("notice", "[voicemail] message length: " .. message_length .. "\n");
|
freeswitch.consoleLog("notice", "[voicemail] message length: " .. message_length .. "\n");
|
||||||
|
|
||||||
--send the email with the voicemail recording attached
|
--send the email with the voicemail recording attached
|
||||||
--[[freeswitch.email("",
|
if (string.len(voicemail_mail_to) > 3) then
|
||||||
"",
|
message = [[<font face=arial>
|
||||||
"To: "..email_address.."\nFrom: "..from_address.."\nSubject: Fax to: "..number_dialed.." SENT",
|
<b>Message From "]]..caller_id_name..[[" <A HREF="tel:]]..caller_id_number..[[">]]..caller_id_number..[[</A></b><br>
|
||||||
email_message_success ,
|
<hr noshade size=1>
|
||||||
fax_file
|
Created: ]]..os.date("%d %b %Y", start_epoch)..[[<br>
|
||||||
);]]
|
Duration: ]]..message_length..[[<br>
|
||||||
|
Account: ]]..voicemail_id..[[@]]..domain_name..[[<br>
|
||||||
|
</font>]];
|
||||||
|
if (voicemail_attach_file == "true") then
|
||||||
|
freeswitch.email("",
|
||||||
|
"",
|
||||||
|
"To: "..voicemail_mail_to.."\nFrom: "..voicemail_mail_to.."\nSubject: Voicemail from "..caller_id_name.." <"..caller_id_number.."> "..message_length,
|
||||||
|
message,
|
||||||
|
voicemail_dir.."/"..voicemail_id.."/msg_"..uuid..".wav"
|
||||||
|
);
|
||||||
|
else
|
||||||
|
freeswitch.email("",
|
||||||
|
"",
|
||||||
|
"To: "..voicemail_mail_to.."\nFrom: "..voicemail_mail_to.."\nSubject: Voicemail from "..caller_id_name.." <"..caller_id_number.."> "..message_length,
|
||||||
|
message
|
||||||
|
);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--save the message to the voicemail messages
|
--save the message to the voicemail messages
|
||||||
local sql = {}
|
local sql = {}
|
||||||
|
|
@ -516,11 +542,18 @@
|
||||||
--table.insert(sql, "'".. message_status .."', ");
|
--table.insert(sql, "'".. message_status .."', ");
|
||||||
--table.insert(sql, "'".. message_priority .."' ");
|
--table.insert(sql, "'".. message_priority .."' ");
|
||||||
table.insert(sql, ") ");
|
table.insert(sql, ") ");
|
||||||
sql = table.concat(sql, "\n");
|
if (voicemail_local_after_email == "true") then
|
||||||
|
sql = table.concat(sql, "\n");
|
||||||
|
end
|
||||||
if (debug["sql"]) then
|
if (debug["sql"]) then
|
||||||
freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "\n");
|
freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "\n");
|
||||||
end
|
end
|
||||||
dbh:query(sql);
|
dbh:query(sql);
|
||||||
|
|
||||||
|
--local after email is false so delete the recording file
|
||||||
|
if (voicemail_local_after_email == "false") then
|
||||||
|
os.remove(voicemail_dir.."/"..voicemail_id.."/msg_"..uuid..".wav");
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function main_menu ()
|
function main_menu ()
|
||||||
|
|
@ -623,7 +656,7 @@ function listen_to_recording (message_number, uuid, created_epoch, caller_id_nam
|
||||||
--please enter the extension to send this message to followed by #
|
--please enter the extension to send this message to followed by #
|
||||||
--process the dtmf
|
--process the dtmf
|
||||||
if (dtmf_digits == "1") then
|
if (dtmf_digits == "1") then
|
||||||
listen_to_recording(message_number, uuid, created_epoch, caller_id_name, caller_id_number)
|
listen_to_recording(message_number, uuid, created_epoch, caller_id_name, caller_id_number);
|
||||||
elseif (dtmf_digits == "2") then
|
elseif (dtmf_digits == "2") then
|
||||||
message_saved(uuid);
|
message_saved(uuid);
|
||||||
macro(session, "message_saved", 200, '');
|
macro(session, "message_saved", 200, '');
|
||||||
|
|
@ -641,9 +674,9 @@ function message_saved(uuid)
|
||||||
sql = [[UPDATE v_voicemail_messages SET message_status = 'saved'
|
sql = [[UPDATE v_voicemail_messages SET message_status = 'saved'
|
||||||
WHERE domain_uuid = ']] .. domain_uuid ..[['
|
WHERE domain_uuid = ']] .. domain_uuid ..[['
|
||||||
AND voicemail_message_uuid = ']] .. uuid ..[[']];
|
AND voicemail_message_uuid = ']] .. uuid ..[[']];
|
||||||
--if (debug["sql"]) then
|
if (debug["sql"]) then
|
||||||
freeswitch.consoleLog("notice", "[voicemail] SQL7: " .. sql .. "\n");
|
freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "\n");
|
||||||
--end
|
end
|
||||||
dbh:query(sql);
|
dbh:query(sql);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -703,6 +736,26 @@ function menu_messages (message_status)
|
||||||
end);
|
end);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--voicemail count if zero new messages set the mwi to no
|
||||||
|
if (voicemail_id ~= nil) then
|
||||||
|
sql = [[SELECT count(*) as new_messages FROM v_voicemail_messages
|
||||||
|
WHERE domain_uuid = ']] .. domain_uuid ..[['
|
||||||
|
AND voicemail_uuid = ']] .. voicemail_uuid ..[['
|
||||||
|
AND (message_status is null or message_status = '') ]];
|
||||||
|
if (debug["sql"]) then
|
||||||
|
freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "\n");
|
||||||
|
end
|
||||||
|
status = dbh:query(sql, function(row)
|
||||||
|
if (row["new_messages"] == "0") then
|
||||||
|
--send the message waiting event
|
||||||
|
local event = freeswitch.Event("message_waiting");
|
||||||
|
event:addHeader("MWI-Messages-Waiting", "no");
|
||||||
|
event:addHeader("MWI-Message-Account", "sip:"..voicemail_id.."@"..domain_name);
|
||||||
|
event:fire();
|
||||||
|
end
|
||||||
|
end);
|
||||||
|
end
|
||||||
|
|
||||||
--set the display
|
--set the display
|
||||||
api = freeswitch.API();
|
api = freeswitch.API();
|
||||||
reply = api:executeString("uuid_display "..session:get_uuid().." "..destination_number);
|
reply = api:executeString("uuid_display "..session:get_uuid().." "..destination_number);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue