Feishu Send Message
by @pikaqiuyaya
Send messages via Feishu using the current Agent's credentials, supporting private and group chats with independent identity display to solve open_id isolation.
clawhub install feishu-agent-messenger📖 About This Skill
Feishu Agent Messenger - 飞书消息发送技能
🚀 下载就能用!脚本可直接运行,自动读取配置文件。
注意:技能本身不会自动回复消息,需要手动调用脚本或配置自动触发 hook。
飞书多 Agent 消息发送技能。让每个 Agent 用自己的飞书应用发送消息(群聊/私聊),解决 open_id 应用隔离问题。配合多网关架构实现自主协作:统筹 Agent 派发任务 → 执行 Agent 完成任务 → 自主调用本技能汇报结果。
📋 核心功能
⚠️ 重要说明
"下载就能用"的含义
| 功能 | 是否自动 | 说明 |
|------|---------|------|
| 脚本可直接运行 | ✅ 是 | 下载后直接运行 ./send.sh |
| 自动读取配置 | ✅ 是 | 自动从配置文件读取飞书凭证 |
| 自动回复消息 | ❌ 否 | 需要手动调用脚本 |
🚨 调用脚本 ≠ AI 回复
重要:
正确流程:
1. 收到 Boss 的 sessions_send 消息
2. 执行任务
3. 完成后调用脚本:./send.sh agent-b oc_xxx chat_id "消息内容"
4. 群里显示消息,发送者为当前 Agent 的机器人名字
错误示例:
❌ 错误:sessions_send 回复 "任务已完成"
正确示例:
✅ 正确:./send.sh agent-b oc_xxx chat_id "任务已完成"
三种使用方式
方式 1:手动调用脚本(立即可用)
./send.sh agent-b oc_xxx chat_id "消息内容"
方式 2:Boss 派发时明确要求调用(推荐)
sessions_send({
sessionKey: "agent:agent-b:feishu:direct:ou_xxx",
message: 【任务派发】
任务内容:检查系统状态【回复要求】
完成后请调用脚本发送群消息:
./send.sh agent-b oc_xxx chat_id "任务已完成"
,
timeoutSeconds: 0
})
方式 3:配置自动触发 hook(需要 OpenClaw 支持) 在 Agent 配置里添加 hook,收到消息时自动调用脚本。
🔧 配置自动回复(推荐)
步骤 1:编辑 Agent 配置文件
文件位置:~/.openclaw/openclaw-{agentId}.json
添加 hooks 配置:
{
"hooks": {
"entries": {
"auto-reply-feishu": {
"enabled": true,
"trigger": "message.received",
"script": "~/.openclaw/workspace-{agentId}/skills/feishu-agent-messenger/send.sh",
"args": ["{agentId}", "${sender.open_id}", "open_id", "收到您的消息,请稍后"]
}
}
}
}
参数说明:
enabled: 是否启用trigger: 触发条件(message.received 表示收到消息时)script: 脚本路径args: 脚本参数{agentId}: Agent 标识(如 agent-b)
- ${sender.open_id}: 发送者 open_id(自动替换)
- open_id: 消息类型(私聊)
- 收到您的消息,请稍后: 回复内容步骤 2:重启 Agent 网关
systemctl --user restart openclaw-gateway-{agentId}.service
步骤 3:测试
发送消息给 Agent,检查是否自动回复。
📖 使用方法
方法 1:Boss 派发任务时明确要求调用(推荐)
统筹 Agent 代码示例:
// 派发给执行 Agent-B
sessions_send({
sessionKey: "agent:agent-b:feishu:direct:ou_xxx",
message: 【任务派发】
任务 ID: TASK-001
任务内容:检查系统状态【回复要求】
完成后请调用 feishu-agent-messenger 技能回复:
./send.sh agent-b ou_xxx open_id "任务已完成,系统运行正常"
【汇报格式】
【任务开始】
【任务完成】- 输出位置:[路径]
,
timeoutSeconds: 0
})
执行 Agent 收到后:
1. 执行任务
2. 完成后调用 send.sh 脚本回复
3. 消息以 Agent-B 自己的身份发送
方法 2:定时进度汇报(每 5 分钟)
统筹 Agent 定时发送指令:
// 每 5 分钟发送一次,要求执行 Agent 汇报进度
setInterval(() => {
sessions_send({
sessionKey: "agent:agent-b:feishu:direct:ou_xxx",
message: 【进度汇报要求】
任务 ID: TASK-001【汇报要求】
请调用 feishu-agent-messenger 技能汇报当前进度:
./send.sh agent-b oc_xxx chat_id "【进度汇报】TASK-001 - 完成 50%,正在进行中..."
,
timeoutSeconds: 0
})
}, 5 * 60 * 1000) // 每 5 分钟
执行 Agent 收到后:
1. 检查当前任务进度
2. 调用 send.sh 脚本汇报进度
3. 消息以 Agent-B 自己的身份发送到群里
方法 3:直接调用脚本
Agent-B 发送私聊消息:
~/.openclaw/workspace-agent-b/skills/feishu-agent-messenger/send.sh \
agent-b ou_xxx open_id "私聊消息内容"
Agent-B 发送群聊消息(进度汇报):
~/.openclaw/workspace-agent-b/skills/feishu-agent-messenger/send.sh \
agent-b oc_xxx chat_id "【进度汇报】TASK-001 - 完成 50%,正在进行中..."
方法 2:直接调用脚本
Agent-B 发送私聊消息:
~/.openclaw/workspace-agent-b/skills/feishu-agent-messenger/send.sh \
agent-b ou_xxx open_id "私聊消息内容"
Agent-B 发送群聊消息:
~/.openclaw/workspace-agent-b/skills/feishu-agent-messenger/send.sh \
agent-b oc_xxx chat_id "群聊消息内容"
方法 2:直接调用脚本
Agent-B 发送私聊消息:
~/.openclaw/workspace-agent-b/skills/feishu-agent-messenger/send.sh \
agent-b ou_xxx open_id "私聊消息内容"
Agent-B 发送群聊消息:
~/.openclaw/workspace-agent-b/skills/feishu-agent-messenger/send.sh \
agent-b oc_xxx chat_id "群聊消息内容"
Agent-C 发送私聊消息:
~/.openclaw/workspace-agent-c/skills/feishu-agent-messenger/send.sh \
agent-c ou_xxx open_id "私聊消息内容"
Agent-C 发送群聊消息:
~/.openclaw/workspace-agent-c/skills/feishu-agent-messenger/send.sh \
agent-c oc_xxx chat_id "群聊消息内容"
方法 3:直接调用飞书 API
发送私聊消息:
# 读取当前 Agent 配置
APP_ID=$(jq -r '.channels.feishu.appId' ~/.openclaw/openclaw-{agentId}.json)
APP_SECRET=$(jq -r '.channels.feishu.appSecret' ~/.openclaw/openclaw-{agentId}.json)获取 token
TOKEN=$(curl -s -X POST https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/ \
-H 'Content-Type: application/json' \
-d "{\"app_id\":\"$APP_ID\",\"app_secret\":\"$APP_SECRET\"}" | jq -r '.tenant_access_token')发送私聊消息
curl -s -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id" \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d "{\"receive_id\":\"ou_xxx\",\"msg_type\":\"text\",\"content\":\"{\\\"text\\\":\\\"消息内容\\\"}\"}"
发送群聊消息:
# 获取 token(同上)发送群聊消息
curl -s -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=chat_id" \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d "{\"receive_id\":\"oc_xxx\",\"msg_type\":\"text\",\"content\":\"{\\\"text\\\":\\\"消息内容\\\"}\"}"
⚙️ 配置说明
下载就能用吗?
是的!下载后无需额外配置,但需要满足以下条件:
#### 前置条件(必须)
1. 已配置飞书应用 - 在飞书开放平台创建应用 - 获取 App ID 和 App Secret - 在 Agent 配置文件中配置飞书凭证
2. Agent 配置文件存在
- 位置:~/.openclaw/openclaw-{agentId}.json
- 包含飞书配置:channels.feishu.appId 和 channels.feishu.appSecret
#### 自动回复条件(可选)
如果希望自动回复消息,需要:
1. 配置自动触发 hook - 在 Agent 配置文件中添加 hooks 配置 - 指定触发条件和脚本路径
2. Agent 网关运行中 - 确保 Agent 网关服务正常运行 - 飞书 WebSocket 连接正常
配置文件示例
Agent 配置文件 (~/.openclaw/openclaw-{agentId}.json):
{
"agents": {
"list": [{
"id": "agent-b",
"name": "执行助手",
"workspace": "/home/admin/.openclaw/workspace-agent-b"
}],
"defaults": {
"model": { "primary": "dashscope-coding/qwen3.5-plus" },
"workspace": "/home/admin/.openclaw/workspace-agent-b"
}
},
"gateway": {
"port": 19923,
"auth": {
"mode": "token",
"token": "agent-b-token-19923"
}
},
"channels": {
"feishu": {
"enabled": true,
"appId": "cli_xxx",
"appSecret": "xxx",
"dmPolicy": "open"
}
},
"skills": {
"entries": {
"feishu-agent-messenger": {
"enabled": true
}
}
},
"hooks": {
"entries": {
"auto-reply-feishu": {
"enabled": true,
"trigger": "message.received",
"script": "~/.openclaw/workspace-agent-b/skills/feishu-agent-messenger/send.sh",
"args": ["agent-b", "${sender.open_id}", "open_id", "收到您的消息"]
}
}
}
}
📝 参数说明
| 参数 | 说明 | 示例 |
|------|------|------|
| agentId | Agent 标识 | agent-b |
| target | 目标 ID(open_id 或 chat_id) | ou_xxx |
| msg_type | 消息类型:open_id(私聊)或 chat_id(群聊) | open_id |
| message | 消息内容 | 你好,这是测试消息 |
🔑 关键参数参考
| 参数 | 说明 | 获取方式 | |------|------|---------| | App ID | 当前 Agent 应用的 ID | 飞书开放平台 | | App Secret | 当前 Agent 应用的密钥 | 飞书开放平台 | | 用户 open_id | 当前 Agent 应用中的用户 ID | Agent 网关日志 | | 群聊 chat_id | 群聊 ID(应用通用) | 飞书开放平台 |
🔍 获取用户 open_id
从当前 Agent 网关日志获取:
journalctl --user -u openclaw-gateway-{agentId}.service | grep "received message from"
⚠️ 注意事项
1. open_id 是应用隔离的
2. content 格式
"{\"text\":\"消息内容\"}"3. 配置文件位置
~/.openclaw/openclaw-agent-b.json~/.openclaw/openclaw-agent-c.json~/.openclaw/openclaw-{agentId}.json🧪 测试流程
步骤 1:测试脚本
# 发送群聊测试消息
~/.openclaw/workspace-agent-b/skills/feishu-agent-messenger/send.sh \
agent-b oc_xxx chat_id "测试:Agent-B 以自己的身份发送群聊消息"
预期结果:
步骤 2:测试自动回复
配置 hook 后,发送消息给 Agent。
预期结果:
📚 相关技能
🆘 常见问题
Q1: 发送失败,提示"配置文件不存在"
A: 检查 Agent 配置文件是否存在:ls -la ~/.openclaw/openclaw-{agentId}.json
Q2: 发送失败,提示"无法获取 token"
A: 检查飞书配置是否正确:jq '.channels.feishu.appId' ~/.openclaw/openclaw-{agentId}.json
jq '.channels.feishu.appSecret' ~/.openclaw/openclaw-{agentId}.json
Q3: 消息发送成功,但显示的是其他 Agent 的身份
A: 确保使用的是当前 Agent 的脚本和配置,不是其他 Agent 的。Q4: open_id 发送失败
A: 确保使用的是当前 Agent 应用中的 open_id,不是其他 Agent 的 open_id。Q5: 下载后不知道怎么用
A: 1. 确保已配置飞书应用(App ID 和 App Secret) 2. 确保 Agent 配置文件存在 3. 测试脚本:./send.sh agent-b oc_xxx chat_id "测试"
4. 如果成功,说明配置正确Q6: 配置了 hook 但不自动回复
A: 1. 检查 hook 配置是否正确 2. 检查 Agent 网关是否重启 3. 查看日志:journalctl --user -u openclaw-gateway-{agentId}.service -f
4. 确认触发条件是否匹配