summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vmail-model.lua16
1 files changed, 15 insertions, 1 deletions
diff --git a/vmail-model.lua b/vmail-model.lua
index a7c318e..45cce6d 100644
--- a/vmail-model.lua
+++ b/vmail-model.lua
@@ -97,6 +97,16 @@ local function voicemail_update(user, domain)
return result
end
+local function voicemail_read(user, domain, message)
+ local cmd = "echo -e 'auth "..escape_quotes(config.event_socket_password).."\n\n"
+ cmd = cmd.."api vm_read "..escape_quotes(user).."@"..escape_quotes(domain).." read "..escape_quotes(message)
+ cmd = cmd.."\n\nexit\n\n' | nc "..format.escapespecialcharacters(config.event_socket_ip).." "..format.escapespecialcharacters(config.event_socket_port).." 2>&1"
+ local f = io.popen( cmd )
+ local result = f:read("*a") or ""
+ f:close()
+ return result
+end
+
local function assert (v, m)
if not v then
m = m or "Assertion failed!"
@@ -401,7 +411,7 @@ get_message = function(message, username)
local retval = cfe({ type="raw", label="error", option="audio/x-wav" })
local res, err = pcall(function()
local connected = databaseconnect()
- local sql = "SELECT file_path FROM voicemail_msgs"
+ local sql = "SELECT username, file_path FROM voicemail_msgs"
sql = sql .. generatewhereclause(username, message)
local tmp = getselectresponse(sql)
if connected then databasedisconnect() end
@@ -410,6 +420,8 @@ get_message = function(message, username)
else
retval.label = posix.basename(tmp[1].file_path)
retval.value = fs.read_file(tmp[1].file_path)
+ -- Mark the message as read
+ voicemail_read(tmp[1].username, config.domain, message)
end
end)
if not res and err then
@@ -604,6 +616,8 @@ callback_message = function(message, extension, username)
local sql = "SELECT * FROM voicemail_msgs" .. generatewhereclause(username, message)
local mess = getselectresponse(sql)
if #mess == 1 then
+ -- Mark the message as read
+ voicemail_read(mess[1].username, config.domain, message)
-- Initiate the call to the extension
voicemail_callback(extension, mess[1].file_path, mess[1].username)
retval.value = "Initiated callback"