16
9

More than 5 years have passed since last update.

Bluemixで爆速Hubot&API連携

Last updated at Posted at 2016-12-04

この記事はteratailのBluemixアドベントカレンダー4日目の記事です!

今時Bot動かすならBluemixだと風の噂で聞いたので、いっちょやってみます(`・ω・´)キリッ

目標

  1. HubotをBluemix上で動かす
  2. WatsonAPIをBluemix上でバインドする
  3. 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と返してくれます。

スクリーンショット 2016-12-04 14.25.30.png

(caloryはBot名です、つっこまないでください。)

Hubotにmanifest.ymlというファイルを追加しておきます。

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を連携

スクリーンショット 2016-12-04 14.45.28.png

SlackのCustom IntegrationsからHubotを追加します。
任意の名前、アイコン等を設定したら、API Tokenをコピー。
スクリーンショット 2016-12-04 14.45.52.png

このトークンがSlackとHubotの連携に必要なため、Bluemixの環境変数として登録します。

cf set-env bot名 HUBOT_SLACK_TOKEN トークン

Slack側でチャンネルにBotを招待!
/invite 名前で招待できます。
スクリーンショット 2016-12-03 18.23.25.png

爆速!

機能追加

hubotはscripts/にファイルを追加していくとゴリゴリ動いてくれます。

scripts/hoge.coffee
module.exports = (robot) ->
  robot.respond /hoge$/i, (msg) ->
    msg.send "ホゲー"

スクリーンショット 2016-12-04 15.16.59.png

こんな感じ。

2. WatsonAPIをBluemix上でバインドする

Bluemix上の「接続」からサービスを追加することができます。

スクリーンショット 2016-12-04 14.56.12.png

たくさんのBluemixのサービスが簡単に追加できてよいですね!

3. Hubotを通してAPIで遊ぶ

今回はSlackに画像を投げたらHubotがVisualRecognitionという画像認識のAPIに渡し、戻ってきたデータであそ

・・・びたかったのですが。

スクリーンショット 2016-12-04 15.19.09.png

Hubotにはデフォルトで画像を受け取ってくれる機能はないようです・・。
LINEBotのイメージでmessageとimageを簡単に処理してくれるのではと勝手に思っていました(´;ω;`)うっ

自前で実装するとなんとかやってくれる方法もあるようです。
http://a3no.hatenablog.com/entry/2015/09/13/005334

カレンダーの日にち的にタイムリミットが近いので、続きはどこかの記事で・・・!

ご利用は計画的に!\(^o^)/ぎゃぼん

明日は@n0bisukeさんです!すごいやつよろしくお願いします!(煽り

16
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
9