Send Presence to the for Agent ID

This commit is contained in:
markjcrane
2023-05-23 22:27:58 -06:00
parent 7276160030
commit e6a69de549
2 changed files with 64 additions and 27 deletions
@@ -89,6 +89,19 @@
$event .= "unique-id: ".uuid()."\n"; $event .= "unique-id: ".uuid()."\n";
$event .= "Presence-Call-Direction: outbound\n"; $event .= "Presence-Call-Direction: outbound\n";
$event .= "answer-state: ".$answer_state."\n"; $event .= "answer-state: ".$answer_state."\n";
$event = "sendevent PRESENCE_IN\n";
$event .= "proto: agent\n";
$event .= "from: ".$row['agent_id']."@".$row['domain_name']."\n";
$event .= "login: ".$row['agent_id']."@".$row['domain_name']."\n";
$event .= "status: Active (1 waiting)\n";
$event .= "rpid: unknown\n";
$event .= "event_type: presence\n";
$event .= "alt_event_type: dialog\n";
$event .= "event_count: 1\n";
$event .= "unique-id: ".uuid()."\n";
$event .= "Presence-Call-Direction: outbound\n";
$event .= "answer-state: ".$answer_state."\n";
} }
//send message to the console //send message to the console
@@ -1,5 +1,4 @@
--set default variables --set default variables
max_digits = 15; max_digits = 15;
digit_timeout = 5000; digit_timeout = 5000;
@@ -97,14 +96,14 @@
end end
dbh:query(sql, params, function(row) dbh:query(sql, params, function(row)
--set the variables --set the variables
agent_uuid = row.call_center_agent_uuid; agent_uuid = row.call_center_agent_uuid;
agent_name = row.agent_name; agent_name = row.agent_name;
agent_id = row.agent_id; agent_id = row.agent_id;
user_uuid = row.user_uuid; user_uuid = row.user_uuid;
--authorize the user --authorize the user
agent_authorized = 'true'; agent_authorized = 'true';
end); end);
--show the results --show the results
if (agent_id) then if (agent_id) then
@@ -162,30 +161,41 @@
freeswitch.consoleLog("notice", "[call_center] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); freeswitch.consoleLog("notice", "[call_center] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n");
end end
dbh:query(sql, params, function(row) dbh:query(sql, params, function(row)
--set the user_status in the users table
--set the user_status in the users table local sql = "UPDATE v_users SET ";
local sql = "UPDATE v_users SET "; sql = sql .. "user_status = :status ";
sql = sql .. "user_status = :status "; sql = sql .. "WHERE user_uuid = :user_uuid ";
sql = sql .. "WHERE user_uuid = :user_uuid "; local params = {status = status, user_uuid = user_uuid};
local params = {status = status, user_uuid = user_uuid}; if (debug["sql"]) then
if (debug["sql"]) then freeswitch.consoleLog("notice", "[call_center] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n");
freeswitch.consoleLog("notice", "[call_center] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); end
end dbh:query(sql, params);
dbh:query(sql, params); end);
end);
end end
--set the presence to terminated - turn the lamp off: --set the presence to terminated - turn the lamp off:
if (action == "logout" or action == "break") then if (action == "logout" or action == "break") then
event = freeswitch.Event("PRESENCE_IN"); event = freeswitch.Event("PRESENCE_IN");
event:addHeader("proto", "sip"); event:addHeader("proto", "agent");
event:addHeader("event_type", "presence"); event:addHeader("event_type", "presence");
event:addHeader("alt_event_type", "dialog"); event:addHeader("alt_event_type", "dialog");
event:addHeader("Presence-Call-Direction", "outbound"); event:addHeader("Presence-Call-Direction", "outbound");
event:addHeader("state", "Active (1 waiting)"); event:addHeader("state", "Active (1 waiting)");
event:addHeader("from", agent_name.."@"..domain_name); event:addHeader("from", agent_name.."@"..domain_name);
event:addHeader("login", agent_name.."@"..domain_name); event:addHeader("login", agent_name.."@"..domain_name);
event:addHeader("unique-id", agent_uuid); event:addHeader("unique-id", uuid);
event:addHeader("answer-state", "terminated");
event:fire();
event = freeswitch.Event("PRESENCE_IN");
event:addHeader("proto", "agent");
event:addHeader("event_type", "presence");
event:addHeader("alt_event_type", "dialog");
event:addHeader("Presence-Call-Direction", "outbound");
event:addHeader("state", "Active (1 waiting)");
event:addHeader("from", agent_id.."@"..domain_name);
event:addHeader("login", agent_id.."@"..domain_name);
event:addHeader("unique-id", uuid);
event:addHeader("answer-state", "terminated"); event:addHeader("answer-state", "terminated");
event:fire(); event:fire();
end end
@@ -193,7 +203,7 @@
--set presence in - turn lamp on --set presence in - turn lamp on
if (action == "login") then if (action == "login") then
event = freeswitch.Event("PRESENCE_IN"); event = freeswitch.Event("PRESENCE_IN");
event:addHeader("proto", "sip"); event:addHeader("proto", "agent");
event:addHeader("login", agent_name.."@"..domain_name); event:addHeader("login", agent_name.."@"..domain_name);
event:addHeader("from", agent_name.."@"..domain_name); event:addHeader("from", agent_name.."@"..domain_name);
event:addHeader("status", "Active (1 waiting)"); event:addHeader("status", "Active (1 waiting)");
@@ -201,7 +211,21 @@
event:addHeader("event_type", "presence"); event:addHeader("event_type", "presence");
event:addHeader("alt_event_type", "dialog"); event:addHeader("alt_event_type", "dialog");
event:addHeader("event_count", "1"); event:addHeader("event_count", "1");
event:addHeader("unique-id", agent_uuid); event:addHeader("unique-id", uuid);
event:addHeader("Presence-Call-Direction", "outbound");
event:addHeader("answer-state", "confirmed");
event:fire();
event = freeswitch.Event("PRESENCE_IN");
event:addHeader("proto", "agent");
event:addHeader("login", agent_id.."@"..domain_name);
event:addHeader("from", agent_id.."@"..domain_name);
event:addHeader("status", "Active (1 waiting)");
event:addHeader("rpid", "unknown");
event:addHeader("event_type", "presence");
event:addHeader("alt_event_type", "dialog");
event:addHeader("event_count", "1");
event:addHeader("unique-id", uuid);
event:addHeader("Presence-Call-Direction", "outbound"); event:addHeader("Presence-Call-Direction", "outbound");
event:addHeader("answer-state", "confirmed"); event:addHeader("answer-state", "confirmed");
event:fire(); event:fire();
@@ -212,9 +236,9 @@
end end
if string.find(agent_name, 'agent+', nil, true) ~= 1 then if string.find(agent_name, 'agent+', nil, true) ~= 1 then
presence_in.turn_lamp( blf_status, presence_in.turn_lamp( blf_status,
'agent+'..agent_name.."@"..domain_name, 'agent+'..agent_name.."@"..domain_name,
uuid uuid
); );
end end
end end