twitterのつぶやきをSlackにポストする方法とそのメリット


※更新
Hubot Integrationが更新されて必要な環境変数等が変わっているので注意。
http://qiita.com/KeitaMoromizato/items/0ee11d795d18a49538d8

twitterのつぶやきをSlackにポストする方法とそのメリット

タイトルの通り、Slackにtwitterのつぶやきを投稿する方法を説明しています。これ、自社サービスをお持ちの企業でやると意外と効果的だったり。最後の方にメリットを書いていますのでどうぞ。

前提

  • herokuにユーザ登録済み
  • herokuコマンドが使える
  • herokuにクレジットカード情報を登録している

クレジットカードを登録していないとmonglabのアドオンが使えないので登録必須です。課金は発生しないはずですが、万が一発生した場合も自己責任でお願いします...

twitter token取得

Twitter Applicatioin Managementから[Create New App]で各種情報を入力し、[create your twitter application]。

[Keys and Access Tokens]からAPI KeyとAPI Secretを取得します。

あとは下のほうにある[Create my access token]から...

Access TokenとAccess Token Secretを取得します。

Slack Token取得

Slackの[add a service integration]から[Incoming Webhooks]を選択、チャネルを選択して[Add Incoming WebHooks Integration]。

[WebHook URL]の最後の部分がtokenです。

Group名と投稿先Channel名も確認しましょう。

herokuにアプリをデプロイ

ここからレポジトリをcloneして下さい。そのまま使えるはずです。
https://github.com/KeitaMoromizato/twitter_to_slack

cloneが終わったらプロジェクトのルートディレクトリに移動し、以下のコマンドを実行。

$ heroku create twitter-slack-test
$ git push heroku master
$ heroku ps:scale web=1
$ heroku addons:add mongolab:sandbox

完了したらmongolabの設定を確認するためheroku configコマンドを実行。

$ heroku config

=== twitter-slack-test Config Vars
MONGOLAB_URI: mongodb://heroku_app32417310:xxxxxxx.mongolab.com:63330/heroku_app111111

mongodb://(8)HOST名:(9)PORT名/(10)DATABASE名
というフォーマットです。

必要な環境変数を登録。ちょっと多いですが頑張りましょう!

$ heroku config:set TWITTER_CONSUMER_KEY=**********(1)
$ heroku config:set TWITTER_CONSUMER_SECRET=**********(2)
$ heroku config:set TWITTER_ACCESS_TOKEN_KEY=**********(3)
$ heroku config:set TWITTER_ACCESS_TOKEN_SECRET=**********(4)
$ heroku config:set SLACK_KEY=**********(5)
$ heroku config:set SLACK_GROUP=**********(6)
$ heroku config:set SLACK_CHANNEL=*********(7)
$ heroku config:set MONGO_HOST=**********(8)
$ heroku config:set MONGO_PORT=**********(9)
$ heroku config:set MONGO_DATABASE=**********(10)

スケジューラの設定

今回herokuにデプロイしたアプリケーションはコードを読んでもらうとわかりますが、スケジューラが含まれていません。動かすには定期的に外からAPIを叩く必要があります。

そこで使用するのがGoogleAppsScript(通称GAS)です。これはGoogle Spreadsheetsから使うことができます。
まずはGoogleSpreadSheetを作成し、[ツール]の[スクリプトエディタ]を開き、以下のコードを書きます(URLはherokuから取得できます)。ここまで終わったら実行ボタン(▶)を押して動作確認。うまくいっていればSlackにポストされるはず。

wordパラメータに','区切りで複数検索ワードを指定できます。

時計のアイコンをクリックし、statusUpdate()が1分ごとに呼ばれるように設定。これで保存したら設定は完了です!

ツイートをSlackに投稿する意義

これを使えば自社サービスに関するツイートを拾い上げ(いわゆるエゴサ)、Slackに流すことができます。そのメリットとしては、

  • サービスの不具合の早期発見
  • ユーザの一次情報を見ることでリアルな空気感が伝わる
  • サービスがどれだけ盛り上がっているかなんとなく分かる

などなど。
また、何よりもSlackはチャットサービスなのでtwitterの投稿を見ながらシームレスに会話をすることができます。「このツイートについてどう思う?」とか「ここは確かに気になってたんだよねー」とか、ユーザの声を取り入れたコミュニケーションが活発になるはず。

また、今回スケジューラにGASを使用したのは簡単で無料というのもありますが、あのレベルなら非エンジニアの方でも編集ができる、というのが大きいです。ユーザの声を聞くのにエンジニアも非エンジニアも区別はないので、誰でも欲しい検索ワードが増えたら追加できるというのは良いですね。

最後に

このシステム、ツイートの量が多くなると追い切れなくなるので自社サービスがあまり流行っていない時にしか使えませんねw
早くこのシステムから脱却するときが来るよう頑張りましょう!