From f0ff4873b5877363bbfc98a0b8d1feece2c82e8b Mon Sep 17 00:00:00 2001 From: Francis Breit Date: Sun, 1 Oct 2023 13:56:02 -0300 Subject: [PATCH] =?UTF-8?q?Start=20Typebot=20com=20opcao=20de=20ativar=20c?= =?UTF-8?q?hatbot=20ou=20n=C3=A3o.=20-Update=20typebot.service.ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Criada variável enabled_typebot . Se setada como true, o flow disparado é ativado como chatbot (original do Typebot), porém se false, dispara apenas como se fosse uma notificação e nao ativa o bot. --- src/whatsapp/services/typebot.service.ts | 53 ++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index 88dde9c3..642ded3b 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -99,6 +99,8 @@ export class TypebotService { const remoteJid = data.remoteJid; const url = data.url; const typebot = data.typebot; + // linha incluida por Francis: + const enabled_typebot = data.enabled_typebot; const variables = data.variables; const findTypebot = await this.find(instance); const sessions = (findTypebot.sessions as Session[]) ?? []; @@ -115,9 +117,13 @@ export class TypebotService { variables.forEach((variable) => { prefilledVariables[variable.name] = variable.value; }); + // linha incluida por Francis: + if (enabled_typebot === true) { - const response = await this.createNewSession(instance, { +const response = await this.createNewSession(instance, { url: url, + // linha incluida por Francis: + enabled_typebot: enabled_typebot, typebot: typebot, remoteJid: remoteJid, expire: expire, @@ -141,6 +147,8 @@ export class TypebotService { this.waMonitor.waInstances[instance.instanceName].sendDataWebhook(Events.TYPEBOT_START, { remoteJid: remoteJid, url: url, + // linha incluida por Francis: + enabled_typebot: enabled_typebot, typebot: typebot, prefilledVariables: prefilledVariables, sessionId: `${response.sessionId}`, @@ -148,11 +156,49 @@ export class TypebotService { } else { throw new Error("Session ID not found in response"); } + +} else { + +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, + url: url, + typebot: typebot, + variables: variables, + sessionId: id, + }); + + +} + + + // ate aqui return { typebot: { ...instance, typebot: { + // linha incluida por Francis: + enabled_typebot: enabled_typebot, url: url, remoteJid: remoteJid, typebot: typebot, @@ -231,7 +277,8 @@ export class TypebotService { }); const typebotData = { - enabled: true, + // linha incluida por Francis: + enabled: data.enabled_typebot, url: data.url, typebot: data.typebot, expire: data.expire, @@ -469,7 +516,6 @@ export class TypebotService { }); const typebotData = { - enabled: true, url: url, typebot: typebot, expire: expire, @@ -504,7 +550,6 @@ export class TypebotService { sessions.splice(sessions.indexOf(session), 1); const typebotData = { - enabled: true, url: url, typebot: typebot, expire: expire,