fix(carousel)sem viewOnceMessage

fix(carousel)sem viewOnceMessage
This commit is contained in:
Renato Alcara
2026-02-06 15:25:23 -03:00
committed by GitHub
+7 -12
View File
@@ -616,7 +616,6 @@ export const generateCarouselMessage = async (
const header: any = { const header: any = {
title: card.title || '', title: card.title || '',
subtitle: '',
hasMediaAttachment: hasMedia hasMediaAttachment: hasMedia
} }
@@ -641,7 +640,7 @@ export const generateCarouselMessage = async (
} }
})) }))
// Build the interactive message with carousel (matching Pastorini structure) // Build the interactive message with carousel (matching Pastorini structure exactly)
const interactiveMessage: proto.Message.IInteractiveMessage = { const interactiveMessage: proto.Message.IInteractiveMessage = {
body: { text: text || '' }, body: { text: text || '' },
footer: footer ? { text: footer } : undefined, footer: footer ? { text: footer } : undefined,
@@ -651,15 +650,11 @@ export const generateCarouselMessage = async (
} }
} }
// Wrap in viewOnceMessage for WhatsApp Web/Desktop compatibility // Return as direct interactiveMessage (matching Pastorini exactly)
// Without this wrapper, Web only renders header/body text // Pastorini sends interactiveMessage without viewOnceMessage wrapper
// Note: using minimal wrapper (no messageContextInfo) to avoid error 479 // and it renders on Web. Biz node is injected separately in messages-send.ts
return { return {
viewOnceMessage: { interactiveMessage
message: {
interactiveMessage
}
}
} }
} }
@@ -1156,8 +1151,8 @@ export const generateWAMessageContent = async (
} }
// Pass options for media processing if cards have images/videos // Pass options for media processing if cards have images/videos
const generated = await generateCarouselMessage(carouselOptions, options) const generated = await generateCarouselMessage(carouselOptions, options)
m.viewOnceMessage = generated.viewOnceMessage m.interactiveMessage = generated.interactiveMessage
options.logger?.info('Sending carouselMessage with viewOnceMessage wrapper (no messageContextInfo)') options.logger?.info('Sending carouselMessage as direct interactiveMessage (matching Pastorini)')
} }
// Check for nativeList // Check for nativeList
else if (hasNonNullishProperty(message, 'nativeList')) { else if (hasNonNullishProperty(message, 'nativeList')) {