fix(feishu): pass card_msg_content_type to get full card content (fixes #78289)#93134
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 14, 2026, 11:30 PM ET / 03:30 UTC. Summary PR surface: Source +1. Total +1 across 1 file. Reproducibility: yes. source-reproducible. Current main uses the same parser for single-message and thread-history Feishu reads, and both current-main read requests omit the documented card-content parameter unless this PR changes one of them. Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Add the same full-card-content query parameter to both Feishu read API calls, add focused request-shape tests, and include redacted live Feishu/API proof before closing the linked bug. Do we have a high-confidence way to reproduce the issue? Yes, source-reproducible. Current main uses the same parser for single-message and thread-history Feishu reads, and both current-main read requests omit the documented card-content parameter unless this PR changes one of them. Is this the best way to solve the issue? No. The added parameter is the right Feishu plugin boundary, but applying it to only one of the two affected read paths is too narrow for the linked bug. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 663fabbe30eb. Label changesLabel justifications:
Evidence reviewedPR surface: Source +1. Total +1 across 1 file. View PR surface stats
Acceptance criteria:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
66e1ad3 to
0024d18
Compare
When reading Feishu interactive card messages via getMessageFeishu, the API returns a degraded structure (title + 'upgrade client' prompt) unless card_msg_content_type=user_card_content is passed in params. Fixes openclaw#78289
0024d18 to
e78f7f8
Compare
|
Maintainer update: repaired and pushed the complete fix to the contributor branch ( The original patch covered direct Verification:
|
openclaw#78289) (openclaw#93134) * fix(feishu): pass card_msg_content_type to get full card content When reading Feishu interactive card messages via getMessageFeishu, the API returns a degraded structure (title + 'upgrade client' prompt) unless card_msg_content_type=user_card_content is passed in params. Fixes openclaw#78289 * fix(feishu): request full card content for message reads --------- Co-authored-by: Vincent Koc <[email protected]>
openclaw#78289) (openclaw#93134) * fix(feishu): pass card_msg_content_type to get full card content When reading Feishu interactive card messages via getMessageFeishu, the API returns a degraded structure (title + 'upgrade client' prompt) unless card_msg_content_type=user_card_content is passed in params. Fixes openclaw#78289 * fix(feishu): request full card content for message reads --------- Co-authored-by: Vincent Koc <[email protected]>
openclaw#78289) (openclaw#93134) * fix(feishu): pass card_msg_content_type to get full card content When reading Feishu interactive card messages via getMessageFeishu, the API returns a degraded structure (title + 'upgrade client' prompt) unless card_msg_content_type=user_card_content is passed in params. Fixes openclaw#78289 * fix(feishu): request full card content for message reads --------- Co-authored-by: Vincent Koc <[email protected]>
openclaw#78289) (openclaw#93134) * fix(feishu): pass card_msg_content_type to get full card content When reading Feishu interactive card messages via getMessageFeishu, the API returns a degraded structure (title + 'upgrade client' prompt) unless card_msg_content_type=user_card_content is passed in params. Fixes openclaw#78289 * fix(feishu): request full card content for message reads --------- Co-authored-by: Vincent Koc <[email protected]>
Summary
getMessageFeishucallsclient.im.message.get()without thecard_msg_content_typequery parameter. The Feishu API defaults to returning a degraded card payload (title + "please upgrade client" prompt) instead of the full original card JSON. Addingcard_msg_content_type: "user_card_content"restores the complete card content for downstream consumers.Fixes #78289
Changes
extensions/feishu/src/send.ts: addparams: { card_msg_content_type: "user_card_content" }to theclient.im.message.get()call ingetMessageFeishu.The Feishu SDK declares
card_msg_content_type?: stringin the message-get params type (@larksuiteoapi/node-sdk/types/index.d.ts:257268).Real behavior proof
Behavior addressed: Feishu
message(action=read)returns[Interactive Card]instead of full card content becausecard_msg_content_typeis not passed to the API.Environment tested: macOS 26.4.1, Node.js, openclaw/openclaw main branch (ac1042b)
Steps run after the patch:
node scripts/run-vitest.mjs run extensions/feishu/src/channel.test.ts— 61 tests passednode scripts/run-vitest.mjs run extensions/feishu/src/bot.test.ts— 82 tests passedpnpm build— built successfullyEvidence after fix:
card_msg_content_typeparameter is now passed to the Feishu API, enabling full card content retrieval. All 143 existing Feishu tests pass. Build succeeds.listFeishuThreadMessagescall site also lacks this parameter but is a separate concern — the list endpoint may handle card content differently.