hubot導入とSlack連携

BotフレームワークであるhubotをCentOS 7に導入し、Slackに連携させるまでを紹介します。

hubot導入

Node.jsのインストール

hubotはNode.jsで作られているため、まずはNode.jsをインストールします。Node.jsには2017/02/07時点の最新バージョンであるv7.5.0を導入します。
EPELからもNode.jsは導入出来ますが、v0.10系のため古いです。
各OSのNode.jsインストール手順

# curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -

/etc/yum.repos.d/nodesouce-el.repoが作成されている事を確認し、Node.jsと関連パッケージもあわせてインストールします。
gcc-c++とmakeはnpmからパッケージをインストールするために必要で、gitはhubotのCoffee-Script変更履歴管理用で使います。

# ls /etc/yum.repos.d
# cat /etc/yum.repos.d/nodesouce-el.repo
# yum install gcc-c++ make nodejs git

hubot関連パッケージをインストール

npmはNode.jsのパッケージ管理ツールで、-gオプションはグローバル領域にインストールさせるためのものです。
公式サイトのhubot導入手順

# npm install -g yo generator-hubot

hubotをデプロイ

一般ユーザにsuしてから、ディレクトリを作成し、そこにhubotをデプロイする。

# su - 〇〇〇
% cd ~
% mkdir △△△
% cd △△△
% yo hubot

対話式でパラメータを設定する。
? Owner
 → 自分のメールアドレスを入力
? Bot name
 → Botの名前を入力
? Description
 → Botの説明を適当に入力
? Bot adapter
 → slack

不要なパッケージやファイルの削除

heroku用パッケージを削除。hubot-scripts.jsonは起動時に警告が出るので削除する。昔のバージョンの名残。

% npm uninstall hubot-heroku-keepalive --save
% cat ~/△△△/package.json
 → 「hubot-heroku-keepalive」が消えている事を確認する。
% vi ~/△△△/external-scripts.json
 →  「"hubot-heroku-keepalive",」を削除する。
% rm ~/△△△/hubot-scripts.json

gitのリポジトリを作成する

作成したスクリプトのバージョン管理をするため。

% cd ~/△△△
% git config --global user.email "自分のメールアドレス"
% git config --global user.name "自分の名前"
% git init
% git add .
% git commit -m "Initial commit"

Redisのインストール

hubotのデータ永続化のために必要です。永続化が不要であればインストールの必要はありません。

# yum install telnet wget tcl readline-devel
# cd /usr/local/src
# wget  http://download.redis.io/releases/redis-3.2.7.tar.gz
# tar xvfz redis-3.2.7.tar.gz
# cd redis-3.2.7
# make
# make test
# make install
# cd /usr/local/src/redis-3.2.7
# ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default – /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default – /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default – /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service…
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server…
Installation successful!

メモリ4GBのサーバだとmake testで失敗してしまったが、メモリを8GBに増やしたらmake testに成功した。

hubot-google-images利用のための準備

hubotでimageコマンドを有効にするために必要な準備です。

Googleカスタム検索を作成する

Googleカスタム検索にある新しい検索エンジンにアクセスし、以下のようにパラメータを入力して「作成」をクリックする。

  • 「検索するサイト」”www.google.com”
  • 「言語」”すべての言語”
  • 「検索エンジンの名称」”hubot Google Image Search”

hubot-image-search1


コントロールパネルをクリックします。

hubot-image-search2


「検索するサイト」から”www.google.com”を削除する。

hubot-image-search3


以下のようにパラメータを入力する。
「画像検索」”オン”
「音声入力」”オフ”
「検索するサイト」”追加したサイトを重複して、ウェブ全体を検索する”

hubot-image-search4


「詳細」にある”検索エンジンID”をクリックする。このIDが環境変数HUBOT_GOOGLE_CSE_IDに設定するものとなります。

hubot-image-search5

Google Custom Search APIキーを取得する

Google Developers Consoleにアクセスし、”Custom Search API”をクリックします。

hubot-image-search6


“有効にする”をクリックします。

hubot-image-search7


“認証情報に進む”をクリックします。

hubot-image-search8


「APIを呼び出す場所」を”ウェブサーバー(node.js、Tomcatなど)”を選択し、”必要な認証情報”をクリックします。

hubot-image-search9


「名前」に”hubot-google-image-search”と入力し、”APIキーを作成する”をクリックします。

hubot-image-search10


「認証情報を取得する」に表示されている”APIキー”がHUBOT_GOOGLE_CSE_KEYに設定するものとなります。

hubot-image-search11

Slack連携

SlackのIntegration管理ページに行き、hubotを選択します。

hubot-image-search12


“Install”をクリックします。

Slackの無料枠で連携できるサービスは10個までです。

hubot-image-search13


hubotの名前を設定します。

hubot-image-search14


API Tokenを確認します。ここで確認したAPI TokenがHUBOT_SLACK_TOKENに設定するものとなります。

hubot-image-search15


環境変数に必要なパラメータを設定するため、~/.bash_profileに以下を追加します。

HUBOT_SLACK_TOKEN=〇〇〇
HUBOT_GOOGLE_CSE_ID=〇〇〇
HUBOT_GOOGLE_CSE_KEY=〇〇〇
export SLACK_TOKEN GOOGLE_CSE_ID GOOGLE_CSE_KEY

.bash_profileを再読み込みする。

% source ~/.bash_profile

標準出力と標準エラー出力を~/〇〇/out.txtに出力させhubotをslack連携で起動する。

% cd ~/〇〇
% nohup ./bin/hubot --adapter slack > ~/〇〇/out.txt 2>&1 < /dev/null &

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です