5
5

More than 3 years have passed since last update.

ruby で 簡単なslack の bot を 作ろう!

Last updated at Posted at 2019-11-30

目的

  • 簡単なslackアプリを作成する方法をまとめる。

成果内容

  1. 新規のワークスペースを作成してbotを追加する。
  2. bot宛てに「ping」と送信された時に、「pong」と返答をする基本的なbotを作成する。

実施概要

  1. テスト用のワークスペースを作成する。
  2. slack APIを使用してbotを作成する。
  3. 必要なGemをインストールする。
  4. Rubyでコードを書く。
  5. slackアプリで試してみる。

実施詳細

  1. テスト用のワークスペースを作成する。
    1. 「ワークスペースを新規作成する」をクリックする。 スクリーンショット 2019-10-19 14.36.09.png
    2. 画面の案内に沿って新しいワークスースを作成する。(筆者は「miriwo_test」というワークスペースを作成した。) スクリーンショット 2019-10-19 14.38.04.png
  2. slack APIを使用してbotを作成する。

    1. 下記リンク先に飛び「Start Building」をクリックする。 https://api.slack.com
    2. 下記画像のようなウインドウが開く。 スクリーンショット 2019-10-19 14.27.59.png
    3. 「App Name」には今回作成する任意のbot名を入力する。(筆者はbot名を「test」とした。) スクリーンショット 2019-10-19 14.32.05.png
    4. 「Development Slack Workspace」の▼をクリックし「Sign in to another workspace」をクリックする。 スクリーンショット 2019-10-19 14.32.11.png
    5. 先に作成したワークスペースを選択する。(筆者は「miriwo_test」というワークスペースを作成した。) スクリーンショット 2019-10-19 14.47.14.png
    6. 「App Name」と「Development Slack Workspace」に自分の意図した内容が記載されていることを確認する。 スクリーンショット 2019-10-19 14.47.31.png
    7. 「Create App」をクリックする。
    8. 下記の画面になる。 スクリーンショット 2019-10-19 14.54.37.png
    9. 画面中央の「Bot」をクリックする。 スクリーンショット 2019-10-19 14.56.07.png
    10. 「Add a Bot User」をクリックする。 スクリーンショット 2019-10-19 14.59.33.png
    11. 「Always Show My Bot as Online」をOnにして、「Add Bot User」をクリックする。 スクリーンショット 2019-10-19 15.02.52.png
    12. 左側のメニューの「Settings」の「Basic Infomation」をクリックして、「Add features and functionality」をクリックする。
    13. 下記の画面になったことを確認する。 スクリーンショット 2019-10-19 15.07.16.png
    14. 「Permission」をクリックする。 スクリーンショット 2019-10-19 15.04.34.png
    15. 「Install App to Workspace」をクリックする。 スクリーンショット 2019-10-19 15.08.33.png
    16. 「許可する」をクリックする。 スクリーンショット 2019-10-19 15.09.56.png
    17. 下記の画面になったことを確認する。(この画面の内容を後で使用するため、消さない方が楽である。) スクリーンショット 2019-10-19 15.11.02.png
  3. 必要なGemをインストールする。

    1. ターミナルを開く。
    2. 任意のフォルダに移動し下記コマンドを実行する。
  $ vi Gemfile
  1. Gemfileが開けたらiをキー入力して下記の内容を記載する。
  source 'https://rubygems.org'

  gem 'slack-ruby-bot'
  gem 'async-websocket', '~>0.8.0'
  1. 記載が完了したらescをキー入力→:wqをキー入力してgemfileを保存する。
  2. 下記コマンドを実行してGemをインストールする。
  $ bundle install
  1. Rubyでコードを書く。
    1. Gemfileがあるフォルダに移動し、下記コマンドを実行してrubyのファイルを作成する。
  $ vi pongbot.rb
  1. pongbot.rbが開けたらiをキー入力して下記の内容を記載する。
  require 'slack-ruby-bot'

  class PongBot < SlackRubyBot::Bot
    command 'ping' do |client, data, match|
      client.say(text: 'pong', channel: data.channel)
    end
  end

  PongBot.run
  1. 記載が完了したらescをキー入力→:wqをキー入力してpongbot.rbを保存する。
    1. サービスを起動させる。
  2. 下記の画像の画面を開き「Bot User OAuth Access Token」の「Copy」をクリックする。 スクリーンショット 2019-10-19 15.27.49.png
  3. ターミナルに移動し、pongbot.rbが見えフォルダに移動し、下記コマンドを実行する。($ SLACK_API_TOKEN=のあとは直前でコピーした内容を記載する。←コピーした内容は筆者の画像の文字列とは異なります。)
  $ SLACK_API_TOKEN=xoxb-803692245030-803348029943-XXXXXXXXXXXXXXXXXXXXXXXX bundle exec ruby pongbot.rb
  1. 上記コマンドを実行するとコンソールにたくさん文字が流れるが気にしないで良い。ターミナルは閉じずにそのままにする。

    1. botのユーザをslackのワークスペースに追加する。
  2. slackで最初に作成したワークスペースを開く。(slackのアプリにワークスペースを追加する方法はこちら)

  3. 任意のチャンネルで下記の内容を入力し「送信ボタン」をクリックする。

    ※bot名は「Bot User OAuth Access Token」の「Copy」を行った画面の左上(slack apiロゴの下あたり)に記載されています。

  /invite @botのユーザ名 
  1. 筆者の場合はbot名をtestとしたため下記の画像ようになる。 スクリーンショット 2019-10-19 15.44.19.png
  2. 下記画像のようにbotのユーザが追加される。
    スクリーンショット 2019-10-19 15.50.07.png

    1. botが正しく動作するか試してみる。
  3. botのユーザを追加したワークスペースの任意のチャンネルで下記の内容を入力し「送信ボタン」をクリックする。

    ※bot名は「Bot User OAuth Access Token」の「Copy」を行った画面の左上(slack apiロゴの下あたり)に記載されています。

  @botユーザ名 ping
  1. 筆者の場合はbot名をtestとしたため下記の画像ようになる。 スクリーンショット 2019-10-19 15.59.35.png
    スクリーンショット 2019-10-19 16.00.17.png
  2. 正常にbotが機能していれば下記画像のように「pong」と返してくる。スクリーンショット 2019-10-19 16.01.35.png

    1. 一旦botを動かしたあとでpongbot.rbを編集したい時

反応する文言の修正や返してくる言葉を変えたい時はpongbot.rbのファイルを修正する必要がある。

  1. コマンド$ SLACK_API_TOKEN=xoxb-803692245030-803348029943-XXXXXXXXXXXXXXXXXXXXXXXX bundle exec ruby pongbot.rbを実行したターミナルで「control」+「c」をする。
  2. pongbot.rbを編集する。
  3. コマンド$ SLACK_API_TOKEN=xoxb-803692245030-803348029943-XXXXXXXXXXXXXXXXXXXXXXXX bundle exec ruby pongbot.rbを実行してbotを再開させる。
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5