2014年10月7日火曜日

一人hubot

概要

Mac上にhubotをインストールしてhubotと1人で会話してみました
ついでに独自のスクリプトも作成してみました

環境準備

  • Mac OS X 10.8.5
  • Homebrew 0.9.5
  • node 0.10.32
  • redis 2.8.17

hubotインストール

hubotはnodeのパッケージ管理コマンドnpmを使ってインストールします
そして、nodeとnpmのインストールはHomebrewから行うので、まだHomebrewのインストールを行っていない方はこちらから

その前にredisインストール

hubotの動作ににredisが必要なのでインストールします
redisもHomebrewから

brew install redis

起動はredis-serverでOK

node&npmインストール

brew install node

その後hubotインストール

npmコマンドでインストールします

npm install -g hubot coffee-script

hubotのスクリプトはcoffee-scriptで記述するためcoffee-scriptもインストールします
インストールは「-g」を付けてグローバルインストールにします

試す

インストールは以上で完了です
まずredis-severを起動します

redis-server

次にhubotを起動します
適当なworkingディレクトリに移動して試します

cd work/hubot
hubot --create kaka_bot
cd kaka_bot
./bin/hubot

hubotという実行用のシェルを直接叩いて実行するとHubot>というインタラクティブモードになります

Hubot> hubot ping
Hubot> PONG
Hubot> hubo help
...ずらっとヘルプの一覧が表示されます...
Hubot> ping

実行する際はhubotというプレフィックス的なものをつける必要があります
helpを表示すれば実行できるコマンドがいろいろと表示されるので試してみてください
また余談ですが、この状態でredis-cliを使ってredisの中を覗いて見るとhubot:storageというkeyができておりJsonオブジェクトが格納されているのがわかります

カスタマイズしてみる

さて、普通にMac上でhubotを動作させることに成功したので次にカスタマイズしてみたいと思います

カスタマイズは独自のスクリプトを作成することで実現します
スクリプトを作成するには先ほど移動したworkingディレクトリに移動してscrpit配下に独自のスクリプトを配置するだけでOKです

cd work/hubot/kaka_bot/scripts
touch jibanyan.coffee
vim jibanyan.coffee

以下を貼り付けてください

# Description:
#   I love the YokaiWatch.
#
# Commands:
#   hubot jibanyan - Display the Jibanyan image that appear in the YokaiWatch.

module.exports = (robot) ->
  robot.respond /(jibanyan|jiba)$/i, (msg) ->
    imageMe msg, 'ジバニャン', (url) ->
      msg.send url

imageMe = (msg, query, animated, faces, cb) ->
  cb = animated if typeof animated == 'function'
  cb = faces if typeof faces == 'function'
  q = v: '1.0', rsz: '8', q: query, safe: 'active'
  q.imgtype = 'animated' if typeof animated is 'boolean' and animated is true
  q.imgtype = 'face' if typeof faces is 'boolean' and faces is true
  msg.http('http://ajax.googleapis.com/ajax/services/search/images')
    .query(q)
    .get() (err, res, body) ->
      images = JSON.parse(body)
      images = images.responseData?.results
      if images?.length > 0
        image = msg.random images
        cb ensureImageExtension image.unescapedUrl

ensureImageExtension = (url) ->
  ext = url.split('.').pop()
  if /(png|jpe?g|gif)/i.test(ext)
    url
  else
    "#{url}#.png"

スクリプトを配置して再度./bin/hubotで起動してhubot jibanyanとコマンドを実行するとURLが返却されると思います

Hubot> hubot jibanyan
Hubot> http://lohas.nicoseiga.jp/thumb/3949352i?#.png

と、こんな感じでcoffeeスクリプトを書いて配置して再起動するだけで簡単にカスタマイズすることができます

あとはheroku pushとかしてslackなどのチャットサービスと連携していればGUIでも操作できると思います(今回は割愛)

参考サイト

http://nanapi.co.jp/blog/2014/06/04/slack_with_hubot/

0 件のコメント:

コメントを投稿