Re:YammerでHubotを利用する(環境構築編2)
前書き
ご無沙汰となりました。iPXのabikoです。
またしても大分間が空いてしまいました。
一体何時から続いているのか、というHubot記事ですが、今回と次回を2本立てでお送りして一旦〆たいと思います。
さて今回の記事は...
前回の環境構築編も一年も前の記事となり、現在ではサーバを立てるまでの画面遷移など諸々が様変わりしています。
その環境構築について見ていくと、終わりが見えないので前回記事終了時点「Amazon EC2が起動しておりSSH接続ができている」ところから話を進めます。
前回の記事
Re:YammerでHubotを利用する(環境構築編1) - iPX社員によるブログ
前々回の記事
社内で利用するYammerにbotを作りたかった(環境構築編) - iPX社員によるブログ
実は今回、Hubotのインストールに大苦戦しました。
過去インストールできた方法が通用せず、エラーばかりだったんですね。
そのエラー達への対処は横に置いておき、最終的にインストールできた方法をご紹介していきたいと思います。
エラーで?マークが出ていた私を救ってくれたはサイト様はこちら。
AWS EC2でNodeを動作させる
上記のサイトではEC2の起動から、Node.jsによるHTTPサーバの作動まで、とても丁寧に紹介されております。
※少々昔の記事なので現在と多少の違いはありますが、かなり参考になるかと
Hubotのインストールのための準備
基本的には前述のページどおりに進めていけば準備完了です。
コマンドを実行して環境を整えつつ、必要なものをインストールしていきます。
# システムアップデート $ sudo yum -y update # 開発ツールのインストール(コンパイラやらGitやら) $ sudo yum -y groupinstall 'Development Tools' # nvmのインストール $ git clone https://github.com/creationix/nvm.git ~/.nvm $ source ~/.nvm/nvm.sh # Node.js のバージョン一覧の表示 $ nvm ls-remote v0.1.14 v0.1.15 ・・・(略) v10.11.0 # Node.jsのインストール(2018/10/08 時点の最新版:v10.11.0) $ nvm install v10.11.0 $ nvm use v10.11.0 # バージョンの確認 $ node -v v10.11.0 $ npm -v 6.4.1
nvmのパスの設定(source ~/.nvm/nvm.sh)は今回のセッションでのみ有効です。
次回以降はログイン時に自動で設定されるよう、~/.bash_profileに下記を加えます。
# nvm if [[ -s ~/.nvm/nvm.sh ]] ; then source ~/.nvm/nvm.sh ; fi
いざHubotをインストール
以降はこちらのページを参考に進めました。(前回も参考にさせて頂きました)
Hubot を Amazon EC2 にセットアップして Yammer に投稿する
# インストール $ npm install -g yo generator-hubot ・・・(略) Everything looks all right! + yo@2.0.5 + generator-hubot@0.4.0 added 839 packages from 300 contributors in 27.223s # 初期設定 $ mkdir YAMMERBOT $ cd YAMMERBOT $ yo hubot ? ========================================================================== We're constantly looking for ways to make yo better! May we anonymously report usage statistics to improve the tool over time? More info: https://github.com/yeoman/insight & http://yeoman.io ========================================================================== No _____________________________ / \ //\ | Extracting input for | ////\ _____ | self-replication process | //////\ /_____\ \ / ======= |[^_/\_]| /---------------------------- | | _|___@@__|__ +===+/ /// \_\ | |_\ /// HUBOT/\\ |___/\// / \\ \ / +---+ \____/ | | | //| +===+ \// |xx| ? Owner abiko ? Bot name YAMMERBOT ? Description A simple helpful robot for your Company ? Bot adapter yammer create ・・・(略) _____________________________ _____ / \ \ \ | Self-replication process | | | _____ | complete... | |__\\| /_____\ \ Good luck with that. / |//+ |[^_/\_]| /---------------------------- | | _|___@@__|__ +===+/ /// \_\ | |_\ /// HUBOT/\\ |___/\// / \\ \ / +---+ \____/ | | | //| +===+ \// |xx| ・・・(略)
はじめは匿名での使用統計の送信有無を聞かれます、今回は n としています。
その後の必要情報の入力ですが、Bot name(任意の名前)とadapterの項目以外はEnterキーで飛ばしてしまって大丈夫です。
間違えてしまっても後から修正できますのでご安心ください。
修正するには作成したディレクトリ配下のpackage.jsonファイルを編集します。
また、adapterの項目をEnterで飛ばしてしまった場合は次の方法でインストールできます。
$ npm install hubot-yammer
ひとまず起動する
$ ./bin/hubot [Mon Oct 08 2018 12:35:35 GMT+0000 (Coordinated Universal Time)] WARNING Loading scripts from hubot-scripts.json is deprecated and will be removed in 3.0 (https://github.com/github/hubot-scripts/issues/1113) in favor of packages for each script. Your hubot-scripts.json is empty, so you just need to remove it. [Mon Oct 08 2018 12:35:35 GMT+0000 (Coordinated Universal Time)] INFO hubot-redis-brain: Using default redis on localhost:6379 [Mon Oct 08 2018 12:35:35 GMT+0000 (Coordinated Universal Time)] ERROR hubot-heroku-keepalive included, but missing HUBOT_HEROKU_KEEPALIVE_URL. `heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s | grep web.url | cut -d= -f2)` YAMMERBOT> YAMMERBOT ping YAMMERBOT> PONG
ワーニングなど目に付きますが、ひとまず返答が返ってくるところまで動作確認ができました。
Yammerと連携するためのトークンの取得
前述のページの通りに進めると接続に必要なトークンが取得できます。
Hubot を Amazon EC2 にセットアップして Yammer に投稿する
発言者になる予定のユーザでyammerにログインした状態で、下記URLにアクセスします。
https://www.yammer.com/client_applications
「新しいアプリの登録」を押した先の入力項目を埋め、作成されたアプリ項目の「このアプリケーションの開発者トークンを生成する」を押します。
現れたトークンをメモ帳などにコピペしておき、情報取得は完了です。
Yammerと連携する設定
環境変数に情報を設定していきます。
今回は投稿用のグループとしてHubotグループを作成しました。
# アクセストークンは先ほどメモしたトークンを設定 $ export HUBOT_YAMMER_ACCESS_TOKEN="xxxxxx-xxxxxxxxxxxxxxxxxxxxx" $ export HUBOT_YAMMER_GROUPS="Hubot" $ export HUBOT_HEROKU_KEEPALIVE_URL="https://www.yammer.com/api/v1/users.json"
いざ、起動して確認!
$ ./bin/hubot -a yammer -n "YAMMERBOT" ・・・(略) groups list : Hubot groups_ids list : 11178894
./bin/hubot -a yammer -n "Hubotの名前"
で起動できます。
では反応を見てみましょう。
Hubotグループにて、「YAMMERBOT ping」と発言してみます。
すると・・・
無事、返信がありました!
長い道のりでした。
因みに
ここでもまた大苦戦したんですが、Hubotはデフォルトで自分自身には返答しない仕様とのこと。
永久ループを防ぐためだと思いますが、Hubot用アカウントを用意できない、という方もいるのではないでしょうか。(私がそうです)
この問題は環境変数の設定で回避できますので、よしなにお使いください。
$ export HUBOT_YAMMER_REPLY_SELF=1
次回
このあたりで力尽きたので、次回までしばし休憩です。
次回で一旦〆になります。
Hello Warldをするところから始まり、簡単にスクリプトに触れていきたいと思います。
それではまた、お会いしましょう。