@@ -70,6 +70,13 @@ export class BusinessStartupService extends ChannelStartupService {
70
70
await this . closeClient ( ) ;
71
71
}
72
72
73
+ private isMediaMessage ( message : any ) {
74
+ return message . document ||
75
+ message . image ||
76
+ message . audio ||
77
+ message . video
78
+ }
79
+
73
80
private async post ( message : any , params : string ) {
74
81
try {
75
82
let urlServer = this . configService . get < WaBusiness > ( 'WA_BUSINESS' ) . URL ;
@@ -301,12 +308,7 @@ export class BusinessStartupService extends ChannelStartupService {
301
308
remoteJid : this . phoneNumber ,
302
309
fromMe : received . messages [ 0 ] . from === received . metadata . phone_number_id ,
303
310
} ;
304
- if (
305
- received ?. messages [ 0 ] . document ||
306
- received ?. messages [ 0 ] . image ||
307
- received ?. messages [ 0 ] . audio ||
308
- received ?. messages [ 0 ] . video
309
- ) {
311
+ if ( this . isMediaMessage ( received ?. messages [ 0 ] ) ) {
310
312
messageRaw = {
311
313
key,
312
314
pushName,
@@ -339,7 +341,7 @@ export class BusinessStartupService extends ChannelStartupService {
339
341
? 'audio'
340
342
: 'video' ;
341
343
342
- const mimetype = result . headers [ 'content-type' ] ;
344
+ const mimetype = result . data ?. mime_type || result . headers [ 'content-type' ] ;
343
345
344
346
const contentDisposition = result . headers [ 'content-disposition' ] ;
345
347
let fileName = `${ message . messages [ 0 ] . id } .${ mimetype . split ( '/' ) [ 1 ] } ` ;
@@ -352,15 +354,19 @@ export class BusinessStartupService extends ChannelStartupService {
352
354
353
355
const size = result . headers [ 'content-length' ] || buffer . data . byteLength ;
354
356
355
- const fullName = join ( `${ this . instance . id } ` , received . key . remoteJid , mediaType , fileName ) ;
357
+ const fullName = join ( `${ this . instance . id } ` , key . remoteJid , mediaType , fileName ) ;
356
358
357
359
await s3Service . uploadFile ( fullName , buffer . data , size , {
358
360
'Content-Type' : mimetype ,
359
361
} ) ;
360
362
363
+ const createdMessage = await this . prismaRepository . message . create ( {
364
+ data : messageRaw ,
365
+ } ) ;
366
+
361
367
await this . prismaRepository . media . create ( {
362
368
data : {
363
- messageId : received . messages [ 0 ] . id ,
369
+ messageId : createdMessage . id ,
364
370
instanceId : this . instanceId ,
365
371
type : mediaType ,
366
372
fileName : fullName ,
@@ -371,6 +377,7 @@ export class BusinessStartupService extends ChannelStartupService {
371
377
const mediaUrl = await s3Service . getObjectUrl ( fullName ) ;
372
378
373
379
messageRaw . message . mediaUrl = mediaUrl ;
380
+ messageRaw . message . base64 = buffer . data . toString ( 'base64' ) ;
374
381
} catch ( error ) {
375
382
this . logger . error ( [ 'Error on upload file to minio' , error ?. message , error ?. stack ] ) ;
376
383
}
@@ -497,9 +504,11 @@ export class BusinessStartupService extends ChannelStartupService {
497
504
}
498
505
}
499
506
500
- await this . prismaRepository . message . create ( {
501
- data : messageRaw ,
502
- } ) ;
507
+ if ( ! this . isMediaMessage ( received ?. messages [ 0 ] ) ) {
508
+ await this . prismaRepository . message . create ( {
509
+ data : messageRaw ,
510
+ } ) ;
511
+ }
503
512
504
513
const contact = await this . prismaRepository . contact . findFirst ( {
505
514
where : { instanceId : this . instanceId , remoteJid : key . remoteJid } ,
0 commit comments