OpenClaw + Feishu 集成实战:打造企业级 AI 助手
系列文章: 《OpenClaw 从入门到精通》第 6 期
难度等级: ⭐⭐⭐⭐
预计耗时: 40 分钟
🎯 本文目标
学会将 OpenClaw 与飞书集成:
- ✅ 发送消息通知
- ✅ 创建文档
- ✅ 管理群聊
- ✅ 自动化工作流
📚 前置准备
1. 飞书开放平台
2. 创建应用
- 进入「企业应用」
- 点击「创建应用」
- 填写应用信息
- 获取 App ID 和 App Secret
3. 配置权限
需要的权限:
- 发送消息
- 读取/写入文档
- 群组管理
- 机器人功能
🔧 基础配置
1. 配置飞书集成
from openclaw import FeishuIntegration
feishu = FeishuIntegration(
app_id="cli_xxxxxxxxx",
app_secret="xxxxxxxxx",
bot_name="AI 助手"
)
feishu.connect()
2. 测试连接
openclaw "测试飞书连接"
预期输出:
✅ 飞书连接成功
应用名称:AI 助手
可用功能:消息、文档、群聊
💻 实战案例
案例 1:发送消息通知
openclaw "
发送飞书消息:
- 接收人:张三
- 内容:项目进度更新
- 类型:文本
"
代码实现:
feishu.send_message(
user_id="ou_xxxxx",
message="项目进度更新:已完成 80%",
msg_type="text"
)
案例 2:发送富文本消息
feishu.send_rich_message(
user_id="ou_xxxxx",
content=[
{"tag": "text", "text": "项目提醒:"},
{"tag": "a", "text": "查看详情", "href": "https://..."},
{"tag": "at", "user_id": "ou_xxxxx"}
]
)
案例 3:群消息推送
openclaw "
在项目组群里发送日报:
- 群名:项目攻坚组
- 内容:今日完成情况
- @所有人
"
实现:
feishu.send_group_message(
chat_id="oc_xxxxx",
message="今日完成:\n1. 功能开发\n2. 单元测试",
mention_all=True
)
📄 文档自动化
1. 创建文档
openclaw "
创建飞书文档:
- 标题:项目周报
- 内容:本周工作总结
- 文件夹:项目组
"
代码:
doc = feishu.create_doc(
title="项目周报",
content="# 本周工作总结\n\n## 完成情况\n- 功能 A\n- 功能 B",
folder_token="xxxxx"
)
2. 更新文档
feishu.update_doc(
doc_token="xxxxx",
content="\n## 新增内容\n- 功能 C"
)
3. 文档协作
# 添加协作者
feishu.share_doc(
doc_token="xxxxx",
user_ids=["ou_1", "ou_2"],
permission="edit" # 可编辑
)
# 设置权限
feishu.set_doc_permission(
doc_token="xxxxx",
public="organization" # 组织内可见
)
🤖 机器人集成
1. 创建机器人
openclaw "
创建飞书机器人:
- 名称:AI 小助手
- 功能:自动回复
- 关键词:帮助、状态、报告
"
配置:
bot = feishu.create_bot(
name="AI 小助手",
keywords=["帮助", "状态", "报告"],
auto_reply=True
)
2. 自动回复
@bot.on_keyword("帮助")
def help_handler(message):
return """
🤖 AI 小助手功能:
1. 发送 /状态 查看系统状态
2. 发送 /报告 生成日报
3. 发送 /帮助 查看帮助
"""
@bot.on_keyword("状态")
def status_handler(message):
return get_system_status()
📊 数据报表
1. 自动生成日报
openclaw "
每天下午 6 点自动生成日报:
- 收集今日工作
- 生成飞书文档
- 发送到项目组
"
实现:
daily_report = CronTask(
name="daily_report",
schedule="0 18 * * *",
action="generate_feishu_report",
params={
"collect_from": ["git", "tasks"],
"send_to": "project_group",
"format": "feishu_doc"
}
)
2. 周报汇总
weekly_summary = CronTask(
name="weekly_summary",
schedule="0 17 * * 5", # 周五 17 点
action="weekly_report",
steps=[
"collect_daily_reports",
"analyze_metrics",
"generate_ppt",
"send_to_management"
]
)
🎓 高级功能
1. 消息卡片
card = {
"config": {
"wide_screen_mode": True
},
"header": {
"title": {
"tag": "plain_text",
"content": "项目进度提醒"
},
"template": "blue"
},
"elements": [
{
"tag": "div",
"text": {
"tag": "lark_md",
"content": "**项目名称:** AI 助手\n**进度:** 80%\n**负责人:** 张三"
}
},
{
"tag": "action",
"actions": [
{
"tag": "button",
"text": {
"tag": "plain_text",
"content": "查看详情"
},
"url": "https://..."
}
]
}
]
}
feishu.send_card(card)
2. 交互式消息
# 带按钮的消息
feishu.send_interactive_message(
content="需要审批吗?",
actions=[
{"text": "同意", "value": "approve"},
{"text": "拒绝", "value": "reject"}
],
callback=handle_approval
)
3. 文件上传
# 上传文件
feishu.upload_file(
file_path="/path/to/file.pdf",
file_name="报告.pdf",
send_to="ou_xxxxx"
)
# 上传图片
feishu.upload_image(
image_path="/path/to/image.png",
send_to="chat_xxxxx"
)
⚠️ 注意事项
1. 权限管理
# 最小权限原则
permissions = [
"message:send", # 发送消息
"doc:read", # 读取文档
"doc:write" # 写入文档
]
# 避免申请不必要的权限
2. 频率限制
# 飞书 API 限流
# 消息发送:100 次/秒
# 文档操作:50 次/秒
# 添加重试逻辑
@retry(times=3, delay=1)
def send_message_safe(...):
feishu.send_message(...)
3. 错误处理
try:
feishu.send_message(...)
except FeishuError as e:
if e.code == 99991666:
# 权限不足
logger.error("需要配置权限")
elif e.code == 99991663:
# 频率限制
time.sleep(1)
feishu.send_message(...)
📚 本系列预告
| 期数 | 主题 | 状态 |
|---|---|---|
| 第 6 期 | OpenClaw + Feishu | ✅ 已完成 |
| 第 7 期 | 源码解析 | 下一篇 |
觉得有用?点赞 👍 收藏 ⭐ 关注 ➕ 三连支持一下!