如何创建包含上载图像的Slack消息? - php

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

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

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

参考方案

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

A.直接上传图片和留言

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

API方法:files.upload,具有以下参数:

channels:图像出现在一个或多个通道的ID
initial_comment:您的留言

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

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

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

第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步-发送消息

最后,使用Image Block或secondary attachment的图像URL编写消息,然后使用您选择的方法提交。

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

对OP的回答

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

也可以看看

Slack bot send an image
Can I upload an image as attachment with Slack API?
How to use the permalink_public URL of an uploaded image to include it in a message?

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php:将分钟取整到最近的四分之一小时,然后执行更多操作 - php

最初的问题是这样的:取分钟数->转换为四分之一小时-> 1个四分之一小时为1个单位->输出单位我今天整天都在整理页面,几分钟前我的大脑就停止工作了,我只是不知道如何输出单位数量。我知道在此网站上发布问题会有所帮助。因此,用户输入的分钟数(不是小时和分钟,而是数分钟),站点需要输出单位数量。单位是一个刻钟。分钟总是四舍五入到最近的四分之一小时…

PHP mysqli获取查询返回的第一行的值 - php

我正在使用mysqli从数据库中获取某些数据。我正在使用的查询已设置为仅从数据库返回一行。有没有一种方法可以在不使用while循环的情况下获取该行的值?我知道一个while循环对于返回多于一行的行很有用,但是如果不需要while循环,我想避免这种情况,因为不必要的代码是不好的编程。 参考方案 是的-您可以使用:$row = $result->fetch…