diff --git a/handler/OnAgentUnassignedHandler.ts b/handler/OnAgentUnassignedHandler.ts index 73d362c..b4b9950 100644 --- a/handler/OnAgentUnassignedHandler.ts +++ b/handler/OnAgentUnassignedHandler.ts @@ -2,6 +2,7 @@ import { IHttp, IModify, IPersistence, IRead } from '@rocket.chat/apps-engine/de import { IApp } from '@rocket.chat/apps-engine/definition/IApp'; import { ILivechatEventContext, ILivechatRoom } from '@rocket.chat/apps-engine/definition/livechat'; import { AppSetting, DefaultMessage } from '../config/Settings'; +import { removeBotTypingListener } from '../lib//BotTyping'; import { createMessage, sendCloseChatButton } from '../lib/Message'; import { getAppSettingValue } from '../lib/Settings'; @@ -17,6 +18,9 @@ export class OnAgentUnassignedHandler { const livechatRoom: ILivechatRoom = this.context.room as ILivechatRoom; const DialogflowBotUsername: string = await getAppSettingValue(this.read, AppSetting.DialogflowBotUsername); const { isChatBotFunctional: allowChatBotSession } = this.context.room.customFields as any; + const {id: rid} = livechatRoom; + + await removeBotTypingListener(rid); if (!livechatRoom.servedBy) { return; diff --git a/handler/PostMessageSentHandler.ts b/handler/PostMessageSentHandler.ts index c44a57e..bd91895 100644 --- a/handler/PostMessageSentHandler.ts +++ b/handler/PostMessageSentHandler.ts @@ -3,8 +3,7 @@ import { IApp } from '@rocket.chat/apps-engine/definition/IApp'; import { ILivechatMessage, ILivechatRoom } from '@rocket.chat/apps-engine/definition/livechat'; import { RoomType } from '@rocket.chat/apps-engine/definition/rooms'; import { AppSetting, DefaultMessage } from '../config/Settings'; -import { ActionIds } from '../enum/ActionIds'; -import { DialogflowRequestType, IDialogflowAction, IDialogflowMessage, IDialogflowPayload, IDialogflowQuickReplies, LanguageCode, Message } from '../enum/Dialogflow'; +import { DialogflowRequestType, IDialogflowMessage, IDialogflowQuickReplies, LanguageCode, Message } from '../enum/Dialogflow'; import { Logs } from '../enum/Logs'; import { botTypingListener, removeBotTypingListener } from '../lib//BotTyping'; @@ -119,7 +118,6 @@ export class PostMessageSentHandler { if (customFields) { const { disableInput, displayTyping } = customFields; - console.log({disableInput, displayTyping}); if (disableInput === true && displayTyping === true) { removeTypingIndicator = false; } @@ -134,6 +132,7 @@ export class PostMessageSentHandler { private async handleClosedByVisitor(rid: string) { const DialogflowEnableChatClosedByVisitorEvent: boolean = await getAppSettingValue(this.read, AppSetting.DialogflowEnableChatClosedByVisitorEvent); const DialogflowChatClosedByVisitorEventName: string = await getAppSettingValue(this.read, AppSetting.DialogflowChatClosedByVisitorEventName); + await removeBotTypingListener(rid); if (DialogflowEnableChatClosedByVisitorEvent) { try { let res: IDialogflowMessage; diff --git a/lib/Room.ts b/lib/Room.ts index 435fcb5..062f0bc 100644 --- a/lib/Room.ts +++ b/lib/Room.ts @@ -3,6 +3,7 @@ import { IDepartment, ILivechatRoom, ILivechatTransferData, IVisitor } from '@ro import { IRoom } from '@rocket.chat/apps-engine/definition/rooms'; import { AppSetting, DefaultMessage } from '../config/Settings'; import { Logs } from '../enum/Logs'; +import { removeBotTypingListener } from '../lib//BotTyping'; import { getAppSettingValue } from '../lib/Settings'; import { createMessage, sendCloseChatButton } from './Message'; import { SessionMaintenanceOnceSchedule } from './sessionMaintenance/SessionMaintenanceOnceSchedule'; @@ -37,6 +38,8 @@ export const closeChat = async (modify: IModify, read: IRead, rid: string) => { const room: IRoom = (await read.getRoomReader().getById(rid)) as IRoom; if (!room) { throw new Error(Logs.INVALID_ROOM_ID); } + await removeBotTypingListener(rid); + const closeChatMessage = await getAppSettingValue(read, AppSetting.DialogflowCloseChatMessage); const result = await modify.getUpdater().getLivechatUpdater()