さくらのクラウドに Hubotをのせてみた備忘録(チャットボット編)

下記のアドベントカレンダーの記事です。
qiita.com

最近、さくらのクラウドの2万円クーポンをいただきましたので、その環境にhubotを入れてみようと思います。

もともとはチャットボットAdventCalender向けに書いていたのですが、書いているうちにクラウドに関する説明が長くなってきたので、記事を2部構成にしました。
なので、環境構築までのくだりは下記に記載しています。
butackle.hatenablog.com

少し環境構築編と被る記載もする予定ですが、ここからはHubotを色々と設定する方向でやっていきたいと思います。
Node.jsとnpmが入っている環境からスタートです。
結構、過去に自分が書いたことのコピペも多いんですが、個人的に手順を記載したいので、ご容赦ください。
なお、今回はSlackを繋いでいます。

npmでHubotに必要なモジュールをインストール

npm install -g hubot yo generator-hubot coffee-script でインストールします。

各モジュールの内訳:

モジュール 詳細
hubot hubotです
yo プロジェクトのひな型生成ツールらしい
generator-hubot Hubotのプロジェクト生成ツール
coffee-script https://ja.wikipedia.org/wiki/CoffeeScript

Hubotを生成する

yo hubotと叩くとジェネレータが起動します。
設定項目としては以下のような形です。

項目 設定値
Owner 開発者名
Bot name ボット名
Description ボットの説明
Bot adapter チャットツールとhubotを繋ぐためのアダプタ(今回はslack)

SlackにHubotの設定を追加

ここから導入したいSlackチームを選んで、表示名とか表示画像とかを設定します。
slack.com
後からでも設定は変えられます。
あとは設定画面にAPI Tokenというものが記載されているので、それをコピっておいてください。
このあとの作業で使います。

Hubotの環境にSlackのTokenを設定する

先ほどコピっておいたAPIトークンを設定します。
export HUBOT_SLACK_TOKEN=<API Token>でOKです。

たまに再起動したあと設定し忘れてて、HubotとSlackが繋がらなくなって、やや焦ることがあったので、注意です。

Hubot を起動する

./bin/hubot --adapter slackでHubotを起動します。
うまく繋がれば、bot名の横の丸が緑色になっているはずです。 f:id:butackle:20161030123051p:plain
試しにPINGと打つとPONGと返してくれます。
f:id:butackle:20161030123210p:plain

f:id:butackle:20161120143624p:plain

Webページを表示させてみる。

hubotにはExpressが組み込まれているので、Webサーバ的に使うことが出来ます。
なので、試しにページを表示させてみましょう!

デフォルトは8080ポートなのでfirewall-cmd --add-port=8080/tcp --zone=public --permanentでポート開放の設定をしてfirewall-cmd --reloadで設定を反映させます。
8080ポート以外を設定したい場合にはexport PORT=<ポート番号>でポートを設定します。
ちなみに、1023番までのポート番号でLISTENする場合には、スーパーユーザでないと困難のようなので、かなり設定が面倒なようです。(この一文は、ことさら自信がない)

表示内容はscripts内に以下のように記載したjsファイルを配置します。

'/'と書いてあるところはルーティングの設定なので好きなように設定します。
あとは出力内容はお好きなものを入れてください。

もちろん、これをキッカケにSlackにメッセージを送信することも出来ます。

ページにアクセスさせるだけでメッセージ来るってのも、相当ウザいけど。
なお、roomに入れる値は、チャンネル名ではなくチャンネルIDです。 channels.list method | Slack
ココでTest Methodを押すと、一覧を見れます。
nameの上のidが、該当するIDです。


と、まぁココまで書きました。
結構、VPSで構築した人はいたのですが、そんなにクラウドは無かったので、今回あらためて挑戦した次第です。
思いのほか、普通に使えるんだなと思いました!特にクラウドだから特別な設定が必要というワケではなかったです。

macでやった経験を基にさくらクラウド上でやってみましたが、結果的には手順が変わらないものばかりで、記載も自分の過去記事のコピペが満載になりました。 スミマセン。
ただ、firewallの設定など細かに違う部分もあります。コレはどっちかというとCentOS7の設定に関してのことですね。

hubot自体でどんなのが出来るのかについては他の方々のがあるので、そちらを参考にしていただければなんて思います。
今回、2部構成で長編になった割には、あまり良い記事が書けなかったと反省しきりです。
ですが、もはや直す気力もありません。
また、来年、より良い記事が書ければよいなと思います。

参考

SlackやTwitterなどさまざまなプラットフォームに対応するボット作成ツール「Hubot」 - さくらのナレッジ
Hubot手順 - Qiita