この記事はteratailのBluemixアドベントカレンダー4日目の記事です!
今時Bot動かすならBluemixだと風の噂で聞いたので、いっちょやってみます(`・ω・´)キリッ
目標
- HubotをBluemix上で動かす
- WatsonAPIをBluemix上でバインドする
- Hubotを通してAPIで遊ぶ
1. HubotをBluemix上で動かす
ローカルで作成
Bluemixにpushするために、まずはローカルでHubotを作っていきます!
以下はnode.jsとnpmを利用した手順です。
// インストール
npm install -g yo generator-hubot
npm install -g coffee-script
// 任意のプロジェクトディレクトリを作成する
mkdir mybot
cd mybot/
// hubotの作成
yo hubot
よしなにファイルが作成されるので、Procfileの中身をslack向けに書き換えれば完成です。
web: bin/hubot --adapter slack
/bin/hubot
でとりあえずローカルで実行できます。
デフォルトでBotにping
と話しかけるとPONG
と返してくれます。
(caloryはBot名です、つっこまないでください。)
Hubotにmanifest.ymlというファイルを追加しておきます。
applications:
- buildpack: https://github.com/jthomas/nodejs-v4-buildpack.git
command: ./bin/hubot --adapter slack
path: .
instances: 1
memory: 256M
Bluemixにデプロイする
Bluemix上にアプリの箱だけ先に作っておきます。
SDK for Node.jsを選んで作成を押すと、デプロイ手順が1つずつ説明されているのでこれに沿ってやっていきます!
まずコマンドラインから操作できるcf-cli
をインストールします。
Macの人はbrew install cf-cli
でOK。
コマンドラインからbluemixに接続していきます。
cf api https://api.***.bluemix.net
ここのURLはBluemixでスペースを作った地域(「米国南部」「シドニー」など)によって変わるので注意。
デプロイ手順に記載してあります。
cf login
ユーザ名とパスワード、スペース名等が求められるので入力。
cf push アプリケーション名
Bluemixに作っておいたアプリ名でpushします。
これで一応のデプロイは完了。
SlackとBotを連携
SlackのCustom IntegrationsからHubotを追加します。
任意の名前、アイコン等を設定したら、API Tokenをコピー。
このトークンがSlackとHubotの連携に必要なため、Bluemixの環境変数として登録します。
cf set-env bot名 HUBOT_SLACK_TOKEN トークン
Slack側でチャンネルにBotを招待!
/invite 名前
で招待できます。
爆速!
機能追加
hubotはscripts/
にファイルを追加していくとゴリゴリ動いてくれます。
module.exports = (robot) ->
robot.respond /hoge$/i, (msg) ->
msg.send "ホゲー"
こんな感じ。
2. WatsonAPIをBluemix上でバインドする
Bluemix上の「接続」からサービスを追加することができます。
たくさんのBluemixのサービスが簡単に追加できてよいですね!
3. Hubotを通してAPIで遊ぶ
今回はSlackに画像を投げたらHubotがVisualRecognitionという画像認識のAPIに渡し、戻ってきたデータであそ
・・・びたかったのですが。
Hubotにはデフォルトで画像を受け取ってくれる機能はないようです・・。
LINEBotのイメージでmessageとimageを簡単に処理してくれるのではと勝手に思っていました(´;ω;`)うっ
自前で実装するとなんとかやってくれる方法もあるようです。
http://a3no.hatenablog.com/entry/2015/09/13/005334
カレンダーの日にち的にタイムリミットが近いので、続きはどこかの記事で・・・!
ご利用は計画的に!\(^o^)/ぎゃぼん
明日は@n0bisukeさんです!すごいやつよろしくお願いします!(煽り