2 flat logo on transparent 256
2018-10-13

チャットボット Hubot(ヒューボット)とSlackを連携してみる

Bot321032121

LineBotなどのチャットボットが広がってきていますが、今回は Hubotを紹介します

Hubot(ヒューボット)とは

GitHub社製のNode.js製のチャットボットです。 大きな特徴はツイッターやフェイスブック、SlackなどのSNSに簡単に連携可能な部分が大きな特徴です。

今回はHubotでSlackから投稿した内容に、Hubotが返信する部分まで実装します。

開発環境

MAC

Node.js v7.4.0

npm -v 4.0.5

Node.js をインストールする

node -vコマンドでバージョンが表示される方はこの部分は飛ばしてもらって結構です。

$node -v

v7.4.0

Node.jsをインストールする為に、Node.jsのバージョン管理ツール、nodebrewを利用します。

$ brew install nodebrew

インストールできたか確認 インストールできていればnodebrewのバージョンが表示される

$ nodebrew -v

nodebrew 1.0.0

Usage:
    nodebrew help                         Show this message
    nodebrew install <version>            Download and install <version> (from binary)
    nodebrew compile <version>            Download and install <version> (from source)
    nodebrew install-binary <version>     Alias of `install` (For backword compatibility)
    nodebrew uninstall <version>          Uninstall <version>
    nodebrew use <version>                Use <version>
    nodebrew list                         List installed versions
    nodebrew ls                           Alias for `list`
    nodebrew ls-remote                    List remote versions
    nodebrew ls-all                       List remote and installed versions
    nodebrew alias <key> <value>          Set alias
    nodebrew unalias <key>                Remove alias
    nodebrew clean <version> | all        Remove source file
    nodebrew selfupdate                   Update nodebrew
    nodebrew migrate-package <version>    Install global NPM packages contained in <version> to current version
    nodebrew exec <version> -- <command>  Execute <command> using specified <version>

pathを通す。以下をコマンドに記載して、その後ターミナルを再起動

$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.profile

nodebrew ls-remoteでインストール可能なバージョンが表示されます。

$nodebrew ls-remote


v0.0.1    v0.0.2    v0.0.3    v0.0.4    v0.0.5    v0.0.6

v0.1.0    v0.1.1    v0.1.2    v0.1.3    v0.1.4    v0.1.5    v0.1.6    v0.1.7
v0.1.8    v0.1.9    v0.1.10   v0.1.11   v0.1.12   v0.1.13   v0.1.14   v0.1.15
v0.1.16   v0.1.17   v0.1.18   v0.1.19   v0.1.20   v0.1.21   v0.1.22   v0.1.23
v0.1.24   v0.1.25   v0.1.26   v0.1.27   v0.1.28   v0.1.29   v0.1.30   v0.1.31
v0.1.32   v0.1.33   v0.1.90   v0.1.91   v0.1.92   v0.1.93   v0.1.94   v0.1.95
v0.1.96   v0.1.97   v0.1.98   v0.1.99   v0.1.100  v0.1.101  v0.1.102  v0.1.103
v0.1.104
以下略

Node.jsのインストールバージョンが存在しない場合は以下コマンドでダウンロードします。 今回はv7.4.0を利用します。

$ nodebrew install-binary v7.4.0

ダウンロードする際に以下エラーが発生した場合

fetch: http://nodejs.org/dist/v4.2.4/node-v4.2.4.tar.gz
Warning: Failed to create the file
Warning: /Users/a14162/.nodebrew/src/v4.2.4/node-v4.2.4.tar.gz: No such file
Warning: or directory

curl: (23) Failed writing body (0 != 7945)
download faild: http://nodejs.org/dist/v4.2.4/node-v4.2.4.tar.gz

以下コマンドでディレクトリを作成します。

$ mkdir -p ~/.nodebrew/src
#ディレクトリ作成後に Node.js v7.4.0をインストール
nodebrew install-binary v7.4.0

以下コマンドで利用するNode.jsを指定します。

$ nodebrew use v7.1.0
$ node -v
v7.4.0

これでNode.jsのインストールが完了しました

Hubotをインストールする

hubot generator をインストールします。

npm install -g yo generator-hubot

Coffee scriptがインストールされていない場合はこれもインストール

npm install -g hubot coffee-script

Hubot用のディレクトリを作成し、移動します。

mkdir test-hubot
cd test-hubot

test-hubotディレクトリで以下コマンドを実行します。

yo hubot --adapter=slack --name="TestHubot" --description="testet" --owner="test_test<testes@example.com>"

以下は適時変更してください。

slack --name

description

owner及びアドレス

これでHubotのインストール完了しました。

test-hubotディレクトリで以下のコマンドを実行して、 コマンドライン上で自分が入力した内容をBotに返答してもらいます。

$  bin/hubot

npm WARN [email protected] requires a peer of [email protected]^2.0.0 but none was installed.

Hubot> hubot echo "テスト"
Hubot> "テスト"
Hubot> hubot echo "123"
Hubot> "123"

SlackとHubotを連携する

公式サイトへアクセス

アカウントへログイン後に、追加appにhubotを記載し、選択

Hubotを入力

Add Configurationを選択

Add Configuration

botのユーザーネームを選択、これは何でもいいのですが、 今回はhubot としました。

Add Configurationを選択

トークンが記載されたHUBOTSLACKTOKENというコマンドが表示されます。

Add Configuration

表示されたトークンのコマンドをターミナルに入力すると hubotが動作する状態になります。

起動した後は一旦、停止してテスト用のファイルを作成します。

HUBOT_SLACK_TOKEN=ここにトークンを記載 ./bin/hubot --adapter slack

Slackに登録してみる

scriptsフォルダ配下にsample.coffeeを作成

module.exports = (robot) ->
  robot.respond /あなたは?/i, (res) ->
    res.send res.message.user.name
    res.send "私はHubotです!"

以下コマンドでHubotを起動します。

HUBOT_SLACK_TOKEN=ここにトークンを記載 ./bin/hubot --adapter slack

そして適当なチャネルで以下を入力すると、

@hubot あなたは?

入力したユーザー名と私はHubotです!と返答がきます。

その他関連記事

Ruby On Railsとtwitterの投稿機能を連携する

Ruby On RailsでRedisを利用してランキング機能を実装する

Ruby On Railsでredcarpetを利用し、シンタックスハイライトに対応したブログ機能を実装する

Ruby On Railsで外部APIを利用して、簡単なアプリケーションを作成する

Vue.jsでマークダウンに対応したメモ帳アプリを作成する|コピペで動くサンプルコード付き

Vue.jsでSVGのアイコンを操作する|コピペで動くサンプル付き

Ruby On Railsで検索機能を実装する|ransack

前の記事
次の記事