php - 如何创建包含上传图像的 Slack 消息?
问题描述
我想在我的 Slackspace 的#general 频道中从 PHP 脚本中创建一条消息。该消息应包含在本地即时创建的文本和图像。
我已经创建了一个应用程序,生成了一个不记名令牌,并设法创建了一个纯文本消息,也作为图像上传。
但我不知道如何在一条消息中创建两者,因为上面的过程创建了两条消息,一条带有文本,另一条带有图像。
解决方案
关于如何使用图像发布 Slack 消息有两种不同的方法。
A. 直接用消息上传图片
您可以将图像直接上传到 Slack 并在频道中共享。在该请求中,您还可以添加将作为消息显示在图像上方的评论。这是最简单的方法,但是您的评论仅限于一个字符串。
API 方法:files.upload
使用这些参数:
channels
: 图片出现的一个或多个通道的IDinitial_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_secret
,permalink_public
你应该能够构建到图像的直接链接。您可以从文件对象中获取的其他参数。
第 3 步 - 发送消息
最后,使用图像 URL 作为图像块或辅助附件编写您的消息,并使用您选择的方法提交。
API方法:chat.PostMessage
或任何其他发送消息的方法,包括。传入的 webhook。
回答 OP
如果您需要坚持使用您的评论中出现的 webhook,并且无法访问 Slack API,我建议您将图像上传到图像托管商(例如 Imgur),然后使用方法 B。
也可以看看
推荐阅读
- r - 将引用的参数传递给容器的 azure webapp --startup-file
- mobile - 您可以在 Edge 移动应用程序中使用 devtools 吗?
- laravel - 在 laravel 中保存多个外键
- mongodb - 如何从docker连接到mongodb?
- kframework - 解决K框架教程中练习的难点
- c# - 在c#中比较两个不同CSV文件的行值
- javascript - 无法将按钮单击分配给锚标记角度中的按钮
- excel - 使用 ADODB 从 Excel VBA 到 Oracle DB 的连接不再有效
- asp.net - 在 Xamarin 中更改 ListView 所选项目的背景颜色
- javascript - 需要与 Firebase Web 中的当前用户自动连接到辅助应用实例