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
うまく動くと下の画像が表示されます。
色々聞かれるので適当に入力。ただし、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のデーモン化(バックグラウンド動作)
現在の状態のままだと、MacのSSH接続を解除してしまうと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を作っていくだけですね。
おわり。