show log include yunabe

勉強したことの復習を兼ねて、IT関係(主にネットワーク/サーバ)についてまとめてます。

Hubotを使ったSlack BOTの始め方

概要

BOTとは特定時間にコメントを送ったり、実ユーザのコメントに対して自動的に返答を行う自動発言システムのことをいいます。
今回はSlackのチャット上で、HubotというGithub社のフレームワークを利用してクラウド上にデプロイし24時間運用するまでを紹介します。

Hubotとは

Github社製のBOTフレームワークであり、多くのチャットツールに対応させることができます。
Node.js上でnpmを用いることで導入が簡単であり、CoffeeScript/javaScriptによって拡張が容易であることが特徴です。

インストール

今回はCentOS 6 上で実装しました。

nodejsのインストール

yum -y install nodejs

npmのインストール

yum install -y npm

Hubot のインストール

npm install -g yo generator-hubot
sudo npm install -g coffee-script hubot yo generator-hubot

Hubot用のディレクトリを作り移動

mkdir myhubot
cd myhubot

BOTの作成

yo hubot
Bot adapter にはSlackと入力する

Hubotの起動

先程作成した、myhubot 配下で以下のコマンドを実行する。
~/myhubot/bin/hubot
ping と入力しコンソールから"PONG"と返ってくればHubotのインストールは完了です。 ちなみにctrl+cでHubotを停止できる。

SlackとHunotの連携

Slackのトークンの取得

Slackの招待したいチームにログインし、Hubotのトークンを取得を行います。

Hubotに取得したトークンを登録する

xoxbから始まるトークンをhubotに記載を行う
vi ~/myhubot/bin/hubot

#!/bin/sh
set -e
npm install
#BOTのトークンを登録
export HUBOT_SLACK_TOKEN="xoxb-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxx"

起動コマンド

先程作成した、myhubot 配下で以下のコマンドを実行する。
bin/hubot --adapter slack

Hubotの永続化

上記でHubotを起動することで、BOTを動かすことは可能になりました。
ただこの状態ではSSHのセッションを切った瞬間にBOTが止まってしまいます。
下記の対応をすることでHubotを永続化させることができます。

Foreverのインストール

npm install forever --save

PATHの設定を行う

vi ~/.bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
#以下を追記を行う
export PATH=$PATH:/home/~/myhubot/node_modules/.bin

設定を再読み込みを行う

source .bash_profile

Hubotの起動ファイルの追記

先ほどトークンを記載したファイルにexport PATH=$PATH:./node_modules/.binを追記を行う
execをforeverに書き換える
vi ~/myhubot/bin/hubot

#!/bin/sh
set -e
npm install
#BOTのトークンを登録
export HUBOT_SLACK_TOKEN="xoxb-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxx"
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"
#exec node_modules/.bin/hubot --name "myhubot" "$@" 
forever start -c coffee node_modules/.bin/hubot --adapter slack

再びHubotを起動する

~/myhubot/bin/hubot

デーモン化確認コマンド

以下のコマンドでデーモン化しているかを確認する
forever list