gpt4 book ai didi

node.js - 使用 NodeJS 的 Slack API (files.upload)

转载 作者:搜寻专家 更新时间:2023-10-31 22:18:48 24 4
gpt4 key购买 nike

已编辑

我正在尝试构建 files.upload() API通过 Slack 提供,但我很难理解正确的格式。目前,我可以使用 API 上传文本文件,但我终究无法弄清楚如何上传图片。

这是我的问题:我的开发服务器上有一张图片,我们称之为 image.png。我想使用 files.upload() API 将该图像发布到#general Slack channel 。下面是我成功生成图像的代码,但目前只是发送文本:

        var myBarChart = new Chart(ctx).Bar(barChartData, barChartOptions);
var myBarChartDataURL = leaderboardBarChart.toBase64Image();

canvas.toBuffer(function(err, buf) {
if (err) throw err;
fs.writeFile(__dirname + "/leaderboard.png", buf);
});

bot.api.files.upload({
token: process.env.token,
title: "Image",
filename: "image.png",
filetype: "auto",
//content: "Posted with files.upload API",
file: fs.createReadStream("path/to/image_file.png"),
channels: filtered[0].id
}, function(err, response) {
if (err) {
console.log("Error (files.upload) " + err);
} else {
console.log("Success (files.upload) " + response);
};
});

当我运行代码时,出现以下错误之一:

“invalid_array_arg”,Slack 详细描述为:“该方法传递了一个 PHP 样式的数组参数(例如,名称类似于 foo[7])。这些对 Slack API 永远无效。 "

我不完全确定这个错误是怎么回事,因为我没有使用 PHP,也没有使用任何我能识别出的类似 PHP 的东西。

我尝试了几种不同的方法来包含文件路径,无论是使用“fs”模块、将其存储在变量中,还是仅引用它的绝对路径(甚至是相对路径)。我有点迷茫,只是在寻找一些指导。

我知道这个特定的 API 使用 multipart/form-data 但我没有表单。这个应用程序严格来说是一个 NodeJS 应用程序。没有框架(如 Express)与主 Node 脚本协同工作。

非常感谢任何和所有的帮助。同样,只是寻找一些关于我遗漏或做错的见解/指导。

提前致谢!

最佳答案

看来您必须在此处离开 Botkit 的 API,因为 Botkit 似乎不支持发送 multipart/form-data

尝试一下,直接使用 request(Botkit 本身已经在使用):

var request = require('request');

...

request.post({
url: 'https://slack.com/api/files.upload',
formData: {
token: bot.config.token,
title: "Image",
filename: "image.png",
filetype: "auto",
channels: filtered[0].id,
file: fs.createReadStream('test.png'),
},
}, function (err, response) {
console.log(JSON.parse(response.body));
});

关于node.js - 使用 NodeJS 的 Slack API (files.upload),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38084459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com