From 3f4333087ff8b7a325d37f64237b131434ccb7bb Mon Sep 17 00:00:00 2001 From: Francis Breit Date: Mon, 2 Oct 2023 11:56:24 -0300 Subject: [PATCH] =?UTF-8?q?Start=20Typebot=20com=20op=C3=A7=C3=A3o=20de=20?= =?UTF-8?q?ativar=20chatbot=20ou=20n=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Foi criada a variável enabled_typebot (não obrigatória) enabled_typebot igual a true ou vazio: o comportamento do "startTypebot" atua como a nova funcionalidadede sessões persistentes (v1.5.2) onde o flow do Typebot disparado atua como chatbot. enabled_typebot igual a false: o comportamento do "startTypebot" atua como era na Evolution v.1.5.1 onde o flow do Typebot disparado atua como mensagem simples, nao ativa o chatbot e funciona apenas como mensagens simples. Obs1: Se setada como true ou se for omitida essa variável no comando start Typebot, enabled_typebot será assumida como true, ou seja, start typebot aciona o flow com o chatbot ativado, imediatamente após o envio, aguardando interação do contato.. Se, antes do acionamento do start typebot, tiver um outro chatbot ativo, o mesmo será substituído pelo novo, ora enviado. Obs2: Se setada como false, dispara apenas como notificação e não ativa o bot. se tiver outro bot ativo na instancia o mesmo continuará ativo, após disparada a mensagem --- src/whatsapp/services/typebot.service.ts | 44 ++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index 88dde9c3..0a01cc52 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -99,6 +99,7 @@ export class TypebotService { const remoteJid = data.remoteJid; const url = data.url; const typebot = data.typebot; + const enabled_typebot = data.enabled_typebot; const variables = data.variables; const findTypebot = await this.find(instance); const sessions = (findTypebot.sessions as Session[]) ?? []; @@ -116,8 +117,13 @@ export class TypebotService { prefilledVariables[variable.name] = variable.value; }); - const response = await this.createNewSession(instance, { + if (enabled_typebot !== false ) { + let enabled_typebot = true; + + +const response = await this.createNewSession(instance, { url: url, + enabled_typebot: enabled_typebot, typebot: typebot, remoteJid: remoteJid, expire: expire, @@ -141,6 +147,7 @@ export class TypebotService { this.waMonitor.waInstances[instance.instanceName].sendDataWebhook(Events.TYPEBOT_START, { remoteJid: remoteJid, url: url, + enabled_typebot: enabled_typebot, typebot: typebot, prefilledVariables: prefilledVariables, sessionId: `${response.sessionId}`, @@ -148,11 +155,45 @@ 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, + }); + + +} return { typebot: { ...instance, typebot: { + enabled_typebot: enabled_typebot, url: url, remoteJid: remoteJid, typebot: typebot, @@ -504,7 +545,6 @@ export class TypebotService { sessions.splice(sessions.indexOf(session), 1); const typebotData = { - enabled: true, url: url, typebot: typebot, expire: expire,