【Ruby】Slack Botことはじめ
こんにちは、しきゆらです。
前回はSlackのAppを作ってみました。
前回の記事
今回は、Botを作っていきます。
といっても、前半は前回の記事とほぼ同じになります。
詳しい手順は、続きからどうぞ。
準備
基本は前回の記事と同じになります。
- Slackの準備
- アプリ作成
までは同じです。
また、今回もサーバが必要になりますので、レンタルしたり自分で用意するなりしてください。
Slackの準備をし、アプリに名前をつけておきます。
今回は「test_bot」という名前で作っていきます。
アプリをBotとして登録
Slack Appのページから「Basic Information」=>「Add features and functionality」から「Bots」をクリックし「Add a Bot User」をクリック。
流れとしては、作成したアプリにBotとしての特徴を付加している感じです。
クリックすると、「Dispay name」「Default username」を適宜変更し「Add Bot User」をクリックします。
ユーザ欄にBotを表示しておきたい場合は「Always Show My Bot as Online」をONにしておきましょう。
BotをSlackへインストールする
前回もやりましたが、この段階ではアプリを作っただけで、インストールされていません。
SlackのWorkspaceへBotをインストールしてます。
「Basic Information」の「Install your app to your workspace」をクリックし、「Install App to Workspace」をクリックしてインストール。
次の画面では、インストールを許可するかを尋ねられるので、インストール。
こうなっていれば完了です。
ひとまず、#general にBotを招待しておきましょう。
Botの中身を作っていく
さて、BotとしてAppを作成しましたが、中身がありません。
作っていきましょう。
Tokenの取得
ここからは、Botとして作成するサーバとSlackとのやり取りになります。
しかし、Slack側は本当にそのサーバが本物かを判断しないといけませんよね。
そのためにTokenと呼ばれる文字列を設定します。
Tokenは「OAuth & Permissions」の中にある「Bot User OAuth Access Token」の文字列をコピーしておきましょう。
スクリプト作成
では、実際にスクリプトを書いていきましょう。
まずは、「Slackへメッセージを送る」というシンプルなものを作ってみます。
今回はhttpというgemを利用します。
https://github.com/httprb/http
Gemfileにhttpを追加するか、
gem install http
としてインストールし、使えるようにしておきます。
私は、Gemfileを使ってインストールしました。
コードは以下の通り。(test_bot.rb)
require 'http' require 'json' response = HTTP.post('https://slack.com/api/chat.postMessage', params: { token: 'TOKENをここにペースト', channel: '#general', text: 'Botからこんにちは。', as_user: true # ユーザとしてコメントする }) puts JSON.parse(response)
HTTP.postの第2引数としてparams: に連想配列を渡します。
この中で、token:に対して先程コピーしておいたTokenをはっつけます。
これを実行してみます。
bundle exec ruby test_bot.rb
表示できました!
単純にサーバ => Slackへメッセージを送る事ができました。
意外と簡単ですね。
まとめ
前回・今回と、簡単にSlackアプリを作る導入部分に触れてみました。
後は、実際にBotの中身をもっと付け足したり、複雑なことをやらせていけば何でもできそうです。
次回は、RTMを使ってSlackを利用しているユーザの行動をもとにBotを動かす方法を見ていきます。
おわり。