11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Node-REDでSlack bot 2019年8月時点

Posted at

#Node-RED入門といえば、Slack Bot
IBM Cloud ライトアカウントなどでNode-REDを始めたらSlack botは定番の入門ネタです。
Slack botを作るときには、Bot APIトークンを使った方法がありましたが、Node-RED側のSlackノードやSlack側の仕様変更により、作り方を現在の仕様に合わせる必要が出てきました。
#Node-REDの環境の準備
こちらは、IBM Cloud ライトアカウントを使って用意します。IBM Cloud ライトアカウント以外の方法としては、AWSやAzureなどにインストールする方法があります。

#Slack アプリの作成
入力したものを返す基本のBotとします。Bot APIトークンを発行していた時と異なり、2019年8月現在のSlack botは、SlackアプリとしてBotを作成します。

Slack Botの作成

Slack APIのYour Appsから、「Create New App」をクリックします。
2.png

「Create a Slack App」画面に、「App Name」に英数字でアプリ名と、アプリの配置先として「Development Slack Workspace」で使用中のワークスペースを選び、「Create App」をクリックします。
3.png

「Add features and functionality」で「Bots」をクリックします。
4.png

##トークンの発行
「Bot User」で、「Add a Bot User」ボタンをクリックします。
5.png

「Bot User」画面で、「Display name」と「Default useranme」を入力し、「Always Show My Bot as Online」を「On」とし、「Add Bot User」ボタンをクリックします。
6.png 

「Bot User」画面の画面左側の「Settings」、「Install App」をクリックし、「Install App to Your Team」画面を表示します。「Install App to Workspace」ボタンをクリックします。
8.png

「許可する」ボタンをクリックし、本人確認を行います。
9.png

「Installed App Settings」で表示された「Bot User OAuth Access Token」を後ほど使用しますので、「Copy」ボタンをクリックしてメモ帳などの適当なエディタに貼り付けておきます。
10.png

コピーした後は、Slack Client画面に移動しておきます。画面左側の「App」に下図のようにBot名が表示されているはずです。
11.png

#Node-REDでSlack Bot

Slackノードを追加

Node-REDにアクセスし、画面右上の「三」→「パレットの管理」→「ノードを追加タブ」の順にクリックしまして、「node-red-contrib-slack」を「ノードを追加」を押し追加します。
image.png

##フロー作成
下図になるように、フローを作ります。
12.png

サンプルコードをインポートします。インポートする場合は、画面右上の「三」→「読み込み」→「クリップボード」を表示し、下記サンプルコードを貼り付け、「読み込み」ボタンをクリックします。

[{"id":"74d16458.3e634c","type":"tab","label":"Slack Bot","disabled":false,"info":""},{"id":"a1e78e11.8f082","type":"slack-rtm-in","z":"74d16458.3e634c","client":"83702296.02a97","name":"","events":"message","x":100,"y":40,"wires":[["bd830fde.1e402"]]},{"id":"bd830fde.1e402","type":"function","z":"74d16458.3e634c","name":"返信文","func":"msg.topic = \"message\";\nmsg.payload = {\n    channel: msg.payload.channel,\n    text: msg.payload.text\n}\nreturn msg","outputs":1,"noerr":0,"x":290,"y":40,"wires":[["421b615b.a4ed2"]]},{"id":"421b615b.a4ed2","type":"slack-rtm-out","z":"74d16458.3e634c","client":"83702296.02a97","name":"","x":470,"y":40,"wires":[["ffe55177.1a273"]]},{"id":"ffe55177.1a273","type":"debug","z":"74d16458.3e634c","name":"debug slack post","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":670,"y":40,"wires":[]},{"id":"83702296.02a97","type":"slack-config","z":"","name":""}]

サンプルをインポートしない場合は、Node-REDの画面左側で、カテゴリ「ソーシャル」に「slack-rtm-in」と「slack-rtm-out」、カテゴリ「機能」の「function」ノード、カテゴリ「出力」の「debug」ノードを配置します。

###「slack-rtm-in」ノード
「slack-confing」の右隣のペン型のアイコンをクリックします。
13.png
「Token」に先程貼り付けた「Bot User OAuth Access Token」を貼り付け、「更新」ボタンをクリックします。続けて、「完了」ボタンをクリックします。
14.png

「function」ノード(返信文と表示されているノード)

下図のようになるようにコードを記述します。
15.png

###「slack-rtm-out」ノード
「slack-confing」の右隣のペン型のアイコンをクリックします。
16.png
「Token」に先程貼り付けた「Bot User OAuth Access Token」を貼り付け、「更新」ボタンをクリックします。続けて、「完了」ボタンをクリックします。
17.png

###「debug」ノード
「slack-rtm-out」ノードの後に、カテゴリ「出力」の「debug」ノードを配置します。
18.png

##デプロイ
線ですべてのノードを結びます。
12.png

画面右上の「デプロイ」をクリックします。
19.png

##動作確認
Slackアプリとして作成したSlack Botの動作確認のため、下図のようにSlack Client画面左側の「App」下のSlack Bot名をクリックし、メッセージを送信します。送信したメッセージと同じ内容が返ってくるはずです。
20.png

これでオウム返しのSlack Botが出来ましたので、IBM Cloud ライトアカウントで使えるWatsonサービスや無料で使えるデータベースサービスCloudantにSlack Botのログを蓄積し、Watson Studio上のJupyter NotebookでCloudantに蓄積したログを可視化やCSV形式でダウンロードなど実施できます。

11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?