チャットボット hubot adapterを利用した Slack と Chatwork連携コードサンプル
hubotインストール後に、Slackとchatworkの連携を実現する方法について説明します。(サンプルコードあり) アダプターのインストールをして、環境設定するだけで簡単に実現できます。
まずAdapterとはなにか?
hubotが外部サービス連携するための仕組みです。 以下の通り、公式のドキュメントによると hubotを実行するサービスへのインターフェイスです。
と定義されています。
機械翻訳です:
アダプターは、hubotを実行するサービスへのインターフェイスです。
Hubotには、2つの公式アダプターが含まれています。
- シェル、つまり開発で使用するもの
- キャンプファイヤー
ほとんどのチャットサービスで利用できるサードパーティのアダプタがあります。最も人気のあるものは次のとおりです。(省略)
準備1. npm側でhubotの各種ライブラリインストール
Adapter hubot-slack
のインストール
1
$ npm install hubot-slack --save
Adapter hubot-chatwork
のインストール
1
$ npm install hubot-chatwork --save
準備2. 各種テスト用チャンネル用意し、トークンを取得する
- Slack: Slackのテストのチャンネルを作成し、トークンを取得する
- Chatwork: Chatworkのテスト用の部屋(チャンネル?)を作成し、トークンを取得する
準備3. システム環境設定
以下の新しいシェルスクリプトをhubotのディレクトリに追加する。コマンドラインで完結するより、コードに残しておいたほうが運用上親切かと思われます。
env.sh
1
2
3
4
5
6
7
8
# slack
export HUBOT_SLACK_TOKEN=[API_TOKEN]
# chatwork
export HUBOT_CHATWORK_TOKEN="[CHATWORK_TOKEN]"
export HUBOT_CHATWORK_ROOMS="[CHATWORK_ROOM_ID]"
export HUBOT_CHATWORK_API_RATE="350"
hubotの起動方法
Slackの場合
1
$ ./bin/hubot -a slack -n sample-hubot
Chatworkの場合
1
$ ./bin/hubot -a chatwork -n sample-hubot
hubot x Slack or Chatwork のサンプルスクリプト
以下はサンプルスクリプトです。 robot.hear
で正規表現がありますが、マッチすると res.send "[メッセージ]"
を返してくれます。
scripts/posting-sample.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module.exports = (robot) ->
robot.hear /badger/i, (res) ->
res.send "Yes, more badgers please!"
robot.hear /I like pie/i, (res) ->
res.send "makes a freshly baked pie"
robot.hear /hello/i, (res) ->
res.reply "Hello #{res.message.user.profile.first_name}"
robot.hear /get random color/i, (res) ->
colors = ['red', 'blue', 'yellow', 'white', 'black']
res.reply res.random colors
メッセージにリプライするサンプルスクリプト on chatwork
scripts/posting-sample.coffee
1
2
3
4
5
6
module.exports = (robot) ->
robot.hear /(\[To:12345678\]*)/i, (msg) ->
envelope = room: process.env.HUBOT_CHATWORK_ROOMS
sendMsg = "Hi, I'm bot :)"
robot.send envelope, sendMsg