From 7c07e4e42711a5ba18edb8df29e6bf16b4cd0090 Mon Sep 17 00:00:00 2001 From: murtaza98 Date: Thu, 7 Oct 2021 17:16:32 +0530 Subject: [PATCH 1/3] [FIX][EE] Omni agent is not leaving the room when a forwarded chat is queued --- app/livechat/server/lib/Helper.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/livechat/server/lib/Helper.js b/app/livechat/server/lib/Helper.js index 5edaee2494563..dc839f040c20d 100644 --- a/app/livechat/server/lib/Helper.js +++ b/app/livechat/server/lib/Helper.js @@ -430,6 +430,7 @@ export const forwardRoomToDepartment = async (room, guest, transferData) => { } const { servedBy, chatQueued } = roomTaken; + logger.debug({ msg: 'New Room object properties after deletedInquiry', servedBy, chatQueued }); if (!chatQueued && oldServedBy && servedBy && oldServedBy._id === servedBy._id) { logger.debug(`Cannot forward room ${ room._id }. Chat assigned to agent ${ servedBy._id } (Previous was ${ oldServedBy._id })`); return false; @@ -437,7 +438,10 @@ export const forwardRoomToDepartment = async (room, guest, transferData) => { Livechat.saveTransferHistory(room, transferData); if (oldServedBy) { - RoutingManager.removeAllRoomSubscriptions(room, servedBy); + // if chat is queued then we don't ignore the new servedBy agent bcs at this + // point the chat is not assigned to him/her and it is still in the queue + RoutingManager.removeAllRoomSubscriptions(room, !chatQueued && servedBy); + dispatchAgentDelegated(rid, null); } if (!chatQueued && servedBy) { Messages.createUserJoinWithRoomIdAndUser(rid, servedBy); From d83897dd372c55fb0e8e596cf2e1e8acf89ff3ae Mon Sep 17 00:00:00 2001 From: murtaza98 Date: Thu, 7 Oct 2021 19:11:38 +0530 Subject: [PATCH 2/3] Apply suggestions from code review --- app/livechat/server/lib/Helper.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/livechat/server/lib/Helper.js b/app/livechat/server/lib/Helper.js index dc839f040c20d..dcdb0c2581c3b 100644 --- a/app/livechat/server/lib/Helper.js +++ b/app/livechat/server/lib/Helper.js @@ -441,7 +441,6 @@ export const forwardRoomToDepartment = async (room, guest, transferData) => { // if chat is queued then we don't ignore the new servedBy agent bcs at this // point the chat is not assigned to him/her and it is still in the queue RoutingManager.removeAllRoomSubscriptions(room, !chatQueued && servedBy); - dispatchAgentDelegated(rid, null); } if (!chatQueued && servedBy) { Messages.createUserJoinWithRoomIdAndUser(rid, servedBy); @@ -452,6 +451,8 @@ export const forwardRoomToDepartment = async (room, guest, transferData) => { if (chatQueued) { logger.debug(`Forwarding succesful. Marking inquiry ${ inquiry._id } as ready`); LivechatInquiry.readyInquiry(inquiry._id); + LivechatRooms.removeAgentByRoomId(rid); + dispatchAgentDelegated(rid, null); const newInquiry = LivechatInquiry.findOneById(inquiry._id); await queueInquiry(room, newInquiry); From a8d222b794a8267e598d62acdc16b84dd19cc8c6 Mon Sep 17 00:00:00 2001 From: Murtaza Patrawala <34130764+murtaza98@users.noreply.github.com> Date: Fri, 8 Oct 2021 11:49:32 +0530 Subject: [PATCH 3/3] Apply suggestions from code review --- app/livechat/server/lib/Helper.js | 1 - 1 file changed, 1 deletion(-) diff --git a/app/livechat/server/lib/Helper.js b/app/livechat/server/lib/Helper.js index dcdb0c2581c3b..fb42f39497243 100644 --- a/app/livechat/server/lib/Helper.js +++ b/app/livechat/server/lib/Helper.js @@ -430,7 +430,6 @@ export const forwardRoomToDepartment = async (room, guest, transferData) => { } const { servedBy, chatQueued } = roomTaken; - logger.debug({ msg: 'New Room object properties after deletedInquiry', servedBy, chatQueued }); if (!chatQueued && oldServedBy && servedBy && oldServedBy._id === servedBy._id) { logger.debug(`Cannot forward room ${ room._id }. Chat assigned to agent ${ servedBy._id } (Previous was ${ oldServedBy._id })`); return false;