From 7a89afb6667c52ee472f3d81f0be7050cfca9a3e Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 7 Feb 2026 00:35:10 +0000 Subject: [PATCH] fix(carousel): remove viewOnceMessage wrapper, send interactiveMessage directly Pastorini's working implementation confirms carousels must be sent as direct interactiveMessage at the message root level, NOT wrapped in viewOnceMessage. The viewOnce wrapper prevented rendering on WhatsApp Web and delivery to Apple/iOS users. https://claude.ai/code/session_018DkDxsjWzM131jy3ivWjZp --- src/Utils/messages.ts | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Utils/messages.ts b/src/Utils/messages.ts index 910992f2..411b03c9 100644 --- a/src/Utils/messages.ts +++ b/src/Utils/messages.ts @@ -653,14 +653,11 @@ export const generateCarouselMessage = async ( } } - // Wrap in viewOnceMessage for MD (multi-device) compatibility - // This ensures Web/Desktop clients can render the carousel + // Return interactiveMessage directly (NOT wrapped in viewOnceMessage) + // Pastorini's working implementation confirms carousels must be sent + // as direct interactiveMessage, not wrapped in viewOnceMessage return { - viewOnceMessage: { - message: { - interactiveMessage - } - } + interactiveMessage } } @@ -1157,8 +1154,8 @@ export const generateWAMessageContent = async ( } // Pass options for media processing if cards have images/videos const generated = await generateCarouselMessage(carouselOptions, options) - m.viewOnceMessage = generated.viewOnceMessage - options.logger?.info('Sending carousel with viewOnceMessage wrapper (plain object, no proto conversion)') + m.interactiveMessage = generated.interactiveMessage + options.logger?.info('Sending carousel as direct interactiveMessage (plain object, no proto conversion)') // Return the plain JS object directly WITHOUT calling WAProto.Message.fromObject() // This matches Pastorini's working approach where plain objects are passed directly // to relayMessage. The fromObject() conversion can corrupt nested carousel structures