概要
Slack の Hubot Integration を使って連携してみました
Hubot サーバは Heroku で管理してみたいと思います
環境
- Slack 2016/06/30 時点
- Mac OS X 10.11.5
- nodejs 5.9.1
- npm 3.7.3
- yo 1.8.4
- heroku-toolbelt 3.43.2
ローカルで Hubot の作成
まずはローカルの Mac で Hubot を作成します
- mkdir test-bot
- cd test-bot
- npm install -g yo generator-hubot
- yo hubot
とすると Hubot のセットアップがはじまります
この後、Hubot の作成に必要な情報を入力します
今回は以下のように入力しました
? Owner hawksnowlog
? Bot name test-bot
? Description Test bot
? Bot adapter slack
ポイントはアダプタのところで「slack」と入力するところです
これで Slack と Hubot を連携することができるようになります
とりあえずインストール後にローカルでテストしたい場合は
- ./bin/hubot -a shell -n test-bot
で動作させることができます
Heroku にローカルで作成した Hubot を登録する
ローカルで作成した Hubot を Heroku に登録します
事前に Heroku のアカウント登録と toolbelt の設定は済ませておいてください (heroku login など)
今回はとりあえず動かすことが目的なのでさくっと登録します
- git init
- git add .
- git commit -m “Initial Commit”
- heroku create
- git push heroku master
で OK です
これで Heroku のアプリ一覧を確認するとアプリが作成されていると思います
今回はアプリの名前を「test-bot」に変更しました
名前が被った場合は適宜変更してください
Slack に Hubot Integration を追加する
Slack から Hubot Integration を追加しましょう
ログインした状態で https://testorg.slack.com/apps/manage にアクセスしてください
( Organization は testorg となっているので、各自の状況に合わせて適宜変更してください )
Hubot があるので選択します
Configure で新しい Hubot を追加します
Slack 上で Hubot に話かける名前を設定します
すると Hubot に設定するためのトークンがもらえるのでメモしておきます
このトークンを Heroku 上の Hubot に設定してあげます
設定はコマンドから行います
- heroku config:set HUBOT_SLACK_TOKEN=xxxx –app test-bot
xxxx の箇所を取得できたトークンに変更してください
チャネルに Hubot を招待する
あとは Hubot を動かしたいチャネルに Hubot を招待するだけです
招待は Slack 上で
- /invite @test-bot
という感じで入力すれば OK です
ボットの名称はさきほど Integration を追加するときに Hubot に設定した Username を指定してください
動作確認
以下のような感じで Slack 上で Hubot に話かけてみましょう
- @test-bot: help
- @test-bot: echo hoge
Hubot が応答してくれるはずです
最後に
ローカルで Hubot を作成して、Heroku にデプロイして Slack に連携という流れを紹介しました
もちろん、Heroku にデプロイしなくてもローカルのまま Slack に連携することも可能です
何点か Tips も紹介しておきます
- invite 時に指定した Username から変更すると Hubot が反応しなくなる
これはもしかするとバグかもしれないのですが、Hubot Integration の Customize Name を変更すると Hubot が反応してくれなくなりました
名前を変更したい場合は再度 Integration を作成し直す必要がありそうです
- Heroku 上の Hubot がスリープになると応答しなくなる
Heroku を無料枠で使っている場合アプリへのアクセスが一定時間ないとアプリはスリープしてしまいます
再度アクセスすれば起動するのですが、Hubot の場合 Slack からコマンドを投げただけだとスリープから復帰してくれません
ブラウザなどでアプリにアクセスすると起動できますが、毎回そんなことするのも面倒なので別途 cron 的な仕組みが必要そうです
- HUBOT_SLACK_TEAM, HUBOT_SLACK_BOTNAME などの変数がなくなった
これらは Slack の Hubot Integration 上で設定する感じになりました
なので、直接 Hubot に設定するのは HUBOT_SLACK_TOKEN だけになります
確かにこっちのほうが綺麗だとは思いますが、代わりにチャネル設定等が「/invite」になっているので、その辺が見落としがちなポイントです
0 件のコメント:
コメントを投稿