飞书是 OpenClaw 最强大的接入渠道之一。配好之后,AI Agent 能直接在飞书群里回复消息、发卡片、发文件,还能主动@你推送重要信息。
这篇教程是三万在 sanwan.ai 实际运营中踩过坑之后总结的,不是官方文档的机械翻译。
第一步:创建飞书自定义应用
应用创建后,在「凭证与基础信息」页面找到 App ID 和 App Secret,复制备用。
# 这两个值是你的飞书 App 身份凭证
App ID: cli_xxxxxxxxxxxxxxxxx
App Secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
在「权限管理」页面,至少勾选以下权限:
im:message im:message:send_as_bot im:chat contact:user.id:readonly
如果需要接收消息(双向对话),还需要:im:message:readonly
第二步:配置 Webhook 接收消息
这是大多数教程跳过的部分——飞书 Webhook 需要你有一个公网可访问的地址。OpenClaw 的处理方式比较特别:
进入「事件与回调」→「事件订阅」,添加以下事件:
im.message.receive_v1(接收消息)
请求网址填写你的 OpenClaw 回调地址(格式见下)。
在 ~/.openclaw/config.yaml 里添加飞书配置:
channels:
feishu:
appId: "cli_你的AppID"
appSecret: "你的AppSecret"
verificationToken: "飞书后台的验证Token"
encryptKey: "" # 可选,加密时填写
# accountId 映射(可选,多App场景)
accounts:
main: "cli_主App的AppID"
第三步:发布应用 + 添加机器人到群
应用必须发布才能正常工作。进入「版本管理与发布」→ 创建版本 → 申请上线(测试企业可直接发布)。
在飞书群里 → 群设置 → 机器人 → 添加机器人 → 搜索你的应用名称 → 添加。
添加后,机器人的 chat_id 就是这个群的 ID,发消息时用 target="chat:oc_xxxxxxxx"。
第四步:发送第一条消息测试
# 发送文本消息(OpenClaw 方式)
message(
action="send",
channel="feishu",
accountId="cm", # 对应 config.yaml 里的 account key
target="user:ou_xxxxxxx", # 或 chat:oc_xxxxxxx 发到群
message="Hello from AI Agent 🦞"
)
常见报错 & 解决方案
🔴 错误码 99992361:open_id 跨 App
原因:open_id 是 App 维度的,同一个人在不同 App 的 open_id 不同。
解决:发消息时传 accountId="对应的App",确保 open_id 和 App 匹配。
🔴 消息发出去但收不到回复
原因:事件订阅没配或 Webhook 地址不可访问。
解决:检查「事件订阅」→「请求网址」是否通过了飞书的验证(显示✅)。
🔴 发群消息显示「机器人不在群里」
原因:机器人还没被添加到目标群。按第7步操作即可。
🟡 消息延迟高
原因:飞书 Long Polling 连接断开后重连有延迟。OpenClaw 内置了断线重连,一般10秒内恢复。
进阶:发送飞书卡片消息
纯文本满足不了需求时,可以发交互式卡片(带按钮、表格、进度条):
# 参考 feishu-interactive-cards skill
# 安装: clawhub install feishu-interactive-cards-full
# 示例:发送带确认按钮的卡片
message(
action="send",
channel="feishu",
accountId="cm",
target="user:ou_xxxxxxx",
components={
"text": "请确认操作",
"blocks": [
{
"type": "section",
"text": "你想让 Agent 继续执行吗?",
"buttons": [
{"label": "继续", "style": "primary"},
{"label": "停止", "style": "danger"}
]
}
]
}
)
总结
飞书接入的难点不在代码,在于:1)权限配置容易漏;2)open_id 是 App 维度的(多 App 场景最坑);3)应用发布这步很多人跳过。
按这篇教程一步步来,配完之后你就有了一个能在飞书自由收发消息的 AI Agent。
更完整的技术教程在掘金:@三万的掘金专栏。