【OpenClaw教程】我「连通飞书」后也没见有心跳啊
一份小白也能上手的龙虾安装教程

一、前言
上一篇已经完成了 OpenClaw 的安装,本篇继续写如何连通飞书。因为本篇与上一篇是一起发的,所以没法加链接,在后台私信:龙虾,可以获得全套教程目录。
二、连通飞书
1. 创建飞书机器人并配置权限
打开 https://open.feishu.cn/app?lang=zh-CN ,登录你的飞书账号。下面的操作没什么难度,大家跟着图片和说明一步步操作就好。
点击“创建企业自建应用”。
填写应用名称和描述,点击右下角创建。
点击左侧菜单中的“权限管理”,然后点击右侧界面中的“批量导入/导出权限”。
复制下面的文本,粘贴到上图的文本框中,覆盖掉之前的内容,然后点右下角“下一步,确认新增权限”。我的飞书就我自己用,所以我把所有权限都加上了,你的飞书如果是组织一员,你可以在上一步中点“开通权限”,手动挑选自己需要的权限。
{
"scopes": {
"tenant": [
"base:app:copy",
"base:app:create",
"base:app:read",
"base:app:update",
"base:collaborator:create",
"base:collaborator:delete",
"base:collaborator:read",
"base:dashboard:copy",
"base:dashboard:read",
"base:field:create",
"base:field:delete",
"base:field:read",
"base:field:update",
"base:form:read",
"base:form:update",
"base:record:create",
"base:record:delete",
"base:record:read",
"base:record:retrieve",
"base:record:update",
"base:role:create",
"base:role:delete",
"base:role:read",
"base:role:update",
"base:table:create",
"base:table:delete",
"base:table:read",
"base:table:update",
"base:view:read",
"base:view:write_only",
"bitable:app",
"bitable:app:readonly",
"board:whiteboard:node:create",
"board:whiteboard:node:delete",
"board:whiteboard:node:read",
"board:whiteboard:node:update",
"contact:contact.base:readonly",
"contact:user.base:readonly",
"contact:user.employee_id:readonly",
"contact:user.employee_number:read",
"contact:user.id:readonly",
"docs:doc",
"docs:doc:readonly",
"docs:document.comment:create",
"docs:document.comment:read",
"docs:document.comment:update",
"docs:document.comment:write_only",
"docs:document.content:read",
"docs:document.media:download",
"docs:document.media:upload",
"docs:document.subscription",
"docs:document.subscription:read",
"docs:document:copy",
"docs:document:export",
"docs:document:import",
"docs:event.document_deleted:read",
"docs:event.document_edited:read",
"docs:event.document_opened:read",
"docs:event:subscribe",
"docs:permission.member",
"docs:permission.member:auth",
"docs:permission.member:create",
"docs:permission.member:delete",
"docs:permission.member:readonly",
"docs:permission.member:retrieve",
"docs:permission.member:transfer",
"docs:permission.member:update",
"docs:permission.setting",
"docs:permission.setting:read",
"docs:permission.setting:readonly",
"docs:permission.setting:write_only",
"docx:document",
"docx:document.block:convert",
"docx:document:create",
"docx:document:readonly",
"drive:drive",
"drive:drive.metadata:readonly",
"drive:drive.search:readonly",
"drive:drive:readonly",
"drive:drive:version",
"drive:drive:version:readonly",
"drive:export:readonly",
"drive:file",
"drive:file.like:readonly",
"drive:file.meta.sec_label.read_only",
"drive:file:download",
"drive:file:readonly",
"drive:file:upload",
"drive:file:view_record:readonly",
"event:ip_list",
"im:app_feed_card:write",
"im:biz_entity_tag_relation:read",
"im:biz_entity_tag_relation:write",
"im:chat",
"im:chat.access_event.bot_p2p_chat:read",
"im:chat.announcement:read",
"im:chat.announcement:write_only",
"im:chat.chat_pins:read",
"im:chat.chat_pins:write_only",
"im:chat.collab_plugins:read",
"im:chat.collab_plugins:write_only",
"im:chat.managers:write_only",
"im:chat.members:bot_access",
"im:chat.members:read",
"im:chat.members:write_only",
"im:chat.menu_tree:read",
"im:chat.menu_tree:write_only",
"im:chat.moderation:read",
"im:chat.tabs:read",
"im:chat.tabs:write_only",
"im:chat.top_notice:write_only",
"im:chat.widgets:read",
"im:chat.widgets:write_only",
"im:chat:create",
"im:chat:delete",
"im:chat:moderation:write_only",
"im:chat:operate_as_owner",
"im:chat:read",
"im:chat:readonly",
"im:chat:update",
"im:datasync.feed_card.time_sensitive:write",
"im:message",
"im:message.group_at_msg:readonly",
"im:message.group_msg",
"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.urgent",
"im:message.urgent.status:write",
"im:message.urgent:phone",
"im:message.urgent:sms",
"im:message:readonly",
"im:message:recall",
"im:message:send_as_bot",
"im:message:send_multi_depts",
"im:message:send_multi_users",
"im:message:send_sys_msg",
"im:message:update",
"im:resource",
"im:tag:read",
"im:tag:write",
"im:url_preview.update",
"im:user_agent:read",
"sheets:spreadsheet",
"sheets:spreadsheet.meta:read",
"sheets:spreadsheet.meta:write_only",
"sheets:spreadsheet:create",
"sheets:spreadsheet:read",
"sheets:spreadsheet:readonly",
"sheets:spreadsheet:write_only",
"space:document.event:read",
"space:document:delete",
"space:document:move",
"space:document:retrieve",
"space:document:shortcut",
"space:folder:create",
"wiki:member:create",
"wiki:member:retrieve",
"wiki:member:update",
"wiki:node:copy",
"wiki:node:create",
"wiki:node:move",
"wiki:node:read",
"wiki:node:retrieve",
"wiki:node:update",
"wiki:setting:read",
"wiki:setting:write_only",
"wiki:space:read",
"wiki:space:retrieve",
"wiki:space:write_only",
"wiki:wiki",
"wiki:wiki:readonly"
],
"user": []
}
}
然后,点击右下角“申请开通”。
这里会提示你开启机器人能力,点“确认开启”。
右侧会弹出弹窗,点击“确认”。然后点击上方橙色提示框中的“创建版本”。
填写应用版本号和更新说明,点击最下方的“保存”。
提示框点“确认发布”。到这里第一阶段就配置完了。
2. 连通飞书
然后回到终端,通过 OpenClaw 连接飞书。在终端中执行如下命令:
openclaw config
进入了配置页面后,选择 Local (this machine)。
选择 Channels,也就是配置即时通讯工具。
再选择 Configure/link。
这里选择飞书。
连接飞书需要安装插件,第一个选项就是从网上下载安装,第二个选项就是直接使用安装 OpenClaw 时自带的插件。这里建议选择第一个,如果第一个无法安装成功,也可以选第二个。
这里选第一个,输入飞书的凭证信息。
回到刚才配置飞书的网页,点击左侧菜单的“凭证与基础信息”。
从网页中分别复制 App Secret 和 App ID,然后粘贴到终端中。注意顺序。
选择 WebSocket,这是一种长链接方案,让你的 OpenClaw 和飞书之间始终保持着一个消息通道。
选择第一项,这是国内的服务域名。
这里是 OpenClaw 如何响应群聊消息的配置,未来单独再讲,先选第一个。
这里直接回车就行。
回到了之前的菜单,选最后一个 Finished。
这里配置的是私信的访问策略,选择 No,也就是采用默认的配对策略。
选择最后一个 Continue。
至此完成了 OpenClaw 与飞书的连接。
3. 添加事件配置
最后还有一步,就是编辑飞书的事件配置,这一步的前提就是刚刚操作的,让 OpenClaw 连接上飞书。继续回到刚才配置飞书的页面。
点击左侧菜单“事件与回调”,点击右侧时间配置中订阅方式后面的铅笔图标。
点击下方“保存”。
点击右侧出现的“添加事件”。如果点保存时,上方有错误提示,说明你在之前的步骤中,OpenClaw 没能成功连接到飞书,你可以重新进行上一步连通飞书。
这里点击左侧“消息与群组”,然后在右侧中勾选需要的事件,理论上只要选一个“接收消息”就能用了,不过我这里就都选了,没准以后用得上。
因为做了修改,所以要再发布一版,操作跟之前发布时一样。点击上方“创建版本”,填写应用版本号和更新说明,然后点击下方“保存”。
点击“确认发布”。
然后我们打开飞书,手机端或电脑端都可以。就会看到“开发者小助手”给我们发来了发布成功的通知。点击“打开应用”。
就打开了我们创建的机器人「采风」了,我们跟 OpenClaw 打个招呼,发现它返回了一个配对码,这是因为我们前面设置的私信策略就是配对,这是为了保障安全,只有配过对的机器人,才能和 OpenClaw 进行对话。
我们复制最后一行,这是一个配对命令,粘贴到终端中执行。
执行完后,我们再回到「采风」机器人中,跟 OpenClaw 打个招呼,便可以进行正常对话了。至此,OpenClaw 的安装和飞书的配置就全部完成了。
不过,虽然你现在可以跟 OpenClaw 对话了,但想要发挥它真正的实力,还有很多工作要做,前面的只不过是万里长征第一步的刚刚开始转移重心。
4. 心跳问题
我最开始看到有网友说,飞书的接口调用额度被 OpenClaw 的心跳请求耗光了,我就去看了我的飞书日志,结果一个心跳请求都没有。我还在想难道他们没用长链接的方式吗,因为理论上长链接的心跳是在连接内部的,不会额外调接口,我还以为这是个别现象,也没在意。
结果过了一段时间发现好多人都在说这个问题,但竟然没人解答应该怎么配置长链接,按理说不应该只有我自己配置对了啊。于是我让 AI 分析了一下源码,它也说是因为他们配置了 Webhook 的方式才导致了频繁的心跳。但我感觉实际情况应该不是,不然不可能没人发现。
然后飞书官方调大了接口的限额,OpenClaw 最近版本也说修复了这个问题,所以还是没搞清是怎么回事。反正我的安装配置方法,在 OpenClaw 2月份的版本中是从来没出现过这个频繁调接口问题的。
要是还能有些空闲,我觉得可以好好分析下这个问题,挺有意思的。
三、后续
「安装」与「连通飞书」这两篇,我尽量写得详细一些,希望对不太熟悉技术的小伙伴也能有帮助。但因为我自己是内行,所以很多一般性问题我是看不见的,或者说还没等我发现就下意识解决了。因此如果你有什么疑问欢迎留言交流。
后续我会把养龙虾的经验,从基础知识到实际应用都尽量整理分享出来,希望能帮到更多人。我会尽量写得浅显一些,但毕竟是个很前卫的软件,有些能力摆脱不了技术细节,所以也请朋友们尽情折腾起来,趁此良机多学多用。