【Ruby】Slack Botことはじめ

2018年7月26日Ruby,Slack

こんにちは、しきゆらです。

前回はSlackのAppを作ってみました。

前回の記事

【Ruby】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を動かす方法を見ていきます。

 

 

おわり。

Posted by しきゆら