はじめに
hubotは色々なプラットフォームに利用できるチャットボットです。
チャットボットの中身を作っておけば、adapterを変更することで色々なものに転用できます。
ここでは、とりあえずインストールから動かすところまで試します。
hubotはgithub社が製作しており、公式サイトの内容も非常にわかりやすいです。
実行環境について
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を入れてしまっています。
# 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を作ってみたい。。。
コメント