我一直在搜索很多,但我没有找到我正在寻找的答案。
我正在尝试使用 python 请求将文件从 /tmp
上传到 slack,但我一直收到 {"ok":false,"error":"no_file_data"}
返回。
file={'file':('/tmp/myfile.pdf', open('/tmp/myfile.pdf', 'rb'), 'pdf')}
payload={
"filename":"myfile.pdf",
"token":token,
"channels":['#random'],
"media":file
}
r=requests.post("https://slack.com/api/files.upload", params=payload)
主要是尝试遵循 此处 发布的建议
原文由 arshbot 发布,翻译遵循 CC BY-SA 4.0 许可协议
写这篇文章,可能会为您节省我浪费的所有时间。 我确实尝试创建一个新文件并将其上传到 Slack,但实际上没有创建文件(只是拥有它的内容)。由于 Slack API 的各种非点错误,我浪费了几个小时才发现,我从一开始就有很好的代码,只是错过了频道中的一个机器人。
此代码还可用于打开现有文件、获取其内容、修改并将其上传到 Slack。
代码:
OFFTOPIC - 关于文档
我对 Slack 的 file.upload 文档有过最糟糕的体验(可能是今年)。我认为这可能对您将来有用。
在文档中不起作用的事情:
token
它 不能是 post 请求的参数, 它必须是 header 。这是实际 Slack 员工在 github 错误报告之一中所说的。channel_not_found
- 我确实提供了一个现有的、正确的频道 ID 并收到了这条消息。由于安全原因(混淆),这在某种程度上是可以的,但是为什么会出现此错误消息:not_in_channel
-Authenticated user is not in the channel.
将机器人添加到频道后一切正常。content
参数的示例(这就是我与您分享我的代码的原因。主要问题是他们没有对其 API 进行版本控制、更改它并且不更新文档,因此文档中的许多陈述都是错误的/过时的。