EDITEDSlack API (files.upload) mit NodeJS
Ich versuche, die files.upload() API über Slack vorgesehen zu strukturieren, aber eine harte Zeit zu verstehen, das richtige Format habe. Momentan kann ich die API verwenden, um eine Textdatei hochzuladen, kann aber nicht für mein Leben herausfinden, wie man ein Bild hochlädt.
Hier ist mein Problem: Ich habe ein Bild auf meinem Entwicklungsserver, nennen wir es image.png. Ich möchte die files.upload() - API verwenden, um dieses Bild in einem #general Slack-Kanal zu veröffentlichen. Unten ist der Code habe ich das erfolgreich das Bild erzeugt, aber zur Zeit nur sendet den Text:
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);
};
});
Wenn betreibe ich den Code I eine der folgenden Fehlermeldung erhalten:
„invalid_array_arg“ die Slack Details wie: "Die Methode wurde ein Array-Argument im PHP-Stil (zB mit einem Namen wie foo [7]) übergeben. Diese sind niemals gültig mit der Slack API."
Ich bin nicht ganz sicher, was ich von diesem Fehler machen soll, da ich weder PHP noch irgendetwas, das ich identifizieren kann, PHP-ähnlich wäre.
Ich habe mit verschiedenen Ansätzen experimentiert, um den Dateipfad einzubeziehen, ob mit dem 'fs' Modul, in einer Variablen zu speichern oder einfach auf seinen absoluten Pfad (und sogar einen relativen Pfad) zu verweisen. Ich bin ein wenig verloren und suche nur nach einer Anleitung.
Ich verstehe, dass diese bestimmte API Multipart/Form-Daten verwendet, aber ich habe kein Formular. Diese App ist ausschließlich eine NodeJS-App. Es gibt kein Framework (wie Express), das mit dem Skript des Hauptknotens zusammenarbeitet.
Jede und alle Hilfe wird wirklich geschätzt. Wiederum, nur auf der Suche nach einer Einsicht/Anleitung, was ich vermisse oder was ich falsch mache.
Vielen Dank im Voraus!
Können Sie uns sagen, was 'bot.api' ist? Ich rate nur basierend auf Variablennamen, aber vielleicht verwenden Sie [Botkit] (https://github.com/howdyai/botkit)? – smarx
Wenn es in der Tat Botkit ist, denke ich, dass 'file: fs.createReadStream (" path/to/image/file ")' den Trick machen könnte. (Botkit verwendet [request] (https://github.com/request/request), das 'multipart/form-data' über [form-data] (https://github.com/form-data/form- Daten)). – smarx
Ich benutze Botkit! Ich werde das ausprobieren, danke für den Vorschlag! – dannyk