乐于分享
好东西不私藏

OpenClaw 30 天系列 - Day 15:飞书深度集成(上):日历、任务、联系人

OpenClaw 30 天系列 - Day 15:飞书深度集成(上):日历、任务、联系人

🎯 学习目标:学会安装飞书官方插件,并进行如日历、任务、联系人的管理

⏱️ 阅读时间:约 12 分钟 

💡 前置要求:无


本文基于 飞书官方插件 v3.10+

支持的能力总览

业务类别
支持的能力
使用场景
💬 消息
消息读取(群聊/单聊历史、话题回复)、消息发送(含发卡片)、消息回复、消息搜索、图片/文件下载
理解群聊上下文、自动回复、消息归档
📄 云文档
创建云文档、更新云文档、读取云文档内容、插入图片/文件、文档评论
自动写文档、整理会议纪要、文档协作
📊 多维表格
创建/管理多维表格、数据表、字段、记录(增删改查、批量操作、高级筛选)、视图
客户管理、项目跟踪、数据报表
📊 电子表格
创建、编辑、查看电子表格
数据分析、财务报表、统计表格
📅 日历日程
日历管理、日程管理(创建/查询/修改/删除/搜索)、参会人管理、忙闲查询
会议安排、日程提醒、时间管理
✅ 任务
任务管理(创建/查询/更新/完成)、清单管理、子任务、评论
待办管理、项目跟踪、团队协作
🎭 高级特性
流式输出卡片、识别合并转发消息、表情反馈识别、多账号隔离
更好的交互体验、多场景应用

🔧 安装飞书官方插件

步骤 1:安装飞书官方插件

npx -y @larksuite/openclaw-lark install

安装过程中可选择:

  • 新建机器人:扫描二维码一键创建
  • 关联已有机器人:手动输入 App ID 和 App Secret

步骤 2:批量授权(重要)

在飞书对话框中输入:

/feishu auth

完成批量授权后,OpenClaw 可以你的身份完成消息、文档、多维表格、日历等任务。

步骤 3:验证安装

# 在飞书对话中发送/feishu start# 或让 AI 学习新技能学习一下我安装的新飞书插件,列出有哪些能力

🔐 飞书应用权限配置

⚠️ 重要:以下权限 Code 为飞书官方插件 v3.10+ 使用的权限,请在飞书开放平台批量导入。

完整权限清单

在飞书开放平台 → 权限管理 → 批量导入/导出权限,复制以下 JSON:

{"scopes":{"tenant":["contact:contact.base:readonly","docx:document:readonly","im:chat:read","im:chat:update","im:message.group_at_msg:readonly","im:message.p2p_msg:readonly","im:message.pins:read","im:message.pins:write_only","im:message.reactions:read","im:message.reactions:write_only","im:message:readonly","im:message:recall","im:message:send_as_bot","im:message:send_multi_users","im:message:send_sys_msg","im:message:update","im:resource","application:application:self_manage","cardkit:card:write","cardkit:card:read","contact:user.basic_profile:readonly"],"user":["contact:user.employee_id:readonly","offline_access","base:app:copy","base:field:create","base:field:delete","base:field:read","base:field:update","base:record:create","base:record:delete","base:record:retrieve","base:record:update","base:table:create","base:table:delete","base:table:read","base:table:update","base:view:read","base:view:write_only","base:app:create","base:app:update","base:app:read","sheets:spreadsheet.meta:read","sheets:spreadsheet:read","sheets:spreadsheet:create","sheets:spreadsheet:write_only","docs:document:export","docs:document.media:upload","board:whiteboard:node:create","board:whiteboard:node:read","calendar:calendar:read","calendar:calendar.event:create","calendar:calendar.event:delete","calendar:calendar.event:read","calendar:calendar.event:reply","calendar:calendar.event:update","calendar:calendar.free_busy:read","contact:contact.base:readonly","contact:user.base:readonly","contact:user:search","docs:document.comment:create","docs:document.comment:read","docs:document.comment:update","docs:document.media:download","docs:document:copy","docx:document:create","docx:document:readonly","docx:document:write_only","drive:drive.metadata:readonly","drive:file:download","drive:file:upload","im:chat.members:read","im:chat:read","im:message","im:message.group_msg:get_as_user","im:message.p2p_msg:get_as_user","im:message:readonly","search:docs:read","search:message","space:document:delete","space:document:move","space:document:retrieve","task:comment:read","task:comment:write","task:task:read","task:task:write","task:task:writeonly","task:tasklist:read","task:tasklist:write","wiki:node:copy","wiki:node:create","wiki:node:move","wiki:node:read","wiki:node:retrieve","wiki:space:read","wiki:space:retrieve","wiki:space:write_only","contact:user.basic_profile:readonly"]}}

