IBM CloudとSlackbotを連携し、Slackチャンネルに匿名投稿できるようにしてみた
1.はじめに
IBM Cloud上のNode-REDとslackbotを連携し、Slackチャンネルに匿名投稿できるbotを作成しましたので、その流れをまとめます。IBM Cloudは無料枠内で利用できます。
使用イメージ
botにダイレクトメッセージを送信することで、botが指定したチャンネルに書き込みを行ってくれます。
複数Botを用意することで、より会話の感じが出ます。
2.作業概要
① IBM Cloudアカウント作成
② Node-RED実行環境準備
③ Slackbot作成とAPIキー準備
④ Node-REDとSlackbot連携
⑤ 投稿テスト
3.作業詳細
①IBM Cloudアカウント作成
以下URLへアクセスし、IBM Cloudのアカウントを作成します。
https://cloud.ibm.com/registration
登録したEメールに検証コードを届くので、検証コードを入力し、「次へ」をクリック
②Node-RED実行環境準備
IBM Cloud上にNode-REDの実行環境を準備します。
検索キーワードに「Node」を入力し、「Node-RED App」を検索
アプリ名は任意(変更することも可能)、その他はデフォルトのまま
Liteプランが選択されていることを確認し、「作成」をクリック
デプロイメント・ターゲットで「Cloud Foundry」を選択
IBM Cloud API鍵を新規生成するため、「新規」をクリック
デプロイが進行中(赤枠部分)のため、しばらく待ちます(10分程度)
Node-REDの画面が開くので、初回登録を進める
「Next」をクリック
Node-REDエディタ用のユーザとパスワード情報を入力(IBM Cloudのアカウントとは異なります)し、「Next」をクリック
「Go to your Node RED flow editor」をクリック
Node-REDのフロー画面開いたら、続いてSlack連携のためのモジュールを追加
Node-REDのフロー画面右側の「パレットの管理」をクリック
「ノードを追加」タブを選択し、検索キーワードに「slack」を入力
「node-red-contrib-slack」を見つけたら、「ノードを追加」をクリック
「追加」をクリック
追加するモジュールの詳細情報は以下参照
https://flows.nodered.org/node/node-red-contrib-slack
③Slackbot作成とAPIキー準備
参加しているSlackのワークスペースにbotを追加します。
「App」をクリック
Botsの登録のリクエストをワークスペース管理者へ送信します。
「設定をリクエストする」をクリック
「リクエストが送信されました」というステータスに変わるので、ワークスペース管理者が承認するのを待ちます。
ユーザ名(任意)を入力し、「ポットインテグレーションを追加する」をクリック
デフォルトのまま、「インテグレーションの保存」をクリック
APIトークンは後で使用するため、メモしておく
略
匿名投稿先のチャンネルへBotを追加(今回はbot_testchannelに追加)
チャンネル詳細の「その他」から、「アプリを追加する」をクリック
検索キーワードにbot名を入力し、該当するBot名に対して「追加」をクリック
チャンネル名を右クリックし、「リンクをコピー」をクリック
投稿先のチャンネルの識別番号を確認。後ほど使用するのでこの番号もメモしておく
https://xxxx.slack.com/archives/<チャンネルの識別番号>
④Node-REDとslackbot連携
Slackbotと連携するフローを実装します。
Node-REDを開き、「読み込み」をクリック
以下コマンドをコピペし、「読み込み」をクリック
[{"id":"2b9710cb.988b4","type":"tab","label":"匿名投稿","disabled":false,"info":""},{"id":"3ff3e09a.aafa8","type":"switch","z":"2b9710cb.988b4","name":"DMか区別","property":"payload.channelObject.is_im","propertyType":"msg","rules":[{"t":"false"},{"t":"true"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":290,"y":60,"wires":[[],["280e1a2.20814e6"],[]]},{"id":"ede2e915.132698","type":"function","z":"2b9710cb.988b4","name":"初期値設定","func":"msg.topic = \"message\";\nmsg.payload = {\n channel: \"チャンネルの識別番号\",\n text: msg.payload.text\n}\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":650,"y":60,"wires":[["374a0235.0fdb4e"]]},{"id":"280e1a2.20814e6","type":"switch","z":"2b9710cb.988b4","name":"httpをふくむか","property":"payload.text","propertyType":"msg","rules":[{"t":"cont","v":"http","vt":"str"},{"t":"cont","v":"undefined","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":460,"y":60,"wires":[["ede2e915.132698"],[],["835be295.665fa"]]},{"id":"2fe96781.e64798","type":"slack-rtm-in","z":"2b9710cb.988b4","client":"ea227ef9.7621d","name":"","events":"message","x":110,"y":60,"wires":[["3ff3e09a.aafa8"]]},{"id":"374a0235.0fdb4e","type":"slack-rtm-out","z":"2b9710cb.988b4","client":"e0cc6c56.47bb2","name":"","x":850,"y":60,"wires":[[]]},{"id":"fe6559cd.8dfae8","type":"slack-rtm-out","z":"2b9710cb.988b4","client":"","name":"","x":850,"y":220,"wires":[[]]},{"id":"835be295.665fa","type":"function","z":"2b9710cb.988b4","name":"初期値設定","func":"msg.topic = \"message\"\nmsg.payload.channel =\"チャンネルの識別番号\"\nmsg.payload.text = msg.payload.text + \"~テスト!\"\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","x":650,"y":120,"wires":[["fe6559cd.8dfae8"]]},{"id":"ea227ef9.7621d","type":"slack-config","z":"","name":""},{"id":"e0cc6c56.47bb2","type":"slack-config","z":"","name":""}]
slack-rtm-inとslack-rtm-outに先ほど取得したAPIキーとBotの名前を入力
同様にslack-rtm-outにbot名とAPIキーを入力する
「初期値設定」ノードに投稿先のチャンネル識別番号を入力
「"チャンネルの識別番号"」の箇所を先ほど取得したチャンネルの識別番号に変更
もう片方の「初期値設定」についても同様にチャンネルの識別番号を変更
(こちらは初期値設定は投稿内容の語尾メッセージを追加)
⑤投稿テスト
投稿はBotにダイレクトメッセージを送信します。
まず作成したBotを検索
「検索キーワード」にBotの名前を入力。該当するBotを選択
投稿先のチャンネルに対して、Bot(匿名)が書き込みを行ってくれます。
補足:Node-RED 各ノードの情報
「DMか区別」:Botがダイレクトメッセージのみ反応するように設定
「httpをふくむか」:httpを含むURLの投稿に対して、「undefined」というメッセージが出力されるため、
httpを含む場合は、語尾をつけないように分岐
Author And Source
この問題について(IBM CloudとSlackbotを連携し、Slackチャンネルに匿名投稿できるようにしてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/NAGAI_Y/items/3719b9128740e3e0342a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .