使用NodeJS的Slak API(files.pload) [英] Slack API (files.upload) using NodeJS

查看:0
本文介绍了使用NodeJS的Slak API(files.pload)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编辑

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

我的问题是:我的开发服务器上有一个映像,我们将其命名为Image.png。我想使用files.pload()API将该图像发布到#General Slack频道。下面是我的代码,它成功地生成了图像,但目前只是发送文本:

        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使用多部分/表单数据,但我没有表单。这款应用程序严格来说是NodeJS应用程序。没有框架(如Express)与主节点脚本协同工作。

任何和所有的帮助都非常感谢。再说一次,我只是在寻找一些关于我遗漏或做错了什么的洞察力/指导。

提前谢谢!

推荐答案

这里看起来您必须不使用botkit的接口,因为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));
});

这篇关于使用NodeJS的Slak API(files.pload)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