Node.jsを利用してSlackにIncomingWebhookを利用した通知をしてみました。
標準モジュールのhttpsを利用しています。
AWS Lambda関数で通知を行ったソースはこちらを参照してください。
今回作成するのは、IncomingWebhookを利用したSlack通知プログラムです。
今回作成したプログラムは以下になります。
var url = require('url');
var https = require('https');
// 書き込みデータ
var postData = {
channel: "通知チャンネル",
username: "ユーザー名",
text: "通知メッセージ"
};
// 送信するJSONを文字列に変換
var postDataString = JSON.stringify(postData);
// SlackのWebhook URL
var webhookUrl = url.parse("SlackのIncomingWebhook用URL");
// 接続オプション
var options = {
hostname: webhookUrl.hostname,
path: webhookUrl.path,
port: 443,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': postDataString.length
}
}
// Slackにメッセージを送信
var req = https.request(options, (res) => {
res.setEncoding('utf-8');
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
res.on('end', () => {
console.log('No more data in response.');
});
});
// 実際のデータ送信
req.write(postDataString)
req.end();
先に記載した通り、httpモジュールではなく、httpsモジュールで実装しています。
はじめはhttpモジュールで実装していてハマっていたので、実装する際は気を付けてみてください。