实践手册:将飞书接入到DTS RAGFlow知识库

本文为您介绍如何将飞书的数据传输到数据传输服务DTS(Data Transmission Service)的RAGFlow知识库。

前提条件

已在DTS创建RAGFlow知识库设置IP白名单

背景信息

支持的数据类型

DTS RAGFlow支持接入飞书中的云文档、电子表格、多维表格、知识库。

访问飞书的方式

当前支持使用应用身份访问凭证(tenant_access_token)和用户访问凭证(user_access_token),访问飞书的数据。

方式

权限类型

优点

缺点

tenant_access_token(推荐)

应用身份

  • 支持断点续传。

  • 对于单个文件夹或知识库的传输,只需进行一次配置即可。

授权时的操作较多,需要额外配置云空间和知识库的访问权限。

user_access_token

用户身份

授权时的操作较少。具有所有文件夹的访问权限,无需额外配置云空间和知识库的访问权限。

  • 每次运行KBSync程序时,都需要获取(或重新获取)飞书的授权码。

  • 获取的飞书授权码有过期时间限制,过期后需要重新获取。

准备工作

  1. 登录飞书开放平台,并进入开发者后台

  2. 创建应用

    您可以单击创建企业自建应用,配置名称应用描述等相关信息,再单击创建

    image

  3. 单击进入该应用的卡片,进入应用编辑页面。

    默认进入基础信息 > 凭证与基础信息面页。

  4. 凭证与基础信息页面的应用凭证区域,记录App IDApp Secret

操作步骤

说明

关于飞书的详细操作,请参见飞书官方文档(帮助中心开发文档)。

步骤一:配置访问权限

使用tenant_access_token

  1. 登录飞书开放平台,并进入开发者后台

  2. 单击准备工作中创建的应用。

  3. 添加机器人并发布应用。

    1. 在左侧导航栏,选择应用能力 > 添加应用能力

    2. 按能力添加页签,单击机器人在卡片中的添加

      image

    3. 在页面上方,单击创建版本

      说明

      您也可以在左侧导航栏,选择应用发布 > 版本管理与发布,再单击创建版本

    4. 版本详情页面,填入应用版本号更新说明

      说明

      移动端的默认能力桌面端的默认能力保持默认的机器人即可。

    5. 单击保存

    6. 在弹出的对话框,单击确认发布

  4. 配置API权限。

    1. 在左侧导航栏,选择开发配置 > 权限管理

    2. 单击批量导入/导出权限

    3. 导入页签的JSON文本框,给应用配置如下用户身份权限。

      {
        "scopes": {
          "tenant": [
            "docs:document:export",
            "drive:drive",
            "wiki:wiki"
          ],
          "user": []
        }
      }
    4. 单击下一步,确认新增权限

    5. 单击申请开通

  5. 登录飞书客户端,创建一个新的群组,并将准备工作中创建的应用添加为群机器人

  6. 配置云空间和知识库的访问权限。

    配置云空间访问权限

    1. 进入目标云空间的文件夹。

    2. 在页面右侧,单击分享

    3. 邀请协作者填入步骤5中创建的群组。

      默认的可阅读权限即可。

    4. 单击发送

    配置知识库访问权限

    1. 进入全部知识库页面。

    2. 将鼠标光标移动到目标知识库上,然后单击该知识库出现的知识库设置

    3. 单击成员设置页签,并在角色与权限区域的管理员页签,单击添加管理员

    4. 在弹出的对话框,添加步骤5中创建的群组,并单击下一步

    5. 单击发送

