我正在使用传入的 webhook 功能尝试 Slack 的 API,发布消息可以完美地工作,但它似乎不允许任何文件附件。
浏览一遍,我明白我必须使用完全不同的基于 OAuth 的 API,但是当发布消息运行良好时,仅仅为了上传文件而创建更多令牌似乎很奇怪,是否没有办法将文件上传到传入的 webook 的 slack 中?
不可以,无法通过传入的 Webhook 上传文件。但您可以使用
image_url
标签将图像 URL 附加到附件中。
files.upload
方法。是的,它需要不同的身份验证,但如果您仅对所有 API 调用使用测试令牌,那么事情并没有那么复杂。
根据上面的答案,您需要通过 API 调用来处理该问题:到 files.upload
但测试 API 密钥已被弃用,无法再生成。
要获取钥匙,您需要:
xoxb-...
要发布文件,您需要向 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。
您可以在 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",
},
});