飞书通道配置
配置飞书企业自建应用,接入 OpenVort AI 助手,支持流式卡片输出。
飞书通道配置
飞书推荐使用 WebSocket 长连接模式,无需公网 IP,支持流式卡片输出。
模式说明公网 IP推荐WebSocket 长连接官方 SDK 长连接不需要推荐Event SubscriptionHTTP 事件回调需要备选
配置步骤
1. 创建企业自建应用
- 登录 飞书开放平台
- 点击「创建企业自建应用」
- 填写应用名称和描述
2. 添加机器人能力
- 在应用详情页,点击左侧「添加应用能力」
- 选择添加「机器人」能力
- 添加后左侧菜单会出现「机器人」入口
这一步容易遗漏。如果左侧菜单「应用能力」下没有「机器人」条目,说明还没有添加。

3. 获取应用凭证
在应用详情页 ->「凭证与基础信息」中获取:
- App ID — 应用唯一标识(以
cli_开头) - App Secret — 应用密钥
4. 开通 API 权限
飞书应用需要手动开通 API 权限。在「权限管理」页面,使用批量导入功能一键开通所有所需权限:
- 点击「权限管理」->「批量导入/导出」
- 切换到「导入」标签页
- 粘贴以下 JSON 并确认:
{
"scopes": {
"tenant": [
"im:message",
"im:message:send_as_bot",
"im:message.p2p_msg:readonly",
"im:message.group_at_msg:readonly",
"im:resource",
"cardkit:card:write",
"contact:contact.base:readonly",
"contact:user.base:readonly",
"contact:user.employee_id:readonly",
"contact:user.email:readonly",
"contact:user.phone:readonly",
"contact:department.base:readonly"
]
}
}
权限说明:
权限用途im:message接收用户消息(事件订阅)im:message:send_as_bot以机器人身份发送消息im:resource下载消息中的图片、语音、文件cardkit:card:write流式卡片的创建和更新contact:contact:readonly_as_app以应用身份读取通讯录contact:user.base:readonly获取用户基本信息contact:user.employee_id:readonly获取用户员工 IDcontact:user.email:readonly获取用户邮箱contact:user.phone:readonly获取用户手机号contact:department.base:readonly获取部门信息

