Skip to content

Commit 624b37e

Browse files
committed
fix(media): improve media download handling for base64 conversion
- Enhanced the logic for converting media messages to base64 by adding a retry mechanism for downloading media if the initial buffer is not available. - This change ensures that media messages are reliably converted to base64 format, improving the robustness of media handling in the WhatsApp integration service. - Updated error logging to capture issues during the media conversion process.
1 parent 7cccda1 commit 624b37e

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1389,7 +1389,24 @@ export class BaileysStartupService extends ChannelStartupService {
13891389
},
13901390
);
13911391

1392-
messageRaw.message.base64 = buffer ? buffer.toString('base64') : undefined;
1392+
if (buffer) {
1393+
messageRaw.message.base64 = buffer.toString('base64');
1394+
} else {
1395+
// retry to download media
1396+
const buffer = await downloadMediaMessage(
1397+
{ key: received.key, message: received?.message },
1398+
'buffer',
1399+
{},
1400+
{
1401+
logger: P({ level: 'error' }) as any,
1402+
reuploadRequest: this.client.updateMediaMessage,
1403+
},
1404+
);
1405+
1406+
if (buffer) {
1407+
messageRaw.message.base64 = buffer.toString('base64');
1408+
}
1409+
}
13931410
} catch (error) {
13941411
this.logger.error(['Error converting media to base64', error?.message]);
13951412
}
@@ -2373,7 +2390,24 @@ export class BaileysStartupService extends ChannelStartupService {
23732390
},
23742391
);
23752392

2376-
messageRaw.message.base64 = buffer ? buffer.toString('base64') : undefined;
2393+
if (buffer) {
2394+
messageRaw.message.base64 = buffer.toString('base64');
2395+
} else {
2396+
// retry to download media
2397+
const buffer = await downloadMediaMessage(
2398+
{ key: messageRaw.key, message: messageRaw?.message },
2399+
'buffer',
2400+
{},
2401+
{
2402+
logger: P({ level: 'error' }) as any,
2403+
reuploadRequest: this.client.updateMediaMessage,
2404+
},
2405+
);
2406+
2407+
if (buffer) {
2408+
messageRaw.message.base64 = buffer.toString('base64');
2409+
}
2410+
}
23772411
} catch (error) {
23782412
this.logger.error(['Error converting media to base64', error?.message]);
23792413
}

0 commit comments

Comments
 (0)