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

标签 php slack slack-api

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

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

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

最佳答案

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

A. 直接用消息上传图片

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

API方法: files.upload 有这些论点:

  • channels : 图片出现在
  • 中的一个或多个 channel 的ID
  • initial_comment : 您的留言

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

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

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

    第 1 步 - 将图像上传到 Slack

    API方法: files.upload 没有特殊参数,但请确保从响应中获取文件 ID。不包括 channels参数或图像将发布到这些 channel 中。

    第 2 步 - 创建公共(public) 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 撰写您的消息,或者为 Image Block或在 secondary attachment并使用您选择的方法提交。

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

    回答 OP

    如果您需要坚持使用您的评论中出现的 webhook 并且无法访问 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 - 如何创建包含上传图像的 Slack 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58186399/

    相关文章:

    ruby - Slack RTM API 连接到多个服务器

    php - 如何在 PHP 中将日期时间转换为 "yyyy-MM-dd' T'HH :mm:ss. SSSZ"

    php - 将 JSON 发布到 Laravel

    php - 将wordpress中的数据插入到mysql中

    node.js - 如何构建一个 Slack 机器人来进行多个对话?

    java - 如何在 Java 桌面应用程序中使用 Slack 的 OAuth2

    php - 之后用 PHP 函数确认 Javascript

    普罗米修斯/警报管理器 : remove link from slack notifications

    javascript - 向 oauth.access url 发送请求后松弛错误 "invalid_code"

    bots - 是否可以创建一个松弛的日期时间选择器元素?