かべぎわブログ

技術的なことについてかけたらいいな…

RaspberryPiにhubotをインストールする

RaspberryPiにSlackでBOTが使えるようになるhubotをインストールして、slackと連携させてみたいと思います。
f:id:kabegiwakun:20170922215608p:plain

hubotのインストール

hubotのインストールに必要なものをインストールしていきます。

npmのインストール

sudo apt-get install npm

Node.jsのインストール

curl -L https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

yoのインストール

sudo npm install -g yo 

generator-hubotのインストール

sudo npm install -g generator-hubot

Coffee Scriptのインストール

sudo npm install -g coffee-script

これでインストールするものは全てです。

BOTの設定

BOTを作成するディレクトリを作成し、yo hubotを実行します。

mkdir bot
cd bot
yo hubot

hubotのためにエラー報告してくれるかい?
みたいなことがきかれるので任意でynで答えます。

pi@raspberrypi:~/bot $ yo hubot
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== (Y/n)

すると以下のように聞かれますのでそれぞれ回答します。

? Owner kabegiwa <kabegiwa@example.com>
? Bot name bot
? Description test_bot
? Bot adapter campfire

Owner メールアドレス
Bot name BOTの名前
Description BOTの説明
Bot adapter そのままEnterでいいです。

BOTの動作確認

BOTの設定の最初で作成したディレクトリに移動して、hubotを実行します。
(./binなので注意!)

./bin/hubot

いろいろなエラーが出てきますが今回は関係ありませんので無視してEnterを押します。

pi@raspberrypi:~/bot $ ./bin/hubot
npm WARN hubot-help@0.2.2 requires a peer of coffee-script@^1.12.6 but none is installed. You must install peer dependencies yourself.

up to date in 4.578s

bot> [Fri Sep 22 2017 22:15:48 GMT+0900 (JST)] WARNING Loading scripts from hubot-scripts.json is deprecated and will be removed in 3.0 (https://github.com/github/hubot-scripts/issues/1113) in favor of packages for each script.

Your hubot-scripts.json is empty, so you just need to remove it.

bot> [Fri Sep 22 2017 22:15:49 GMT+0900 (JST)] ERROR hubot-heroku-keepalive included, but missing HUBOT_HEROKU_KEEPALIVE_URL. `heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s | grep web.url | cut -d= -f2)`
[Fri Sep 22 2017 22:15:49 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379

botのプロンプトが出てくるので動作確認用にBOT名 pingを実行してみましょう。PONGと帰ってきたら成功です!

bot>
bot> bot ping
bot> PONG

slackと連携する

slack側の設定

slackと連携させていきます。
自分のslackのチームを開き、設定から「Customoize Slack」を選択します。 f:id:kabegiwakun:20171030211651p:plain

左側のConfigure Appsを選択します。 f:id:kabegiwakun:20171030211752p:plain

上部にhubotといれて検索します。 f:id:kabegiwakun:20170922222802p:plain

Installをクリックします f:id:kabegiwakun:20170922223142p:plain

BOTの名前を聞かれますので適当に名前をつけて「Add Hubot Integration」をクリックします。 f:id:kabegiwakun:20170922223606p:plain

APITokenが表示されますのでそれをコピーしてRaspberryPiの設定にもどります。 f:id:kabegiwakun:20170922223900p:plain

RaspberryPi側の設定

HUBOT_SLACK_TOKENに先ほどコピーしたAPITokenの値を設定します。

export HUBOT_SLACK_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

--adapter-slackオプションをつけてhubotを起動します。

./bin/hubot --adapter-slack

ERROR Cannot load adapter slack - Error: Cannot find module 'hubot-slack'のエラーがでたときはbot設定の最初で作成したディレクトリで以下コマンドを実行してからもう一度実行し直してみましょう

npm install hubot-slack -save

slackでの動作確認

以上の設定が完了すると、slackで以下のようにBOTがオンラインになっているはずです。
f:id:kabegiwakun:20170922231840p:plain

反応するかどうかためしにうごかしてみます f:id:kabegiwakun:20170922232012p:plain

うごきました!

まとめ

RaspberryPiをslackのBOTとして動かすことに成功しました!
これではping PONGしかやりとりできませんがhubotではスクリプトを書くことで様々なものを作ることが可能ですのでまた別の機会に紹介できればと思います。