これまでにRaspberry Piと環境センサーから計測したデータをMeshbluのMQTTブローカーにpublishしたあとはfreeboardのダッシュボードに表示しました。今回はHubotとSlackを使ってインタラクティブなインタフェースを追加しようと思います。SlackはモダンなUIでWebhookや他のWebサービスとのインテグレーションがしやすいので便利に使えます。
HubotとSlackの設定
SlackのIntegrationページhttps://{teamdomain}.slack.com/services/newからHubotを選びAPI Tokenを作成しておきます。現在ではSlackとHubotのインテグレーションに必要な情報はこのAPI Tokenだけになりとても簡単です。

botには名前を付けてアイコンを変更することができます。今回はavodadoと名付けました。
プロジェクト
今回作成したプロジェクトのディレクトリ構成です。リポジトリはこちらです。
$ cd ~/node_apps |
Dockerfile
ベースイメージはオフィシャルのio.jsを使います。Hubotの動作に必要な基本的なnpmはグルーバルにrootでインストールします。Dockerイメージの中にbotプロジェクトをYeomanで作成しておきます。コンテナのscriptsディレクトリはDockerホストのディレクトリをマウントして使います。
今回は単純にscriptsディレクトリ配下に直接CoffeeScriptのファイルを配置するだけで、external-scripts.jsonは使いません。
FROM iojs:2.3 |
docker-compose.yml
docker-compose.yml.defaultをリネームして使います。
$ mv docker-compose.yml.default docker-compose.yml |
Dockerイメージの/appディレクトリにはYeomanを使ってbotを作ってあります。scriptsディレクトリをDockerホストから編集できるようにマウントします。環境変数にはテスト用にHUBOT_LOG_LEVELをデバッグレベルにして、HUBOT_SLACK_TOKENにはSlackのIntegrationページで取得したHubotのAPI Tokenを記入します。
また、Hubotの動作にはRedisが必要になるのでredisサービスを追加してnpmサービスにlinkします。
npm: |
使い方
ビルドと実行
Dockerイメージをビルドします。npmサービスをビルドしてupします。
$ cd ~/node_apps/docker-hubot-slack |
scripts/hello.coffee
helloとbotに発言すると、Hiと返答してくる単純なサンプルです。今回はこのhelloサンプルのbotスクリプトを実行してみます。
module.exports = (robot) -> |
Slackにログインしてavocado helloと発言すると、masato: Hiと返答してくれます。
