Slackとローカル環境上(Vagrant)のHubotを連携してみる
概要
1. Hubotとは
2. インストール
3. Hubot作成
4. Slack設定
5. HubotとSlackの連携
1. Hubotとは
GitHub社が作ったNode.jsで動くbotフレームワークです。
Hubotの特徴は、
簡単に拡張できる
簡単に導入できる
多くのチャットツールに対応している
です。
Hubotとチャットツールを接続する"Adapter"を切り替えることで、様々なチャットツールに対応できます。
今回はチャットツール「Slack」との連携を試しました。
2. インストール
今回はローカル環境(Vagrant)に作成しました。Vagrantfileは以下になります。
*2016/05/28(土)変更: 作業環境をMacOSからWindowsに変えました。
またnode.js、npmの各パッケージのバージョンが上がっています。
作業環境
OS: Windows7 Home Premium 64bit
VirtualBox: 5.0.2
Vagrant: 1.7.4
# -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "centos67" config.vm.box_url = "https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box" config.vm.define "hubot" do |hubot| hubot.vm.hostname = "hubot" hubot.vm.network "private_network", ip:"192.168.33.30" hubot.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id ,"--memory", "1024"] end end end
hubotの動作には下記4つが必要です。
Node.js
Hubot
Coffee-script
Yaemonジェネレーター
(Redis) *任意
・nodejs, npm
$ sudo yum install nodejs npm --enablerepo=epel
でインストールが可能ですが、いずれもバージョンが古いです。
$ node -v v0.10.33 $ npm -v 1.3.6
今回はnvm(Node Version Maneger)経由でnodejs、npmを取得しました。
- nvmインストール
$ sudo yum install git $ git clone https://github.com/creationix/nvm.git ~/.nvm $ source ~/.nvm/nvm.sh
- 新しいnodejs、npmをインストール
$ nvm install v5.0.0 ######################################################################## 100.0% Now using node v5.0.0 (npm v3.3.6) $ nvm current v5.0.0 $ node -v v5.0.0 $ npm -v 3.3.6 $ which node ~/.nvm/versions/node/v5.0.0/bin/node
nvmはaliasとしてシェル環境変数に組み込まれるため、新たな端末を開く度にnvm.shを再実行する必要があります。~/.bash_profile等に追記しておくと良いです。
$ nvm alias default v5.0.0 $ 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 # 末尾に追加 if [[ -s ~/.nvm/nvm.sh ]]; then source ~/.nvm/nvm.sh fi
nvmでインストールされるnodeは、ユーザ環境毎に独立しています。rootユーザーと一般ユーザーで管理しているnodejs、npmパッケージは全くの別物になります。今回は一般ユーザー(vagrantユーザー)でインストールしていきます。
・hubot、coffee-script、yo、generator-hubotをインストール
$ npm install -g hubot coffee-script yo generator-hubot $ npm ls -g hubot /home/vagrant/.nvm/versions/node/v5.0.0/lib └── hubot@2.19.0 $ npm ls -g coffee-script /home/vagrant/.nvm/versions/node/v5.0.0/lib ├── coffee-script@1.10.0 └─┬ hubot@2.16.0 └── coffee-script@1.6.3 $ npm ls -g yo /home/vagrant/.nvm/versions/node/v5.0.0/lib └── yo@1.8.3 $ npm ls -g generator-hubot /home/vagrant/.nvm/versions/node/v5.0.0/lib └── generator-hubot@0.4.0
3. Hubot作成
$ mkdir -p hubot-test $ cd hubot-test $ yo hubot
yoコマンドでHubotの設定ができます。
事前に"yo doctor"でエラーが表示されているか確認してください。
・Hubotの設定
Owner(自分のメールアドレス)
Bot name(botの名前)
Desciprtion(botの説明)
Bot Adapter(botを使用するチャットツール)
Bot Adapterには"slack"を入力します。
・動作確認
$ bin/hubot
を実行します。
hubot-test>hubot-test ping hubot-test>PONG
で"PONG"と返ってくれば、正常に動いています。
4. Slackの設定
・slackでhubotを利用可能にする
左上のチーム名 > team Setting
左メニュー > Integrations
Hubotを探してAdd
・hubotを#genaral以外に招待する
招待したいチャンネルを開く
「invite others to this channel」からHubotを選択
確認方法として、hubotの設定画面で確認する
5. HubotとSlackの連携
Slackのトークンを確認して、環境変数に設定します。
$ export HUBOT_SLACK_TOKEN=<Your token>
(bot用ディレクトリの位置で)slackアダプターでhubotを起動させます。
$ bin/hubot --adapter slack
最後に、Slack画面で@hubot名に”ping”を送信して、”PONG”と返ってきたら正常に動いています。
以上になります。
参考:
第1回 Hubotとは何か:GitHub社謹製! bot開発・実行フレームワーク「Hubot」|gihyo.jp … 技術評論社
slackと連携するhubotを3分でインストールする(動画付き)