Button and List messages do not render on consumer WhatsApp — only Carousel works (v0.7.1)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia dai punti di ingresso /send/button e /send/list utilizzati dal laboratorio Evolution GO Manager, quindi confronta il loro comportamento con /send/carousel in v0.7.1. Riproduci la matrice consumer-WhatsApp e ispeziona l’output di debug del server o di whatsmeow alla ricerca di conferme o rifiuti. Il lavoro è completato quando si determina se si tratta di una restrizione del protocollo o di un bug di implementazione, documentando quindi la limitazione o definendo l’avviso nella risposta richiesto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Welcome!
- Yes, I have searched for similar issues on GitHub and found none.
What did you do?
Tested every interactive send endpoint of evolution-go against a personal (non-Business) consumer WhatsApp recipient, using the Evolution GO Manager's per-instance lab modal ("Testar botões, lista e carrossel"), which constructs the official canonical payloads for each variant.
Specifically I ran:
/send/text— plain text (control)/send/button— Reply × 1, Reply × 3 (server max), CTA Copy, CTA URL, CTA Call, PIX alone, CTAs grouped (copy + url + call) → 7 variants/send/list— single sections list → 1 variant/send/carousel— 4 cards REPLY, 4 cards URL, 3 cards CALL, 4 cards COPY → 4 variants
Same sender instance, same recipient phone, runs spread over ~5 minutes.
Reproduction
- Pair an instance with a personal WhatsApp number (not Business / WABA).
- Open the Manager → Instances page → click the "Testar botões, lista e carrossel" lab icon on the instance.
- Enter a personal phone number (not on WABA / Cloud API).
- Run each of the 9 button + list modes one after another.
- Re-run with each of the 4 carousel modes.
- Watch what the recipient phone actually displays.
What did you expect?
I expected all variants to render on the recipient's WhatsApp because:
- The API returned
200 OKwithIsFromMe: trueand a real WhatsApp message ID for every single send (so the sender's session successfully emitted the frame to WhatsApp's servers). - The Manager UI's lab modal explicitly bills itself as a delivery test tool for these endpoints — if these payloads weren't expected to work, they shouldn't be in the lab.
- The plain-text
/send/textcontrol delivered cleanly to the same recipient, so the device + recipient pair is healthy.
What did you observe instead of what you expected?
Only /send/carousel actually delivers usable content to consumer WhatsApp. Every /send/button variant arrives as a placeholder asking the recipient to update WhatsApp, and /send/list does not arrive at all.
| Endpoint | Variant (from Manager UI lab) | API response | Receiver result |
|---|---|---|---|
/send/text |
plain text | 200 OK | ✅ Rendered cleanly |
/send/button |
Reply × 1 | 200 OK | ❌ "Update WhatsApp…" placeholder |
/send/button |
Reply × 3 (server max) | 200 OK | ❌ "Update WhatsApp…" placeholder |
/send/button |
CTA Copy | 200 OK | ❌ "Update WhatsApp…" placeholder |
/send/button |
CTA URL | 200 OK | ❌ "Update WhatsApp…" placeholder |
/send/button |
CTA Call | 200 OK | ❌ "Update WhatsApp…" placeholder |
/send/button |
PIX alone | 200 OK | ❌ "Update WhatsApp…" placeholder |
/send/button |
CTAs grouped (copy + url + call) | 200 OK | ❌ "Update WhatsApp…" placeholder |
/send/list |
Single sections list | 200 OK | ❌ Not delivered at all |
/send/carousel |
4 cards REPLY + image headers | 200 OK | ✅ Renders, all buttons work |
/send/carousel |
4 cards URL | 200 OK | ✅ Renders (URL button serialization is its own issue, see #51) |
/send/carousel |
3 cards CALL | 200 OK | ✅ Renders |
/send/carousel |
4 cards COPY | 200 OK | ✅ Renders |
In every case the API returns 200 with a real message ID — the difference is entirely on the WhatsApp client side.
If this is by design (WhatsApp restricting these frame types for unofficial-API sessions), it would help operators a lot if the README / changelog said so explicitly. Right now the lab modal happily ships these payloads as if they were expected to work for any recipient.
Screenshots/Videos
No response
Which version are you using?
evolution-go v0.7.1 (Docker)
What is your environment?
Docker
If applicable, paste the log output
No response
Additional Notes
Sender / recipient setup
- Sender: personal WhatsApp number connected via QR (not Business)
- Recipient: personal WhatsApp number on Android, current app version, not on Business / WABA / Cloud API
- evolution-go reachable on a public host
- Same sender → same recipient pair for ALL tests in the matrix
Related
- Issue #51 — "Carousel Message Buttons Serialization Bug" — affects URL/CALL/COPY button params inside carousels in v0.7.1.
Questions for maintainers
- Is the button/list non-delivery to consumer WhatsApp a known WhatsApp protocol restriction (e.g. they only accept those frame types from Business-API sessions)?
- If yes — would you consider documenting this in the README and/or returning a warning header on the response (e.g.
X-Whatsapp-Delivery-Risk: high) so callers can surface it to their users? - If no — is there a server log or whatsmeow debug toggle I can enable to capture the WhatsApp ack / rejection for these messages? Happy to run a follow-up test.
Thanks for the project — carousel works reliably and is genuinely useful for our use case.
- Lingua principale
- Go
- Stelle
- 929
- Fork
- 499
- Merge medio
- 5m
- PR unite (30g)
- 1
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di evolution-foundation/evolution-go
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
evolution-foundation/evolution-go#193 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
evolution-foundation/evolution-go#104 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
evolution-foundation/evolution-go#101 ·
I maintainer di solito rispondono entro 1 giorno
-
POST /group/participant always returns 400 "participants is required and cannot be empty" (wrong validation middleware on route)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
evolution-foundation/evolution-go#97 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
evolution-foundation/evolution-go#219 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di evolution-foundation/evolution-go
Issue simili
-
Realtime: ASR EOU language tags leak into the LLM conversation (unintended reply-language switching)Forse già presa @nexxtmobile l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
effort:high model:sonnet phase:3 type:docs
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
OffchainLabs/nitro#4771 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
BurntSushi/toml#530 ·