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

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

前提条件

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

支持的数据类型

DTS RAGFlow支持接入钉钉中的钉盘(钉钉云盘)文件和知识库,支持的类型有:

  • 钉盘中创建的Word、Excel、PowerPoint。

  • 钉盘中上传的文件,例如TXT、PDF、Markdown等。

  • 知识库中所有类型的文件。

准备工作

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

  2. 创建应用

    1. 单击页面右上角的我的后台

    2. 单击应用开发页签,在左侧导航栏选择企业内部应用 > 钉钉应用

    3. 单击创建应用

      image

    4. 输入应用名称应用描述,单击保存

  3. 在该应用的右侧,选择image > 应用详情

  4. 在左侧导航栏,选择基础信息 > 凭证与基础信息

  5. 应用凭证区域,记录Client IDClient Secret

操作步骤

步骤一:配置访问权限

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

  2. 进入应用的详情页面。

    1. 单击页面右上角的我的后台

    2. 单击应用开发页签,在左侧导航栏选择企业内部应用 > 钉钉应用

    3. 查询准备工作中创建的应用。

    4. 在该应用的右侧,选择image > 应用详情

  3. 配置权限。

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

    2. 根据实际情况配置权限范围

    3. 勾选如下权限。

      • 钉盘应用盘空间读权限

      • 成员信息读权限

      • 企业存储文件读权限

      • 企业存储文件下载信息读权限

      • 知识库读权限

      • 知识库节点读权限

    4. 单击批量申请

步骤二:获取钉钉账号的员工UserID

  1. 使用具有企业或团队管理员权限的钉钉账号,登录钉钉管理后台

  2. 在左侧导航栏,选择通讯录 > 成员管理

  3. 选择部门。

  4. 记录目标钉钉账号的员工UserID

    重要

    钉钉账号须具备目标文件(钉盘或知识库)的管理权限,能够查看和下载目标文件。

