我要完成的任务的上下文:
例如,我们要与包含本周自助餐厅菜单的bot共享文件。每次用户以某种方式与机器人进行互动时,它都会与他们共享自助餐厅菜单,以便他们进行查阅。
我尝试调用files.share
方法,但是漫游器无法执行此操作(获取无效的令牌类型错误)。
据我所知,目前尚无办法。我曾尝试在邮件正文中展开链接,但只有在文件本身已被共享给用户的情况下,该链接才起作用。如果没有,则该链接将不会取消链接,并且单击它将失败。
机器人可以执行files.upload
调用,并将文件内容分别重新上传到每个用户。这似乎非常浪费,但似乎是目前唯一的工作方式。
有什么我想念的吗?
答案 0 :(得分:3)
您的漫游器无法使用file.share
的原因是,这是未公开的API方法,您需要使用旧版令牌才能使用它。其他令牌(用户令牌,机器人令牌)将不起作用,因为它需要post
范围,该范围仅适用于旧版令牌。
方法A:旧版令牌
因此一种方法是在您的漫游器中使用旧式令牌,您可以为当前工作空间创建here。如果仅在您自己的“ Slack”工作区上使用Slack应用程序,那么您可以在其中创建和使用旧式令牌。
方法B:文件提及
另一种方法是在邮件中使用提及功能来共享文件。通过将消息中已共享文件的专用链接(url_private
属性)发送到新频道,可以起作用。这将自动在该频道中重新共享文件。我相信这仅适用于以前在公共渠道共享的文件,因此可以重新共享。请注意,尽管文件提及功能为currently being reworked,所以此行为可能会更改。
示例:
https://slack.com/api/chat.postMessage?token=TOKEN&channel=CHANNEL&as_user=true&text=URL_PRIVATE
有关更多详细信息,请参见Slack教程Storing, retrieving, and modifying file uploads。
方法C:外部文件/图像文件
如果您在外部托管文件或为上传到Slack的文件创建公共URL,则只需在邮件中添加URL,即可在每个频道中共享该文件。 Slack会自动将其取消卷曲并因此在任何渠道中将其共享给用户。这与方法B不同,因为它不是文件提及,而是需要公共URL。您可以通过调用files.sharedPublicURL
来获取上载文件的公共URL。
答案 1 :(得分:0)
如果我没记错,您可以这样做: