Feishu Merged Message Fetcher
Feishu's merge_forward messages appear as "Merged and Forwarded Message" with no content in the bot API. Use the Feishu REST API to retrieve the actual sub-messages.
When to Use
- Message body contains only
"Merged and Forwarded Message" msg_typeismerge_forward- User asks about a forwarded/合并转发 message you can't read
How It Works
The Feishu GET /open-apis/im/v1/messages/{message_id} endpoint returns the parent message plus all sub-messages in data.items[]. Sub-messages have upper_message_id pointing to the parent.
Steps
-
Get the
message_idof the merged message (from inbound context or replied message metadata). -
Run the fetch script:
bash <skill_dir>/scripts/fetch_merged_msg.sh <message_id> <app_id> <app_secret>app_id/app_secret: from OpenClaw config at.channels.feishuinopenclaw.json- If credentials are not readily available, extract them:
python3 -c "import json; d=json.load(open('/root/.openclaw/openclaw.json')); c=d['channels']['feishu']; print(c.get('appId',''), c.get('appSecret',''))"
-
Parse the JSON response:
data.items[0]is the parent (merge_forward) messagedata.items[1:]are the sub-messages in chronological order- Each sub-message has
body.contentwith the actual text/post content mentions[]maps@_user_Nplaceholders to real namessender.ididentifies who sent each sub-message
-
Summarize the conversation thread for the user.
Notes
- The API requires
im:message:readonlyscope on the Feishu app. - Images inside sub-messages show as
image_keyreferences; they cannot be directly displayed but can be described from context. - Sub-messages may come from different chats (check
chat_id); the original chat context may differ from the current group.