Slack通知をNode.jsでもやってみる

先日、Rails から Slack に通知してみるという記事を書きました。
おそらく Node.js でもできるだろうなと考えていましたが、やはりできました。
npm パッケージに感謝の限りです。


目次

参考

以下を参考にやってみます。

動作環境

  • windows10 ver1909
  • v12.12.0

実装

準備

Webhook URL が必要です。
Rails から Slack に通知してみるに方法の記載があるので、そちらを参照してください。

ひな形作成

適当なディレクトリで以下を実行し準備します。

1
2
npm init -y
echo >index.js

パッケージ導入

1
npm install --save npm install @slack/webhook

通知クライアント実装

index.js
1
2
3
4
5
6
7
8
9
const { IncomingWebhook } = require("@slack/webhook");

const webhook = new IncomingWebhook("Webhook URL");

(async () => {
await webhook.send({
text: "info by node.js",
});
})();

確認

node index.jsで実行します。
slack 画面を確認すると、以下のメッセージが確認できます。


追加事項

npm - @slack/webhookでは、.send メソッドの引数は text しか記載がありませんが、どうやら他も受け付けるようです。
github - stevenosloan / slack-notifierを参考にしながら動作確認しました。
textに加えてchannel, username, icon_emoji, icon_urlの 4 つは使用可能でした。

index.js
1
2
3
4
5
6
7
8
9
10
11
(async () => {
await webhook.send({
text: "info by node.js", //通知内容
channel: "#random", //通知先チャンネル
username: "Username", //通知時ユーザー名
icon_emoji: ":ghost:", //アイコン絵文字
icon_url: "https://example.com/.../example.jpg", //アイコン画像url
// icon_emojiとicon_urlはアイコンの設定なので同時に使用しない
// 両方設定したら、icon_emojiが優先された
});
})();

icon_emoji は「標準の絵文字コード」使用すればいいそうです。
WebFX - EMOJI CHEAT SHEETを参照すると記載されています。
いくつか試しましたが、それぞれで icon 絵文字 が変わりました。


今回は Node.js で Slack に通知を送ってみました。
Rails 同様に通知をするだけなら、非常に簡単でした。

Slack への発信(通知)ばかり作っているので、近いうちに受信(正しくは応答でしょうか?)を作りたいです。
これができれば Bot 開発ができて、IOT との連携でさらに夢が広がります。

楽しみです。
ではでは。