【问题标题】:Uploading and attaching images to private messages from bots in Slack从 Slack 中的机器人上传图像并将其附加到私人消息中
【发布时间】:2018-12-05 08:03:59
【问题描述】:

我有一个使用来自@slack/clientWebClient 的节点服务。

我正在使用机器人的访问令牌通过web.files.upload API 方法上传图像。然后,我想将上传的图像作为私人消息的附件发送给用户(即以D 开头的频道)。我希望仅限此团队中的 Slack 用户访问此图像(就像您共享文档或其他文件时一样)。

我尝试使用来自 files.upload 函数的响应来执行此操作,但似乎没有 res.file 的任何属性为我提供了这个 Slack 团队的所有成员都可以访问的 URL:

conversationId = 'Dxxxxxxxx'; // ID of private channel between bot and user

web.chat
  .postMessage({
    channel: conversationId,
    text: 'Hello there',
    attachments: [
      {
        fallback: 'Required plain-text summary of the attachment.',
        color: '#36a64f',
        title: 'Slack API Documentation',
        title_link: 'https://api.slack.com/',
        text: 'Optional text that appears within the attachment',
        image_url: res.file.permalink_public,
        ts: 123456789
      }
    ]
  });

the docs 看来,这个文件在发送到公共频道之前对机器人来说是私有的。

我考虑的另一种方法是将文件上传到用户和机器人之间的私人消息通道,但这给了我以下错误:

{ Error: An API error occurred: invalid_channel
  code: 'slackclient_platform_error',
  data:
  { ok: false,
    error: 'invalid_channel',
    channel: '["Dxxxxxxxx"]',
    scopes: [ 'identify', 'bot:basic' ],
    acceptedScopes: [ 'files:write:user', 'post' ] } }

有没有办法实现我所追求的?

【问题讨论】:

    标签: slack slack-api


    【解决方案1】:

    要在邮件附件中使用图像 URL,该图像必须具有公共 URL,否则将不起作用。上传的文件有访问限制,默认情况下不公开(例如,您需要提供身份验证以及您的 URL)。

    如果您想在附件中使用该图片,您需要先获取一个公共 URL。然而,“在公共渠道”分享它是不够的。您需要使用 API 方法 files.sharedPublicUrl 将文件公开。

    或者,您可以使用外部图像服务来上传图像文件并获取公共 URL,例如imgur 有一个用于上传和分享图片文件的 API。

    【讨论】:

    • 感谢 Erik 的快速回复。在这种情况下,我不希望图像公开,我希望有一种方法可以与 Slack 用户共享它,并且只有该团队中的人才能访问它。没有办法吗?我还会更新我的问题以反映这些重要信息。
    【解决方案2】:

    我的错误来自误读 the docs - files.upload API 需要一个以逗号分隔的字符串作为 channels 属性,而我正在传递一个数组。

    纠正此问题后,我可以成功上传文件并与用户私下(频道 ID 以“D”开头)和公共频道(频道 ID 以“C”开头)共享。

    复制图像 URL 并将其粘贴到浏览器中,我进入了一个登录页面,因此默认情况下,它们对 Slack 团队是私有的,正如我所希望的那样。

    【讨论】:

      猜你喜欢
      • 2017-09-02
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 2018-11-19
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      相关资源
      最近更新 更多