LoginSignup
4
2

More than 3 years have passed since last update.

Slack API の始め方をまとめました

Posted at

Slack API の始め方をまとめました

目次

  • SlackにAppを登録
  • Slack App を作成
  • Slack API を利用してメッセージを投稿する。

※ rubyを使用します

SlackにAppを登録

ブラウザで次のページよりSlack APIにログインする。
https://slack.com/signin

開発用のワークスペースを作成

ログインを終えたら次のページより開発テスト用のワークスペースを作成する.
create_workspace.png
まずは、+ Create a New Workspace をクリック。

workspace_setup_1.png
作成するワークスペースの名前を聞かれるので任意の名前を入力し、Nextをクリック。
(筆者は 『development』 という名前に設定)

workspace_setup_2.png
次にワークスペースを利用する目的を聞かれるので任意のメッセージを入力し、Nextをクリック。
(筆者は 『slack api』 と記述)

workspace_setup_3.png
次に招待するメンバーを聞かれるので、無視してSkip this stepをクリック。

workspace_setup_4.png
これでワークスペースの作成が完了。

Slack App を作成する

1. Slack App を作成する

ブラウザで次のページよりSlack Appを作成する。
https://api.slack.com/apps?new_app=1

create_app.png
App Name
アプリの名前を任意に入力
※ 後から変更可能

Development Slack Workspace
アプリを適用するワークスペース(先ほど作成した)を選択
※ 後から変更不可のため注意

入力・選択後Create Appをクリック。

2. ScopesでSlackアプリの権限を設定

set_permission.png
Permissionをクリックし移動

set_scope.png
Add an OAuth Scopeをクリックした後、chat:writeを選択し、Scopeを追加する。
(chat:write)によりBotによる投稿が可能になる
※ 後から追加可能

3. アプリをworkspaceにインストールする

install_app_1.png
Scopeを設定したページと同様のページにて、
Install to Workspaceをクリックし、Slackアプリをワークスペースにインストール。

install_app_2.png
次の様なページが表示されるのでAllowをクリック。
(ワークスペースないでアプリを実行して良いかを確認しています。)

install_app_3.png
これでワークスペースへのアプリのインストールが完了しました。
上記のBot User OAuth Access Tokenは後で使用するのでメモ。

Slack API を利用してメッセージを投稿する

1. Gemfileを追加する

Gemfileを作成する

Gemfile
source 'https://rubygems.org'

gem 'http'
gem 'json'
$ bundle install

2. スクリプト実行用のファイルを用意する

test.rb
require 'http'
require 'json'

BOT_USER_ACCESS_TOKEN="< 先ほどメモしたBot User OAuth Access Token をコピペ >"

response = HTTP.post("https://slack.com/api/chat.postMessage", params: {
  token: BOT_USER_ACCESS_TOKEN,
  channel: '#random',
  text: 'hello slack',
  as_user: true
  })
puts JSON.pretty_generate(JSON.parse(response.body))

解説入り

test.rb
# Apiリクエスト送信に用いる
require 'http'
# Jsonデータ作成に用いる
require 'json'

# ACCESS_TOKENを設定
# Scopeへのアクセスに利用する
BOT_USER_ACCESS_TOKEN="< 先ほどメモしたBot User OAuth Access Token をコピペ >"

# HTTPリクエストを特定にSlackApiのURLに送信する
# chat.postMessage では投稿を作成する
# paramsの中身は指定された値を渡す
response = HTTP.post("https://slack.com/api/chat.postMessage", params: {
  token: BOT_USER_ACCESS_TOKEN,
  channel: '#random',
  text: 'hello slack',
  as_user: true
})
puts JSON.pretty_generate(JSON.parse(response.body))

paramsの中身について

token 認証トークンを指定
channel メッセージを投稿するチャンネルを指定
text メッセージを指定
as_user trueを渡すと認証されたユーザーとしてメッセージが投稿される

詳しくはこちらのページに記載されています。
https://api.slack.com/methods/chat.postMessage

今回はメッセーを投稿するためにchat.postMessageを用いましたが他にも様々なapiメソッドが用意されています。
https://api.slack.com/methods

Botをチャンネルに招待する

invite_bot.png
Apiによるメッセージの送信に用いるチャンネルのメッセージにて
/invite @<Bot_Name>を入力し、Botをチャンネルに招待する。

3. 実行

次のコマンドによりスクリプトを実行

$ bundle exec ruby test.rb
{
  "ok": true,
  "channel": "...",
  "ts": "...",
  "message": {
    "bot_id": "...",
    "type": "message",
    "text": "hello slack",
    "user": "...",
    "ts": "...",
    "team": "...",
    "bot_profile": {
      "id": "...",
      "deleted": false,
      "name": "test_app",
      "updated": ...,
      "app_id": "...",
      "icons": {
        "image_36": "https://a.slack-edge.com/80588/img/plugins/app/bot_36.png",
        "image_48": "https://a.slack-edge.com/80588/img/plugins/app/bot_48.png",
        "image_72": "https://a.slack-edge.com/80588/img/plugins/app/service_72.png"
      },
      "team_id": "..."
    }
  }

実行結果が上記のようになっていれば成功です!

Slackを確認してみましょう!
success.png
反映されていますね、これにて終了です。
お疲れ様でした :grin:

エラーについて

エラーについて簡単にまとめたので参考までに

channel_not_found チャンネルが存在しない
not_authed 認証トークンが設定されていない、もしくは間違っている
missing_scope スコープ権限が正しく設定されていない設定を変更したらreinstallが必要
not_in_channel チャンネルにBotが追加されていない
4
2
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
4
2