Skip to content

Commit 52cf4fa

Browse files
Merge pull request #1069 from AlanCezarAraujo/fix/whatsapp-images
Correção de Imagens no Cloud API
2 parents 8f855b4 + ef75742 commit 52cf4fa

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

src/api/integrations/channel/meta/whatsapp.business.service.ts

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)