KUSAMAKURA

智に働けば角が立つ。情に棹させば流される。意地を通せば窮屈だ。とかくに人の世は住みにくい。

Hello Hubot

これまでは、hubot --create を利用していたが、現在は非推奨になっています。 generator-hubot を使う形式となるため、この記事の実施前に、Windows で hubot を動かす の記事を参考に、hubot の実行環境を整えて置いて下さい。

bot 用の作業ディレクトリを用意する

bot 用の作業ディレクトリを用意し、generator を起動します。

c:\hubotwork>mkdir myhubot
c:\hubotwork>cd myhubot

bot を作成する

yo hubot を実行し、名前などいくつかの質問に答えます。今回はコンソール上で動作する簡単な bot の作成のため、 adapter には、デフォルト(campfire) を指定してください。

c:\hubotwork\myhubot>yo hubot
                     _____________________________
                    /                             \
   //\              |      Extracting input for    |
  ////\    _____    |   self-replication process   |
 //////\  /_____\   \                             /
 ======= |[^_/\_]|   /----------------------------
  |   | _|___@@__|__
  +===+/  ///     \_\
   | |_\ /// HUBOT/\\
   |___/\//      /  \\
         \      /   +---+
          \____/    |   |
           | //|    +===+
            \//      |xx|

? Owner: KUSAMAKURA
? Bot name: HAL
? Description: hello world robot.
? Bot adapter: campfire

----------------------------------------------
                     _____________________________
 _____              /                             \
 \    \             |   Self-replication process   |
 |    |    _____    |          complete...         |
 |__\\|   /_____\   \     Good luck with that.    /
   |//+  |[^_/\_]|   /----------------------------
  |   | _|___@@__|__
  +===+/  ///     \_\
   | |_\ /// HUBOT/\\
   |___/\//      /  \\
         \      /   +---+
          \____/    |   |
           | //|    +===+
            \//      |xx|

以上で bot 完成。

動作確認

デフォルト機能の ping を実行してみます。bot ディレクトリの bin/hubot を実行して、bot を起動します。

c:\hubotwork\myhubot>bin\hubot
connect deprecated multipart: use parser (multiparty, busboy, formidable) npm module instead node_modules\hubot\node_modules\express\node_modules\connect\lib\middleware\bodyParser.js:56:20
connect deprecated limit: Restrict request size at location of read node_modules
\hubot\node_modules\express\node_modules\connect\lib\middleware\multipart.js:86:15
Hubot> [Wed Feb 04 2015 15:27:34 GMT+0900 (東京 (標準時))] 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 Feb 04 2015 15:27:34 GMT+0900 (東京 (標準時))] INFO Using default redis on
localhost:6379

起動後に ping を実行. 返答あれば、OKかと思います。

Hubot> hubot ping
PONG
Hubot>

hello world.

bot が挨拶するようにします。

Scriptの作成

下記の hello.coffee スクリプトを作成し、myhubot ディレクトリの ./scripts に配置します。

# Commands:
#   hubot three laws - Reply with Three Laws of Robotics
module.exports = (robot) ->
  robot.respond /.*three laws.*/i, (msg) ->
    msg.send "
    第一条 ロボットは人間に危害を加えてはならない。また、その危険を看過することによって、人間に危害を及ぼしてはならない。\n
    第二条 ロボットは人間にあたえられた命令に服従しなければならない。ただし、あたえられた命令が、第一条に反する場合は、この限りでない。\n
    第三条 ロボットは、前掲第一条および第二条に反するおそれのないかぎり、自己をまもらなければならない。"
スクリプトの動作確認

スクリプト配置完了後、bot を起動します。 最初の .hubot_history ファイルの削除は、Windows だけだとは思うのですが、2回目以降の bot の起動時に read Error が発生する場合の対処方法になります。Linuxではどーなんだろうか。 bot 起動後、「three laws」の文字列を入力すると、ロボット工学三原則が返されます。

c:\hubotwork\myhubot>rm .hubot_history
c:\hubotwork\myhubot>bin\hubot

------

Hubot> hubot three laws
第一条 ロボットは人間に危害を加えてはならない。また、その危険を看過することによって、人間に危害を及ぼしてはならない。
第二条 ロボットは人間にあたえられた命令に服従しなければならない。ただし、あたえられた命令が、第一条に反する場合は、この限りでない。
第三条 ロボットは、前掲第一条および第二条に反するおそれのないかぎり、自己をまもらなければならない。
Hubot>

参考記事