読者です 読者をやめる 読者になる 読者になる

HubotをLingr上で使ってみた

HubotをREMPチームで使っているLingrで使ってみたのでその際のメモ。

Hubotはgithub社が作ったnode.jsで実装されたbotフレームワークでチャットサービス上で稼働させるbotを稼働させることができます。 特定のチャットサービスに依存しないので、IRCGoogle 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を招待します。

上のフォームで先に作成したbotのIDを入力します。

無事に招待が完了し、且つ、Lingr上で発言された内容がHubot側にコールバックされる状態となっていれば、LingrのRoom上で発言した内容にHubotが反応するはずです。

以上の様な手順でLingr上でHubotを稼働させることができる様になりました。

*1:Hubot Adapterという層でチャットサービスとの接続が吸収される