5
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

SlackのtokenとAPI、botの種類をまとめた

Slackには様々な種類のTokenがあり、また複数の種類のAPIがあります。
Tokenに紐付いてBotが作成され、Botの種類によって利用できるAPIが違うので、それぞれは微妙に関わりがあります。

が、その辺りを分かっていないと、Legacy TokenとかClassic BotとかRTM APIとか何がなんだか分からなくなるのでまとめました。
(実際、ネット上でも混同させているような記事を見かけるので)

Tokenの種類

(Bot関係は)主に3つ、Bot、Classic Bot、Legacyがあります。
https://api.slack.com/authentication/token-types

BotとClassic Botは利用できるAPIに違いがあります。

Bot

Events APIを利用する最新のTokenです。様々なきめ細かいスコープ(権限)をコントロールでき、Slackとしてはこの種類のBotを推奨しているようです。

以下から普通に作成・管理することができます。
https://api.slack.com/apps

Classic Bot

RTM APIを利用するTokenです。以下のリンクで管理することはできるのですが、その画面からは作ることができないので、探すことになります。

作成する場合は以下のリンク。
https://api.slack.com/apps?new_classic_app=1
または次のページなどから辿ることができます。
https://api.slack.com/authentication/basics#soon
https://api.slack.com/rtm#classic

Legacy

既に2020/5/5をもって新規作成は行えなくなっており、既存のものを利用し続けるしかできません。
もしこの種類のTokenを使っている場合、Bot, Classic BotのTokenのどちらかへ切り替えることを検討したほうが良いでしょう。

もはや当時のことを覚えていませんが、以下を見ると、Legacy Tokenというだけで様々な権限がbotに付与され、あまり細かい権限をコントロールできないようです。(だからこそ廃止されたのでしょうけれども)
https://api.slack.com/legacy/custom-integrations/legacy-tokens

APIの種類

Events API or RTM API

どちらのAPIかで、使える種類が微妙に違います。

どちらを利用すればよいかは以下に指針があります。

詳細は上記をご覧いただくとして、大まかな選び方は以下です。

  • Events API
    • きめ細やかな権限管理を行いたい
    • Botをスケールアウトしたい(スケールアウトできる)
    • 外部にURLを晒すことが可能 (websocketを使うよりも)
    • リアルタイムの応答が不要
  • RTM API
    • 外部にURLを晒せない
    • リアルタイムにデータ(メッセージ)を受け取りたい

※ 以下でもまとめています。
Slack上で動くChatbotを実現するためのアーキテクチャを考える

結局どのBotが良いのか(悪いのか)

Bot(with Events API)かClassic Bot(with RTM API)かは、Botの環境や実現したいことによるので、一概にどちらが良いとは言えないと思います。
特にURLを外部に晒す、Websocketと相性が悪いなど、環境的な要因によっていずれかを選ばなければならないことが多いように思います。

とりあえず現時点では、Legacy Tokenを利用しているBotはまずい、BotとClassic Botはどちらでもいい、という程度でしょうか。
Classic Botも、"Classic"だからといって、今後Deprecatedになると辛いなぁ…と思っています(現時点でそのようなアナウンスはありませんが)。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
5
Help us understand the problem. What are the problem?