@@ -70,6 +70,13 @@ export class BusinessStartupService extends ChannelStartupService {
7070 await this . closeClient ( ) ;
7171 }
7272
73+ private isMediaMessage ( message : any ) {
74+ return message . document ||
75+ message . image ||
76+ message . audio ||
77+ message . video
78+ }
79+
7380 private async post ( message : any , params : string ) {
7481 try {
7582 let urlServer = this . configService . get < WaBusiness > ( 'WA_BUSINESS' ) . URL ;
@@ -301,12 +308,7 @@ export class BusinessStartupService extends ChannelStartupService {
301308 remoteJid : this . phoneNumber ,
302309 fromMe : received . messages [ 0 ] . from === received . metadata . phone_number_id ,
303310 } ;
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 ] ) ) {
310312 messageRaw = {
311313 key,
312314 pushName,
@@ -339,7 +341,7 @@ export class BusinessStartupService extends ChannelStartupService {
339341 ? 'audio'
340342 : 'video' ;
341343
342- const mimetype = result . headers [ 'content-type' ] ;
344+ const mimetype = result . data ?. mime_type || result . headers [ 'content-type' ] ;
343345
344346 const contentDisposition = result . headers [ 'content-disposition' ] ;
345347 let fileName = `${ message . messages [ 0 ] . id } .${ mimetype . split ( '/' ) [ 1 ] } ` ;
@@ -352,15 +354,19 @@ export class BusinessStartupService extends ChannelStartupService {
352354
353355 const size = result . headers [ 'content-length' ] || buffer . data . byteLength ;
354356
355- const fullName = join ( `${ this . instance . id } ` , received . key . remoteJid , mediaType , fileName ) ;
357+ const fullName = join ( `${ this . instance . id } ` , key . remoteJid , mediaType , fileName ) ;
356358
357359 await s3Service . uploadFile ( fullName , buffer . data , size , {
358360 'Content-Type' : mimetype ,
359361 } ) ;
360362
363+ const createdMessage = await this . prismaRepository . message . create ( {
364+ data : messageRaw ,
365+ } ) ;
366+
361367 await this . prismaRepository . media . create ( {
362368 data : {
363- messageId : received . messages [ 0 ] . id ,
369+ messageId : createdMessage . id ,
364370 instanceId : this . instanceId ,
365371 type : mediaType ,
366372 fileName : fullName ,
@@ -371,6 +377,7 @@ export class BusinessStartupService extends ChannelStartupService {
371377 const mediaUrl = await s3Service . getObjectUrl ( fullName ) ;
372378
373379 messageRaw . message . mediaUrl = mediaUrl ;
380+ messageRaw . message . base64 = buffer . data . toString ( 'base64' ) ;
374381 } catch ( error ) {
375382 this . logger . error ( [ 'Error on upload file to minio' , error ?. message , error ?. stack ] ) ;
376383 }
@@ -497,9 +504,11 @@ export class BusinessStartupService extends ChannelStartupService {
497504 }
498505 }
499506
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+ }
503512
504513 const contact = await this . prismaRepository . contact . findFirst ( {
505514 where : { instanceId : this . instanceId , remoteJid : key . remoteJid } ,
0 commit comments