Feishu Message Reader

v1.0.0

Fetch Feishu message content by message_id, with optional thread context. Activate when: needing to read the content of a specific Feishu message by its mess...

0· 504· 1 versions· 3 current· 3 all-time· Updated 4h ago· MIT-0
bydeadblue@deadblue22

Install

openclaw skills install feishu-msg-reader

Feishu Message Fetcher

Fetch any Feishu message content by message_id using the IM API, with optional thread context.

Known Limitation

Interactive cards (msg_type: interactive): The Feishu GET message API (/im/v1/messages/{id}) only returns fallback/degraded text in body.content, not the full card JSON. This is a Feishu platform limitation — there is no API to retrieve the rendered card structure after sending.

Workaround: Use --thread to fetch the entire thread context. The interactive card is usually a reply to a text/post message that contains the actual content. Reading the thread gives you the full picture.

Usage

# Fetch a single message
python3 scripts/fetch_message.py <message_id>

# Fetch with thread context (root message + all replies in thread)
python3 scripts/fetch_message.py <message_id> --thread

# Raw API response
python3 scripts/fetch_message.py <message_id> --raw

Auth

Automatic — reads appId/appSecret from ~/.openclaw/openclaw.json. Alternatively set FEISHU_APP_ID + FEISHU_APP_SECRET env vars, or pass --token <tenant_access_token>.

Output

JSON with: message_id, msg_type, sender_id, sender_type, chat_id, create_time, root_id, parent_id, content (parsed).

With --thread: adds thread array (all messages in the same thread, sorted chronologically) and thread_count.

Typical Workflow

When you encounter [Interactive Card] in a replied-to message:

  1. Get the message_id from inbound metadata (has_reply_context, parent message info)
  2. Run fetch_message.py <parent_message_id> --thread
  3. The thread context will contain the text/post messages with actual content
  4. Use that content to fulfill the user's request

Version tags

latestvk971rhq6j7ebcwkxha6m0cnd5182m6k3