hubot ことはじめ

技術全般

はじめに

hubotは色々なプラットフォームに利用できるチャットボットです。
チャットボットの中身を作っておけば、adapterを変更することで色々なものに転用できます。
ここでは、とりあえずインストールから動かすところまで試します。

hubotはgithub社が製作しており、公式サイトの内容も非常にわかりやすいです。

Getting Started With Hubot
Hubot is your friendly robot sidekick. Install him in your company to dramatically improve employee efficiency.

実行環境について

nvm、npmは思ったよりもメモリを使用します。
AWSの無料枠や、2GBのメモリ程度だとメモリ不足でnpmがエラー落ちしました。
そのため、Windows環境にNode.js、npm、cygwinを入れて実行しています。

nvm,npm,Node.js

hubotはjavascriptの実行環境であるNode.jsで動きます。
Node.jsをインストールするにはnvmというバージョン管理をしてくれるツールを利用します。
Node.jsはバージョンによって仕様が異なることが多く、バージョンの切り替えが容易なnvmで管理をしておくほうが、開発する際に便利なのだそうです。

nvmについてはgithubにインストールスクリプトが用意されているので利用します。
インストール後はターミナルを入りなおします。
私の環境では直接Node.jsの安定板12.18.3を入れてしまっています。

nvm-sh/nvm
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions - nvm-sh/nvm
# wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

インストール後、利用可能なバージョンを確認します。

# nvm ls-remote

LTS版のNode.jsをインストールします。
実施時点では12.18.3がインストールされました。

# nvm install --lts
Installing latest LTS version.
Downloading and installing node v12.18.3...
Downloading https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz...
 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v12.18.3 (npm v6.14.6)
Creating default alias: default -> lts/* (-> v12.18.3)

正しくインストールできたことを確認します。

# node -v
v12.18.3

Node.jsがインストールできた時点で、npmも利用できるようになっています。
npmはパッケージ管理のツールで、yumとかapt-getのNode.js版みたいなものです。

# npm --version
6.14.6

hubotのインストール

まずはnpmでyeoman-generatorとhubot用のテンプレートをインストールします。
yoは自動で色々な生成物を準備してくれるすごいやつです。
generator-hubotはYeoman用のhubotテンプレートです。

# npm install -g yo generator-hubot

インストールが完了したらYeomanからhubotのプログラムを生成します。
何かしらのチャットツールと連携するわけではないので、Adapterはshellにします。

yo hubot
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== No
                     _____________________________
                    /                             \
   //\              |      Extracting input for    |
  ////\    _____    |   self-replication process   |
 //////\  /_____\   \                             /
 ======= |[^_/\_]|   /----------------------------
  |   | _|___@@__|__
  +===+/  ///     \_\
   | |_\ /// HUBOT/\\
   |___/\//      /  \\
         \      /   +---+
          \____/    |   |
           | //|    +===+
            \//      |xx|

? Owner xxx <xxx@yahoo.co.jp>
? Bot name hubottest
? Description hubot test
? Bot adapter shell

hubotスクリプト

hubotの受け答えを行うスクリプトを用意します。
ありきたりなPINGと言ってきたら、PONGと返すスクリプトを作ります。
デフォルトでは初期のスクリプトがexample.coffeeで用意されているので利用します。

# vi scripts/example.coffee
module.exports = (robot) ->
  robot.hear /PING/i, (res) ->
    res.send "PONG"

hubot動作確認

hubot実行時にはbin配下のhubotを実行します。

# bin/hubot
hubottest> PING
hubottest> PONG

HTTPリスナー

hubotはHTTPの待ち受けも可能で、HTTPリクエストに対して応答することができます。
ためしにスクリプトをHTTPリスナーでGETリクエストが来た際に回答する内容にします。

module.exports = (robot) ->
    robot.router.get '/hubot/test', (req, res) ->
        res.send 'OK'

デフォルトだと8080番ポートで待ち受けするので、ブラウザで確認します。

あとはフロント側は別のフレームワークを使ってかっこいいチャットBOTを作ってみたい。。。

コメント

タイトルとURLをコピーしました