Article
飞书机器人:在 n8n 中收发飞书消息
前篇文章本地部署n8n,用Google 表格模板简单体验了,还在旧手机上手机部署n8n。软件部署安装是第一步,后面还要看怎么把好工具利用起来。
国内这一块很多文章都是去连飞书的文章,两种用法:使用机器人来收发消息,作为消息系统;第二种,使用多维表格存取数据,作为数据库。这里主要关注 n8n 收发飞书消息。
安装飞书
电脑端飞书才能增加 webhook 的机器人,所以我们先在电脑上安装飞书。
飞书有两类数据接入机器人:先在 n8n 配置简单的 HTTP Request 通过群自定义机器人 推送消息,再配置飞书节点通过应用机器人 接收和发送消息。
自定义机器人:webhook群消息推送
它可以用来发送告警、通知等信息到飞书群。在我们的群里面添加自定义机器人,获取得到 Webhook 地址。



回到 n8n 流程编辑器,添加 HTTP Request 节点。
[1] URL 填 webhook 机器人的地址,[2] 请求 Method 为 POST,[3] 增加请求头内容格式Content-Type: application/json,[4] 内容发送的一个简单文本的json。

更丰富的消息格式可以查看官网文档的自定义机器人使用指南,可以直接点官网右下角咨询按钮,让它“打开开发文档的自定义机器人”。
实现一个小功能:获取 WIFI 的公网 IP
原来在路由器 padavan 的系统管理的服务的计划任务中每天8点发送 公网IP 到钉钉群。现在用 n8n 来实现发送到飞书群,并且只有在 ip 发生变化时才发送。

实现起来还是很简单的,把原来脚本代码拆解成不同的节点来实现。
在内置的 Data tables 数据库的加持之下,很简单就实现了数据的存储和查询。
群自定义机器人是连接飞书最简单的方式,把发消息给飞书服务器特定地址就行了。
应用机器人:交互问答
但如果要用飞书中复杂一些的能力,如接收即时消息,就需要安装 n8n 社区飞书节点。
1、n8n 的飞书节点插件
飞书社区节点有两个实现 n8n-nodes-feishu-lite 和 n8n-nodes-feishu-lark,后者 lark 是在 lite 基础上二次开发出来的,文档更加完善,错误提示更加详细和准确,更便于程序员自己折腾。
对比两个插件,节点新增记录的界面:

n8n-nodes-feishu-lite 新增记录

n8n-nodes-feishu-lark 新增记录
一眼就看出来两者的区别,就是在中间下方的橙色文档链接【Open official document | 浏览官方文档】,这是打动我选择它的最重要的一点,它让我少走很多弯路,是遇到问题时的黑夜里的那一抹光。我猜,这应该也是作者体验了痛之后,痛定思痛,下定决心去自己弄一个原因之一吧。
如果你也爱自己折腾,推荐使用 n8n-nodes-feishu-lark。
点击 n8n 左下角的头像,选择弹出菜单的 Settings,然后点击 Comminity Nodes,安装 n8n-nodes-feishu-lark 飞书节点。

在流程编辑器,点击加上,输入 lark 查询添加飞书节点插件。


2、新增应用,以及应用机器人
应用机器人 相当于飞书的普通用户了,可以用接收 消息,发送 消息。而 webhook 的机器人则更像一个推送的接口,只能发送数据。
增加应用机器人,需要先创建一个应用,然后在里面添加的机器人。
先查看文档【开发一个自动回复机器】,了解添加应用机器涉及的基本步骤。https://open.feishu.cn/document/develop-an-echo-bot/introduction?from=banner
1)创建应用
从飞书管理后台的应用管理,点击创建应用,进入开发者后台的企业自建应用,新建一个应用。

创建成功之后,我们就拿到了访问最重要的应用凭证:App Id和App Secret。

2)添加应用能力:机器人
添加机器人,并进行显示名称的设置。

配置事件订阅方式为长连接,并添加订阅接收信息 的事件类型。


还需要给应用机器人增加相应的 im 权限。
-
读取用户发给机器人的单聊消息(im:message.p2p_msg:readonly)
-
以应用的身份发消息(im:message:send_as_bot)
-
接收群聊中@机器人消息事件(im:message.group_at_msg:readonly)

3)发布上线
修改的内容需要发布版本后才能被使用到。
点击应用标题条上的“创建版本”按钮,填写版本和描述,然后提交,确认发布上线。

创建好以后,在飞书中就能查找打开 测试n8n 机器人了。

3、n8n中使用应用机器人
1)配置飞书应用凭证,连接飞书应用


填写飞书应用时获取到的 App Id 和 App Secret 凭证信息。

2)接收机器人发送的即时消息
添加飞书 Lark 接收消息节点(On receive message),触发默认配置就行。

启动工作流测试,跟飞书服务器建立长连接(作者说 https://www.bilibili.com/video/BV1Zos1zME16/?share\_source=copy\_web&vd\_source=f135fe5d89dc790840faccfb878f5f62&t=131 要先启动工作流,然后配置机器人订阅时,反向连接成功了,订阅配置才会成功。我这边实际配置好后再启动工作流也是可以的)。
在飞书中,给应用机器人发送信息,就能在 n8n 接收信息节点(On receive message)收到飞书的消息了。
3)回复消息到机器人
n8n 监听收到飞书应用机器人发送的消息后,经过业务逻辑处理,就可以把要回复的消息发回给用户。
这里我们需要使用发送消息(Send Message)。还是用上面的获取公网IP 的事情,n8n 收到飞书应用机器人的消息后,流程启动,然后获取公网IP,最后把公网IP地址发回给飞书应用机器人,这就是实现了一个简单消息的收发的闭环。

发送消息(Send Message)节点具体配置如下,主要注意配置接受者 ID。

测试一下:

整个流程还是很容易理解的,操作起来也不是很难。
除了权限、发布这些新的概念和步骤,需要特别的注意一下之外,我们就很顺利的完成了使用 n8n 对接飞书的消息功能。
小结
n8n结合IM消息系统,就相当于有了电脑有了外设(输入输出)。
本文简单的介绍了飞书的两类机器人,让 n8n 和人连接了起来。一台机器除了外设,还需要有存储,下一篇我们把飞书作为数据库来存取我们的数据。
Related