Help us understand the problem. What is going on with this article?

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

shibukk
東京で AWS と Rails をちょっとだけやっています。あと GCP も。
https://www.flickr.com/photos/158672816@N06/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした