読者です 読者をやめる 読者になる 読者になる

やまろぐはてな

yamanokuの技術メモ。Qiitaは怖くて書けない。

Hubot弄ってみる 準備編

経緯

勉強がてら色々と弄ってみたい。とりあえず環境構築してみる。

Hubot導入前

そもそもnodeのバージョンとかが古いんじゃないのかと思って-vしてみたら3.0くらいのやつだったので、アップデートしたい、というか環境周り色々と整えたいと思ったので自分の中でHubot入れる以前の話になった。

akiyoko.hatenablog.jp

nodebrew入れた方がよさそう、とのことだったので上記参考にnodeとかnpmとかアンインストールして再度インストールした。

個人的に~/.bash_profileに追加するので躓きかけた。vimで直接入力してやった。

その後、動かすサーバーとテスト環境が欲しかったのでHerokuとslackを登録した。特に課金とかしなくていいです。

Hubot導入

導入に先駆けてとりあえずググってみた。以下のが色々と参考になった。

こんな僕でも30分でSlackのbotを作れた。 - アラタナエンジニアブログ

slackと連携するhubotを3分でインストールする(動画付き)

まずHubotのジェネレーターをインストール

$ npm install -g generator-hubot

そのあとHubotを動かすためのディレクトリを作成。yamabotというのを作ります。

$ mkdir yamabot
$ cd yamabot
$ yo hubot

そんでこのHubotを定義するために以下のが尋ねられます

  • Owner(管理者)
  • Bot name(Hubotの名前)
  • Description(Hubotの内容)
  • Bot adapter(Hubotと連携させるWEBサービス

Bot adapterの箇所にはslackと入力しましょう。

動作確認としてローカルで動くかどうかを確認。 自分がつけたBot名が表示されてたらOK

$ bin/hubot

Herokuにログイン、プロジェクト登録

ここまでの状態でHerokuにアップしてみたいのでまずはログイン。 そのあとHubot用のプロジェクトを作ります。 作った後はgitでadd、commit、pushしちゃいます。

$ heroku login
$ heroku create yamabot
$ git add -A
$ git commit -am "first commit"
$ git push heroku master

Slack API 所得

次にslackに移動してAPIを取得してきます。 http://my.slack.com/services/new/hubot

f:id:cardboarder:20160117002237p:plain

名前を入力して決定を押すとAPIが表示されますのでコピーします。

f:id:cardboarder:20160117002425p:plain

コピーしたAPIを以下に入力して登録します

heroku config:set export HUBOT_SLACK_TOKEN=<Your token>

あとhubotのHerokuに登録したapp urlを以下で入力、確認して HUBOT_HEROKU_KEEPALIVE_URLに[your bot app url]に入力、登録。

$ heroku apps:info
(略)
Web URL: https://yamabot.herokuapp.com/
(略)
$ heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=[your bot app url]

Herokuのダッシュボードに入って登録したプロジェクトのSettings→Domainsでも確認できます。

Slackを見る

f:id:cardboarder:20160117004037p:plain

登録したslackを見るとslack bot以外にも自分が登録したHubotが居るかと思われるので ひとまず適当なチャンネルを作ってInviteします。

そこでbot名を入力した後pingと入力。 直後にbotがPONGと返せたらたぶん設定完了。

f:id:cardboarder:20160117004136p:plain

自分は色々右往左往しながらやったのでちゃんと設定がキレイにできてるか怪しいのですが botが登録されてPONG言ってるしまあ良いか的な感じです。

もちろん、あっさり行く人はそれでいいです。いかなくても大体なんとかなります。

次回の予定

CoffeeScriptいじって色々発言させるのとか。一応の最終目標としては定時に何かしらの報告をしてくれるようにしたい。

進捗あったらまた書きます。