Edited at

超簡単にSlackで匿名の意見を投稿できるようにする

More than 3 years have passed since last update.


はじめに

会社やチームで活動していると、メンバーが匿名で意見を言える場がほしかったりします。

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に下記のコードを追加します。


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とかも使えるようなので、乗り換えるのはアリだと思います。