Back channelingとHubotを連携する

<blockquote class="twitter-tweet" data-partner="tweetdeck"><p lang="ja" dir="ltr">BackChanneling 0.2.0-beta1リリースしました。&#10;<a href="https://t.co/8rX8AaBWA2">https://t.co/8rX8AaBWA2</a>&#10;&#10;チャット、無料です。&#10;&#10;Hubotが使えるようにしたのが主な対応です。&#10;<a href="https://t.co/dn8iMdEXin">https://t.co/dn8iMdEXin</a></p>&mdash;  kawasima (@kawasima) <a href="https://twitter.com/kawasima/status/649101903666634753">September 30, 2015</a></blockquote>

0.2.0-beta1でHubot対応が入ったようなので試してみる。

# [Back channeling](https://github.com/kawasima/back-channeling)を動かす

記事の作成時点での最新の[back-channeling-0.2.0-beta1-dist.zip](https://github.com/kawasima/back-channeling/releases/download/v0.2.0-beta1/back-channeling-0.2.0-beta1-dist.zip)をダウンロードし、解凍。

```bash
$ wget https://github.com/kawasima/back-channeling/releases/download/v0.2.0-beta1/back-channeling-0.2.0-beta1-dist.zip
$ unzip back-channeling-0.2.0-beta1-dist.zip
$ cd back-channeling-0.2.0-beta1
```

以下のコマンドで[Datomic](http://www.datomic.com/)をダウンロードして起動するので、それなりに時間がかかる。

```bash
$ bin/transactor
```

DatomicのURLを指定してBack Channelingを起動。

```bash
$ DATOMIC_URL=datomic:free://localhost:4334/bc bin/back_channeling
```

http://localhost:3009 にアクセスすると、こんな感じでログイン画面が表示される。

![Back_Channeling.png](https://qiita-image-store.s3.amazonaws.com/0/6092/82977506-3c39-a442-b932-3c45d32fd2d3.png)

サインアップしてログインすると、以下の画面が表示される。

![Back_Channeling 2.png](https://qiita-image-store.s3.amazonaws.com/0/6092/d2f4a9f0-1636-8335-b39e-cd083d9c64d7.png)

スレッドを作るとこんな感じ。
赤い枠がスレッドのID。あとでHubotとの連携の際に利用する。
![THREAD_ID.png](https://qiita-image-store.s3.amazonaws.com/0/6092/c93eaa50-9de0-04a8-0609-eadffae7f2fa.png)

ついでにBot用アカウントを作成しておく。
赤い枠が認証用のコード。これもあとでHubotとの連携の際に利用する。
![TOKEN.png](https://qiita-image-store.s3.amazonaws.com/0/6092/6d4128ad-f1aa-f11a-ff9e-eaa9069c464d.png)



# Hubotと連携する

Hubotのインストールは[ココらへん](https://hubot.github.com/docs/#getting-started-with-hubot)見て適当に。

作成したhubotのディレクトリに移動し、Back channeling用のアダプターをインストールする。

```bash
$ cd myhubot
$ npm install hubot-back-channeling --save
```

さっき確認した認証用のコードとスレッドIDを環境変数に設定し、アダプターを指定して起動する。
起動ログにHeroku関連のエラーが出てるけど、Heroku用の設定なんてしてないので無視。
BackChannelingに接続できたことと、スレッドの監視をしている旨がメッセージに出ているのが確認できる。

```bash
$ export HUBOT_BACK_CHANNELING_CODE=xdfcy8jjdoo7h10v
$ export HUBOT_BACK_CHANNELING_THREAD_ID=17592186045430
$ bin/hubot -a back-channeling
[Wed Sep 30 2015 23:54:27 GMT+0900 (JST)] ERROR hubot-heroku-alive included, but missing HUBOT_HEROKU_KEEPALIVE_URL. `heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s  | grep web_url | cut -d= -f2)`
[Wed Sep 30 2015 23:54:27 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379
[Wed Sep 30 2015 23:54:27 GMT+0900 (JST)] INFO BackChanneling connect... ws://localhost:3009/ws/?token=b4304de4-45a0-489b-bc03-ad299a586336
[Wed Sep 30 2015 23:54:27 GMT+0900 (JST)] INFO BackChanneling connected.
[Wed Sep 30 2015 23:54:27 GMT+0900 (JST)] INFO Watched the 17592186045430 thread.
```

画面を確認してみると、Botらしきアカウントが増えている。
Gravatarでアカウント画像を出しているようなので、Bot用のメールアドレスをGravatarに登録すれば、ちゃんと画像が表示されると思う。

![join_hubot.png](https://qiita-image-store.s3.amazonaws.com/0/6092/adda6674-531b-b137-4127-43e848180989.png)

対象のスレッドに遷移して、Hubotのコマンドを実行してみると反応がちゃんと返ってきた。
画像のURLは画像として表示されない模様。

![hubot_respond.png](https://qiita-image-store.s3.amazonaws.com/0/6092/40f4906d-0cfe-1d6b-fbf9-4f258b27841d.png)

業務での利用を検討しているので、うまい使い方を考えていきたい。

### 参考
[Clojure - BackChannelingによるお手軽お仕事用チャット - Qiita](http://qiita.com/kawasima/items/38801d924af963498081)