步骤三:运行KBSync程序

  1. 获取KBSync文件。

    说明

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

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

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

    • 若您需要接入知识库中的文档,请确保已安装Google Chrome浏览器。

  3. 准备配置文件config

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

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

      whiteList=
      blackList=
      sinkType=RagFlow
      sourceType=DingDing
      ragflowUrl=http://XX.XX.XX.XX
      ragflowApiKey=Bearer ragflow-Rh******BiYWY3MDAxNj
      ragflowDatasetId=b2af7c4c******dbae
      dingDingClientId=dingz******k66u
      dingDingClientSecret=sa4vI******xrJT-OmEf_fgF0GpbKi4L******tzugFn-_
      dingDingUserId=012******815010
    3. 替换config文件中的参数。

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

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

      参数

      是否必填

      说明

      获取方式

      whiteList

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

      说明

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

      自行在钉钉客户端中获取。

      blackList

      sinkType

      目标端的类型。

      取值请保持RagFlow

      sourceType

      源端的类型。

      取值请保持DingDing

      ragflowUrl

      RAGFlow的地址(API服务器)。

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

      ragflowApiKey

      RAGFlow知识库的API Key。

      重要

      须以Bearer 开头,例如Bearer ragflow-RhMjc0NjFhNTZmNTExZjBiYWY****

      获取RAGFlow知识库的API Key

      ragflowDatasetId

      RAGFlow知识库的ID。

      获取RAGFlow知识库的ID

      dingDingClientId

      钉钉应用的ID(Client ID)。

      获取Client IDClient Secret

      dingDingClientSecret

      钉钉应用的密钥(Client Secret)。

      dingDingUserId

      导出钉盘文件的钉钉账号的用户ID(员工UserID)。

      获取钉钉账号的员工UserID

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

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

  6. 选择目标文档来源,并运行KBSync程序。

    说明

    KBSync程序会定时(每隔一段时间)同步目标文档的数据。

    • 如果您的文档来源于知识库,则可能需要重新进行登录。

    • 您可以根据需要设置间隔时间、手动暂停或重新启动KBSync程序。

    知识库

    1. 输入1并按回车键。

    2. 根据实际情况,输入相应的数字并按回车键,以选择目标文档所在的知识库。

    3. KBSync程序将自动打开的Google Chrome浏览器页面,登录钉钉账号。

    4. Linux环境,按回车键。

    5. 等待KBSync程序同步数据。

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

      ./KBSync --config config
      
      INFO config SourceType=DingDing, SinkType=RagFlow
      INFO config whiteList=, blackList=
      INFO config ragflowUrl=http:///XX.XX.XX.XX, ragflowApiKey=Bearer ragflow-RhMjc0NjFhNTZmNTExZjBiYWY****
      INFO config ragflowDatasetId=b2af7c4c56f511f0a3d700163e0****
      INFO config dingDingClientId=ding9nyefxviedv****, dingDingClientSecret=Kh3qQZafV9vZZIwvP****-V7f3tkmYmcYibwT7zWNXrvOm4UbETOhqEt****
      INFO config dingDingUserId=012713339****
      NFO Verifying RAGFlow connection...
      INFO Attempting to list datasets to validate the connection...
      INFO Successfully found matching dataset: Name='test', ID='b2af7c4c56f511f0a3d700163e****'
      INFO RAGFlow connection verified successfully.
      INFO Starting DingTalk authentication process...
      INFO Waiting for the initial app access token...
      INFO App access token refresh loop started.
      INFO Attempting to refresh the app access token...
      INFO {'headers': {'server': 'DingTalk/1.0.0', 'date': 'Tue, 29 Jul 2025 09:14:19 GMT', 'content-type': 'application/json;charset=utf-8', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'access-control-allow-origin': '*', 'access-control-expose-headers': '*', 'x-acs-request-id': 'AD15D9B5-C47D-7C06-BCE7-03AA76A****', 'x-acs-trace-id': 'ad2c67867d7153507b9a74e399****', 'access-control-allow-headers': 'X-Requested-With, X-Sequence, _aop_secret, _aop_signature, x-acs-dingtalk-access-token', 'content-encoding': 'gzip'}, 'statusCode': 200, 'body': {'accessToken': '38a7d120903c35a7aa2e866dca****', 'expireIn': 7200}}
      INFO set dingding access token: 38a7d120903c35a7aa2e866dca****
      INFO set dingding access token expires in: 7200
      INFO App access token refreshed successfully. Next refresh scheduled in 6600 seconds.
      INFO Waiting 6600 seconds until the next token refresh.
      INFO Initial app access token acquired.
      INFO Fetching user UnionID...
      INFO set dingding union id: XYesTh9u****
      INFO Successfully fetched UnionID.

    钉盘

    1. 输入2并按回车键。

    2. 根据实际情况,输入相应的数字并按回车键,以选择目标文档所在的文件夹。

    3. 等待KBSync程序同步数据。

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

      ./KBSync --config config
      
      INFO config SourceType=DingDing, SinkType=RagFlow
      INFO config whiteList=, blackList=
      INFO config ragflowUrl=http:///XX.XX.XX.XX, ragflowApiKey=Bearer ragflow-RhMjc0NjFhNTZmNTExZjBiYWY****
      INFO config ragflowDatasetId=b2af7c4c56f511f0a3d700163e0****
      INFO config dingDingClientId=ding9nyefxviedv****, dingDingClientSecret=Kh3qQZafV9vZZIwvP****-V7f3tkmYmcYibwT7zWNXrvOm4UbETOhqEt****
      INFO config dingDingUserId=012713339****
      NFO Verifying RAGFlow connection...
      INFO Attempting to list datasets to validate the connection...
      INFO Successfully found matching dataset: Name='test', ID='b2af7c4c56f511f0a3d700163e****'
      INFO RAGFlow connection verified successfully.
      INFO Starting DingTalk authentication process...
      INFO Waiting for the initial app access token...
      INFO App access token refresh loop started.
      INFO Attempting to refresh the app access token...
      INFO {'headers': {'server': 'DingTalk/1.0.0', 'date': 'Tue, 29 Jul 2025 09:14:19 GMT', 'content-type': 'application/json;charset=utf-8', 'transfer-encoding': 'chunked', 'connection': 'keep-alive', 'access-control-allow-origin': '*', 'access-control-expose-headers': '*', 'x-acs-request-id': 'AD15D9B5-C47D-7C06-BCE7-03AA76A****', 'x-acs-trace-id': 'ad2c67867d7153507b9a74e399****', 'access-control-allow-headers': 'X-Requested-With, X-Sequence, _aop_secret, _aop_signature, x-acs-dingtalk-access-token', 'content-encoding': 'gzip'}, 'statusCode': 200, 'body': {'accessToken': '38a7d120903c35a7aa2e866dca****', 'expireIn': 7200}}
      INFO set dingding access token: 38a7d120903c35a7aa2e866dca****
      INFO set dingding access token expires in: 7200
      INFO App access token refreshed successfully. Next refresh scheduled in 6600 seconds.
      INFO Waiting 6600 seconds until the next token refresh.
      INFO Initial app access token acquired.
      INFO Fetching user UnionID...
      INFO set dingding union id: XYesTh9u****
      INFO Successfully fetched UnionID.

附录

获取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。