From c656bd6f4bbfc7e190a5f8b487dc3de661a13bb3 Mon Sep 17 00:00:00 2001 From: Matheus Gomes <39656344+matheuskshn@users.noreply.github.com> Date: Mon, 25 Sep 2023 02:38:37 -0300 Subject: [PATCH 1/5] Enhancement of Session Initialization in "StartTypebot" Function Enhanced "StartTypebot" to initialize sessionIDs during the initial interaction, improving user experience on WhatsApp and preventing unexpected bot restarts. --- src/whatsapp/dto/typebot.dto.ts | 7 +++ src/whatsapp/models/typebot.model.ts | 10 ++++ src/whatsapp/services/typebot.service.ts | 72 +++++++++++++++--------- 3 files changed, 63 insertions(+), 26 deletions(-) diff --git a/src/whatsapp/dto/typebot.dto.ts b/src/whatsapp/dto/typebot.dto.ts index 6e9c6111..c6c1fbdd 100644 --- a/src/whatsapp/dto/typebot.dto.ts +++ b/src/whatsapp/dto/typebot.dto.ts @@ -4,6 +4,13 @@ export class Session { status?: string; createdAt?: number; updateAt?: number; + prefilledVariables?: PrefilledVariables; +} + +export class PrefilledVariables { + remoteJid?: string; + pushName?: string; + additionalData?: { [key: string]: any }; } export class TypebotDto { diff --git a/src/whatsapp/models/typebot.model.ts b/src/whatsapp/models/typebot.model.ts index 28135ebd..c9232bd8 100644 --- a/src/whatsapp/models/typebot.model.ts +++ b/src/whatsapp/models/typebot.model.ts @@ -8,6 +8,11 @@ class Session { status?: string; createdAt?: number; updateAt?: number; + prefilledVariables?: { + remoteJid?: string; + pushName?: string; + additionalData?: { [key: string]: any }; + }; } export class TypebotRaw { @@ -40,6 +45,11 @@ const typebotSchema = new Schema({ status: { type: String, required: true }, createdAt: { type: Number, required: true }, updateAt: { type: Number, required: true }, + prefilledVariables: { + remoteJid: { type: String, required: false }, + pushName: { type: String, required: false }, + additionalData: { type: Schema.Types.Mixed, required: false } + }, }, ], }); diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index ff595c6b..291c02a2 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -100,6 +100,13 @@ export class TypebotService { const url = data.url; const typebot = data.typebot; 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; + const unknown_message = findTypebot.unknown_message; + const listening_from_me = findTypebot.listening_from_me; const prefilledVariables = { remoteJid: remoteJid, @@ -109,34 +116,39 @@ export class TypebotService { prefilledVariables[variable.name] = variable.value; }); - const id = Math.floor(Math.random() * 10000000000).toString(); - - const reqData = { - sessionId: id, - startParams: { - typebot: data.typebot, - prefilledVariables: prefilledVariables, - }, - }; - - const request = await axios.post(data.url + '/api/v1/sendMessage', reqData); - - await this.sendWAMessage( - instance, - remoteJid, - request.data.messages, - request.data.input, - request.data.clientSideActions, - ); - - this.waMonitor.waInstances[instance.instanceName].sendDataWebhook(Events.TYPEBOT_START, { - remoteJid: remoteJid, + const response = await this.createNewSession(instance, { url: url, typebot: typebot, - variables: variables, - sessionId: id, + remoteJid: remoteJid, + expire: expire, + keyword_finish: keyword_finish, + delay_message: delay_message, + unknown_message: unknown_message, + listening_from_me: listening_from_me, + sessions: sessions, + prefilledVariables: prefilledVariables, }); + if (response.sessionId) { + await this.sendWAMessage( + instance, + remoteJid, + response.messages, + response.input, + response.clientSideActions, + ); + + this.waMonitor.waInstances[instance.instanceName].sendDataWebhook(Events.TYPEBOT_START, { + remoteJid: remoteJid, + url: url, + typebot: typebot, + prefilledVariables: prefilledVariables, + sessionId: `${response.sessionId}`, + }); + } else { + throw new Error("Session ID not found in response"); + } + return { typebot: { ...instance, @@ -144,7 +156,7 @@ export class TypebotService { url: url, remoteJid: remoteJid, typebot: typebot, - variables: variables, + prefilledVariables: prefilledVariables, }, }, }; @@ -194,8 +206,9 @@ export class TypebotService { typebot: data.typebot, prefilledVariables: { remoteJid: data.remoteJid, - pushName: data.pushName, + pushName: data.pushName || 'Default Name', instanceName: instance.instanceName, + ...data.prefilledVariables, }, }, }; @@ -209,6 +222,12 @@ export class TypebotService { status: 'opened', createdAt: Date.now(), updateAt: Date.now(), + prefilledVariables: { + ...data.prefilledVariables, + remoteJid: data.remoteJid, + pushName: data.pushName || 'Default Name', + instanceName: instance.instanceName, + } }); const typebotData = { @@ -390,6 +409,7 @@ export class TypebotService { const listening_from_me = findTypebot.listening_from_me; const session = sessions.find((session) => session.remoteJid === remoteJid); + session.prefilledVariables.pushName = msg.pushName; if (session && expire && expire > 0) { const now = Date.now(); From 129009d6028423a10cba76435da086a428bdbdce Mon Sep 17 00:00:00 2001 From: Matheus Gomes <39656344+matheuskshn@users.noreply.github.com> Date: Mon, 25 Sep 2023 15:55:12 -0300 Subject: [PATCH 2/5] Update typebot.service.ts --- src/whatsapp/services/typebot.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index 291c02a2..ad903e96 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -223,10 +223,10 @@ export class TypebotService { createdAt: Date.now(), updateAt: Date.now(), prefilledVariables: { - ...data.prefilledVariables, remoteJid: data.remoteJid, pushName: data.pushName || 'Default Name', instanceName: instance.instanceName, + ...data.prefilledVariables, } }); From 7447a65a8304b523768004e58773c666d20575a4 Mon Sep 17 00:00:00 2001 From: Matheus Gomes <39656344+matheuskshn@users.noreply.github.com> Date: Mon, 25 Sep 2023 16:05:18 -0300 Subject: [PATCH 3/5] Update typebot.service.ts --- src/whatsapp/services/typebot.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index ad903e96..4b57e3f8 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -205,10 +205,10 @@ export class TypebotService { startParams: { typebot: data.typebot, prefilledVariables: { + ...data.prefilledVariables, remoteJid: data.remoteJid, pushName: data.pushName || 'Default Name', instanceName: instance.instanceName, - ...data.prefilledVariables, }, }, }; @@ -223,10 +223,10 @@ export class TypebotService { createdAt: Date.now(), updateAt: Date.now(), prefilledVariables: { + ...data.prefilledVariables, remoteJid: data.remoteJid, pushName: data.pushName || 'Default Name', instanceName: instance.instanceName, - ...data.prefilledVariables, } }); From f1be7ddb83dfe6083d666a06a93a70b9e0a4f0c0 Mon Sep 17 00:00:00 2001 From: Matheus Gomes <39656344+matheuskshn@users.noreply.github.com> Date: Mon, 25 Sep 2023 16:22:41 -0300 Subject: [PATCH 4/5] Update typebot.service.ts --- src/whatsapp/services/typebot.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index 4b57e3f8..fec4638e 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -409,7 +409,7 @@ export class TypebotService { const listening_from_me = findTypebot.listening_from_me; const session = sessions.find((session) => session.remoteJid === remoteJid); - session.prefilledVariables.pushName = msg.pushName; + //session.prefilledVariables.pushName = msg.pushName; if (session && expire && expire > 0) { const now = Date.now(); From 37302244ee95a27f78ee6cd2229f6b55d3dac730 Mon Sep 17 00:00:00 2001 From: Matheus Gomes <39656344+matheuskshn@users.noreply.github.com> Date: Mon, 25 Sep 2023 16:37:43 -0300 Subject: [PATCH 5/5] Update typebot.service.ts --- src/whatsapp/services/typebot.service.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index fec4638e..88dde9c3 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -409,7 +409,6 @@ export class TypebotService { const listening_from_me = findTypebot.listening_from_me; const session = sessions.find((session) => session.remoteJid === remoteJid); - //session.prefilledVariables.pushName = msg.pushName; if (session && expire && expire > 0) { const now = Date.now();