From c793d9d1778245107ee028217436189f3c3d4d7a Mon Sep 17 00:00:00 2001 From: Andrey Babushkin <55714097+reyand43@users.noreply.github.com> Date: Thu, 27 Feb 2025 10:12:06 +0100 Subject: [PATCH] add handler (#3062) * aff handler * fix socket id handling --- 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..503969c08 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).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.`);