Button and List messages do not render on consumer WhatsApp — only Carousel works (v0.7.1)
Maintainer thường phản hồi trong vòng 5 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
Hướng nghiên cứu
Bắt đầu với các điểm vào /send/button và /send/list được Evolution GO Manager lab sử dụng, sau đó so sánh hành vi của chúng với /send/carousel trong v0.7.1. Tái hiện ma trận consumer-WhatsApp và kiểm tra đầu ra debug của server hoặc whatsmeow để tìm các xác nhận hoặc từ chối. Được xem là hoàn tất khi xác định được đây là hạn chế của giao thức hay lỗi triển khai, sau đó ghi lại hạn chế hoặc định nghĩa cảnh báo phản hồi được yêu cầu.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Go
- Star
- 890
- Fork
- 473
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của evolution-foundation/evolution-go
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
evolution-foundation/evolution-go#193 ·
Maintainer thường phản hồi trong vòng 5 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
evolution-foundation/evolution-go#104 ·
Maintainer thường phản hồi trong vòng 5 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
evolution-foundation/evolution-go#101 ·
Maintainer thường phản hồi trong vòng 5 ngày
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
evolution-foundation/evolution-go#97 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 5 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
evolution-foundation/evolution-go#204 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 5 ngày
Tất cả issue của evolution-foundation/evolution-go
Issue tương tự
-
[Docs] - Document minimum Terraform/OpenTofu version (>= 1.11) required by write-only argumentsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 92/100
MagaluCloud/terraform-provider-mgc#323 ·
Maintainer thường phản hồi trong vòng 11 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
rossoctl/context-guru#366 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
stage-fail
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
siyuan-note/bazaar#2293 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
piraeusdatastore/piraeus-operator#1070 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày