如何使用上传图像的 permalink_public URL 将其包含在消息中?

sek*_*hef 3 python slack-api

我正在尝试将图像上传到 slack 并将其发布到特定频道的 slack 消息的图像块中。

  1. 将图像上传到 Slack。
  2. 公开图片 files.sharedPublicURL
  3. 检查 url 是否公开:public_url_sharedtrue.
  4. 使用permalink_public我收到的上传图像来创建松弛消息(图像块)。

为了调试,我使用 Slack 的 Block Kit Build。我image_url块套件演示示例中的 URL 替换为我从 slack 收到的 URL :

https://slack-files.com/T04AG7BVD-FLWHBHY86-1ba8263c00 
Run Code Online (Sandbox Code Playgroud)

或者:

https://slack-files.com/T04AG7BVD-FLNJJURL1-7b17f26c80
Run Code Online (Sandbox Code Playgroud)

应该显示图像。相反,Slack 的 Block Kit Builder 中存在错误以及直接的 slack-api 调用:Downloading image failed.

如果我permalink_public在隐身会话中打开。我可以看到文件。所以它是公开的。

Eri*_*ken 5

的链接permalink_public在您的布局块中不起作用的原因是它链接到显示图像的公共网站,但不是图像文件的直接链接(这当然是您需要的)。

但是您可以构建从链接到网站的直接图像链接。

您从中获得的网站链接permalink_public具有以下格式:

https://slack-files.com/{team_id}-{file_id}-{pub_secret}
Run Code Online (Sandbox Code Playgroud)

图像的直接链接格式为:

https://files.slack.com/files-pri/{team_id}-{file_id}/{filename}?pub_secret={pub_secret}
Run Code Online (Sandbox Code Playgroud)

因此,您只需要提取pub_secretfrompermalink_public并且您应该能够构建到图像的直接链接。您可以从文件对象中获取的其他参数。

您的图像示例:

https://files.slack.com/files-pri/T04AG7BVD-FLWHBHY86/no_image_found.png?pub_secret=1ba8263c00
Run Code Online (Sandbox Code Playgroud)

请注意,这似乎不是记录在案的方法,因此所有未记录的方法和黑客都可能会发生变化。

  • `url_private` 属性已经包含整个字符串 `https://files.slack.com/files-pri/{team_id}-{file_id}/{filename}`,因此您只需提取 `pub_secret` 即可简化实现从“permalink_public”并将“?pub_secret={pub_secret}”添加到“url_private”。有点奇怪的是,两年后,这并没有得到官方支持...... (2认同)