42 lines
1.1 KiB
Lua
42 lines
1.1 KiB
Lua
require "resources.functions.split"
|
|
local api = require "resources.functions.api"
|
|
local log = require "resources.functions.log".presence
|
|
|
|
local function turn_lamp(on, user, uuid)
|
|
log.debugf('turn_lamp: %s - %s(%s)', tostring(user), tostring(on), type(on))
|
|
|
|
local userid, domain, proto = split_first(user, "@", true)
|
|
proto, userid = split_first(userid, "+", true)
|
|
if userid then
|
|
user = userid .. "@" .. domain
|
|
else
|
|
proto = "sip"
|
|
end
|
|
|
|
uuid = uuid or api:execute('create_uuid')
|
|
|
|
local event = freeswitch.Event("PRESENCE_IN");
|
|
event:addHeader("proto", proto);
|
|
event:addHeader("event_type", "presence");
|
|
event:addHeader("alt_event_type", "dialog");
|
|
event:addHeader("Presence-Call-Direction", "outbound");
|
|
event:addHeader("from", user);
|
|
event:addHeader("login", user);
|
|
event:addHeader("unique-id", uuid);
|
|
event:addHeader("status", "Active (1 waiting)");
|
|
if on then
|
|
event:addHeader("answer-state", "confirmed");
|
|
event:addHeader("rpid", "unknown");
|
|
event:addHeader("event_count", "1");
|
|
else
|
|
event:addHeader("answer-state", "terminated");
|
|
end
|
|
|
|
-- log.debug(event:serialize())
|
|
|
|
event:fire();
|
|
end
|
|
|
|
return {
|
|
turn_lamp = turn_lamp;
|
|
} |