はじめに
会社やチームで活動していると、メンバーが匿名で意見を言える場がほしかったりします。
Slackを使って簡単に匿名で意見を投稿できる仕組みを作れたので、今回はそれを紹介したいと思います。
完成イメージはこんな感じ。
Botを追加する
まずはSlackにBotを追加します。
下記のリンクをクリックするとBotの新規作成ができます。
https://my.slack.com/services/new/bot
適当にanonymous
とでも名前をつけて、「Add bot integration」のボタンをクリック。
「API Token」が表示されるので、これをコピーしてください。
これでSlackにBotが作られました。
Botkitをインストール
今回はSlack公式のBotフレームワークBotkitを使います。
(※BotkitはNode.js上で動くので、先にNode.jsをインストールしておいてください)
インストールしたいサーバーで、下記コマンドを実行します。
cd インストールしたいディレクトリ
git clone git@github.com:howdyai/botkit.git
cd ./botkit
npm install
インストールはこれだけです。超簡単。
プログラムを追加する
次に匿名で投稿できるような機能を追加します。
投稿にはSlackのidが必要なので、URLから取得します。
投稿先によってそれぞれ取得方法が異なるので注意してください。
# 投稿先がユーザーの場合
https://slack.com/api/users.list?token=さっきのAPI_Token
# 投稿先がprivateチャンネルの場合
https://slack.com/api/groups.list?token=さっきのAPI_Token
# 投稿先がpublicチャンネルの場合
https://slack.com/api/channels.list?token=さっきのAPI_Token
URLを実行するとjsonが表示されるので、投稿先のid(ユーザーの場合はuser_id)を探してください。
idが分かったら、先ほど取得したBotkitのディレクトリ直下にあるslack_bot.jsに下記のコードを追加します。
controller.on('direct_message',function(bot,message) {
bot.reply(message,"匿名で投稿しました:mailbox_with_mail:");
// 投稿先がユーザーの場合
bot.startPrivateConversation({user: "さっきのuser_id"}, function(response, convo){
convo.say(message);
})
// 投稿先がチャンネルの場合
bot.startConversation({channel: "さっきのid"}, function(response, convo){
convo.say(message);
})
});
投稿先がユーザーかチャンネルかで書き方が若干違うので、そこだけ注意してください。
Botを起動する
あとはBotを起動するだけです。
コマンドで以下を実行してください。
token=さっきのAPI_Token node slack_bot.js
文字列がずらずらと表示されて、Botがアクティブになれば起動しています。
コマンドを止めたらBotも非アクティブになります。
では匿名で投稿したい内容をanonymous
に話しかけてみましょう。
設定したチャンネルにはBotからの発言として届くので、誰がこのメッセージを送ったかは分かりません。
おわりに
人間関係上言えないことやネガティブな意見も、Botを使えば簡単に拾うことができるかもしれません(すみません、実はまだ導入してませんw)。
また、BotkitはこれまでのBotより簡単に起動できる印象でした。
Redisとかも使えるようなので、乗り換えるのはアリだと思います。