• Home
  • Akiko Yokoyama
  • Contact
  • Feed
ja | en |

チャットボット hubot adapterを利用した Slack と Chatwork連携コードサンプル

hubotインストール後に、Slackとchatworkの連携を実現する方法について説明します。(サンプルコードあり) アダプターのインストールをして、環境設定するだけで簡単に実現できます。

まずAdapterとはなにか?

hubotが外部サービス連携するための仕組みです。 以下の通り、公式のドキュメントによると hubotを実行するサービスへのインターフェイスです。 と定義されています。

機械翻訳です:
アダプターは、hubotを実行するサービスへのインターフェイスです。
Hubotには、2つの公式アダプターが含まれています。

  • シェル、つまり開発で使用するもの
  • キャンプファイヤー

ほとんどのチャットサービスで利用できるサードパーティのアダプタがあります。最も人気のあるものは次のとおりです。(省略)

ref. hubot/adapters.md at master · hubotio/hubot

準備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
user-image
Akiko yokoyama in Coding
5 minute read

Similar Posts

3年前にブログの多言語化対応を実はしていた話

Leica Q2 を購入して1年経ちました &レビュー

ブログの再構築を Jekyll + Netlify + Github で行った話

Excel Tips vol.1

WSL / Windows Subsystem for Linux + Ubuntuのセットアップ方法

user-image

Published Mar 15, 2018

Akiko yokoyama in Coding

Also found in

  • Coding

Share this article

3年前にブログの多言語化対応を実はしていた話

Leica Q2 を購入して1年経ちました &レビュー

ブログの再構築を Jekyll + Netlify + Github で行った話

Excel Tips vol.1

WSL / Windows Subsystem for Linux + Ubuntuのセットアップ方法

チャットボットライブラリhubotをインストールとセットアップまで

  • Home
  • Akiko Yokoyama
  • Contact
  • Feed