5. 订阅消息事件
这一步决定了用户能否在飞书中给机器人发消息。如果跳过或配置错误,机器人对话窗口将没有消息输入框,用户无法发送消息。
- 进入应用详情页,点击左侧「事件与回调」
- 在页面顶部选择连接方式:
- 长连接方式(推荐):切换为「使用长连接接收事件」,无需填写请求地址
- HTTP 回调方式:填写请求地址
https://your-domain/api/channels/feishu/event,需要公网可访问
- 在「事件配置」中,点击「添加事件」
- 搜索并添加
im.message.receive_v1(接收消息 v2.0)
必须订阅
im.message.receive_v1事件并选择连接方式,否则飞书不会在机器人对话窗口显示消息输入框。
6. 发布应用
飞书应用的所有配置变更(权限、能力、事件订阅)都需要发布新版本后才生效:
- 进入「版本管理与发布」
- 点击「创建版本」
- 填写版本号和更新说明
- 设置可用范围(选择哪些员工可以使用此应用)
- 提交发布(如需审批,等待管理员审批通过)
每次修改权限、能力或事件订阅后都需要重新发布,否则变更不会生效。
7. 在 OpenVort 中配置
登录 OpenVort Web 后台,进入「通道管理」,点击飞书的「配置」按钮:
字段值必填App ID凭证与基础信息中获取是App Secret凭证与基础信息中获取是Verification Token事件订阅验证 Token否(长连接模式不需要)Encrypt Key事件订阅加密 Key否(长连接模式不需要)API 地址飞书 API 地址否(默认无需修改)
环境变量方式:
OPENVORT_FEISHU_APP_ID=cli_a945d16debb65cd1
OPENVORT_FEISHU_APP_SECRET=your_app_secret
保存后点击「测试连接」,显示「连接成功,已获取 tenant_access_token」即配置完成。
8. 与机器人对话
配置完成并发布应用后,企业成员可以在飞书中找到机器人并发起对话:
- 在飞书搜索栏中搜索机器人名称(如「OpenVort」)
- 在搜索结果中找到对应的机器人,点击进入对话
- 对话窗口底部会显示消息输入框,输入文字即可与 AI 对话
也可以将机器人添加到群聊中使用:
- 在群聊设置中点击「机器人」->「添加机器人」
- 搜索并添加机器人
- 群聊中 @ 机器人即可触发 AI 回复
OpenVort 服务需要以正式模式启动(不带
--dev参数),飞书 WebSocket 长连接才会建立,机器人才能接收和回复用户消息。
Event Subscription 模式(备选)
如果无法使用 WebSocket 长连接,可以使用 HTTP 事件回调模式。此模式需要公网可访问的地址。
配置步骤
- 在飞书开放平台「事件与回调」中配置请求地址:
https://your-domain/api/channels/feishu/event - 系统会发送验证请求(
url_verification),确认 URL 可达 - 获取 Verification Token 和 Encrypt Key
- 在 OpenVort 中填入这两个值
特色功能
流式卡片输出
飞书支持流式卡片,AI 回复时用户可以实时看到内容逐字输出。此功能基于飞书 CardKit API,无需额外配置,开通 cardkit:card:write 权限后自动启用。
流式卡片使用飞书 2.0 JSON 结构,支持 Markdown 渲染,效果类似 ChatGPT 的打字机效果。
语音消息
支持接收飞书语音消息,通过 ASR 自动转写为文字后交给 AI 处理。群聊中的语音消息无需 @ 机器人即可触发处理。
通讯录同步
配置完成后,可在 OpenVort 的「通讯录」页面一键同步飞书组织架构和成员信息,包括:
- 部门层级结构
- 成员基本信息(姓名、头像、职位)
- 邮箱和手机号
- 员工 ID
富文本消息
支持接收和发送多种消息类型:
- 文本消息
- 图片消息
- 富文本消息(Post)
- Markdown 卡片
- 语音消息
常见问题
Q: 机器人对话窗口没有消息输入框,无法发消息?
这是最常见的问题,通常是事件订阅未正确配置。按以下顺序排查:
- 检查事件订阅:进入飞书开放平台 -> 应用详情 ->「事件与回调」->「事件配置」,确认已添加
im.message.receive_v1事件 - 检查连接方式:确认「事件与回调」页面顶部的连接方式为「使用长连接接收事件」(WebSocket 模式)
- 检查发布状态:添加事件订阅后必须重新发布应用版本,否则不会生效
- 检查可用范围:确认当前用户在应用的可用范围内(发布时设置的员工范围)
Q: 能收到机器人发的消息,但给机器人发消息没有回复?
- 确认 OpenVort 以正式模式启动(不带
--dev参数),开发模式下不会启动 IM 通道 - 查看 OpenVort 后台日志,确认是否有「飞书 WebSocket 长连接已启动」的日志
- 如使用 Event Subscription 模式,确认回调地址公网可访问
Q: 测试连接报「获取 tenant_access_token 失败」?
- 确认 App ID 和 App Secret 填写正确,注意不要有多余空格
- 检查网络连通性(需能访问
open.feishu.cn) - 确认应用未被禁用
Q: 发送消息报「Bot ability is not activated」?
应用没有添加机器人能力,或添加后未发布:
- 确认左侧菜单「应用能力」下有「机器人」条目
- 如果没有,点击「添加应用能力」添加「机器人」
- 添加后必须重新发布应用
Q: 通讯录同步报权限错误?
确认已开通以下权限并发布了新版本:
contact:contact:readonly_as_appcontact:user.base:readonlycontact:department.base:readonly
Q: 群聊中机器人不回复?
- 确认已将机器人添加到群聊中
- 群聊中需要 @ 机器人才能触发回复
- 语音消息是例外,群聊中无需 @ 即可触发
Q: 修改了权限/能力但没生效?
飞书的所有配置变更都需要发布新版本。进入「版本管理与发布」,创建并发布新版本。