ぽじてぃぶしんきんぐ

2年目エンジニアのブログ。備忘録と趣味の垂れ流し。

Raspberry Pi × hubot × Slackでbot運用

家でのうのうと過ごしているラズパイに仕事をさせるため、Hubotいれてみました。
macからssh接続で作業してます。参考にしたのは下記サイト。
www.tapun.net

ラズパイのセットアップ

まずはnpmのアップデートから。

sudo npm install -g npm

続いてnodejsのアップデートのためにnというnodejsのバージョン管理ソフトをインストール。

sudo npm install -g n

そしてnodejsの安定版をインストール。

#安定版インストール
n stable
#最新版インストール
n latest


ここからはhubot関係をインストールします。
yoとgenerator-hubotとcoffee-scriptを入れます。

sudo npm install -g yo generator-hubot coffee-script

続いてbotの作成です。任意の場所にディレクトリを作成し、その中でbotを管理します。

mkdir mybot
cd mybot
yo hubot

うまく動くと下の画像が表示されます。
f:id:seiya-orz:20160625211518p:plain

色々聞かれるので適当に入力。ただし、Bot adapterは必ずslackと答えること。

ローカルで動作確認のために、mybotディレクトリで以下の入力。

bin/hubot

もしかしたら、nodejsとかnpmとかのバージョンが古い的なことを言われるかもしれません。その場合は上記のアップデートをすれば突破できるはず。
pingとなげればPONGと帰ってこれば正常に動作しています。正常な動作が確認できれば、control+cで一旦hubot終了。次はSlack側の設定です。

Slackの設定

Webでもデスクトップアプリでもどっちでもよいですが、追加したいチームの「Apps&Integrations」をクリック。Slackのページに飛びます。
そこの左側のFeatured>Brilliant Botsをクリック。一番上にHubotが出てきているはずなのでHubotをクリック。
Add ConfigurationボタンをクリックしてBotの情報を入力していきます。Botの名前を入力すると、API Tokenが表示されるのでそれをコピーしておきます。
再びラズパイへ戻ります。

BotをSlackで動作させる

設定ファイルを編集します。

vim bin/hubot

すると下記が表示されるはずなのでAPI Tokenを記入します。

#!/bin/sh

set -e

npm install
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"
#ここに先ほどWebページで取得したAPI Tokenを書きます。
export HUBOT_SLACK_TOKEN=xxxxxxxxxxxxxxxxxxxxxx(自分のものを入力)

exec node_modules/.bin/hubot --name "mybot" "$@"

Slackで動作させる準備が整ったので、下記を実行します。

bin/hubot -a slack

Slack上でBotがオンラインになれば動作しています。先程と同様にpingを投げるとPONGが返ってくるはずです。

動作させたいScriptは、mybot/scriptsのなかに.coffeeでかけば勝手に読み込んでくれます。複数ファイル置いておいても全て読み込んで実行してくれます。
書き方は下記サイトが参考になりました。
blog.fumiz.me

Hubotのデーモン化(バックグラウンド動作)

現在の状態のままだと、MacSSH接続を解除してしまうとHubotも停止してしまいますので、ラズパイのバックグラウンドで動作させるためにHubotのデーモン化を行います。

nodeをデーモンとして動かすためのソフトforeverをインストール。

sudo npm install -g forever

Hubotを動かすために叩いているbin/hubotを以下のように書き換えます(execをコメントアウト、foreverを追加)。

#!/bin/sh

set -e

npm install
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"

forever start -w -c coffee node_modules/.bin/hubot -a slack
# exec node_modules/.bin/hubot --name "mybot" "$@"

これでBotが起動していればデーモン化完了です。

まとめ

思っていたよりも簡単に導入できてビックリしました。いろんなとこで少しずつつまずいてちょっと時間かかりましたけど。

ここからはコードをバリバリかいて自分だけの便利Botを作っていくだけですね。



おわり。