Slack API の始め方をまとめました
Slack API の始め方をまとめました
目次
- SlackにAppを登録
- Slack App を作成
- Slack API を利用してメッセージを投稿する。
※ rubyを使用します
SlackにAppを登録
ブラウザで次のページよりSlack APIにログインする。
https://slack.com/signin
開発用のワークスペースを作成
ログインを終えたら次のページより開発テスト用のワークスペースを作成する.
まずは、+ Create a New Workspace
をクリック。
作成するワークスペースの名前を聞かれるので任意の名前を入力し、Next
をクリック。
(筆者は 『development』 という名前に設定)
次にワークスペースを利用する目的を聞かれるので任意のメッセージを入力し、Next
をクリック。
(筆者は 『slack api』 と記述)
次に招待するメンバーを聞かれるので、無視してSkip this step
をクリック。
Slack App を作成する
1. Slack App を作成する
ブラウザで次のページよりSlack Appを作成する。
https://api.slack.com/apps?new_app=1
App Name
アプリの名前を任意に入力
※ 後から変更可能
Development Slack Workspace
アプリを適用するワークスペース(先ほど作成した)を選択
※ 後から変更不可のため注意
入力・選択後Create App
をクリック。
2. ScopesでSlackアプリの権限を設定
Add an OAuth Scope
をクリックした後、chat:write
を選択し、Scopeを追加する。
(chat:write)によりBotによる投稿が可能になる
※ 後から追加可能
3. アプリをworkspaceにインストールする
Scopeを設定したページと同様のページにて、
Install to Workspace
をクリックし、Slackアプリをワークスペースにインストール。
次の様なページが表示されるのでAllow
をクリック。
(ワークスペースないでアプリを実行して良いかを確認しています。)
これでワークスペースへのアプリのインストールが完了しました。
上記のBot User OAuth Access Token
は後で使用するのでメモ。
Slack API を利用してメッセージを投稿する
1. Gemfileを追加する
Gemfileを作成する
source 'https://rubygems.org'
gem 'http'
gem 'json'
$ bundle install
2. スクリプト実行用のファイルを用意する
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))
解説入り
# 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をチャンネルに招待する
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を確認してみましょう!
反映されていますね、これにて終了です。
お疲れ様でした
エラーについて
エラーについて簡単にまとめたので参考までに
channel_not_found | チャンネルが存在しない |
not_authed | 認証トークンが設定されていない、もしくは間違っている |
missing_scope | スコープ権限が正しく設定されていない設定を変更したらreinstallが必要 |
not_in_channel | チャンネルにBotが追加されていない |
Author And Source
この問題について(Slack API の始め方をまとめました), 我々は、より多くの情報をここで見つけました https://qiita.com/naok1207/items/b32523deb372e6978f84著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .