From 4c56dacc81a7cb18b27e76e25e9a69b89bb9ff33 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 6 Feb 2026 17:36:49 +0000 Subject: [PATCH] =?UTF-8?q?fix(carousel):=20pular=20inje=C3=A7=C3=A3o=20do?= =?UTF-8?q?=20biz=20node=20para=20carrossel=20(causa=20erro=20479)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit O código experimental de injeção do biz node tentava extrair botões de interactiveMessage.nativeFlowMessage.buttons (nível raiz), mas no carrossel os botões estão em carouselMessage.cards[].nativeFlowMessage. Resultado: biz node injetado com buttonNames:[] e dados vazios, WhatsApp via erro 479 rejeitando a mensagem nos dispositivos vinculados. Pastorini usa relayMessage direto sem injetar biz node no carrossel. Agora o carrossel pula a injeção do biz node completamente. https://claude.ai/code/session_01EK9NpViRCtda1WAvFd8ptR --- src/Socket/messages-send.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Socket/messages-send.ts b/src/Socket/messages-send.ts index a77161f4..27eb41db 100644 --- a/src/Socket/messages-send.ts +++ b/src/Socket/messages-send.ts @@ -1225,7 +1225,7 @@ export const makeMessagesSocket = (config: SocketConfig) => { // EXPERIMENTAL: Try biz node injection for ALL interactive messages including catalog // Previously we skipped catalog messages but they weren't rendering properly - if (buttonType && enableInteractiveMessages) { + if (buttonType && enableInteractiveMessages && !isCarousel) { const startTime = Date.now() // Debug: Log message structure to diagnose list detection @@ -1384,6 +1384,12 @@ export const makeMessagesSocket = (config: SocketConfig) => { ) metrics.interactiveMessagesFailures.inc({ type: buttonType, reason: 'injection_failed' }) } + } else if (isCarousel && buttonType) { + logger.info( + { msgId, buttonType, to: destinationJid }, + '[EXPERIMENTAL] Skipping biz node injection for carousel message (not needed, causes error 479)' + ) + metrics.interactiveMessagesSent.inc({ type: 'carousel' }) } else if (buttonType && !enableInteractiveMessages) { logger.warn( { msgId, buttonType },