From 8cb431ad401d018efccb7b2083ebd9d9adff3d0f Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Sun, 2 Jul 2023 21:31:10 -0300 Subject: [PATCH] Fixed cash when sending stickers via url --- CHANGELOG.md | 1 + docker-compose.yaml | 2 +- src/whatsapp/services/whatsapp.service.ts | 15 +++++++++++---- temp/sticker.webp | Bin 8812 -> 0 bytes temp/sticker.webp_original | Bin 8624 -> 0 bytes 5 files changed, 13 insertions(+), 5 deletions(-) delete mode 100644 temp/sticker.webp delete mode 100644 temp/sticker.webp_original diff --git a/CHANGELOG.md b/CHANGELOG.md index 397a3ada..1eb001bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Added timestamp internally in urls to avoid caching * Correction in decryption of poll votes * Change in the way the api sent and saved the sent messages, now it goes in the messages.upsert event +* Fixed cash when sending stickers via url # 1.1.2 (2023-06-28 13:43) diff --git a/docker-compose.yaml b/docker-compose.yaml index 8686bd2e..8cd8a901 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -39,7 +39,7 @@ services: - DATABASE_SAVE_MESSAGE_UPDATE=true - DATABASE_SAVE_DATA_CONTACTS=true - DATABASE_SAVE_DATA_CHATS=true - - REDIS_ENABLED=false + - REDIS_ENABLED=true - REDIS_URI=redis://redis:6379/1 - REDIS_PREFIX_KEY=evolution # Webhook Settings diff --git a/src/whatsapp/services/whatsapp.service.ts b/src/whatsapp/services/whatsapp.service.ts index ca38cbeb..fb63057c 100644 --- a/src/whatsapp/services/whatsapp.service.ts +++ b/src/whatsapp/services/whatsapp.service.ts @@ -1167,7 +1167,10 @@ export class WAStartupService { imagePath = `${join(process.cwd(), 'temp', 'temp-sticker.png')}`; await sharp(imageBuffer).toFile(imagePath); } else { - const response = await axios.get(image, { responseType: 'arraybuffer' }); + const timestamp = new Date().getTime(); + const url = `${image}?timestamp=${timestamp}`; + + const response = await axios.get(url, { responseType: 'arraybuffer' }); const imageBuffer = Buffer.from(response.data, 'binary'); imagePath = `${join(process.cwd(), 'temp', 'temp-sticker.png')}`; await sharp(imageBuffer).toFile(imagePath); @@ -1175,6 +1178,8 @@ export class WAStartupService { await sharp(imagePath).webp().toFile(outputPath); + fs.unlinkSync(imagePath); + return outputPath; } catch (error) { console.error('Erro ao converter a imagem para WebP:', error); @@ -1183,13 +1188,17 @@ export class WAStartupService { public async mediaSticker(data: SendStickerDto) { const convert = await this.convertToWebP(data.stickerMessage.image); - return await this.sendMessageWithTyping( + const result = await this.sendMessageWithTyping( data.number, { sticker: { url: convert }, }, data?.options, ); + + fs.unlinkSync(convert); + + return result; } public async mediaMessage(data: SendMediaDto) { @@ -1225,7 +1234,6 @@ export class WAStartupService { return new Promise((resolve, reject) => { exec( - // `${ffmpegPath.path} -i ${tempAudioPath} -c:a libopus ${outputAudio} -y`, `${ffmpegPath.path} -i ${tempAudioPath} -vn -ab 128k -ar 44100 -f ipod ${outputAudio} -y`, (error, _stdout, _stderr) => { fs.unlinkSync(tempAudioPath); @@ -1245,7 +1253,6 @@ export class WAStartupService { { audio: Buffer.from(audio, 'base64'), ptt: true, - // mimetype: 'audio/ogg; codecs=opus', mimetype: 'audio/mp4', }, { presence: 'recording', delay: data?.options?.delay }, diff --git a/temp/sticker.webp b/temp/sticker.webp deleted file mode 100644 index 4ceb886e860e9653d0eb1212fbc129fe3f1e2029..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8812 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 J-*Fh2{{>cCBIW=9 diff --git a/temp/sticker.webp_original b/temp/sticker.webp_original deleted file mode 100644 index b04e82dadfd7a8998a7be87e1109c51b2c542d3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8624 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 W61~;YGtq;v3I4)={|)}%{eJ+zQV8S#