From 4cf1b941893146174d83775f95f1cd3d742c8b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=91=D0=B0=D0=B1?= =?UTF-8?q?=D1=83=D1=88=D0=BA=D0=B8=D0=BD?= Date: Mon, 24 Feb 2025 14:41:44 +0100 Subject: [PATCH] aff handler --- assist/utils/assistHelper.js | 3 ++- assist/utils/socketHandlers.js | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/assist/utils/assistHelper.js b/assist/utils/assistHelper.js index c27c80963..ce90aa2a8 100644 --- a/assist/utils/assistHelper.js +++ b/assist/utils/assistHelper.js @@ -10,7 +10,8 @@ const EVENTS_DEFINITION = { UPDATE_EVENT: "UPDATE_SESSION", // tab become active/inactive, page title change, changed session object (rare case), call start/end CONNECT_ERROR: "connect_error", CONNECT_FAILED: "connect_failed", - ERROR: "error" + ERROR: "error", + WEBRTC_AGENT_CALL: "WEBRTC_AGENT_CALL", }, //The following list of events will be only emitted by the server server: { diff --git a/assist/utils/socketHandlers.js b/assist/utils/socketHandlers.js index a9a3e8a14..64e1dfe36 100644 --- a/assist/utils/socketHandlers.js +++ b/assist/utils/socketHandlers.js @@ -127,6 +127,9 @@ async function onConnect(socket) { // Handle update event socket.on(EVENTS_DEFINITION.listen.UPDATE_EVENT, (...args) => onUpdateEvent(socket, ...args)); + // Handle webrtc events + socket.on(EVENTS_DEFINITION.listen.WEBRTC_AGENT_CALL, (...args) => onWebrtcAgentHandler(socket, ...args)); + // Handle errors socket.on(EVENTS_DEFINITION.listen.ERROR, err => errorHandler(EVENTS_DEFINITION.listen.ERROR, err)); socket.on(EVENTS_DEFINITION.listen.CONNECT_ERROR, err => errorHandler(EVENTS_DEFINITION.listen.CONNECT_ERROR, err)); @@ -186,6 +189,16 @@ async function onUpdateEvent(socket, ...args) { } } +async function onWebrtcAgentHandler(socket, ...args) { + if (socket.handshake.query.identity === IDENTITIES.agent) { + const agentIdToConnect = args[0]?.data?.toAgentId; + logger.debug(`${socket.id} sent webrtc event to agent:${agentIdToConnect}`); + if (agentIdToConnect && socket.handshake.sessionData.AGENTS_CONNECTED.includes(agentIdToConnect)) { + socket.to(agentIdToConnect.id).emit(EVENTS_DEFINITION.listen.WEBRTC_AGENT_CALL, args[0]); + } + } +} + async function onAny(socket, eventName, ...args) { if (Object.values(EVENTS_DEFINITION.listen).indexOf(eventName) >= 0) { logger.debug(`received event:${eventName}, should be handled by another listener, stopping onAny.`);