AWS+Hubot+Slackを使ってBOTを作る方法(後半)を投稿します:)
前半はこちら
http://qiita.com/ShirakawaYoshimaru/items/dc79b9548a43f9c6fe9f
構成はこんな感じ
(前半)1.EC2サーバー作成のための下準備
(前半)2.EC2サーバーを立てる
(後半)3.SlackのBOT設定
(後半)4.EC2サーバーに入ってHubotを作る
(後半)5.Tips
間違いやアドバイス等があったら気軽にコメントください><
では始めて行きます :)
##3.SlackのBOT設定
Slackに追加するBOTは、最初にSlackに登録し、チャンネルに招待する必要があります。
###3-1.BOTをSlackチームに登録する
このurlを開いてくか、
https://slack.com/apps
もしくは、
Slackのチーム名をクリックして、メニューを開いて「Apps & integrations」をクリックしてください。
ブラウザでこんな画面が開きます。
検索バーに「Hubot」を入力して検索しましょう。Hubot導入画面に遷移できます :)
Hubot導入画面でHubotをインストール(追加)したいチームを選択します。
チームの選択ができたら、まずはBotの名前を入力します。
Botの名前は小文字/数字/ドット/アンダーバー/スラッシュしか使えないので注意です。
(大文字は使えません)
次の画面に行くと、Hubotの詳細設定ができるようになります。
BOTのICONはこの画面で変更できます。
ここに後で使う API TOKEN があるので必ずメモっておきましょう。
TOKENをメモったら、画面下部にある Save Integrationボタン を押してBot情報を保存します。 (Save Integrationボタンを選択しても画面は特に変わりません)
###3-2.BOTをチームのチャンネルに招待する
BOTをチャンネルに招待しましょう。
Slackに戻り、画面右上のメニューボタンを選択して Team Directory を選択します。
Teamに入っているメンバー全員の一覧が見れます。先ほど追加したBOTを選択しましょう。
BOTの詳細が見れます。下矢印?マークを選択し、 Invite to a channel を選択します。
どこのチャンネルに招待するか選択しましょう。#randomや#generalでもいいのですが、BOTの動作テストをすることを考えると、#bot みたいなテスト用チャンネルを作成してそこに招待する方が良いでしょう。
ちなみに招待先を間違えると管理者権限がない限りremoveできないので注意してください。
僕は今回#botチャンネルを作ってそこに招待しました。
Inviteボタンを選択すれば招待完了です。
先ほどのBOT設定画面にもどり、所属チャンネル一覧に招待したチャンネルが表示されていればokです。
(間違えて#randomに招待してしまったので、スクショでは#randomと#botの二つに所属していることになっています)
##4.EC2サーバーに入ってHubotを作る
ここまでくれば後は簡単です!
やることは
4-1.EC2にssh接続(ログイン)する
4-2.必要なものをinstallする
4-3.Hubot作成
4-4.Hubot実行
4-5.動作確認テスト
になります :)
ある程度のUnixコマンドの知識は必要ですが、基本コピペでも大丈夫です :)
###4-1.EC2にssh接続(ログイン)する
EC2へのssh接続は割と簡単です。
前半でEC2サーバーを建てる時にダウンロードしたpemファイルを使用するので用意しておきましょう。
ssh接続はこのコマンドでできます。
pemファイルのパスは自分の環境に合わせて変えてください。
userNameはEC2サーバーの場合「ec2-user」が用意されているのでそれを使います。
ipアドレスも自分のEC2サーバーに合わせて用意してください。
$ ssh -i pemファイルのパス userName@ipアドレス
EC2サーバーのipアドレスを確認しましょう。
AWSにログインして、EC2管理画面から自分のEC2を選択し、 パブリックIP をメモりましょう。パブリックIPを使ってssh接続します。
pemファイルのアクセス権限の設定が弱いとssh接続ができないのでアクセス権限を変えます。
ちなみにファイルパスを手入力するのは大変です。Finderからターミナルにファイルをドラック&ドロップすると勝手にファイルパスが記入されるので是非使ってみてください。
$ chmod 400 pemのファイルパス
それではターミナルを使って実践していきます。
$ ssh -i pemファイルのパス userName@ipアドレス
初めて接続するipアドレスには「本当にここに接続していいの?」的な確認がでるのでyesと入力しましょう。
###4-2.必要なものをinstallする
nodesとreisとnpm をインストールしてください。
コマンドを入力したらいろいろ聞かれますが全てyを入力してください。
$ sudo yum install nodejs redis npm --enablerepo=epel
次にcoffee-scriptとhubをインストールしてください。
コマンドを入力したらいろいろ聞かれますが全てyを入力してください。
$ sudo npm install -g coffee-script hubot yo generator-hubot
これで必要なものは全てinstallすることができました。
###4-3.Hubot作成
まずはHubotの作業フォルダを作成しましょう。
これで「QiitaMaruBotフォルダ」を作成してその中に入れます。
$ mkdir QiitaMaruBot
$ cd QiitaMaruBot/
次にHubotを作成します。
Hubotの作成は簡単でこれだけです。
$ yo hubo
Owner:適当に入力
Bot Name: 小文字のみ
Description: 適当に入力
Bot Adapter: slackと入力
次にHubotにToken(SlackのHubot管理画面にあったやつ)を設定します。
xoxb-34928263845-fhogehogehogehogheohgehogeの部分は自分のTokenに変えてください。
$ export HUBOT_SLACK_TOKEN=xoxb-34928263845-fhogehogehogehogheohgehoge
以上でHubotの作成になります。
###4-4.Hubot実行
ここではEC2サーバーの中でHubotが正常に動作しているか確認します。
Hubotに対して「ping」というメッセージを送った時に「pong」と帰って来れば成功です。
まずはHubotを実行します。
(QiitaMaruBot/bin/hubotコマンドを実行しています。)
$ ./bin/hubot
まだHerokuの設定をしていないのでエラーがでますが、気にせずEnterを押せば大丈夫です。
こんな感じになればok
後は、こんな感じでqiitamarubotにメッセージを送ってpongが帰って来ればokです。
qiitamarubotの部分は自分がつけたBOTの名前に適宜変えてください
qiitamarubot> qiitamarubot ping
これでHubot実行は終わりです。
正常に動作していればexitコマンドを実行してHubotを停止させます。
qiitamarubot> exit
###4-5.動作確認テスト
実際にSlackのチャンネルに反応して、SlackのチャンネルにBOTが投稿できるか確認します。
まずはHubotをSlackと接続するコマンドを実行します。
$ ./bin/hubot --adapter slack
実行後にSlackの画面に行って、BOTがオンラインになっていればおkです。
後はBotを招待したチャンネルに行って、「qiitamarubot ping」と打って「pong」が帰って来れば成功です。
楽しいw
動作確認テストは以上になります。
##5.Tips
Tipsでは、
5-1.ssh接続を終了した後でもBOTをオンラインにする方法
5-2.BOTを停止させる方法
を書きます。
###5-1.ssh接続を終了した後でもBOTをオンラインにする方法
普通に./bin/hubot --adapter slack
コマンドを打っただけだとssh接続を終了するときにBOTも終了してしまいます。
これではBOTとして不十分なのでssh接続を終了してもBOTタスクが実行され続けるようバックグラウンドでhubotを実行しましょう。
やり方は簡単で
$ nohup ./bin/hubot --adapter slack &
このコマンドを実行するだけです。
nohupと&をつけることでバックグラウンドでhubotが実行されます。
###5-2.BOTを停止させる方法
nohupコマンドで実行したプロセスは明示的に終了させる必要があります。
やり方は簡単で、
1:プロセスのIDを調べる
2:プロセスをkillする
です。
まずはプロセスのIDを調べましょう。
$ ps aux | grep hubot
これで調べることができます。grepでhubotに関するプロセスのみを出力させます。
2つくらいプロセスがあると思うのですが、--adapter slack
が付いている方のプロセスIDをメモります。
次にプロセスをkillさせます。
$ kill プロセスID
でkillできます。
これを実行することでhubotを停止させることができます。
以上!お疲れさまでした!!
##参考url
http://bitwave.showcase-tv.com/slackと連携するhubotを3分でインストール/