飞书机器人对接指南
概述
本模块实现了飞书机器人的 HTTP 回调模式对接。飞书机器人收到用户消息后,会将消息 POST 到配置的回调地址,我们处理消息后通过飞书 API 主动发送回复。架构设计
核心组件
FeishuRobotEndpoint- 处理飞书回调的 REST 接口RobotChatService- 统一的机器人聊天服务FeishuChannelConfig- 渠道配置(appId, appSecret, encryptKey)com.lark.oapi.Client- 飞书官方 SDK 客户端(用于发送消息)
回调地址格式
消息处理流程
1. URL 验证
飞书在配置回调地址时会发送验证请求:2. 接收消息事件
飞书发送的消息事件格式(v2.0):3. 发送回复
通过飞书 SDK 调用消息发送 API:与其他平台的差异
| 特性 | 飞书机器人 | 钉钉机器人 | 企业微信机器人 |
|---|---|---|---|
| 请求格式 | 明文/加密 JSON | 明文 JSON | 加密 JSON |
| 响应方式 | 需主动调API发送 | 直接返回 | 直接返回加密消息 |
| SDK 兼容性 | 需手动处理(javax/jakarta) | 无需SDK | 需要SDK |
| 加密配置 | 可选 | 无 | 必须 |
配置说明
在 LangChat 管理后台创建 API 密钥时,选择”飞书”渠道,配置以下信息:| 配置项 | 必填 | 说明 | 获取位置 |
|---|---|---|---|
| appId | 是 | 应用AppId | 飞书开放平台 → 应用详情 → 凭证与基础信息 |
| appSecret | 是 | 应用AppSecret | 飞书开放平台 → 应用详情 → 凭证与基础信息 |
| encryptKey | 否 | 加密密钥 | 飞书开放平台 → 事件订阅 → 加密策略 |
飞书后台配置
步骤一:创建应用
- 登录 飞书开放平台
- 创建企业自建应用
- 获取 App ID 和 App Secret
步骤二:添加机器人能力
- 进入应用详情 → 添加应用能力
- 选择「机器人」能力
- 配置机器人名称和头像
步骤三:配置事件订阅
- 进入「事件订阅」配置
- 请求地址填写:
https://你的域名/robot/feishu/callback/{apiKey} - 点击验证(确保服务已部署)
- 添加事件:
接收消息 im.message.receive_v1
步骤四:配置权限
在「权限管理」中开通以下权限:im:message- 获取与发送单聊、群组消息im:message:send_as_bot- 以应用的身份发消息
步骤五:发布应用
- 创建应用版本
- 申请上线
- 管理员审批通过后生效
加密配置(可选)
如果在飞书后台配置了 Encrypt Key:- 飞书会将所有回调内容加密后发送
- 请求体格式变为:
{"encrypt": "加密内容"} - 需要在 LangChat 渠道配置中填写相同的 encryptKey
- 系统会自动解密消息内容
注意事项
3秒超时限制
飞书要求在 3 秒内响应回调请求,否则会触发重试。因此:- 接口立即返回
{"code":0,"msg":"ok"} - AI 处理和消息发送在异步线程中执行
SDK 兼容性说明
飞书官方的oapi-sdk-servlet-ext 使用 javax.servlet 包,与 Spring Boot 3 的 jakarta.servlet 不兼容。因此本模块:
- 仅使用
oapi-sdk核心包 - 手动处理请求解析和消息解密
- 使用 SDK 的 Client 发送消息
消息去重
飞书可能会重复推送同一条消息(网络问题或超时重试),建议:- 根据
message_id进行去重 - 避免重复处理和回复
支持的消息类型
当前支持的消息类型:text- 文本消息
image- 图片消息file- 文件消息audio- 语音消息interactive- 卡片消息