使用user_access_token

  1. 登录飞书开放平台,并进入开发者后台

  2. 单击准备工作中创建的应用。

  3. 配置API权限。

    1. 在左侧导航栏,选择开发配置 > 权限管理

    2. 单击批量导入/导出权限

    3. 准备工作中创建的应用,配置相应的用户身份权限。

      {
        "scopes": {
          "tenant": [],
          "user": [
            "offline_access",
            "docs:document:export",
            "drive:drive",
            "wiki:wiki"
          ]
        }
    4. 单击下一步,确认新增权限

    5. 单击申请开通

  4. 配置重定向IP白名单。

    1. 在左侧导航栏,选择开发配置 > 安全设置

    2. 重定向URL文本框,填入https://www.aliyun.com

    3. 单击文本框右侧的添加

    4. 打开刷新user_access_token开关。

      说明

      若没有此开关,则默认处于开启状态。

  5. 获取授权码。

    1. 获取飞书的授权页面的URL。

      说明

      需将下述URL中的YOUR_FEISHU_CLIENT_ID,替换为准备工作记录的App ID

      https://accounts.feishu.cn/open-apis/authen/v1/authorize?client_id=YOUR_FEISHU_CLIENT_ID&redirect_uri=https://www.aliyun.com&scope=drive:drive offline_access docs:document:export wiki:wiki
    2. 在浏览器中打开该授权页面。

    3. 单击授权

    4. 在重定向URL中获取授权码(code)。

      说明

      授权码不包含code=&&符号之后的信息。

步骤二:获取飞书云文档所属文件夹的Token和知识库的ID

  1. 登录飞书客户端。

  2. 获取飞书云文档所属文件夹的Token。

    1. 进入目标文件夹中。

    2. 在页面上方的地址栏,获取该文件夹对应的URL。

    3. URL中获取Token(folder/之后的信息)。

      说明

      Token不包含?及其之后的信息。

  3. 获取知识库的ID。

    1. 进入全部知识库页面。

    2. 将鼠标光标移动到目标知识库上,然后单击该知识库出现的知识库设置

    3. 在页面上方的地址栏,获取目标知识库的URL。

    4. URL中获取知识库的ID(settings/之后的信息)。

      说明

      知识库的ID为纯数字,不包含#及其之后的信息。

步骤三:运行KBSync程序

  1. 获取KBSync文件。

    说明

    您可以添加钉钉群(群号:79690034672),联系技术支持人员以获取KBSync文件。

  2. 准备KBSync程序的运行环境。

    说明

    运行KBSync程序需要为Linux环境,并且可以访问飞书开放平台和RAGFlow。

  3. 准备配置文件config

    1. 创建名为configLinux系统文件。

    2. 将以下代码复制到config文件中。

      whiteList=
      blackList=
      sinkType=RagFlow
      sourceType=FeiShu
      ragflowUrl=http://XX.XX.XX.XX
      ragflowApiKey=Bearer RAGFlow-BmND******MDI0Mm
      ragflowDatasetId=928d061******2ac120006
      feishuAppId=cli_a8a******d00d
      feishuAppSecret=pMp73Si******UDrWXBSOa
      feishuUserAccessCode=bGzpx6******B9KFCdzdCDHG
      feishuCloudSpaceDirToken=ESJm*******CRdn002cii3bnAc
      feishuWikiSpaceId=7504968******8674
    3. 替换config文件中的参数。

      重要
      • 无需配置的参数,将其取值设置为空值即可。

      • 若参数feishuCloudSpaceDirTokenfeishuWikiSpaceId同时传参,则仅传输飞书云文档及其所属的文件夹(仅feishuCloudSpaceDirToken参数生效)。

      • 参数blackList的优先级高于参数whiteList

      参数

      是否必填

      说明

      获取方式

      whiteList

      需要传输(白名单)和无需传输(黑名单)的路径,包含飞书云文档中的文件夹路径和知识库中文档所在的路径。

      说明

      支持正则表达式,多个路径需使用空格分隔。

      自行在飞书客户端中获取。

      blackList

      sinkType

      目标端的类型。

      取值请保持RagFlow

      sourceType

      源端的类型。

      取值请保持Feishu

      ragflowUrl

      RAGFlow的地址(API服务器)。

      获取RAGFlow知识库的API服务地址

      ragflowApiKey

      RAGFlow知识库的API Key。

      获取RAGFlow知识库的API Key

      ragflowDatasetId

      RAGFlow知识库的ID。

      获取RAGFlow知识库的ID

      feishuAppId

      飞书中应用的ID(App ID)。

      获取App IDApp Secret

      feishuAppSecret

      飞书中应用的密码(App Secret)。

      feishuUserAccessCode

      说明

      仅当使用user_access_token方式访问飞书的数据时,需要传参。

      飞书的授权码。

      获取授权码

      feishuCloudSpaceDirToken

      说明

      仅需为其中一个参数传参。

      飞书云文档所属文件夹的Token。

      获取飞书云文档所属文件夹的Token和知识库的ID

      feishuWikiSpaceId

      飞书知识库的ID。

  4. KBSync文件和配置文件config,放在Linux环境中的同一目录中。

  5. Linux环境中执行./KBSync --config config命令,运行KBSync程序。

    若运行结果如下所示,则表示KBSync程序正常运行。

    ./KBSync --config config
    
    INFO config whiteList=, blackList=
    INFO config ragflowUrl=http://XX.XX.XX.XX/, ragflowApiKey=Bearer RAGFlow-BmND******MDI0Mm
    INFO config ragflowDatasetId=928d061******2ac120006
    INFO config feishuAppId=cli_a8a******d00d, feishuAppSecret=pMp73Si******UDrWXBSOa
    INFO Response from https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal: 200, headers: {'Server': 'Tengine', 'Content-Type': 'application/json', 'Content-Length': '102', 'Connection': 'keep-alive', 'Date': 'Tue, 08 Jul 2025 02:49:01 GMT', 'Request-Id': '25bf****-d386-4a86-****-f440f070****', 'Tt_st****': '1', 'X-Lgw-Dst-Svc': 'jbpiSR****OiA0J3d****-Oz0xugYAH9otZIFg4x****', 'X-Request-Id': '25bf****-d386-4a86-b9f4-f440f070****', 'X-Tt-Logid': '202507081049012933B870245850D****', 'server-timing': 'inner; dur=73, cdn-cache;desc=MISS,edge;dur=0,origin;dur=129', 'x-tt-trace-host': '****', 'x-tt-trace-tag': '****', 'x-tt-trace-id': '00-****', 'X-Timestamp': '175194****.952', 'Via': 'cache8.cn6540[129,0]', 'Timing-Allow-Origin': '*', 'EagleId': '6ae3651c1751942941849****'}, body: b'{"code":0,"expire":4340,"msg":"ok","tenant_access_token":"t-g10478a*******CSC3YVY"}'
    INFO set feishu tenant access token expires in: 4340

附录

获取RAGFlow知识库的API服务地址

  1. 登录RAGFlow页面

  2. 在左侧导航栏,单击API

  3. 获取API服务器

获取RAGFlow知识库的API Key

  1. 登录RAGFlow页面

  2. 在左侧导航栏,单击API

  3. RAGFlow API右侧,单击API KEY

  4. 在弹出的API KEY对话框,单击创建新密钥

  5. 单击image,记录Token。

获取RAGFlow知识库的ID

  1. 登录RAGFlow页面

  2. 知识库页面,单击目标知识库。

  3. 在当前页面的URL中,记录知识库的ID。

    说明

    id=之后的信息即为知识库的ID。