openclaw - 💡(How to fix) Fix Feature Request: Feishu plugin support for card.action.trigger event [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#57402Fetched 2026-04-08 01:50:06
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Author
Participants

The bundled Feishu plugin currently supports im.message.receive_v1 events via WebSocket but does not handle card.action.trigger callback events. When a user clicks an interactive card button (e.g., approve/reject/complete), the event arrives at the WebSocket connection but is silently dropped because no handler is registered.

Root Cause

The bundled Feishu plugin currently supports im.message.receive_v1 events via WebSocket but does not handle card.action.trigger callback events. When a user clicks an interactive card button (e.g., approve/reject/complete), the event arrives at the WebSocket connection but is silently dropped because no handler is registered.

Fix Action

Fix / Workaround

Current workaround: We created a separate dedicated Bot (AetherOS Task Bot) whose WebSocket is held exclusively by PROD, bypassing the per-node gateway entirely. This works but adds unnecessary complexity.

  1. Register card.action.trigger in the EventDispatcherHandler (alongside im.message.receive_v1)
  2. When a card action event arrives, either:
    • a. Dispatch it to the agent session (like a message), or
    • b. Forward it via a configurable hook/webhook, or
    • c. Write it to a local file (e.g., inbox) for external processing

Gateway log shows message events are dispatched but card action events produce no log at all:

Code Example

[feishu] feishu[default]: received message from ou_xxx in oc_xxx (p2p)
[feishu] feishu[default]: dispatching to agent (session=agent:main:feishu:direct:ou_xxx)
[feishu] feishu[default]: dispatch complete (queuedFinal=true, replies=1)
// No log for card.action.trigger — event silently dropped
RAW_BUFFERClick to expand / collapse

Summary

The bundled Feishu plugin currently supports im.message.receive_v1 events via WebSocket but does not handle card.action.trigger callback events. When a user clicks an interactive card button (e.g., approve/reject/complete), the event arrives at the WebSocket connection but is silently dropped because no handler is registered.

Use Case

We use OpenClaw gateway on multiple nodes (skynet-alpha, able-cc) with Feishu bots for team collaboration. Our central PROD server sends interactive task cards to team members via Feishu. When a member clicks "Complete" or "Reject", we need the callback to be processed — either locally by the gateway or forwarded to the central server.

Current workaround: We created a separate dedicated Bot (AetherOS Task Bot) whose WebSocket is held exclusively by PROD, bypassing the per-node gateway entirely. This works but adds unnecessary complexity.

Expected Behavior

The Feishu plugin should:

  1. Register card.action.trigger in the EventDispatcherHandler (alongside im.message.receive_v1)
  2. When a card action event arrives, either:
    • a. Dispatch it to the agent session (like a message), or
    • b. Forward it via a configurable hook/webhook, or
    • c. Write it to a local file (e.g., inbox) for external processing

Option (a) would be ideal — the agent could process the callback and respond.

Environment

  • OpenClaw version: latest (homebrew)
  • Feishu plugin: bundled (dist/plugin-sdk/feishu.js)
  • Connection mode: WebSocket
  • OS: macOS (Apple Silicon)

Evidence

Gateway log shows message events are dispatched but card action events produce no log at all:

[feishu] feishu[default]: received message from ou_xxx in oc_xxx (p2p)
[feishu] feishu[default]: dispatching to agent (session=agent:main:feishu:direct:ou_xxx)
[feishu] feishu[default]: dispatch complete (queuedFinal=true, replies=1)
// No log for card.action.trigger — event silently dropped

The lark-oapi SDK fully supports this event type via register_p2_card_action_trigger.

Impact

This affects any deployment where:

  • Interactive cards are sent through a Feishu bot managed by OpenClaw gateway
  • Card button callbacks need to be processed (approve/reject/complete workflows)
  • Multi-node setups where the card sender and callback receiver may be different nodes

Thank you for considering this enhancement.

extent analysis

Fix Plan

To handle card.action.trigger events, we need to register an event handler in the Feishu plugin. Here are the steps:

  • Modify the feishu.js plugin to include the card.action.trigger event!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Register card action trigger!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
this.register_p2_card_action_trigger((event) => {
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
  // Dispatch the event to the agent session! 
  this.dispatchEvent!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING