首页 > 解决方案 > 如何创建包含上传图像的 Slack 消息?

问题描述

我想在我的 Slackspace 的#general 频道中从 PHP 脚本中创建一条消息。该消息应包含在本地即时创建的文本和图像。

我已经创建了一个应用程序,生成了一个不记名令牌,并设法创建了一个纯文本消息,也作为图像上传。

但我不知道如何在一条消息中创建两者,因为上面的过程创建了两条消息,一条带有文本,另一条带有图像。

标签: phpslackslack-api

解决方案


关于如何使用图像发布 Slack 消息有两种不同的方法。

A. 直接用消息上传图片

您可以将图像直接上传到 Slack 并在频道中共享。在该请求中,您还可以添加将作为消息显示在图像上方的评论。这是最简单的方法,但是您的评论仅限于一个字符串。

API 方法:files.upload使用这些参数:

  • channels: 图片出现的一个或多个通道的ID
  • initial_comment: 你的信息

B. 发布带有图像块/附件的消息

或者,您可以将图像作为图像块或辅助附件添加到您的普通邮件中。这仅适用于图像文件的公共 URL,因此您首先需要将图像上传到图像托管程序(可以是您的 Slack 工作区)以获取公共 URL。

在我们的示例中,我们将使用 Slack 作为图像主机,但您可以使用任何图像主机(例如Imgur)甚至您自己的网络服务器,只要您获得图像文件的公共 URL。

第 1 步 - 将图像上传到 Slack

API 方法:files.upload没有特殊参数,但请确保从响应中获取文件 ID。不要包含channels参数,否则图像将被发布到这些频道中。

第 2 步 - 创建公共 URL

接下来,您必须将上传的文件标记为公开。只有这样才能通过其 public_url 属性访问它

API 方法:files.sharedPublicURL以文件 ID 作为参数。

接下来,您需要从permalink_public文件的网站/属性的链接构建直接图像链接。

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

https://slack-files.com/{team_id}-{file_id}-{pub_secret}

图像的直接链接具有以下格式:

https://files.slack.com/files-pri/{team_id}-{file_id}/{filename}?pub_secret={pub_secret}

所以你只需要从中提取pub_secretpermalink_public你应该能够构建到图像的直接链接。您可以从文件对象中获取的其他参数。

第 3 步 - 发送消息

最后,使用图像 URL 作为图像块辅助附件编写您的消息,并使用您选择的方法提交。

API方法:chat.PostMessage或任何其他发送消息的方法,包括。传入的 webhook。

回答 OP

如果您需要坚持使用您的评论中出现的 webhook,并且无法访问 Slack API,我建议您将图像上传到图像托管商(例如 Imgur),然后使用方法 B。

也可以看看


推荐阅读