HubotをREMPチームで使っているLingrで使ってみたのでその際のメモ。
Hubotはgithub社が作ったnode.jsで実装されたbotフレームワークでチャットサービス上で稼働させるbotを稼働させることができます。
特定のチャットサービスに依存しないので、IRCやGoogle Talk, Skypeや今回試してみたLingrでも稼働させることができます。*1
メリットとしては、botに作業をさせる、あるいはチャット上の特定のワードに反応する処理をcoffee scriptあるいはJavaScriptを使って実装することでます。また、その時の実装にNode.jsの豊富なライブラリ(npm)を利用できます。
Hubotの導入
Hubotを稼働させるには、
- Node.js
- coffee script
- Redis
が必要になります。既に上記一式が稼働できるものとして...
$ npm install -g hubot $ npm install -g coffee-script $ hubot --create remp_hubot Creating a hubot install atg remp_hubot (略)
とすることで、hubotを稼働させるための一式が --create
オプションで指定したディレクトリ以下に作成されます。ディレクトリの中身は以下の様な具合になっています。
$ cd remp_hubot $ ll total 48 -rw-r--r-- 1 hideack staff 36 4 22 09:05 Procfile -rw-r--r-- 1 hideack staff 5903 4 22 09:05 README.md drwxr-xr-x 4 hideack staff 136 4 22 09:05 bin -rw-r--r-- 1 hideack staff 3 4 22 09:05 external-scripts.json -rw-r--r-- 1 hideack staff 40 4 22 09:05 hubot-scripts.json -rw-r--r-- 1 hideack staff 609 4 22 09:05 package.json drwxr-xr-x 15 hideack staff 510 4 22 09:05 scripts
試しにローカルで稼働させてみます。先ほどhubotコマンドで作成したディレクトリ配下で、
$ bin/hubot
と実行するとチャットサービスを介さず直にHubotを操作できます。お約束のping-pongをした様子。
LingrとHubotを接続する
Hubotは稼働させることができましたが、まだチャットサービスで接続できていないので次にLingrと接続します。hubot-lingrというAdapterが既にnpmに登録されていますので、これを活用します。
先ほどのhubotコマンドで作成したhubotディレクトリの配下で、
$ npm install hubot-lingr --save
でインストールをすることができます。これで接続に必要なHubot Adapterが準備されます。
次にLingrに接続するためにLingr botの設定をLingrで行います。Lingrの開発者向けメニューのbot作成画面で必要事項を入力させます。
hubot-lingrを利用してHubotとLingrを接続する場合、Lingr上のチャットルームでの発言をHubot側に通知させるためにHTTPのCallback URLを指定する必要があります。このAdapterを入れてHubotを起動した場合、/hubot/lingr
というHTTPパスがLingrからのコールバックを受けられる様になります。
この設定が完了するとbotのID及び、Secretキーが発行されるので、これを以下の2つの様な環境名で定義します。
この設定が行えた状況でHubotを起動します。次はLingrと接続を行うので -a
オプションでアダプターを設定します。
$ bin/hubot -a lingr
hubotが無事に起動すれば、次にLingr上でHubotを稼働させたいRoomでbotを招待します。
- http://lingr.com/room/(ルーム名)/manage_bots
上のフォームで先に作成したbotのIDを入力します。
無事に招待が完了し、且つ、Lingr上で発言された内容がHubot側にコールバックされる状態となっていれば、LingrのRoom上で発言した内容にHubotが反応するはずです。
以上の様な手順でLingr上でHubotを稼働させることができる様になりました。
*1:Hubot Adapterという層でチャットサービスとの接続が吸収される