LoginSignup
61
47

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-02-29

はじめに

会社やチームで活動していると、メンバーが匿名で意見を言える場がほしかったりします。
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とかも使えるようなので、乗り換えるのはアリだと思います。

61
47
1

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
61
47