Skip to content

Instantly share code, notes, and snippets.

@pdtyreus
Created September 8, 2016 22:15
Show Gist options
  • Save pdtyreus/029947a42c5af460c617947170dbdec5 to your computer and use it in GitHub Desktop.
Save pdtyreus/029947a42c5af460c617947170dbdec5 to your computer and use it in GitHub Desktop.
Slack chat.postMessage with attachments
var http = require("https");
var querystring = require('querystring');
//2 attachments as JavaScript Objects
var attachments = [{
fallback: "Attachment 1 Fallback",
title: "This is Attachment 1",
text: "Attachment 1 Text",
color: "#3964db"
}, {
fallback: "Attachment 2 Fallback",
title: "This is Attachment 2",
text: "Attachment 2 Text",
color: "#3964db"
}];
//add the attachments to the message by stringify-ing them
//posting without stringify-ing the attachments will lead to an error from the Slack API
var message = {
token: "your-token",
channel: "@daniel",
as_user: false,
username: "daniel",
attachments: JSON.stringify(attachments),
text: "This is a message with attachments"
}
var qs = querystring.stringify(message);
var options = {
"method": "GET",
"hostname": "slack.com",
"path": "/api/chat.postMessage?" + qs
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
@Xotl
Copy link

Xotl commented May 5, 2019

First result in Google about the Slack invalid_array_arg error. Thanks a lot 😊

@martyboggs
Copy link

@haffla
Copy link

haffla commented Feb 25, 2020

This is still true even though the endpoint is POST now, so so bad

https://api.slack.com/methods/chat.postMessage#arg_attachments

A JSON-based array of structured attachments, presented as a URL-encoded string

So it's not JSON, it's JSON-based

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment