fix(NOWEB): template message with image header — hasMedia:true but download fails - fix #2275
Release / WEBJS - chrome - amd64 - chrome (push) Waiting to run
Release / WEBJS - chromium - amd64 - latest (push) Waiting to run
Release / WEBJS - chromium - linux/arm64 - arm (push) Waiting to run
Release / GOWS - none - amd64 - gows (push) Waiting to run
Release / GOWS - none - linux/arm64 - gows-arm (push) Waiting to run
Release / NOWEB - none - amd64 - noweb (push) Waiting to run
Release / NOWEB - none - linux/arm64 - noweb-arm (push) Waiting to run

This commit is contained in:
devlikepro committed 2026-09-22 10:38:41 +07:00
1 parent 377a2d55c9
commit 55a7d78e3f
2 files changed
+20 -3

No files matched your search

+16 -2
View File
@@ -3794,6 +3794,20 @@ export class NOWEBEngineMediaProcessor implements IMediaEngineProcessor<any> {
content.url = null;
}
// Baileys unwraps hydratedTemplate only, so download the interactive template header as a plain media message
const header = extractMessageContent(message.message)?.templateMessage
?.interactiveMessageTemplate?.header;
if (header) {
message = {
key: message.key,
message: lodash.pick(header, [
'imageMessage',
'videoMessage',
'documentMessage',
]),
};
}
// Use 'stream' mode instead of 'buffer' to fix 0-byte audio files
// 'buffer' mode silently returns empty buffer for audio/voice messages
// See: https://github.com/devlikeapro/waha/issues/1996
@@ -3826,8 +3840,8 @@ export class NOWEBEngineMediaProcessor implements IMediaEngineProcessor<any> {
}
getFilename(message: any): string | null {
const content = extractMessageContent(message.message);
return content?.documentMessage?.fileName || null;
const content = extractMediaContent(message.message);
return content?.fileName || null;
}
}
+4 -1
View File
@@ -36,7 +36,10 @@ export function extractMediaContent(
content?.templateMessage?.hydratedTemplate?.videoMessage ||
content?.templateMessage?.interactiveMessageTemplate?.header
?.imageMessage ||
content?.templateMessage?.interactiveMessageTemplate?.header?.videoMessage;
content?.templateMessage?.interactiveMessageTemplate?.header
?.videoMessage ||
content?.templateMessage?.interactiveMessageTemplate?.header
?.documentMessage;
if (mediaContent) {
return mediaContent;
}