Hubot ってなんて発音するんだろうかわかってなかったのだけど、ヒューボットで正解だった
https://t.co/rTQQkKtlVq
— Sotaro KARASAWA© (@sotarok) 2014, 4月 30
有名なボットプログラムHubot
自分はずっとGithubが開発したボットだから
「ギットハブ」と「ボット」で「ハボット」と呼んでましたが、
正式には上記の通り「ヒューボット」らしいです。
このHubotをHipChatのボットとして稼働させてみました。
環境
Hubotを動かすサーバー
OS | CentOS6.5 |
---|---|
redis | 2.4.10-1 |
npm | 1.3.6-5 |
nodejs | 0.10.26-1 |
今回検証したHubotバージョン
Hubot | 2.7.2 |
---|
事前準備
redisインストール
yum install redis.x86_64
redisの起動と自動起動設定
service redis start chkconfig redis on
libicu-develインストール
yum install libicu-devel.x86_64
これが入ってないと、
npm install hubot-hipchat --save
の時に
which: no icu-config in (/usr/lib/node_modules/npm/bin/node-gyp-bin:/n/bin/hubot/node_modules/hubot-hipchat/node_modules/node-xmpp/node_modules/node-xmpp-core/node_modules/node-stringprep/node_modules/.bin:/n/bin/hubot/node_modules/hubot-hipchat/node_modules/node-xmpp/node_modules/node-xmpp-core/node_modules/.bin:/n/bin/hubot/node_modules/hubot-hipchat/node_modules/node-xmpp/node_modules/.bin:/n/bin/hubot/node_modules/hubot-hipchat/node_modules/.bin:/n/bin/hubot/node_modules/.bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
とエラーになってしまいます。
npmインストール(epelを有効)
yum install npm
Hubotのインストール
ようやくHubotをインストールします。
npm install -g coffee-script hubot
hubot環境作成
以下コマンドでmybotというディレクトリが作成され、
その下にHubotプログラムが自動配置されます。
hubot --create mybot cd mybot npm install
Hubotの動作テスト
Hipchatと連携する前にHubotが正常動作するか確認します。
binディレクトリの下にあるhubotを実行します。
./bin/hubot
このようにHubotプロンプトが表示されます。
hubot pingと打ってPONGと返答があれば正常に動作しています。
Hubot> hubot ping Hubot> PONG Hubot>
Ctrl + D
で抜けられます。
HipChatで使えるようにする。
ここからようやく本題のHipChatの連携です。
HubotとHipChatのアダプタをインストール
先程作成されたmybotディレクトリで以下を実行します。
npm install hubot-hipchat --save
HipChatの設定
HipChatの管理画面でHubotユーザを作成します。
Hubotユーザ名(Full name) | hubot hubot | ※姓名を入力しないとユーザが作成出来なかった |
---|---|---|
@mention name | hubot | |
Role(権限) | User |
こんな感じでユーザを追加しています。
チャット投稿の為のTokenの取得
Hubotユーザが外部からHipChatに投稿する為のトークンが必要になります。
そのトークンはHipChatの管理画面から発行することができます。
先程作成したhubotユーザのユーザ名とパスワードを使ってHipChatの管理画面にログインします。
※管理者権限でないhubotユーザで大丈夫です。
Jabber ID
の確認
外部から投稿する際の個別のユーザ名を確認します。
管理画面へログイン
https://www.hipchat.com/sign_in
ログイン後、Account Settings
を開きます。
XMPP/Jabber info
をクリックします。
右側に表示されるJabber ID
が外部投稿の際に必要になるユーザ名です。
以上でHipChatの設定と確認は完了です。
hubot実行スクリプトの編集
先程テストで実行したbin/hubot
ファイルを編集して
以下のようにHipChat設定を追加します。
追加する設定内容は先程HipChatの管理画面で確認したものです。
HUBOT_HIPCHAT_JID | HipChatの管理画面で確認したもの |
---|---|
HUBOT_HIPCHAT_PASSWORD | hubotユーザのパスワード |
#!/bin/sh npm install export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH" export HUBOT_HIPCHAT_JID="xxxxx_xxxxxxx@chat.hipchat.com" export HUBOT_HIPCHAT_PASSWORD="password" exec node_modules/.bin/hubot "$@"
Hubot実行
bin/hubot --adapter hipchat
チャットルームの作成
Hubotの動作確認の為、HubotRoom
というチャットルームを作成しました。
チャットルーム名 | HubotRoom |
---|
ここにHubotをjoinさせます。
チャットルームへHubotをjoin
join方法は単にチャットルーム内で
@hubot
とhubotユーザ作成時に指定した@mention name
を指定してやります。
こんな感じでmentionだけ飛ばします。
するとそのチャットルームにhubotユーザがログインしてきます。
Hubotが入室後、
hubot ping
とチャットに打ち込むと
PONG
と返るようになります。
できたできた。
ちなみに
一度Hubotがチャットルームに入室した後は
hubot ほにゃらら
とhubotコマンドが使えるのですが、
新しくチャットルームに呼ぶ場合は、
@hubot
とメンションしてあげないとroomに入ってきませんので注意。