このエントリーをはてなブックマークに追加
facebooktwittergoogle_plusredditpinterestlinkedinmail

こんにちは、tapunです。

無事に家庭内にSlackが定着したので、次はいよいよRaspberry Pi ボット化計画です!

# Slackを家で使ってみた編はこちらの記事です。

プログラミングとか全然できない私の検索によると、ボット用フレームワークにはHubotRubotyがよく使われているようです。

「Hubot Slack」とかでググると、Herokuにデプロイする記事ばーっかり出てくるんですが、それは求めていない!ということで結局Gitにおいてあるドキュメントなどを参考にローカルにインストールしましたので参考になれば幸いです。

チャットbotフレームワーク

Hubotとは?

hubot1

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 でも良い)
RubotyRuby で 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

 

hubot-install-done

おー!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使ってないのに設定が入ってないとか・・・。無視します。

error

enterを押して、promptが出たらraspi-chan pingを入力してみましょう。

pingpong1

返ってきました!ちゃんと動いています!安心~

SlackとHubotを連携させる

続いて、Slack側から設定を行います。

  1. 予め作成しておいたSlackのチーム設定から、[Configure Integrations]を選択します。
    slack5

  2. かなり下のほうに[Hubot]が連携サービスとしてリストにあるので、そちらを選択します。
    slack-hubot1
  3. Slack上に表示させたいHubotの名前を入力すると、API Tokenが表示されます。
    slack-hubot2

ここで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]と打ってみましょう!

slack6

返ってきました~!一応うごいてますね!

まとめ

Herokuを使わなくても自宅のRaspberry Pi をSlack botとして動かすことに成功しました!

Node.js、Yeomen、HubotジェネレータのインストールをしてSlackからHubotを連携させました。

私はHubotジェネレータのインストールのときに、予め入れておいたNodejsとNPMのバージョンが古くてひっかかって結構大変でしたが、きちんと手順を踏んでやり直せばOKでした!

今はping PONGしか会話できないので、次はもう少し面白いことを返せるようにしていきたいと思います。


 


Raspberry Pi ブログランキングへ