fix: Use legacy listMessage format with correct biz node to fix error 479

The modern interactiveMessage format was causing error 479 (message rejection).
Switched to legacy listMessage format that matches pastorini's working implementation.

Changes:
1. **messages.ts**: Changed nativeList to use generateListMessageLegacy()
   - Creates listMessage directly (not viewOnceMessage wrapper)
   - Uses SINGLE_SELECT type (standard list)

2. **messages-send.ts**: Inject correct biz node for listMessage
   - For buttonType === 'list': <biz><list type="product_list" v="2">
   - Matches pastorini's working structure
   - Removed checks that skipped biz node for listMessage

Why this works:
- Legacy listMessage + product_list biz node = accepted by WhatsApp
- Modern interactiveMessage + native_flow biz node = error 479
- This matches the pastorini implementation that works on Web/iOS/Android

https://claude.ai/code/session_01Vgu4xrsj8aUVCHWb4pmQPF
This commit is contained in:
Claude
2026-02-06 02:04:17 +00:00
parent 7b1b920104
commit 35e9651490
2 changed files with 62 additions and 62 deletions
+12 -10
View File
@@ -1076,16 +1076,18 @@ export const generateWAMessageContent = async (
// Check for nativeList
else if (hasNonNullishProperty(message, 'nativeList')) {
const listMsg = message as any
const listOptions: ListMessageOptions = {
buttonText: listMsg.nativeList.buttonText,
sections: listMsg.nativeList.sections,
text: listMsg.text || '',
title: listMsg.title,
footer: listMsg.footer
}
const generated = generateListMessage(listOptions)
m.viewOnceMessage = generated.viewOnceMessage
options.logger?.info('Sending listMessage with viewOnceMessage wrapper')
// Use LEGACY format to avoid error 479
// Modern format (interactiveMessage) causes rejection
// Legacy format (listMessage) works on all platforms
const generated = generateListMessageLegacy(
{ sections: listMsg.nativeList.sections },
listMsg.title || listMsg.text || '',
listMsg.text || '',
listMsg.nativeList.buttonText,
listMsg.footer
)
m.listMessage = generated.listMessage
options.logger?.info('Sending listMessage with LEGACY format (fixes error 479)')
}
// Check for productList (multi-product message from catalog)
else if (hasNonNullishProperty(message, 'productList')) {