是否可以使用传入的 Webhook 将文件发布到 Slack?

问题描述 投票:0回答:3

我正在使用传入的 webhook 功能尝试 Slack 的 API,发布消息可以完美地工作,但它似乎不允许任何文件附件。

浏览一遍,我明白我必须使用完全不同的基于 OAuth 的 API,但是当发布消息运行良好时,仅仅为了上传文件而创建更多令牌似乎很奇怪,是否没有办法将文件上传到传入的 webook 的 slack 中?

api slack-api slack
3个回答
57
投票

不可以,无法通过传入的 Webhook 上传文件。但您可以使用

image_url
标签将图像 URL 附加到附件中。

要上传文件,您需要使用 Slack Web API 和

files.upload
方法。是的,它需要不同的身份验证,但如果您仅对所有 API 调用使用测试令牌,那么事情并没有那么复杂。


0
投票

根据上面的答案,您需要通过 API 调用来处理该问题:到 files.upload

但测试 API 密钥已被弃用,无法再生成。

要获取钥匙,您需要:

  1. 转到 Slack API 文档中的您的应用程序
  2. 创建一个新应用程序。
  3. 转到应用程序并转到 OAuth 和权限部分
  4. 您将在此处找到机器人用户 OAuth 令牌。应该以
    xoxb-...
  5. 开头

要发布文件,您需要向 Bot 令牌范围部分添加

files:write
权限。请注意,如果您在现有机器人上执行此操作,则在更改范围时需要在频道中重新安装机器人。

配置完成后,您可以尝试连接:

curl -F [email protected] -F "initial_comment=Shakes the cat" -F channels=C024BE91L -H "Authorization: Bearer xoxb-xxxxxxxxx-xxxx" https://slack.com/api/files.upload

您可以在 Slack 的频道详情中找到频道 ID。


-1
投票

您可以在 Slack API 文档中看到,可以轻松地将

POST
消息的附件添加到您的 Webhook。以下是在
NodeJS
中发送带有附件的短信的简单示例:

import fetch from "node-fetch";

const webhook_url = "https://hooks.slack.com/services/xxxx/xxxx/xxxxxxxx"
const url = "https://1.bp.blogspot.com/-ld1w-xCN0nA/UDB2HIY55WI/AAAAAAAAPdA/ho23L6J3TBA/s1600/Cute+Kitten+13.jpg"

await fetch(webhook_url, {
  method: "POST",
  body: JSON.stringify({
    type: "mrkdwn",
    text: "Example text",
    attachments: [
      {
        title_link: url,
        text: "Your document: <file name>"
      },
    ],
  }),
  headers: {
    "Content-Type": "application/json",
    Accept: "application/json",
  },
});
© www.soinside.com 2019 - 2024. All rights reserved.