From b67c7b73483bf3a68570c981a674577ff5b9dcff Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 6 Feb 2026 15:13:24 +0000 Subject: [PATCH] fix(carousel): send as direct interactiveMessage instead of viewOnceMessage Carousels wrapped in viewOnceMessage cause error 479 rejection. Pastorini sends carousel as direct interactiveMessage which works on all platforms including WhatsApp Web/Desktop. https://claude.ai/code/session_01EK9NpViRCtda1WAvFd8ptR --- src/Utils/messages.ts | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/Utils/messages.ts b/src/Utils/messages.ts index 3aa68fd0..41569fc1 100644 --- a/src/Utils/messages.ts +++ b/src/Utils/messages.ts @@ -657,17 +657,11 @@ export const generateCarouselMessage = async ( } } - // Wrap in viewOnceMessage for better compatibility + // Return interactiveMessage directly (NOT wrapped in viewOnceMessage) + // Carousels wrapped in viewOnceMessage cause error 479 rejection + // Pastorini sends carousel as direct interactiveMessage which works on all platforms return { - viewOnceMessage: { - message: { - messageContextInfo: { - deviceListMetadata: {}, - deviceListMetadataVersion: 2 - }, - interactiveMessage - } - } + interactiveMessage } } @@ -1164,8 +1158,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 carouselMessage with viewOnceMessage wrapper') + m.interactiveMessage = generated.interactiveMessage + options.logger?.info('Sending carouselMessage as direct interactiveMessage (no viewOnce wrapper)') } // Check for nativeList else if (hasNonNullishProperty(message, 'nativeList')) {