特定のチャンネルでhubotに発言させないようにする(hubot-slack-whitelist-middleware)

More than 1 year has passed since last update.

HubotをSlack上で使ってて、このチャンネルでは発言させたくないなぁ・・・
みたいな時あると思います。
そんな時の回避方法として今回は hubot-slack-whitelist-middleware を試してみました。

https://github.com/michaeljacobdavis/hubot-slack-whitelist-middleware

インストール

npmでインストール + external-scripts.jsonに追加のみ。

$cd /path/to/hubot
$npm install --save hubot-slack-whitelist-middleware
$vim external-scripts.json
# hubot-slack-whitelist-middlewareを追加
...

Hubot起動

HUBOT_WHITELISTという環境変数にカンマ区切り(空白無し)で列挙するいいみたいです。

$env HUBOT_SLACK_TOKEN={token} env HUBOT_WHITELIST=random ./bin/hubot  --adapter slack
[Mon Jan 25 2016 22:02:51 GMT+0900 (JST)] INFO Connecting...
[Mon Jan 25 2016 22:02:52 GMT+0900 (JST)] INFO Logged in as testing of XXXXX, but not yet connected
[Mon Jan 25 2016 22:02:53 GMT+0900 (JST)] INFO Slack client now connected
[Mon Jan 25 2016 22:02:54 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379
[Mon Jan 25 2016 22:02:54 GMT+0900 (JST)] INFO hubot-redis-brain: Data for hubot brain retrieved from Redis

hubot-redis-brainが起動してるのは気にしないでください。
whitelistで許可したチャンネルで喋らせてみるとしゃべります(当たり前)

スクリーンショット 2016-01-25 22.04.09.png

次に#hogehogeというチャンネルで喋らせてみましょう。
するとしゃべりません。
注意点としては招待されていたとしてもただただ反応しないので、単に死んでるのでは?と思われかねないなぁというところ。

スクリーンショット 2016-01-25 22.04.31.png

ファイルでホワイトリストのチャンネルを管理したい時

jsonファイルで出来るようです。
その時 HUBOT_WHITELIST_PATH という環境変数にファイルパスを指定してあげればいい感じになります。

$cat /tmp/whitelist.json
[
    "random"
]
$env HUBOT_SLACK_TOKEN={token} env HUBOT_WHITELIST_PATH=/tmp/whitelist.json ./bin/hubot  --adapter slack
[Mon Jan 25 2016 22:06:16 GMT+0900 (JST)] INFO Connecting...
[Mon Jan 25 2016 22:06:17 GMT+0900 (JST)] INFO Logged in as testing of XXXXX, but not yet connected
[Mon Jan 25 2016 22:06:18 GMT+0900 (JST)] INFO Slack client now connected
[Mon Jan 25 2016 22:06:19 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379
[Mon Jan 25 2016 22:06:19 GMT+0900 (JST)] INFO hubot-redis-brain: Data for hubot brain retrieved from Redis

#hogehogeチャンネルでは反応しません。

スクリーンショット 2016-01-25 22.07.11.png

ホワイトリストで許可されてるチャンネル#randomでは反応します。

スクリーンショット 2016-01-25 22.07.22.png

みたいな感じでできます。
会社とかで #general は反応してほしくないな・・・って時に使えたりしそうですね。