飞书机器人配置与实现
1 引入
我经常需要让程序与通讯工具联动。例如:单向提醒:利用程序盯盘,并通过飞书将买卖信号或涨跌提醒发送到手机,实现程序的单向通知。双向交互:AI 机器人流行之后,这种需求明显多了——我在本地跑一个服务,通过飞书和它对话,下指令、拿结果。
一两年前不少人用微信做过类似的事,但由于并非官方接口,封号风险极高;而飞书、钉钉提供了完整、合规的开放平台,适合长期使用。本文记录一次完整的原理和配置流程。
2 原理
飞书机器人的两种通讯模式,其核心原理与配置复杂度有明显差异:
- 单向通讯:类似于“广播”。只需在飞书群中创建一个自定义机器人,获取其专属的Webhook URL。任何程序只需向该URL发送一个HTTP POST请求,即可将消息推送到群聊。身份验证已内置于URL中,实现极为简单。
- 双向通讯:则类似于“客服对话”。它要求开发者自己部署一个具有公网访问能力的后端服务。该服务启动后,需在飞书开放平台进行配置,完成“双向绑定”。当用户在飞书客户端中与机器人对话时,消息会经由飞书服务器转发到你的后端服务,服务处理后再将回复传回飞书。整个过程涉及服务部署、公网暴露、权限配置与事件订阅,更为复杂。

3 单向通讯:快速实现消息推送
3.1 配置步骤
在电脑端飞书中操作:
- 创建群组:新建一个用于接收消息的群组。
- 添加机器人:进入群设置 -> 群机器人 -> 添加机器人 -> 自定义机器人。
- 获取密钥:为机器人命名后,系统将提供一个 Webhook URL,用于发消息。
3.2 调用方式
获取URL后,几乎可以用任何能发送HTTP请求的工具或编程语言来发送消息。以下是一个 curl 命令示例:
1 | curl -X POST -H "Content-Type: application/json" \ |
4 双向通讯:搭建可交互的机器人
双向通讯的搭建是一个系统工程,至少需要按顺序完成以下四个核心环节:
4.1 第一步:在飞书开放平台创建应用
在飞书官方注册你的机器人身份并获取密钥。
- 访问 飞书开放平台,扫码登录。
- 点击创建“企业自建应用”,填写名称和描述。
- 添加应用能力 ->机器人 ->添加。
- 获取凭证:在应用配置中,务必记录好以下三个核心凭证,后续配置本地服务时需要填入:
App ID与App Secret:应用的身份标识。(发新版本时 appid/app secret 可能变化,需要在配置文件.env 中更新)Verification Token:用于验证事件请求的合法性(在“事件与回调”页面获取)。
- 配置权限:在“权限管理”中,为机器人开通至少以下权限:
im:message(获取用户发给机器人的单聊消息)im:message.p2p_msg(发送单聊消息)
- 创建测试环境:在“测试企业和人员”中创建一个测试企业,并将你的应用关联进去,后续测试均在此环境中进行。
4.2 第二步:创建并启动本地服务
需要一个后端服务来处理飞书转发的消息。飞书官方提供了Python的示例代码(200多行代码,基于Flask实现),可以快速启动。
1 | # 1. 克隆示例代码 |
4.3 第三步:将本地服务暴露至公网
飞书的服务器需要能访问到你刚启动的本地服务,因此必须为其提供一个公网可访问的地址。开发调试阶段,推荐使用 ngrok 工具进行内网穿透。
1 | # 1. 安装 ngrok (以Debian/Ubuntu为例) |
命令执行成功后,ngrok 会生成一个临时的公网URL(如 https://xxxx.ngrok-free.dev),请复制此URL。
4.4 第四步:在飞书平台完成最终配置
这是将前几步串联起来的关键环节,目的是告诉飞书“将消息发送到哪里”。
- 回到飞书开放平台,进入应用配置页面。
- 找到 “事件与回调” 设置项,配置请求地址:在“事件配置”中,将 “请求地址” 填写为上一步
ngrok生成的公网URL(注意:配置时你的本地服务server.py必须正在运行)。** - 添加订阅事件:在“已添加事件”区域,点击“添加事件”,搜索并添加 “接收消息” 事件。
- 保存所有配置。如果配置成功,飞书服务器会向你的服务地址发送一个验证请求,示例代码会自动处理此验证。
4.5 测试与使用
完成以上所有步骤后,在飞书客户端中搜索你的机器人名称,即可开始对话。你发送的消息会经过:飞书客户端 -> 飞书服务器 -> ngrok公网URL -> 你的本地服务,然后你的服务处理完再原路返回回复。
5 参考与资源
5.1 飞书官方文档
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
