diff --git a/src/core/engines/noweb/session.noweb.core.ts b/src/core/engines/noweb/session.noweb.core.ts index 2ee322ee..8cc9c369 100644 --- a/src/core/engines/noweb/session.noweb.core.ts +++ b/src/core/engines/noweb/session.noweb.core.ts @@ -3794,6 +3794,20 @@ export class NOWEBEngineMediaProcessor implements IMediaEngineProcessor { 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 { } getFilename(message: any): string | null { - const content = extractMessageContent(message.message); - return content?.documentMessage?.fileName || null; + const content = extractMediaContent(message.message); + return content?.fileName || null; } } diff --git a/src/core/engines/noweb/utils.ts b/src/core/engines/noweb/utils.ts index 7e10a3f8..bc818db2 100644 --- a/src/core/engines/noweb/utils.ts +++ b/src/core/engines/noweb/utils.ts @@ -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; }