1
+ import { delay } from '@whiskeysockets/baileys' ;
1
2
import axios from 'axios' ;
2
3
3
4
import { Logger } from '../../config/logger.config' ;
@@ -162,13 +163,34 @@ export class TypebotService {
162
163
return request . data ;
163
164
}
164
165
165
- public async sendWAMessage ( instance : InstanceDto , remoteJid : string , messages : any [ ] , input : any [ ] ) {
166
- processMessages ( this . waMonitor . waInstances [ instance . instanceName ] , messages , input ) . catch ( ( err ) => {
167
- console . error ( 'Erro ao processar mensagens:' , err ) ;
168
- } ) ;
166
+ public async sendWAMessage (
167
+ instance : InstanceDto ,
168
+ remoteJid : string ,
169
+ messages : any [ ] ,
170
+ input : any [ ] ,
171
+ clientSideActions : any [ ] ,
172
+ ) {
173
+ processMessages ( this . waMonitor . waInstances [ instance . instanceName ] , messages , input , clientSideActions ) . catch (
174
+ ( err ) => {
175
+ console . error ( 'Erro ao processar mensagens:' , err ) ;
176
+ } ,
177
+ ) ;
178
+
179
+ function findItemAndGetSecondsToWait ( array , targetId ) {
180
+ if ( ! array ) return null ;
181
+
182
+ for ( const item of array ) {
183
+ if ( item . lastBubbleBlockId === targetId ) {
184
+ return item . wait ?. secondsToWaitFor ;
185
+ }
186
+ }
187
+ return null ;
188
+ }
169
189
170
- async function processMessages ( instance , messages , input ) {
190
+ async function processMessages ( instance , messages , input , clientSideActions ) {
171
191
for ( const message of messages ) {
192
+ const wait = findItemAndGetSecondsToWait ( clientSideActions , message . id ) ;
193
+
172
194
if ( message . type === 'text' ) {
173
195
let formattedText = '' ;
174
196
@@ -260,6 +282,10 @@ export class TypebotService {
260
282
} ,
261
283
} ) ;
262
284
}
285
+
286
+ if ( wait ) {
287
+ await delay ( wait * 1000 ) ;
288
+ }
263
289
}
264
290
265
291
if ( input ) {
@@ -323,7 +349,7 @@ export class TypebotService {
323
349
pushName : msg . pushName ,
324
350
} ) ;
325
351
326
- await this . sendWAMessage ( instance , remoteJid , data . messages , data . input ) ;
352
+ await this . sendWAMessage ( instance , remoteJid , data . messages , data . input , data . clientSideActions ) ;
327
353
328
354
return ;
329
355
}
@@ -346,7 +372,7 @@ export class TypebotService {
346
372
pushName : msg . pushName ,
347
373
} ) ;
348
374
349
- await this . sendWAMessage ( instance , remoteJid , data . messages , data . input ) ;
375
+ await this . sendWAMessage ( instance , remoteJid , data . messages , data . input , data . clientSideActions ) ;
350
376
351
377
return ;
352
378
}
@@ -414,7 +440,13 @@ export class TypebotService {
414
440
415
441
const request = await axios . post ( url + '/api/v1/sendMessage' , reqData ) ;
416
442
417
- await this . sendWAMessage ( instance , remoteJid , request . data . messages , request . data . input ) ;
443
+ await this . sendWAMessage (
444
+ instance ,
445
+ remoteJid ,
446
+ request . data . messages ,
447
+ request . data . input ,
448
+ request . data . clientSideActions ,
449
+ ) ;
418
450
419
451
return ;
420
452
}
0 commit comments