diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a4c3193..cf49b16a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,10 +16,11 @@ * Update Baileys Version * Fixed proxy config in manager * Fixed send messages in groups +* S3 saving media sent from me ### Break Changes -* Payloads para os eventos alterado (create Instance e set dos eventos). Verifique o postman para entender +* Payloads for events changed (create Instance and set events). Check postman to understand # 2.0.10 (2024-08-16 16:23) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 02076aa0..504f0160 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1958,11 +1958,61 @@ export class BaileysStartupService extends ChannelStartupService { isIntegration, }); - if (this.configService.get('DATABASE').SAVE_DATA.NEW_MESSAGE) - await this.prismaRepository.message.create({ + if (this.configService.get('DATABASE').SAVE_DATA.NEW_MESSAGE) { + const msg = await this.prismaRepository.message.create({ data: messageRaw, }); + const isMedia = + messageRaw?.message?.imageMessage || + messageRaw?.message?.videoMessage || + messageRaw?.message?.stickerMessage || + messageRaw?.message?.documentMessage || + messageRaw?.message?.documentWithCaptionMessage || + messageRaw?.message?.audioMessage; + + if (isMedia) { + if (this.configService.get('S3').ENABLE) { + try { + const message: any = messageRaw; + const media = await this.getBase64FromMediaMessage( + { + message, + }, + true, + ); + + const { buffer, mediaType, fileName, size } = media; + + const mimetype = mime.getType(fileName).toString(); + + const fullName = join(`${this.instance.id}`, messageRaw.key.remoteJid, mediaType, fileName); + + await s3Service.uploadFile(fullName, buffer, size.fileLength?.low, { + 'Content-Type': mimetype, + }); + + await this.prismaRepository.media.create({ + data: { + messageId: msg.id, + instanceId: this.instanceId, + type: mediaType, + fileName: fullName, + mimetype, + }, + }); + + const mediaUrl = await s3Service.getObjectUrl(fullName); + + messageRaw.message.mediaUrl = mediaUrl; + } catch (error) { + this.logger.error('line 1181'); + this.logger.error(['Error on upload file to minio', error?.message, error?.stack]); + } + } + } + } + return messageSent; } catch (error) { this.logger.error('line 2081');