見出し画像

Slack Web API に入門してみよう

コミュニケーションツールとしてSlackを導入している場合、Slack API を使うと色々な事ができて夢が広がります。ぜひ触ってみて下さい。

Slack Web APIとは?

細かい仕様はいろいろありますが、ざっくりこんな感じ。

・slack からユーザーの情報を取得
・slackのチャンネル・DMへ投稿

本記事ではSlack Web APIについて説明しますが、他にもRTM API と Events APIがあります。下記が日本語サイトでわかりやすいのでご参考に。

間違えやすいBotとの違い

間違えやすいのですが、BotとWeb API のBot Token(後述)は別物です。

スクリーンショット 2020-03-06 19.59.51

Botsが出来ること
・slackでキーワードを入力すると回答(カスタム可能)
・slackのスラッシュコマンドをフックにリマインダーやタスクの登録など

基本的にはslackでユーザーがした行動に対してなにかしてくれるBotと思って下さい。

Appを作る

Web APIを使うには、下記リンクの「Create New App」からAppを作ります。

作成方法はググると色々出てきますので割愛。

Botトークンを使う場合、App HomeにあるBot Nameを追加しないと使えないので注意です。

スクリーンショット 2020-04-15 14.05.52

トークンの種類について

ここで重要なのは、トークンの種類があり、種類によって出来ることが異なるということです。

・User Token
・Bot Token
・Legacy token(classic bot)非推奨
 2020/05/05以降新規でトークンを作れなくなる
 使用中のままであれば機能し続ける
 参考:https://api.slack.com/changelog/2020-02-legacy-test-token-creation-to-retire

これから使う場合はUser Token, Bot Token の2択でしょう。

それぞれ何ができるの?という疑問に関してはAPI Methods一覧を確認してください。

例えばユーザー情報を取得するusers.list APIの場合、Works withにbot, user, classic bot と書いてあります。つまり、3種類あるトークンのうち3つどれでも使うことができるメソッドということです。

スクリーンショット 2020-03-06 19.45.28

トークンの種類を設定

OAuth & PermissionsページからScopesの設定を行います。

スコープを設定することで、トークンを有効にすることが出来ます。この画像の場合、Bot Token で chat:write が有効になっている状況です。

スクリーンショット 2020-03-06 19.50.33

逆にこのように指定がない場合、User Token は無効になっているということです。

スクリーンショット 2020-03-06 19.50.40

実際のトークンはOAuth & Permissionsページからコピー可能です。

スクリーンショット 2020-03-06 19.52.57

コピーしたトークンを使用してご自身の好きな環境にてAPIを楽しんでみて下さい

curl Example

最後にcurlで叩く場合どうするのか書いておきます。これが分かればお好きな言語で通信すればいけるはずです。

bash -c 'curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "channel=[チャンネルid]&text=[投稿したいテキスト]" https://slack.com/api/chat.postMessage?token=[SLACK_ACCESS_TOKEN]

これは chat.postMessage API を使う場合の例です。

チャンネル id とは、slackでチャンネルを選択したとき、/thread 前にある文字列のことです。(画像オレンジ部分)

スクリーンショット 2020-03-06 20.05.16

また、投稿したいチャンネルには予めBotを招待してください。歯車マークの「アプリを追加する」からいけます。

スクリーンショット 2020-03-06 20.32.04

SLACK_ACCESS_TOKEN は先程作成したトークンを指定すれば、該当チャンネルに「投稿したいテキスト」部分が送信されます。

最後に

今回はベーシックなMethodの紹介となりましたが、詳しく見てみるといろんな事ができそうで面白いです。

個人的には「star.list」というメソッドで個人のスターアイテムを取得できるので、TrelloみたいなTodoリストとか作れたら良いなぁとか思いました。


この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
note.user.nickname || note.user.urlname

息抜きのコーヒー代にさせて頂きます!!♡

励みになります!
25
フロントエンドエンジニアです。歴1年ちょい 勉強したことをつらるページ₍ ᐢ. ̫ .ᐢ ₎ たまにもくもく会やったり→https://prog-9.connpass.com/ 趣味はお笑いラジオと西洋音楽と西洋美術👩‍🎨
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。