运行时依赖
安装命令
点击复制技能文档
飞书转发消息读取器
读取飞书合并转发消息的详细内容。
问题背景
飞书的合并转发消息 (merge_forward) 在 OpenClaw 中默认只显示 "Merged and Forwarded Message",无法看到实际转发的内容。此 技能 通过飞书 API 获取转发消息的完整子消息列表。
凭证配置
脚本会自动从以下位置获取飞书凭证(按优先级):
命令行参数: --应用-id / --应用-secret 环境变量: FEISHU_应用_ID / FEISHU_应用_SECRET OpenClaw 配置: ~/.OpenClaw/OpenClaw.json 中的 channels.feishu.应用Id/应用Secret
如果已配置 OpenClaw 飞书插件,无需额外配置即可使用。
快速使用 方法 1:Python 脚本(推荐) # 自动从 OpenClaw 配置读取凭证 python3 scripts/解析_forward.py
# 或手动指定凭证 python3 scripts/解析_forward.py --应用-id --应用-secret
# JSON 格式输出 python3 scripts/解析_forward.py --格式化 json
# 不查询用户名(更快) python3 scripts/解析_forward.py --no-names
方法 2:Shell 脚本(原始 JSON) # 自动从配置读取凭证 ./scripts/read_forward.sh
# 或手动指定 ./scripts/read_forward.sh <应用_id> <应用_secret>
方法 3:直接调用 API # 获取 令牌 令牌=$(curl -s -X POST 'https://open.feishu.cn/open-APIs/auth/v3/tenant_访问_令牌/internal' \ -H 'Content-Type: 应用/json' \ -d '{"应用_id":"YOUR_应用_ID","应用_secret":"YOUR_应用_SECRET"}' | jq -r '.tenant_访问_令牌')
# 获取消息详情 curl -s "https://open.feishu.cn/open-APIs/im/v1/messages/" \ -H "Authorization: Bearer $令牌" | jq .
API 响应结构 { "code": 0, "data": { "items": [ { "message_id": "om_xxx", "msg_type": "merge_forward", "body": {"content": "Merged and Forwarded Message"} }, { "message_id": "om_yyy", "msg_type": "text", "body": {"content": "{\"text\":\"实际消息内容\"}"}, "upper_message_id": "om_xxx", "发送er": {"id": "ou_xxx", "发送er_type": "user"}, "创建_time": "1234567890000" } ] } }
第一条是转发消息本身 (msg_type: merge_forward) 后续是被转发的原始消息,带有 upper_message_id 指向父消息 支持的消息类型 类型 说明 解析方式 text 文本消息 body.content → JSON → text post 富文本消息 body.content → JSON → title + content interactive 卡片消息 body.content → JSON → title + elements image 图片 显示 [图片] file 文件 显示 [文件] audio 语音 显示 [语音] video 视频 显示 [视频] 权限要求
飞书应用需要以下权限:
im:message:readonly - 获取群组中所有消息(敏感权限) contact:contact.base:readonly - 获取用户基本信息(可选,用于显示用户名) 示例输出 📨 合并转发消息 (3 条) 来源群: oc_xxxxxxxxxxxxxxxxxxxx ---------------------------------------- [02-25 14:02] 张三 大家好,这是一条测试消息
[02-25 14:03] ou_yyyyyyyyyyy... 收到,我看看
[02-25 14:05] 李四 已处理完成
注:可见范围内的用户显示真实姓名,范围外的显示 ID 前缀。