Slackアプリ周りの概念の整理
Slackアプリについて勉強を続けていたんですが、少し時間が空いてしまったので基本的な構成を忘れてるんですよね。というか結構ややこしいんですよね、概念が。というわけでせっかくなのでPlantUMLでまとめてみました。
まず、SlackにはWeb APIがあるんですが、それらを使うだけでも、Slackアプリを作成する必要があります。それは主にセキュリティのためで、必要なトークン(ボットトークンorユーザトークン)を発行してもらって、適切な権限(=Scope)の範囲で呼び出すことが可能です。事前に権限を決めておく必要がありますが、一度トークンを得られれば、slack.com/api/<METHOD_FAMILY>.<method>
の形式でWeb APIを呼び出せるようになります。
それに加えて、SlackアプリはSlack本体から呼び戻してもらえるコールバックのエンドポイントをSlackアプリに設定することができて、それが図の中で書いているRequest APIです。具体的にはユーザー側からの能動的なアクション(ボタンを押した、コマンドを入力したなど)や、ワークスペース上である条件が満たされた場合(誰かがメッセージを書き込んだ、絵文字でリアクションしたなど)に呼び出されるみたいです。これを使うことによって、Slack一般ユーザから実際にBotがユーザのごとく見えるように、インタラクティブな挙動をさせることができるようになるわけです。
ちなみに、Request APIが必要なく、単に他のサービスからSlackの機能を使いたいだけ(一方的に状況を通知したい、など)であれば、図に書いたIncoming Webhookが使えます。こちらのほうが開発者にとって開発手段が増えるので、単純なものの場合はこれで事足りることも多いはず。
さて、個人的にはBlock(メッセージにGUI部品とか配置可能)が気になりますが、おいおい。
PlantUMLソースコード
自分のためにここに貼り付けています。
@startuml actor ユーザ rectangle Slack本体 actor Slackボット rectangle Slackアプリ rectangle 別サービスなど actor 開発者 Slack本体 <-up-> ユーザ Slack本体 <-up-> Slackボット 開発者 -up-> Slackアプリ : トークン取得、API使用 Slackアプリ <-up- Slack本体 : Request API Slackアプリ -up-> Slack本体 : Web API 別サービスなど -up-> Slackアプリ : Incoming Webhook @enduml
使ったオンラインエディタ
今回はオンラインエディタを使いました。よろしければ。 www.planttext.com