チャットツールのSlackが人気になってきましたね。
Slackが最近話題なので、移行してみようということになりました。
今まで、会社でのチャットツールではチャットワークをずっと使っていました。日本ではかなり有名なチャットツールでけっこうな大企業でも利用されています。
Slackに移行するメリットとしては、
・Mac用のアプリがある
・チャットがURLベースなのでプロジェクト毎の管理が楽
・他のWebサービスの連携が簡単
特に2つ目はかなり助かっています。
会社以外で関わっているプロジェクトがあったりすると、チャットワークだと同じ画面から参照することになるのですが、Slackだと分けて閲覧できるので。
今回は3つの目のWebサービスとの連携ですね。
他のWebサービスと連携して、Slackに通知を飛ばしたり、Slackから他のサービスに投稿したりすることができちゃいます。もちろん他のサービスでもできたりすることはあるんですが、Slackだとその設定がすごく楽なんですよね。
今回はそのテストとしてhubot、herokuを使って他のサービスと連携した簡単なSlackボットを作成してみました。
手順としては
1) Hubotのインストールと起動
2) Herokuにデプロイする
3) SlackにBOTを作成する
の3つです。
目次
Hubotのインストール&起動
Hubotとは、かの有名なGitHubが開発したチャット用のbot開発向けフレームワークです。
Slackなどのチャットツールに簡単にBOTを作成することができます。
まずはローカル環境でそのHubotを動かします。
Hubotの動作にはredisが必要なので、redisをインストールします。
brew install node redis
インストールが完了したら、起動します。
redis-server
続いて、CoffeeScriptをインストールします。
hubotのスクリプトはCoffeeScriptになっているので。
npm install -g coffee-script
その後、hubotをインストールします。
npm install -g hubot
hubot2.9以降は、新規でhubotを作成するときにgenerator-hubotとyoを使うので、こちらをインストールしましょう。
npm install -g yo generator-hubot
これでインストールは完了です。
BOTを作成してみましょう。
適当なディレクトリを作成して、新規hubotを作成します。
mkdir-p hogebot
cd hogebot
yo hubot
上記コマンドを実行すると、こんな感じのAAがでます。
その後、Owner、Bot name、Description、Bot adapterが聞かれますが、テストなので適当でOKです。後から変更することもできます。
インストールが完了すると、ディレクトリの中身を見ると以下のようなファイルが入っています。
では、実際Hubotを起動してみましょう。
Hubotの起動コマンドは「bin/hubot」です。
起動するとhubotのコマンドラインになります。
bin/hubot
hogebot>
hubotが実際に起動したら、動作確認をしてみます。
「hogebot ping」と入力してみましょう。
hogebot> hogebot ping
hogebot> PONG
無事、PONGと返ってきたらOKです。
Herokuにデプロイする
hubotの動作が確認できたら、hubotにソースコードをデプロイします。
まずはHerokuにアクセスして登録します。
Heroku
続いて、下記ページからToolbeltをインストールしましょう。
Heroku Toolbelt
Herokuに登録して、Toolbeltをインストールしたら、herokuにログインします。
heroku login
ログイン後はherokuにアプリケーションを作成します。
heroku create XXXXXXXXX
ログインができたら、herokuにコミットします。
git init XXXXXXXXX
git add --all
git commit -m "initial commit"
git push heroku master
さて、heroku上で実行していくわけですが、
クレジットカードの登録をする必要があります。
登録しないと実行できないというね…。
しぶしぶ登録しておきましょう。
いつの間にか課金されているパターンが怖いので、先駆者にならってherokuのサーバのサイズを最小にしておきます。
heroku ps:scale web=1
ここまで完了したらredisを実行していきます。
heroku addons:add rediscloud
SlackにBOTを作る
さて、Slackに反映させていきましょう。
hubotとslackを連携させるパッケージをインストールします。
npm install hubot-slack --save
続いて、Procfileというファイルに下記を記述します。
web: bin/hubot --adapter slack
ここまでやったらあとはSlack側の設定です。
Slackの「Configured Integrations」からhubotを選択します。
ユーザーネームを適当に設定します。
作成後にTOKENが表示されます。
このTOKENをherokuのconfigに追加します。
heroku config:add HUBOT_SLACK_TOKEN=XXXXXXXX
これで設定は完了です。
試しにテストしてみます。
無事レスポンスが返ってきました。
SlackのBOTをカスタマイズしてみる
せっかくなので、カスタマイズしてみました。
ソースは「scripts」フォルダの中に「.coffee」ファイルを作成して記述します。
拡張子の通り、言語はcoffee scriptです。
scriptsフォルダの中に入っている.coffeeの内容が全て読み取られます。
実際に書いたソースは以下
[coffee]
robot.respond /((ラーメン|らーめん))/i, (msg) ->
robot.http(“https://api.instagram.com/v1/tags/ラーメン/media/recent?access_token=#{TOKEN}”)
.get() (err, res, body) ->
records = JSON.parse(body)[‘data’]
msg.send records[0].images.standard_resolution.url
[/coffee]
BOTに対して、ラーメンを注文するとラーメンの画像を返してくれるという、かなりどうでもいいBOTを作成してみました。
写真の取得はinstagramのAPIを使ってみました。
無事動きました。
まとめ
こんな感じで、BOTでいろいろ有効的なことできます。
ラーメンの注文の仕組みはただのお遊びですけど…笑
業務的な事例では、
Redmineのタスク期限をSlackに通知が送られるようにしたり、
Slackから本番環境へのデプロイができたり
など。
唯一の個人的に面倒なのは、スクリプトがCoffee Scriptなこと。
使ってないので、文法がいまいちわからないんですよねー。
この辺はドットインストールをざっと見て書きました。
実際にいろいろ作ってみようかなと思います。
でわでわ。