はじめに
研究室でSlackを導入してから2年くらい経ちました。
話題でチャンネルを分けれるので非常に便利です。
雑談用のチャンネルもあるのですが、特定の人ばかり話していて盛り上がりに欠けます。
「匿名ならみんな発言してくれるかも」と思ったのがきっかけで、匿名用のチャンネルを作りました。
Googleで検索したら3年前のQiitaの以下の記事がヒットしました。
「超簡単にSlackで匿名の意見を投稿できるようにする」 @shibukk
「超簡単」とありますが、記事通りにやっても上手くいかず、少しだけ苦労しました。
BotKitのバージョンが上がって中身が変わっていたのが原因でした。
修正した部分を自分の備忘録としてまとめておきます。
実行環境はUbuntu16.04。
node.js, javascriptが動けばどこでも大丈夫なはずです。
SlackのBotの取得
ここは本家と一緒です。
「Botを追加する」
ここをクリックすると、現在ログインしているワークスペースでBotを作ることができます。
(「ワークスペースの管理者」じゃないと作れないかも・・・)
今回はBotの名前を"anonymous_bot"にします。
API Tokenを後で使うのでコピーしておいてください。
漏れると悪用される恐れがあるので扱いには注意してください。(もしもの場合は再発行してください)
チャンネルIDをの取得
ここから本家と手順が少し変わります。
以下のURLから匿名で会話したいチャンネルのIDを探してください。https://slack.com/api/channels.list?token=さっき取得したAPI_Token
ちなみにチャンネル以外にも、特定のユーザーやプライベートチャンネルもできます。
詳しくは本家を参考にしてください。
BotKitのインストール
次にBotKitをインストールします。
以下の手順に従ってください。
//ディレクトリの作成
$ cd ~
$ mkdir slack_anonymous_bot
$ cd slack_anonymous_bot
//botkitをclone
$ git clone https://github.com/howdyai/botkit.git
$ cd botkit
//branchを移動
$ git checkout origin/legacy
//インストール
$ npm install
//もしインストールできなかったら・・・
$ npm audit fix
$ npm install
~/botkit/example/slack_bot.js が生成されていれば成功です。
プログラムの作成
以下の手順に従ってください。
//ディレクトリの移動
$ cd ~
$ cd slack_anonymous_bot/botkit/
//anonymous_bot.jsの作成
$ touch anonymous_bot.js
anonymous_bot.jsに以下のコードをコピペしてください。
varBotkit=require("./lib/Botkit.js");//パス注意varos=require("os");varcontroller=Botkit.slackbot({debug:true,});varbot=controller.spawn({token:"先ほど取得したAPI_TOKEN"}).startRTM();controller.on("direct_message",(bot,message)=>{varnow=newDate();//時刻の取得varuser_name="名無しさん: "+now.getFullYear()+"/"+(now.getMonth()+1)+"/"+now.getDate()+"/ "+now.getHours()+":"+now.getMinutes()+":"+now.getSeconds();bot.reply(message,"匿名で投稿しました.");bot.startConversation({channel:"先ほど取得したチャンネルID"},(err,convo)=>{varsend_message={type:"message",channel:"先ほど取得したチャンネルID",text:message.text,username:user_name,thread_ts:null,reply_broadcast:null,parse:null,link_names:null,attachments:null,unfurl_links:null,unfurl_media:null,icon_url:null,icon_emoji:":robot_face:",as_user:true}convo.say(send_message);});});
スクリプトの実行方法
//デバッグしたいときは
$ cd ~/slack_anonymous_bot/botkit
$ node anonymous_bot.js
//通常時
$ cd ~/slack_anonymous_bot/botkit
$ forever start slack_bot.js
$ forever stop slack_bot.js ←止めたい場合
実行結果
Botが起動している間は、Botの名前の横の○が緑色になります。
チャンネルIDを登録したチャンネルで匿名で投稿されます。(チャンネルのアプリにanonymous_botを追加するのをお忘れなく)
終わりに
無事に匿名で発言できるようになりました。
研究室のメンバーにも好評でした。
(若干チャンネルが荒れましたが・・・)