GitHub謹製のHubotでSlackのBotを作成してみた

HubotはGitHubが開発したオープンソース型のチャットロボットで、CoffeeScriptとNode.jsで記述されています。Hubotには、画像の投稿、言語の翻訳、Google Mapとの統合といったスクリプト群が含まれています。ここではHubotにおけるSlackのBot作成について解説していきます。

01: 環境

  • Raspbian GNU/Linux 8.0 (jessie)

02: インストール

bash


# パッケージの更新
$ sudo apt-get update

# npmのインストール
$ sudo apt-get install -y npm

# npmのキャッシュ削除
$ sudo npm cache clean

# npmのアップデート(1回目)
# Node.jsで作成されたパッケージモジュール管理ツール
$ sudo npm install -g npm

# nのインストール
# Node.jsのバージョン管理ツール
$ sudo npm install -g n

# node.jsの安定板をインストール
$ sudo n stable

# 再起動
$ sudo reboot

# npmのアップデート(2回目)
# 「npmのアップデート(1回目)」に加えて実行することで最新版にアップデートできた。
$ sudo npm update -g npm

# Raspberry Piにデフォルトでインストールされているnodejsを削除
$ sudo apt-get purge -y nodejs

# 再起動
$ sudo reboot

# 作業ディレクトリの作成/移動
$ mkdir JS0101-SlackBot
$ cd JS0101-SlackBot

# yo、generator-hubot、coffee-scriptのインストール
# カレントディレクトリのnode_modules内にインストールされる。
$ npm install yo generator-hubot coffee-script

# Botの作成
$ node_modules/.bin/yo hubot

# スクリプトをデーモン化するツールをインストール
$ npm install forever

Botの作成時、下記項目を入力する。
  • Owner: 任意
  • Bot name: 任意
  • Description: 任意
  • Bot adapter: slack

03: Slackと連携

Slackにアクセスして、追加したいチームの「Apps & Integrations」を選択する。 「Category」→「Bots」→「Hubot」を選択する。 「Install」ボタンを押下する。 「Username」を入力し、「Add Hubot Integration」ボタンを押下する。 「API Token」をメモって、「Save Integration」ボタンを押下する。 作成したBotがチームに参加する。

04: 設定ファイルの編集

JS0101-SlackBot/bin/hubotを編集する。

hubot


#!/bin/sh

set -e

npm install
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"

# 上記でメモったAPI Tokenを記述
export HUBOT_SLACK_TOKEN=<API Token>

# このスクリプトをデーモン化
forever start -c coffee node_modules/.bin/hubot -a slack
# exec node_modules/.bin/hubot --name "js0101-slackbot" "$@"

05: 動作確認

bash


# 作成したBotを実行する。
$ bin/hubot -a slack

# 実行したBotがforeverによってデーモン化されているか確認する。
node_modules/.bin/forever list

「ping」とメッセージを送ると、作成したBotから「PONG」と返ってくる。

06: 所感

インストールからSlackのBot作成まで、とても簡単に行えました。Botに自前で色々な機能を開発したり、他のサービスと連携させることで、Slackの活用範囲もぐっと広がると思います。