Mac上で Rocket.Chat 0.73 に Slack の /remind
のようなリマインダーを組み込んでみます。
CentOSなどのLinuxでやる場合は、Node、Rocket.Chat、MongoDB、Redis のセットアップと Hubot サービス化の辺りの手順が異なると思います。
1. 準備
1.1 Rocket.Chat のインストールとセットアップと実行
細かいところは省略します。自分の場合は Docker ではなく開発用の Rocket.Chat を選んだので、
- brew
- node
- meteor
をインストールした上で GitHub からソースをクローンしています。
$ git clone https://github.com/RocketChat/Rocket.Chat.git
$ cd Rocket.Chat
$ meteor npm install
$ meteor npm start
などであらかじめ動かしておきます。この丁寧な手順は公式の
https://rocket.chat/docs/developer-guides/quick-start/ 辺りに書いてあります。
1.2 Rocket.Chat でボットを使う準備
Rocket.Chat のボットにパスワードを設定しておきます。
ここでは Rocket.Chat に最初から登録されているボット (rocket.cat) を使用しますが、新しいボットユーザーを追加しても良いです。
2. パッケージのインストール
2.1 Redis のインストール
ボット経由で登録されたスケジュールを永続化するために必要です。
$ brew install redis
2.2 Hubot のインストール
Rocket.Chat の公式からアダプター付きの Hubot テンプレートを持ってくるのが便利です。
$ git clone https://github.com/RocketChat/hubot-rocketchat-boilerplate
$ cd hubot-rocketchat-boilerplate
3. Hubot のセットアップ
3.1 Hubot の環境変数を設定
$ vi .env
環境変数の意味はそれぞれ
- https://github.com/RocketChat/hubot-rocketchat/blob/master/README.md
- https://github.com/matsukaz/hubot-schedule/blob/master/README.md
辺りに書いてあります。
HUBOT_NAME
と HUBOT_ALIAS
を書き換えておくとボットへの呼びかけをカスタマイズできるようです。
# Configuration
# for hubot
export HUBOT_NAME='@rocket.cat'
export HUBOT_ALIAS='@rocket.cat'
export HUBOT_LOG_LEVEL=7
# for hubot-rocketchat-boilerplate
export ROCKETCHAT_URL=http://localhost:3000/
export ROCKETCHAT_USER=rocket.cat
export ROCKETCHAT_PASSWORD=????????
export ROCKETCHAT_USESSL=false
export ROCKETCHAT_ROOM=''
export LISTEN_ON_ALL_PUBLIC=true
export RESPOND_TO_DM=true
export RESPOND_TO_EDITED=true
# for hubot-schedule
export HUBOT_SCHEDULE_DONT_RECEIVE=1
export HUBOT_SCHEDULE_DENY_EXTERNAL_CONTROL=1
export HUBOT_SCHEDULE_DEBUG=1
# EOF
3.2 Hubot に依存パッケージを追加
リマインダーの Hubot スクリプトは https://github.com/matsukaz/hubot-schedule を使わせていただきます。素晴らしい。
$ vi package.json
依存関係に 2 パッケージを追加します。直前の行にカンマ記号を足してから行追加しないとエラーになります。
:
"dependencies": {
... ,
"hubot-schedule": "~0.6.2",
"hubot-redis-brain": "^1.0.0"
}
:
$ vi external-scripts.json
こちらはファイル全体を以下に置き換えます。
[
"hubot-schedule",
"hubot-redis-brain"
]
依存パッケージをインストールします。
$ npm install
4. Hubot の実行
$ redis-server /usr/local/etc/redis.conf &
$ source .env
$ bin/hubot
5. Hubot の動作確認
Rocket.Chat 上で Administrator から Bot にスケジュールを尋ねてみます。この Bot への問い合わせは @rocket.chat 〜
で始めます。
cron 形式の *
が Rocket.Chat の太文字指定と被るのでメッセージ入力後の表示が少しおかしくなるようですが、ちゃんと動きます。(フォークして Rocket.Chat 用に直そうかしら...)
また、仕様かどうかよく分かっていませんが、ダイレクトメッセージでは問い合わせ先頭の @rocket.chat
を省略できて、いきなり schedule 〜
と書き始めても通じるようです。
自分の環境では一回だけ何かの拍子にメッセージが表示されなくなりましたが、ブラウザをリロードしたら直りました。 (これは Rocket.Chat のバグな気がします)
6. Hubot の終了
Hubot はターミナルのフォアグラウンドで実行しているので CTRL+C
で終了です。
Redis はバックグラウンドで実行しているで、 fg
してからCTRL+C
で終了です。
以上です。