From d8629e53f1a0eb039ba987a9c463c7bd835c4585 Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Tue, 24 Oct 2023 13:16:35 -0300 Subject: [PATCH] fix: start session --- src/whatsapp/services/typebot.service.ts | 59 +++++++++++++++++------- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index e7669ab9..30f1cb53 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -47,7 +47,7 @@ export class TypebotService { findData.sessions.splice(findData.sessions.indexOf(session), 1); const typebotData = { - enabled: true, + enabled: findData.enabled, url: findData.url, typebot: findData.typebot, expire: findData.expire, @@ -71,7 +71,7 @@ export class TypebotService { } const typebotData = { - enabled: true, + enabled: findData.enabled, url: findData.url, typebot: findData.typebot, expire: findData.expire, @@ -102,7 +102,6 @@ export class TypebotService { const startSession = data.startSession; const variables = data.variables; const findTypebot = await this.find(instance); - const sessions = (findTypebot.sessions as Session[]) ?? []; const expire = findTypebot.expire; const keyword_finish = findTypebot.keyword_finish; const delay_message = findTypebot.delay_message; @@ -121,13 +120,10 @@ export class TypebotService { } if (startSession) { - const session = sessions.find((session) => session.remoteJid === remoteJid); - - if (session) { - sessions.splice(sessions.indexOf(session), 1); - } + const newSessions = await this.clearSessions(instance, remoteJid); const response = await this.createNewSession(instance, { + enabled: findTypebot.enabled, url: url, typebot: typebot, remoteJid: remoteJid, @@ -136,7 +132,7 @@ export class TypebotService { delay_message: delay_message, unknown_message: unknown_message, listening_from_me: listening_from_me, - sessions: sessions, + sessions: newSessions, prefilledVariables: prefilledVariables, }); @@ -263,7 +259,7 @@ export class TypebotService { }); const typebotData = { - enabled: true, + enabled: data.enabled, url: data.url, typebot: data.typebot, expire: data.expire, @@ -280,6 +276,37 @@ export class TypebotService { return request.data; } + public async clearSessions(instance: InstanceDto, remoteJid: string) { + const findTypebot = await this.find(instance); + const sessions = (findTypebot.sessions as Session[]) ?? []; + + const sessionWithRemoteJid = sessions.filter((session) => session.remoteJid === remoteJid); + + if (sessionWithRemoteJid.length > 0) { + sessionWithRemoteJid.forEach((session) => { + sessions.splice(sessions.indexOf(session), 1); + }); + + const typebotData = { + enabled: findTypebot.enabled, + url: findTypebot.url, + typebot: findTypebot.typebot, + expire: findTypebot.expire, + keyword_finish: findTypebot.keyword_finish, + delay_message: findTypebot.delay_message, + unknown_message: findTypebot.unknown_message, + listening_from_me: findTypebot.listening_from_me, + sessions, + }; + + this.create(instance, typebotData); + + return sessions; + } + + return sessions; + } + public async sendWAMessage( instance: InstanceDto, remoteJid: string, @@ -450,9 +477,10 @@ export class TypebotService { const diffInMinutes = Math.floor(diff / 1000 / 60); if (diffInMinutes > expire) { - sessions.splice(sessions.indexOf(session), 1); + const newSessions = await this.clearSessions(instance, remoteJid); const data = await this.createNewSession(instance, { + enabled: findTypebot.enabled, url: url, typebot: typebot, expire: expire, @@ -460,7 +488,7 @@ export class TypebotService { delay_message: delay_message, unknown_message: unknown_message, listening_from_me: listening_from_me, - sessions: sessions, + sessions: newSessions, remoteJid: remoteJid, pushName: msg.pushName, }); @@ -487,7 +515,7 @@ export class TypebotService { } if (keyword_finish && content.toLowerCase() === keyword_finish.toLowerCase()) { - sessions.splice(sessions.indexOf(session), 1); + const newSessions = await this.clearSessions(instance, remoteJid); const typebotData = { enabled: true, @@ -498,7 +526,7 @@ export class TypebotService { delay_message: delay_message, unknown_message: unknown_message, listening_from_me: listening_from_me, - sessions, + sessions: newSessions, }; this.create(instance, typebotData); @@ -513,7 +541,6 @@ export class TypebotService { const request = await axios.post(url + '/api/v1/sendMessage', reqData); - console.log('request', request); await this.sendWAMessage( instance, remoteJid, @@ -533,6 +560,7 @@ export class TypebotService { if (!session) { const data = await this.createNewSession(instance, { + enabled: findTypebot.enabled, url: url, typebot: typebot, expire: expire, @@ -593,7 +621,6 @@ export class TypebotService { const request = await axios.post(url + '/api/v1/sendMessage', reqData); - console.log('request', request); await this.sendWAMessage( instance, remoteJid,