Logo
Section 1 / 2

本地文件

学习使用 Slack API 调用来操作工作区中的文件。

导入

本地文件

学习使用 Slack API 调用来操作工作区中的文件。

概述

我们可以使用 Slack API 调用来定期上传和分享系统中的本地文件。

本课程将介绍以下端点:

  1. files.upload:此端点用于上传或创建文件。
  2. files.list:此端点用于列出团队、频道或用户相关的文件,并支持应用过滤条件。
  3. files.info:此端点用于获取文件的详细信息。
  4. files.delete:此端点用于删除文件。

上传文件

要上传文件,我们将访问 https://slack.com/api/files.upload 端点。首先,我们学习如何使用 files.upload 端点上传文件。我们将使用 POST 请求调用该端点。

files.upload 端点的一些重要查询参数如下:

参数类型分类描述
tokentoken必需认证令牌携带了控制不同 Slack 应用和 API 使用权限所需的权限范围。通常通过 HTTP Authorization 头部或 POST 参数传递。
channelsstring可选以逗号分隔的频道名称或 ID 列表,表示文件将被分享到这些频道。
contentstring可选通过 POST 变量发送的文件内容。如果省略此参数,则必须提供 file。
filestring可选通过 multipart/form-data 发送的文件(在使用 POST 请求提交表单时上传完整文件)。如果省略此参数,则必须提交 content。
filenamestring可选文件名称。
filetypestring可选文件类型标识符,例如 auto 或 python。
initial_commentstring可选在指定频道中引入该文件的消息文本。
thread_tsstring可选用于将文件作为回复上传到另一条消息的 ts 值。不能使用回复的 ts 值,而应使用其父级消息。
titlestring可选文件的标题。

上传文件后,请检查应用程序已添加的 Slack 频道中是否出现该文件。

...
上传文件后,应发送到指定频道

让我们调用 files.upload 端点。点击“运行”按钮,将 mytext.txt 文件上传至 Slack。

1import requests 2import json 3 4url = "https://slack.com/api/files.upload" 5with open('mytext.txt') as fh: 6 file_txt = fh.read() 7 8data = { 9 'channels': '{{CHANNEL_ID}}', 10 "content": file_txt, 11 "filename": "mytxt.txt", 12 "filetype": "txt" 13} 14headers = { 15 'Authorization': 'Bearer {{TOKEN}}' 16} 17 18response = requests.post(url, headers=headers, params=data) 19print(json.dumps(response.json(), indent=4))
  • 第 5 行:使用 open 关键字打开名为 mytext.txt 的文件。
  • 第 6 行:使用 read() 方法将文件内容读取到 file_txt 变量中。
  • 第 8–13 行:指定必要的参数,包括 channels、content、filename 和 filetype。

获取所有文件列表

要获取所有文件列表,我们访问 https://slack.com/api/files.list 端点。该端点将返回频道中所有已上传文件的列表。

files.list 端点的一些重要查询参数如下:

参数类型分类描述
tokentoken必需认证令牌携带了控制不同 Slack 应用和 API 使用权限所需的权限范围。通常通过 HTTP Authorization 头部或 POST 参数传递。
channelstring可选用于过滤特定频道(通过其 ID 指定)中的文件。
countinteger可选每页返回的项目数量。

让我们调用 files.list 端点。点击“运行”按钮,获取频道中所有文件的列表。

1import requests 2import json 3 4url = "https://slack.com/api/files.list" 5data = {'channel': '{{CHANNEL_ID}}'} 6headers = { 7 'Authorization': 'Bearer {{TOKEN}}', 8 'Content-Type': 'application/x-www-form-urlencoded', 9} 10 11response = requests.get(url, headers=headers, params=data) 12print(json.dumps(response.json(), indent=4))
  • 第 4 行:指定 files.list 端点。
  • 第 5 行:指定要过滤的频道,仅返回上传到该频道的文件。

获取文件信息

要获取文件信息,我们访问 https://slack.com/api/files.info 端点。在获得文件 ID 后,即可通过 files.info 端点获取文件详情。

files.info 端点的一些重要查询参数如下:

参数类型分类描述
tokentoken必需认证令牌携带了控制不同 Slack 应用和 API 使用权限所需的权限范围。通常通过 HTTP Authorization 头部或 POST 参数传递。
filestring必需通过提供文件 ID 来指定一个文件。
countstring可选每页返回的项目数量。
cursorstring可选用于“指向”下一页数据的字符串。通过将 cursor 参数设置为前一次请求响应中返回的 response_metadata 中的 next_cursor 值,实现分页。
limitinteger可选指示最多返回的项目数量。即使未到达列表末尾,也可能返回少于请求数量的项目。
pageinteger可选要返回的结果页码。

让我们调用 files.info 端点。点击“运行”按钮,获取已上传文件的信息。

1import requests 2import json 3 4url = "https://slack.com/api/files.info" 5data = {'file': '{{file_id}}'} 6headers = { 7 'Authorization': 'Bearer {{TOKEN}}', 8 'Content-Type': 'application/x-www-form-urlencoded', 9} 10 11response = requests.get(url, headers=headers, params=data) 12print(json.dumps(response.json(), indent=4))
  • 第 5 行:指定 file 参数,并在第 11 行调用 files.info 端点。

删除文件

要删除文件,我们访问 https://slack.com/api/files.delete 端点。使用相同的文件 ID 即可从工作区中删除该文件。

files.delete 端点的一些重要查询参数如下:

参数类型分类描述
tokentoken必需认证令牌携带了控制不同 Slack 应用和 API 使用权限所需的权限范围。通常通过 HTTP Authorization 头部或 POST 参数传递。
filestring必需通过提供文件 ID 来指定要删除的文件。

让我们调用 files.delete 端点。点击“运行”按钮,删除本课程开始时上传的文件。

1import requests 2import json 3 4url = "https://slack.com/api/files.delete" 5data = { 6 'channel': '{{CHANNEL_ID}}', 7 'file': '{{file_id}}' 8} 9headers = { 10 'Authorization': 'Bearer {{TOKEN}}', 11 'Content-Type': 'application/x-www-form-urlencoded', 12} 13 14response = requests.get(url, headers=headers, params=data) 15print(json.dumps(response.json(), indent=4))
  • 第 5–8 行:指定 channel 和 file 参数。
  • 第 14 行:调用 files.delete 端点。

使用应用程序进行对话

远程文件