在通过 Slack API 或 Incoming Webhook 发送消息时,是否可以使用文件路径而不是 url 作为 `image_url`?

Is it possible to use a file path instead of url as `image_url` when sending a message via Slack API or Incoming Webhook?

假设我有以下块,我想通过 Incoming Webhook 将其发送到 Slack

   {
        "type": "image",
        "title": {
                   "type": "plain_text",
                   "text": "foo bar"
                 },
        "image_url": "https://api.slack.com/img/blocks/example/beagle.png",
        "alt_text": "foo"
    }

但我不想像 image_url 那样提供 http url,而是提供一个文件路径,因为我要发送的文件与我的脚本位于同一文件夹中。

1) 这可能吗?我猜没有。

2) 是否可以在第一步中通过 files.upload 上传图像而不实际显示在任何频道上只是为了获得 URL 然后可以用作 image_url?

1) 不可以。正如我之前提到的,不可能使用文件路径直接在消息中包含图像。唯一的方法是为图像文件提供 public URL。

2) 是的,您可以在消息中使用上传到 Slack 的 files.upload。而且您不必在任何频道中分享它们。

基本方法是:

  • 使用 files.upload 将您的图像上传到 Slack。如果您不为该 API 调用提供任何频道,则该文件将不会在任何频道中共享。您将获得文件对象,包括。上传图片文件的文件ID。

  • 通过提供文件 ID

  • 调用 files.sharedPublicURL 生成该文件 public

您的图像文件现在是 public,您可以使用文件对象的 permalink_public 将该图像包含在消息中。但是,您仍然需要根据从 permalink_public 获得的 URL 为该图像构建直接 URL。查看 如何获取图像的直接 URL。