我想在PHP脚本中的Slackspace的#general通道中创建一条消息。该消息应包含文本和即时生成的本地图像。
我已经创建了一个应用程序,生成了一个承载令牌,并设法创建了一条纯文本消息,作为图像上传。
但是我不知道如何在一条消息中创建两者,因为上面的过程创建了两条消息,一条消息带有文本,另一条消息带有图像。
参考方案
关于如何通过图像发布Slack消息,有两种不同的方法。
A.直接上传图片和留言
您可以将图像直接上传到Slack并在频道中共享。在该请求中,您还可以添加一条注释,该注释将作为消息显示在图像上方。这是最简单的方法,但是您的注释仅限于一个字符串。
API方法:files.upload
,具有以下参数:
channels
:图像出现在一个或多个通道的IDinitial_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?
我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数
php ziparchive类源代码 - phpImprove 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…