Slack机器人可以重新共享与其共享的文件吗?

时间:2018-07-06 16:45:11

标签: slack-api

我要完成的任务的上下文:

  • 用户与漫游器共享文件
  • 其他用户通过对话框与机器人互动
  • 机器人将原始文件共享给其他用户

例如,我们要与包含本周自助餐厅菜单的bot共享文件。每次用户以某种方式与机器人进行互动时,它都会与他们共享自助餐厅菜单,以便他们进行查阅。

我尝试调用files.share方法,但是漫游器无法执行此操作(获取无效的令牌类型错误)。

据我所知,目前尚无办法。我曾尝试在邮件正文中展开链接,但只有在文件本身已被共享给用户的情况下,该链接才起作用。如果没有,则该链接将不会取消链接,并且单击它将失败。

机器人可以执行files.upload调用,并将文件内容分别重新上传到每个用户。这似乎非常浪费,但似乎是目前唯一的工作方式。

有什么我想念的吗?

2 个答案:

答案 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)

如果我没记错,您可以这样做:

  • 您与漫游器共享文件
  • 您检索文件共享ID,因此他的url_private属性(cf https://api.slack.com/types/file#authentication
  • 然后您下载文件
  • 然后您可以将其重新共享几次(无需重新上传给每个用户)...