T-R*_*gex 10 php slack-api slack
我想通过 PHP 脚本在我的 Slackspace 的 #general 频道中创建一条消息。该消息应包含文本和本地即时创建的图像。
我已经创建了一个应用程序,生成了一个不记名令牌,并设法创建了一条纯文本消息也作为图像上传。
但我不知道如何在一条消息中创建两者,因为上面的过程创建了两条消息,一条带有文本,另一条带有图像。
Eri*_*ken 11
关于如何发布带有图像的 Slack 消息,有两种不同的方法。
您可以将图像直接上传到 Slack 并在频道中共享。在该请求中,您还可以添加将作为消息显示在图像上方的评论。这是最简单的方法,但是您的评论仅限于一个字符串。
API 方法:files.upload
使用这些参数:
channels
:图像出现的一个或多个通道的IDinitial_comment
: 您的留言或者,您可以将图像作为图像块或辅助附件添加到普通邮件中。这仅适用于您的图像文件的公共 URL,因此您首先需要将图像上传到图像托管商(可以是您的 Slack 工作区)以获取公共 URL。
在我们的示例中,我们将使用 Slack 作为图像托管,但您可以使用任何图像托管(例如Imgur)甚至您自己的网络服务器,只要您获得图像文件的公共 URL。
API 方法:files.upload
没有特殊参数,但确保从响应中获取文件 ID。不要包含channels
参数,否则图像将在这些频道中可见。
接下来,您必须将上传的文件标记为公开。只有这样才能通过其 public_url 属性访问它
API方法:files.sharedPublicURL
以文件ID为参数。
接下来,您需要构建从链接到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_secret
frompermalink_public
并且您应该能够构建到图像的直接链接。您可以从文件对象中获取的其他参数。
最后使用图像 URL 作为图像块或辅助附件撰写您的消息,并使用您选择的方法提交。
API 方法:chat.PostMessage
或任何其他发送消息的方法,包括。传入的网络钩子。
如果您需要坚持使用从您的评论中显示出来的 webhooks 并且无法访问 Slack API,我建议您将图像上传到图像托管商(例如 Imgur),然后使用方法 B。
也可以看看
小智 5
经过多次修改,我发现虽然我无法使用 API 同时创建消息和上传图像,但我可以先上传图像,然后在返回时间戳的情况下,使用更新消息将文本添加到带有图像的原始消息中上传。
这是流程:
1-使用files_upload方法将图像上传到我的频道(使用频道名称)
response = client.files_upload(
channels=my_channel_name,
file=image_path,
initial_comment='My initial comment'
)
Run Code Online (Sandbox Code Playgroud)
2- 从 files_upload 获取响应并提取消息的通道 ID 和时间戳。
channel_id = response['file']['groups'][0]
ts = response['file']['shares']['private'][channel_id][0]['ts']
Run Code Online (Sandbox Code Playgroud)
3- 使用聊天更新将文本或丰富内容添加到带有上传图像的消息中:
response = client.chat_update(
channel=channel_id,
text="My Message",
ts=ts,
blocks=blocks_list
)
Run Code Online (Sandbox Code Playgroud)