mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-07-15 19:52:54 -06:00
fix: Updated media handling in WhatsApp Baileys and Typebot services
This commit fixes issues with media handling in the WhatsApp Baileys and Typebot services. Specifically, it updates the way media messages are processed and stored. The changes include: - Importing the `S3` class from the configuration in the Typebot service (`src/api/integrations/typebot/services/typebot.service.ts`). - Modifying the `getTypeMessage` method in the Typebot service to handle media messages more efficiently. - Refactoring the `BaileysStartupService` in the WhatsApp Baileys service (`src/api/services/channels/whatsapp.baileys.service.ts`) to handle media messages more consistently. These changes improve the handling and storage of media messages, ensuring that they are processed correctly and efficiently.
This commit is contained in:
parent
e6916acf45
commit
484736facd
@ -1,7 +1,7 @@
|
||||
import { Message, Typebot as TypebotModel, TypebotSession } from '@prisma/client';
|
||||
import axios from 'axios';
|
||||
|
||||
import { ConfigService, Typebot } from '../../../../config/env.config';
|
||||
import { ConfigService, S3, Typebot } from '../../../../config/env.config';
|
||||
import { Logger } from '../../../../config/logger.config';
|
||||
import { InstanceDto } from '../../../dto/instance.dto';
|
||||
import { PrismaRepository } from '../../../repository/repository.service';
|
||||
@ -839,6 +839,11 @@ export class TypebotService {
|
||||
}
|
||||
|
||||
private getTypeMessage(msg: any) {
|
||||
let mediaId: string;
|
||||
|
||||
if (this.configService.get<S3>('S3').ENABLE) mediaId = msg.message.mediaUrl;
|
||||
else mediaId = msg.key.id;
|
||||
|
||||
const types = {
|
||||
conversation: msg?.message?.conversation,
|
||||
extendedTextMessage: msg?.message?.extendedTextMessage?.text,
|
||||
@ -851,12 +856,12 @@ export class TypebotService {
|
||||
listResponseMessage: msg?.message?.listResponseMessage?.singleSelectReply?.selectedRowId,
|
||||
responseRowId: msg?.message?.listResponseMessage?.singleSelectReply?.selectedRowId,
|
||||
// Medias
|
||||
audioMessage: msg?.message?.audioMessage ? `audioMessage:${msg?.key?.id}` : undefined,
|
||||
imageMessage: msg?.message?.imageMessage ? `imageMessage:${msg?.key?.id}` : undefined,
|
||||
videoMessage: msg?.message?.videoMessage ? `videoMessage:${msg?.key?.id}` : undefined,
|
||||
documentMessage: msg?.message?.documentMessage ? `documentMessage:${msg?.key?.id}` : undefined,
|
||||
audioMessage: msg?.message?.audioMessage ? `audioMessage|${mediaId}` : undefined,
|
||||
imageMessage: msg?.message?.imageMessage ? `imageMessage|${mediaId}` : undefined,
|
||||
videoMessage: msg?.message?.videoMessage ? `videoMessage|${mediaId}` : undefined,
|
||||
documentMessage: msg?.message?.documentMessage ? `documentMessage|${mediaId}` : undefined,
|
||||
documentWithCaptionMessage: msg?.message?.auddocumentWithCaptionMessageioMessage
|
||||
? `documentWithCaptionMessage:${msg?.key?.id}`
|
||||
? `documentWithCaptionMessage|${mediaId}`
|
||||
: undefined,
|
||||
};
|
||||
|
||||
|
@ -1036,44 +1036,9 @@ export class BaileysStartupService extends ChannelStartupService {
|
||||
return;
|
||||
}
|
||||
|
||||
let messageRaw: any;
|
||||
|
||||
const isMedia =
|
||||
received?.message?.imageMessage ||
|
||||
received?.message?.videoMessage ||
|
||||
received?.message?.stickerMessage ||
|
||||
received?.message?.documentMessage ||
|
||||
received?.message?.documentWithCaptionMessage ||
|
||||
received?.message?.audioMessage;
|
||||
|
||||
const contentMsg = received?.message[getContentType(received.message)] as any;
|
||||
|
||||
if (this.localWebhook.webhookBase64 === true && !this.configService.get<S3>('S3').ENABLE && isMedia) {
|
||||
const buffer = await downloadMediaMessage(
|
||||
{ key: received.key, message: received?.message },
|
||||
'buffer',
|
||||
{},
|
||||
{
|
||||
logger: P({ level: 'error' }) as any,
|
||||
reuploadRequest: this.client.updateMediaMessage,
|
||||
},
|
||||
);
|
||||
|
||||
messageRaw = {
|
||||
key: received.key,
|
||||
pushName: received.pushName,
|
||||
message: {
|
||||
...received.message,
|
||||
base64: buffer ? buffer.toString('base64') : undefined,
|
||||
},
|
||||
contextInfo: contentMsg?.contextInfo,
|
||||
messageType: getContentType(received.message),
|
||||
messageTimestamp: received.messageTimestamp as number,
|
||||
instanceId: this.instanceId,
|
||||
source: getDevice(received.key.id),
|
||||
};
|
||||
} else {
|
||||
messageRaw = {
|
||||
const messageRaw: any = {
|
||||
key: received.key,
|
||||
pushName: received.pushName,
|
||||
message: { ...received.message },
|
||||
@ -1083,7 +1048,14 @@ export class BaileysStartupService extends ChannelStartupService {
|
||||
instanceId: this.instanceId,
|
||||
source: getDevice(received.key.id),
|
||||
};
|
||||
}
|
||||
|
||||
const isMedia =
|
||||
received?.message?.imageMessage ||
|
||||
received?.message?.videoMessage ||
|
||||
received?.message?.stickerMessage ||
|
||||
received?.message?.documentMessage ||
|
||||
received?.message?.documentWithCaptionMessage ||
|
||||
received?.message?.audioMessage;
|
||||
|
||||
if (this.localSettings.readMessages && received.key.id !== 'status@broadcast') {
|
||||
await this.client.readMessages([received.key]);
|
||||
@ -1115,7 +1087,8 @@ export class BaileysStartupService extends ChannelStartupService {
|
||||
data: messageRaw,
|
||||
});
|
||||
|
||||
if (this.configService.get<S3>('S3').ENABLE && isMedia) {
|
||||
if (isMedia) {
|
||||
if (this.configService.get<S3>('S3').ENABLE) {
|
||||
try {
|
||||
const message: any = received;
|
||||
const media = await this.getBase64FromMediaMessage(
|
||||
@ -1151,6 +1124,21 @@ export class BaileysStartupService extends ChannelStartupService {
|
||||
} catch (error) {
|
||||
this.logger.error(['Error on upload file to minio', error?.message, error?.stack]);
|
||||
}
|
||||
} else {
|
||||
if (this.localWebhook.webhookBase64 === true) {
|
||||
const buffer = await downloadMediaMessage(
|
||||
{ key: received.key, message: received?.message },
|
||||
'buffer',
|
||||
{},
|
||||
{
|
||||
logger: P({ level: 'error' }) as any,
|
||||
reuploadRequest: this.client.updateMediaMessage,
|
||||
},
|
||||
);
|
||||
|
||||
messageRaw.message.base64 = buffer ? buffer.toString('base64') : undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.logger.log(messageRaw);
|
||||
|
Loading…
Reference in New Issue
Block a user