权限申请步骤

  1. 进入飞书开放平台 → 选择你的应用
  2. 点击"权限管理" → "批量导入/导出权限"
  3. 复制上述 JSON,点击"下一步,确认新增权限"
  4. 点击"申请开通"(自行在飞书 APP 审核或咨询企业管理员审核)
  5. "应用身份权限"数据范围保持默认"与应用的可用范围一致"

🚀 快速开始

安装完成后,在飞书中向机器人发送任意消息即可开始对话。

推荐体验

  • "帮我创建一个项目计划文档"
  • "查询我明天的日程安排"
  • "在客户表格里添加一条记录"
  • "搜索群里昨天讨论的内容"

📅 日历日程管理

创建日程

使用方式

# 创建单个日程"明天上午 10 点和产品团队开会,讨论 Q2 产品规划"# 创建带参会人的日程"下周一上午 9 点项目启动会,邀请张三、李四、王五参加"# 创建重复日程"每周一上午 9 点团队例会,持续 1 小时"

技能实现

module.exports = {name'calendar-create',asyncexecute({ summary, startTime, endTime, attendees, description }) {try {// 创建日程 - 符合飞书官方 API 格式const event = awaitfeishu_calendar_event('create', {summary: summary,start_time: {timestampnewDate(startTime).toISOString(),timezone'Asia/Shanghai'        },end_time: {timestampnewDate(endTime).toISOString(),timezone'Asia/Shanghai'        },description: description,attendees: attendees || [], // [{ type: 'user', id: 'ou_xxx' }]user_open_id'ou_current_user'// 必填:当前用户 ID      });return`✅ 日程已创建\n\n标题:${event.summary}\n时间:${formatTime(event.start_time)} - ${formatTime(event.end_time)}\n链接:${event.html_link}`;    } catch (error) {if (error.code === '99991001') {return'❌ 权限不足,请检查日历权限配置';      }if (error.code === '99991002') {return'❌ 参数错误,请检查时间格式是否正确';      }console.error('创建日程失败:', error);throw error;    }  }};

查询忙闲

使用方式

# 查询个人忙闲"查看我明天上午是否有空"# 查询团队忙闲"查看产品团队下周一下午谁有空"# 找会议时间"帮我找个时间,下周一到周三,张三和李四都有空的 1 小时"

技能实现

module.exports = {name'calendar-freebusy',asyncexecute({ userIds, timeMin, timeMax }) {try {// 查询忙闲 - 符合飞书官方 API 格式const freeBusy = awaitfeishu_calendar_freebusy('list', {user_ids: userIds, // ['ou_xxx', 'ou_yyy']time_minnewDate(timeMin).toISOString(),time_maxnewDate(timeMax).toISOString()      });// 分析空闲时间const availableSlots = findAvailableSlots(freeBusy);if (availableSlots.length === 0) {return'❌ 没有找到共同的空闲时间';      }return`✅ 找到 ${availableSlots.length} 个空闲时间段\n\n` +         availableSlots.map(slot =>`📅 ${formatDate(slot.start)}${formatTime(slot.start)} - ${formatTime(slot.end)}`        ).join('\n');    } catch (error) {if (error.code === '99991001') {return'❌ 权限不足,无法查询忙闲';      }throw error;    }  }};functionfindAvailableSlots(freeBusy) {// 实现空闲时间分析逻辑// 返回所有用户都空闲的时间段return [];}

✅ 任务管理

创建任务

使用方式

# 创建个人任务"创建一个任务:完成产品需求文档,本周五截止"# 创建带负责人的任务"创建任务:UI 设计稿评审,负责人是设计师小李,下周三前完成"# 创建任务清单"创建一个'Q2 产品迭代'清单,包含以下任务:..."

技能实现

module.exports = {name'task-create',asyncexecute({ summary, description, dueDate, members, tasklistGuid }) {try {// 创建任务 - 符合飞书官方 API 格式const task = awaitfeishu_task_task('create', {summary: summary,description: description,due: {timestampnewDate(dueDate).toISOString(),is_all_dayfalse        },members: members || [], // [{ id: 'ou_xxx', role: 'assignee' }]current_user_id'ou_current_user'// 必填:当前用户 ID      });return`✅ 任务已创建\n\n标题:${task.summary}\n截止时间:${formatDate(task.due)}\n负责人:${getAssigneeName(task.members)}\n链接:${task.url}`;    } catch (error) {if (error.code === '99991001') {return'❌ 权限不足,请检查任务权限配置';      }throw error;    }  }};

任务清单管理

使用方式

# 创建清单"创建一个'Q2 产品迭代'任务清单"# 查看清单内任务"显示'Q2 产品迭代'清单里的所有任务"# 添加成员到清单"把张三和李四添加到'Q2 产品迭代'清单"

技能实现

module.exports = {name'tasklist-manage',asyncexecute({ action, name, members }) {try {if (action === 'create') {// 创建任务清单 - 符合飞书官方 API 格式const tasklist = awaitfeishu_task_tasklist('create', {name: name        });return`✅ 任务清单已创建\n\n名称:${tasklist.name}\n链接:${tasklist.url}`;      }if (action === 'tasks') {// 查看清单内任务const tasks = awaitfeishu_task_tasklist('tasks', {tasklist_guidarguments.tasklistGuid        });returnformatTaskList(tasks);      }    } catch (error) {if (error.code === '99991001') {return'❌ 权限不足,无法操作任务清单';      }throw error;    }  }};functionformatTaskList(tasks) {if (tasks.length === 0) {return'📋 暂无任务';  }let result = `📋 共 ${tasks.length} 个任务\n\n`;  tasks.forEach(task => {const status = task.completed ? '✅' : '⏳';    result += `${status}${task.summary}\n`;    result += `  截止:${formatDate(task.due)} | 负责人:${getAssigneeName(task.members)}\n\n`;  });return result;}

👥 联系人管理

搜索同事

使用方式

# 按姓名搜索"帮我找一下张三的联系方式"# 按部门搜索"产品部有哪些人?"# 按手机号/邮箱搜索"查一下 13800138000 是谁"

技能实现

module.exports = {name'contact-search',asyncexecute({ query, department }) {try {// 搜索用户 - 符合飞书官方 API 格式const users = awaitfeishu_search_user({query: query,page_size20      });if (users.length === 0) {return'❌ 未找到匹配的用户';      }returnformatUserList(users);    } catch (error) {if (error.code === '99991001') {return'❌ 权限不足,无法搜索用户';      }throw error;    }  }};functionformatUserList(users) {let result = `👥 找到 ${users.length} 位用户\n\n`;  users.forEach(user => {    result += `📌 ${user.name}\n`;    result += `  部门:${user.department}\n`;    result += `  职位:${user.title}\n`;if (user.email) result += `  邮箱:${user.email}\n`;if (user.mobile) result += `  手机:${user.mobile}\n`;    result += '\n';  });return result;}

获取用户详情

使用方式

# 获取当前用户信息"我是谁?显示我的信息"# 获取指定用户信息"显示张三的详细信息"

技能实现

module.exports = {name'contact-get',asyncexecute({ userId }) {try {// 获取用户信息 - 符合飞书官方 API 格式const user = awaitfeishu_get_user({user_id: userId // 不传则获取当前用户      });return`📌 ${user.name}\n\n` +`部门:${user.department}\n` +`职位:${user.title}\n` +`邮箱:${user.email}\n` +`手机:${user.mobile}\n` +`工号:${user.employee_no}\n`;    } catch (error) {if (error.code === '99991001') {return'❌ 权限不足,无法获取用户信息';      }throw error;    }  }};

✅ 学完这篇你能做什么

学完 Day 15,你将能够:

  • ✅ 日历管理:创建、查询、修改、删除日程,查询团队忙闲,智能安排会议时间
  • ✅ 任务管理:创建个人和团队任务,设置截止时间和负责人,管理任务清单
  • ✅ 联系人管理:搜索同事信息,获取用户详情,快速找到团队成员联系方式
  • ✅ 权限配置:正确配置飞书应用权限,使用完整权限 JSON 批量导入
  • ✅ 安装部署:完成飞书官方插件的安装、授权和验证
  • ✅ 问题排查:使用 /feishu 诊断命令快速定位和解决问题

🔜 下篇预告

Day 16:飞书深度集成(下):多维表格、云文档实战

在下一篇中,我们将学习:

  • 📊 多维表格管理:创建表格、添加记录、批量操作、高级筛选
  • 📄 云文档操作:创建文档、更新内容、插入图片/文件、文档评论
  • 📈 电子表格:读取数据、写入数据、数据分析
  • 🔧 高级配置:流式输出、话题独立上下文、多账号配置
  • 🛠️ 实战案例:客户管理系统、项目跟踪表格、自动会议纪要

敬请期待!🚀


💬 互动环节

本周收获

留言分享你最大的收获!

遇到问题

遇到什么技术难题?大家一起解决!

实战经验

你在飞书集成中遇到过什么有趣场景?如何解决的?

建议反馈

内容难度如何?需要调整什么?


公众号:OpenClaw 研习社系列:OpenClaw 30 天入门到精通作者:OpenClaw 研习社