Slack APIの種類と認証設定のメモ
SlackのAPIの種類
SlackのAPIを利用するにはまずSlackのワークスペースにアプリケーション(bot)を作成します。
アプリケーションの権限にて、様々なAPIを利用することができます。
APIには大きく以下の種類があります。
- OAuth & Permissions
- Event Subscriptions
- Slash Commands
- Interactivity & Shortcuts
- Incoming Webhooks
この記事ではそれぞれについて簡単に説明します。
1. OAuth & Permissions
一番汎用的なAPIです。チャットを投稿したり、チャネルを削除したりといった様々なアクションを行うことができます。多くのアプリケーションがこの機能を利用します。
1. OAuth & Permissionsの認証
認証にはユーザー権限とボット権限の二種類があります。
ユーザー権限では、あなたのアクセス権限とあなたのユーザー名でスラックに対してアクションを行います。Bot権限では、Bot名と権限でアクションを実行します。
ユーザー権限を利用する場合はBot User OAuth Tokenを、Botを利用する場合は、BotのOAuth Tokenを利用してAPIにアクセスします。
デフォルトで与えられているAPIの権限は少ないので、利用する機能毎にScopeと呼ばれるアクセス権限を設定していきましょう。
2. Events Subscriptions
スラックで投稿、チャネルの作成などさまざまな種類のイベントを検知し、あなたが設定したURL先にPOSTリクエストを行うAPIです。
あなたが信頼したURL先にPOSTリクエストを行うため、権限設定は不要です。POSTリクエストには、メッセージの内容や投稿したユーザー名など、様々な情報が含まれています。
ただし、イベントに応じてレスポンスを返したい場合は、OAuth & PermissionsによるAPIも利用が必要になります。
3.Slash Commands
Slash Commandsでは、Slackのメッセージで /command arg
のように打ち込むことで起動できるオリジナルのコマンドを作成できます。Slash Commandsを打ち込むことをトリガーに、自分が指定したURLに対してPOSTリクエストを送信して別のサービスを起動するために使います。
POSTリクエストには{response_url: ... }
というように、スラッシュコマンドへの応答先URLが送られれてくるので、ここへPOSTリクエストを返すとSlackにスラッシュコマンドを叩いた人にだけ見える返答メッセージを返すことができます。
Slackに対してもう少し複雑なアクションを起動したい場合、Slash CommandsとIncomming Webhooksの両方を組み合わせて利用することになります。
Slash Commandsの認証
Slash Commandsはあなたが信頼したPOST先にSlash Commandの実行を通知するだけなので、認証の設定は不要です。
4.Interactivity & Shortcuts
Slash Commandsとほぼ似たように、指定したURL先にPOSTリクエストを送る仕組みです。Slash Commandと違う点は、スラッシュコマンドではなく、画像のメニューの一覧にアクション用のコマンドが表示される点です。UIの違いのみと考えてよいでしょう。認証設定もありませんが、OAuth & Permissionsと組み合わせて利用することになると思います。
5.Incoming Webhooks
外部から特定のチャンネルにメッセージを送信するシンプルなAPIです。アプリケーションをチャンネルに追加すると、チャネル毎にURLが発行されるので、そのURLに以下のようなPOSTリクエストを置こうることでメッセージを送信できます。
curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' https://hooks.slack.com/services/sample---aaaaa/url-----/-----
Incoming Webhooksの認証
URLがそのまま認証情報となっているので、別途の設定は不要です。
Discussion