はじめに
この記事はTwitterで人気のハッシュタグ#100DaysOfCodeをつけて、
100日間プログラミング学習を続けるチャレンジに挑戦した31日目の記録です。
動作環境
- Ruby 2.4.1p111 (2017-03-22 revision 58053)
本日学んだこと
- slackのAPIを使って、Botにメッセージを送ってみる
SlackのAPIを使うために必要なTOKENを取得する
公式サイト: https://api.slack.com/
上記のリンク先からアクセスして、「start building」ボタンを押します。
「Create a Slack App」というモーダルが立ち上がるので、任意の名前と開発対象となる既存のワークスペースを選択します。
「Basic Information」というページに遷移するので、「Add features and functionality」から追加する機能を選択します。
今回はBotsを選択しましょう。
Bot Userページに遷移するので、「Add a Bot User」ボタンを押します。
「Display name」と「Default username」に表示させたい名前を入力して、「Add Bot a User」ボタンを押します。
サイドメニューにある「OAuth & Permissions」を選択し、「Install App to Workspace」を押しましょう。
確認画面が表示されるので、「許可する」を選択します。
そうすると、画面が遷移し、「OAuth & Permissions」ページに「OAuth Access Token」と「Bot User OAuth Access Token」という二つのトークンが表示されているのがわかります。
今回のスクリプトでは、「OAuth Access Token」を使います。
ターミナルの作業:Rubyのスクリプトを作成する
ここからはターミナルの作業です。
任意の場所で、適当なディレクトリを作成します。rubyでslackのAPIを使うために、gemをインストールするので、bundle init
をしておきましょう。
$ mkdir slack-bot
$ cd slack-bot
$ bundle init
Gemfile
に次のgemを追加します。
gem 'slack-api'
gem 'dotenv'
bundle installします。
$ bundle install --jobs=4
続いて、先ほど取得した「OAuth Access Token」をdotenvに記述します。
SLACK_TOKEN="jfirjirifxkXXXXXXXX45454fekdoe0fikeo"
そして、ここからslackのAPIを使うためのファイルを作成します。
touch slack.rb
slack.rb
の中身はこんな感じです。
# slack.rb
require "dotenv/load"
require "slack"
Slack.configure do |config|
config.token = ENV['SLACK_TOKEN']
end
# ワークスペースにいる全員にメッセージを送る
def send_message_to_all
Slack.users_list["members"].each do |member|
Slack.chat_postMessage(channel: member["id"], text: "Hello! テストだよ!")
end
end
send_message_to_all
保存したら、ターミナルで実行してみましょう。
$ bundle exec ruby slack.rb
対象となるワークスペースで、テキストが表示されていたら成功です。
これを応用して、ポモドーロで25分ごとに休憩を促すBotとかを作ったら、色々はかどりそうですよね。
時間見つけて実装してみようと思います。
参考