diff --git a/src/main.ts b/src/main.ts index adc868af..75dd95b3 100644 --- a/src/main.ts +++ b/src/main.ts @@ -27,7 +27,9 @@ function bootstrap() { cors({ origin(requestOrigin, callback) { const { ORIGIN } = configService.get('CORS'); - !requestOrigin ? (requestOrigin = '*') : undefined; + if (ORIGIN.includes('*')) { + return callback(null, true); + } if (ORIGIN.indexOf(requestOrigin) !== -1) { return callback(null, true); } diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index ce307509..78cbdb1f 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -1,3 +1,4 @@ +import { delay } from '@whiskeysockets/baileys'; import axios from 'axios'; import { Logger } from '../../config/logger.config'; @@ -162,13 +163,34 @@ export class TypebotService { return request.data; } - public async sendWAMessage(instance: InstanceDto, remoteJid: string, messages: any[], input: any[]) { - processMessages(this.waMonitor.waInstances[instance.instanceName], messages, input).catch((err) => { - console.error('Erro ao processar mensagens:', err); - }); + public async sendWAMessage( + instance: InstanceDto, + remoteJid: string, + messages: any[], + input: any[], + clientSideActions: any[], + ) { + processMessages(this.waMonitor.waInstances[instance.instanceName], messages, input, clientSideActions).catch( + (err) => { + console.error('Erro ao processar mensagens:', err); + }, + ); - async function processMessages(instance, messages, input) { + function findItemAndGetSecondsToWait(array, targetId) { + if (!array) return null; + + for (const item of array) { + if (item.lastBubbleBlockId === targetId) { + return item.wait?.secondsToWaitFor; + } + } + return null; + } + + async function processMessages(instance, messages, input, clientSideActions) { for (const message of messages) { + const wait = findItemAndGetSecondsToWait(clientSideActions, message.id); + if (message.type === 'text') { let formattedText = ''; @@ -260,6 +282,10 @@ export class TypebotService { }, }); } + + if (wait) { + await delay(wait * 1000); + } } if (input) { @@ -323,7 +349,7 @@ export class TypebotService { pushName: msg.pushName, }); - await this.sendWAMessage(instance, remoteJid, data.messages, data.input); + await this.sendWAMessage(instance, remoteJid, data.messages, data.input, data.clientSideActions); return; } @@ -346,7 +372,7 @@ export class TypebotService { pushName: msg.pushName, }); - await this.sendWAMessage(instance, remoteJid, data.messages, data.input); + await this.sendWAMessage(instance, remoteJid, data.messages, data.input, data.clientSideActions); return; } @@ -414,7 +440,13 @@ export class TypebotService { const request = await axios.post(url + '/api/v1/sendMessage', reqData); - await this.sendWAMessage(instance, remoteJid, request.data.messages, request.data.input); + await this.sendWAMessage( + instance, + remoteJid, + request.data.messages, + request.data.input, + request.data.clientSideActions, + ); return; }