跳到正文
AskTable

文档反馈

当前页面部署消息网关/deploy/feishu-gateway

0 / 5,000

反馈将发送给维护团队。

前往控制台
前往控制台

可选组件

部署消息网关

部署飞书与 Slack 共用的消息网关,检查实例心跳、频道连接和实际回复。

消息网关维持飞书和 Slack 的平台连接,并在平台与 AskTable 后端之间转换消息。镜像与服务名仍使用 asktable-feishu-gateway,实际由同一个服务承载两个平台。它不包含智能体逻辑,通过 Redis 与主服务通信;私有部署需要单独添加,未使用消息频道时无需部署。

主服务与网关必须使用配套发布的版本。频道协议更新时,两者要同时升级,不能仅更新其中一个。

前置条件

项目要求
基础部署已按 私有部署(Docker) 跑起来,asktable-redis 在运行
平台应用飞书准备 App ID、App Secret,并启用长连接与接收消息事件;Slack 准备 Bot Token、App Token,并启用 Socket Mode
数据项目里已有可用的数据源和数据智能体
授权范围已确认这个智能体可以向哪些成员或部门开放

平台应用的创建、权限申请与发布步骤见接入飞书机器人或接入 Slack 机器人。

操作步骤

加网关服务

在 docker-compose.yaml 里加上这个服务:

services:
  # 消息网关:飞书与 Slack 共用
  asktable-feishu-gateway:
    image: registry.cn-shanghai.aliyuncs.com/datamini/asktable-feishu-gateway:latest
    container_name: asktable-feishu-gateway
    restart: unless-stopped
    depends_on:
      - asktable-redis
    environment:
      REDIS_URL: redis://asktable-redis:6379

它和主服务共用同一个 asktable-redis,不要给它加 ports。

启动

docker compose up -d asktable-feishu-gateway

确认网关心跳写进了 Redis

docker compose exec asktable-redis redis-cli hgetall at:channel:health

出现 gateway:<实例 ID> 字段,且值里的 status 为 ok、时间戳持续更新,说明网关进程正在上报心跳。心跳每 30 秒更新一次,服务端不采用超过 75 秒的心跳;Redis 中留下旧字段也不能证明实例仍在线。它不能证明具体频道已连接。

选择平台并配置频道

打开目标数据智能体 →「频道」→「平台」,选择飞书或 Slack。首次配置需要填写对应凭证并保存,成功后才启用;取消会保留原平台。

平台凭证
飞书App ID、App Secret 必填;Encrypt Key、Verification Token 按应用配置选填
SlackBot Token(xoxb-)和 App Token(xapp-)必填

查看「连接状态」,再发送测试问题。状态每 5 秒刷新;「最近消息」的「详情」分别显示处理与回复投递结果。

用真实问题验证

由一个在授权范围内的成员私聊机器人提问,再把机器人加入测试群或频道并 @ 提问。确认有正确回复,且结果符合该成员的数据权限。实例心跳、连接成功、分析完成和回复投递成功需要分别判断。

关键约束

项目值或默认在哪里改
通信方式只走 Redis,网关不监听宿主机端口asktable-feishu-gateway 不加 ports
REDIS_URLredis://asktable-redis:6379,必须和主服务一致网关的 environment
实例心跳每 30 秒向 at:channel:health 写入 gateway:<实例 ID>只用于判断网关实例是否活跃
单频道状态<平台>:channel:<频道 ID>:<实例 ID>,需对应实例心跳有效且配置版本匹配智能体 →「频道」→「连接状态」
频道凭证存在 AskTable 后端,由后端通过 Redis 推给网关;网关环境变量里不放 App ID智能体 →「频道」→「凭证配置」
渠道偏好默认空,最多 1024 个字符智能体 →「频道」→「通用配置」
深度推理默认关闭,即用快速模式智能体 →「频道」→「通用配置」
会话延续私聊和顶层问答按同一人复用,连续 24 小时没有新消息后重建;话题会话不按该窗口过期同一话题只接受最初提问者,群内追问仍需 @
镜像版本示例使用 latest;正式部署使用与主服务配套的网关镜像docker-compose.yaml 的 image,主服务和网关同步升级
与定时报告的关系频道是“用户提问、机器人回答”的双向对话;定时推送是另一套,见 定时分析报告—

出问题怎么判断

现象判定条件处理
实例心跳没有更新gateway:<实例 ID> 不存在或时间戳停止更新检查容器状态、网关日志和 Redis 连通性;旧字段残留不代表网关仍在线
心跳正常但频道未连接该平台没有生效,或单频道状态缺失、凭证无效在智能体「频道」检查当前平台、连接说明与凭据;心跳正常不等于频道已连接
网关启动即退出日志显示 Redis 连接被拒核对 REDIS_URL,确认 asktable-redis 正常运行
已连接但最近消息没更新平台没有投递本次问题核对事件订阅、应用发布、机器人是否在群内或频道内,以及问题是否 @;先用私聊测试
消息处理失败「最近消息」→「详情」中的处理状态失败核对数据源和人员授权,再按具体错误查看主服务日志
回复投递失败分析已完成,但回复状态失败核对机器人发送权限和目标位置;查看网关日志里的平台错误
用户提问被拒绝或进入待审批白名单开启,人员绑定或智能体授权缺失按飞书用户权限或 Slack 指南处理
停用后收不到新消息当前平台选择「不启用」重新选择已配置的平台;停用保留凭证和配置

下一步