読者です 読者をやめる 読者になる 読者になる

HubotをHipChatで使ってみる


有名なボットプログラム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ユーザを作成します。
f:id:tsunokawa:20140512184234p:plain

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を開きます。
f:id:tsunokawa:20140512192838p:plain


XMPP/Jabber infoをクリックします。
f:id:tsunokawa:20140512194130p:plain


右側に表示されるJabber IDが外部投稿の際に必要になるユーザ名です。
f:id:tsunokawa:20140512194327p:plain
以上で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だけ飛ばします。
f:id:tsunokawa:20140512195256p:plain


するとそのチャットルームにhubotユーザがログインしてきます。
f:id:tsunokawa:20140512195434p:plain


Hubotが入室後、

hubot ping

とチャットに打ち込むと
PONG
と返るようになります。

f:id:tsunokawa:20140512195939p:plain
できたできた。

ちなみに

一度Hubotがチャットルームに入室した後は
hubot ほにゃらら
とhubotコマンドが使えるのですが、
新しくチャットルームに呼ぶ場合は、
@hubot
とメンションしてあげないとroomに入ってきませんので注意。