Start Typebot com opção de ativar chatbot ou não

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
This commit is contained in:
Francis Breit 2023-10-02 11:56:24 -03:00 committed by GitHub
parent 5c74cbfe19
commit 3f4333087f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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}`,
@ -149,10 +156,44 @@ export class TypebotService {
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,