Skip to content

Commit bd35d79

Browse files
Fix: Support media extraction from templateMessage in getBase64FromMediaMessage
### Fix: Add support for templateMessage media in getBase64FromMediaMessage #### What this does Adds support to download media from `templateMessage` structures in `getBase64FromMediaMessage`, by checking for `hydratedTemplate` and `hydratedFourRowTemplate`. #### Why it's needed Currently, media inside templates (e.g. `imageMessage`, `videoMessage`, `documentMessage`) is not processed by the method, which leads to errors or media being skipped. #### How it works If a `templateMessage` is detected, the code looks into the inner hydrated template and assigns the correct `mediaMessage` and `mediaType`. Then it proceeds as usual with the download logic. #### Example message ```json { "message": { "templateMessage": { "hydratedTemplate": { "imageMessage": { "mimetype": "image/jpeg", "fileLength": 123456, "url": "https://..." } } } } }
1 parent 3960624 commit bd35d79

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

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

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3437,16 +3437,34 @@ export class BaileysStartupService extends ChannelStartupService {
34373437
let mediaMessage: any;
34383438
let mediaType: string;
34393439

3440-
for (const type of TypeMediaMessage) {
3441-
mediaMessage = msg.message[type];
3442-
if (mediaMessage) {
3443-
mediaType = type;
3444-
break;
3440+
if (msg.message?.templateMessage) {
3441+
const template =
3442+
msg.message.templateMessage.hydratedTemplate || msg.message.templateMessage.hydratedFourRowTemplate;
3443+
3444+
for (const type of TypeMediaMessage) {
3445+
if (template[type]) {
3446+
mediaMessage = template[type];
3447+
mediaType = type;
3448+
msg.message = { [type]: { ...template[type], url: template[type].staticUrl } };
3449+
break;
3450+
}
3451+
}
3452+
3453+
if (!mediaMessage) {
3454+
throw 'Template message does not contain a supported media type';
3455+
}
3456+
} else {
3457+
for (const type of TypeMediaMessage) {
3458+
mediaMessage = msg.message[type];
3459+
if (mediaMessage) {
3460+
mediaType = type;
3461+
break;
3462+
}
34453463
}
3446-
}
34473464

3448-
if (!mediaMessage) {
3449-
throw 'The message is not of the media type';
3465+
if (!mediaMessage) {
3466+
throw 'The message is not of the media type';
3467+
}
34503468
}
34513469

34523470
if (typeof mediaMessage['mediaKey'] === 'object') {

0 commit comments

Comments
 (0)