Raspberry Pi | 自作Slackボットを作ろう~その2~ HubotのインストールとSlack連携(Herokuは使わない)
こんにちは、tapunです。
無事に家庭内にSlackが定着したので、次はいよいよRaspberry Pi ボット化計画です!
# Slackを家で使ってみた編はこちらの記事です。
プログラミングとか全然できない私の検索によると、ボット用フレームワークにはHubotとRubotyがよく使われているようです。
「Hubot Slack」とかでググると、Herokuにデプロイする記事ばーっかり出てくるんですが、それは求めていない!ということで結局Gitにおいてあるドキュメントなどを参考にローカルにインストールしましたので参考になれば幸いです。
目次
チャットbotフレームワーク
Hubotとは?
Hubotは,
GitHub社が開発しMITライセンスで公開しているNode. jsでbotを作り動かすためのフレームワークです。 Hubotの大きな特徴に,
様々なチャットツールに対応している点があります。 Hubotは,
Hubotとチャットツールをつなぐモジュールである 「Adapter」 を切り替えることで様々なチャットツールに接続することができます。 引用:http://gihyo.jp/dev/serial/01/hubot/0001
Rubotyとは?
Rubyで作られたチャットボットフレームワークです。
ソースコードがGitHubで確認できます。
Hubot は Plugin を CoffeeScript で書く必要があります。
(最終的に JavaScript になれば良いので他の AltJS や生の JavaScript でも良い)
Ruboty は Ruby で Plugin を書く必要があります。
機能的な違いはほとんどありません。引用:http://qiita.com/tbpgr/items/39d93a0a33ec99e37da1
私は別にRubyに詳しいわけでもないので、利用されている数の多そうなHubotをインストールしていこうと思います。
やること
うちのRaspberry Pi の環境情報はこちら
$ uname -a Linux raspberrypi 4.1.11-v7+ #822 SMP PREEMPT Fri Oct 23 16:22:18 BST 2015 armv7l GNU/Linux
こちらのドキュメントを参考にすすめていきます。
NPMのインストール
$ sudo apt-get install nodejs npm
これやってから思ったけど、Node.js入れれば使えるようになってる気がします。。
Node.jsのインストール
※始めに何も考えずにapt-getからインストールしたら、古いバージョンのnode.jsがインストールされてhubotインストールに失敗したので、きちんと最新版を入れておくことをオススメします!
こちらの nodesource’s blog post を参考に作業します。
# Note the new setup script name for Node.js v0.12 curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash - # Then install with: sudo apt-get install -y nodejs
これでnodejsのインストールは終わり!
yoとgenerator-hubotのインストール
このドキュメントを参考にしてます。
$ npm install -g yo generator-hubot
※rootユーザではインストールしない方がいいです。(後でhubot起動しませんでした・・・)
上記のコマンド で Yeoman (yo) と Hubot のための Yeoman ジェネレーター (generator-hubot) をインストールしています。
ボットの作成
任意の場所に、ボットの名前のディレクトリを作成し、yo hubot
を実行します。
今回はraspi-chanという名前にしています!
$ mkdir raspi-chan $ cd raspi-chan $ yo hubot
おー!raspi-chan!
色々聞かれるので、入力していきます。
?Owner: tapun <example@mail.com> ?Bot name: raspi-chan ?Description: Part of my family!(なんでもいいです) ?Bot adapter: slack
Bot adapter: slack と入力します。
ローカルでhubotの動作確認
先ほど作成したraspi-chanのディレクトリに移動し、bin/hubotを実行します。
$ cd hoge_dir $ bin/hubot
なんか色々警告がでてきます。heroku使ってないのに設定が入ってないとか・・・。無視します。
enterを押して、promptが出たらraspi-chan pingを入力してみましょう。
返ってきました!ちゃんと動いています!安心~
SlackとHubotを連携させる
続いて、Slack側から設定を行います。
- 予め作成しておいたSlackのチーム設定から、[Configure Integrations]を選択します。
- かなり下のほうに[Hubot]が連携サービスとしてリストにあるので、そちらを選択します。
- Slack上に表示させたいHubotの名前を入力すると、API Tokenが表示されます。
ここでRaspberry Pi に戻ります。
Hubot起動用スクリプトを作成する
毎回トークンを入れるのも面倒なので、スクリプトにしておきます。
$ nano slack-token.sh
#!/bin/sh export HUBOT_SLACK_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxx export PORT=9999 ./bin/hubot --adapter slack
※トークン・ポートは環境に合わせて変更してくださいね!
作成したスクリプトに実行権限を付与します。
$ sudo chmod u+x slack-token.sh
早速実行してみます!
$ sh ./slack-token.sh
ちゃんと動けば、Slack上でraspi-chanがオンラインになります
そこですかさずDMで[ping]もしくはbotにmentionをつけて[ping]と打ってみましょう!
返ってきました~!一応うごいてますね!
まとめ
Herokuを使わなくても自宅のRaspberry Pi をSlack botとして動かすことに成功しました!
Node.js、Yeomen、HubotジェネレータのインストールをしてSlackからHubotを連携させました。
私はHubotジェネレータのインストールのときに、予め入れておいたNodejsとNPMのバージョンが古くてひっかかって結構大変でしたが、きちんと手順を踏んでやり直せばOKでした!
今はping PONGしか会話できないので、次はもう少し面白いことを返せるようにしていきたいと思います。
コメントを残す