LoginSignup
4
5

More than 5 years have passed since last update.

Rocket.Chat にリマインダーを組み込む

Last updated at Posted at 2019-01-03

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

環境変数の意味はそれぞれ

辺りに書いてあります。

HUBOT_NAMEHUBOT_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 〜 で始めます。

rocketchat-screenshot.jpg

cron 形式の * が Rocket.Chat の太文字指定と被るのでメッセージ入力後の表示が少しおかしくなるようですが、ちゃんと動きます。(フォークして Rocket.Chat 用に直そうかしら...)
また、仕様かどうかよく分かっていませんが、ダイレクトメッセージでは問い合わせ先頭の @rocket.chat を省略できて、いきなり schedule 〜 と書き始めても通じるようです。

自分の環境では一回だけ何かの拍子にメッセージが表示されなくなりましたが、ブラウザをリロードしたら直りました。 (これは Rocket.Chat のバグな気がします)

6. Hubot の終了

Hubot はターミナルのフォアグラウンドで実行しているので CTRL+C で終了です。
Redis はバックグラウンドで実行しているで、 fg してからCTRL+C で終了です。

以上です。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5