Slack botなどのアプリの開発をする上で、開発したアプリをインストールする方法は4種類ほどある。
最初よくわからず手戻りが発生して面倒だったのでまとめた。
こちらのURLからアプリを管理できる。
https://api.slack.com/apps/
インストール種別
所属ワークスペースへのインストール(直接)
-
インストール先
アプリには所属するワークスペースというものがあり、アプリ作成時の初期設定で決まる。
今のところ、あとから変更できないので慎重に決める。
この方法では所属ワークスペースにしかインストールできない。 -
インストール方法
インストール作業自体は一番簡単で、アプリ管理画面で Install App ボタンを押すだけでインストールできる。 -
botトークン
botトークンはアプリ管理画面から取得できる。
所属ワークスペースへのインストール(OAuthフロー)
-
インストール先
この方法でも所属ワークスペースにしかインストールできない。
他のワークスペースにインストールしようとするとinvalid_team_for_non_distributed_app
エラーがでてインストールに失敗する。 -
インストール方法
OAuthフローは普通のSlackアプリをインストールする時のフローなので見たことがあるはず。
このアプリはこういう権限を要求してるがインストールしてよいか?とインストール承認画面で聞いてくるやつ。
違いはワークスペースの選択ができないこと。
事前にアプリ管理画面でRedirectURLを設定する必要がある。RedirectURLについては後述。 -
botトークン
認可後にRedirectURLに認可コード付きで戻ってくるので、それを使ってbotトークンを取得できる。
OAuthフローでのインストール課程でbotトークンが手に入るので、トークンをDBに保存しておく必要がある。
自作のbotでは、チームIDとenvをキーにインストール情報を丸ごとDynamoDBに保存した。
他のワークスペースへのインストール
-
インストール先
どのワークスペースでもインストールできるようにするには、アプリを公開する必要がある。公開することと、Slack App Directoryに登録することは別。
公開自体はアプリ管理画面で Activate Public Distribution ボタンを押すだけで完了する。
公開するとインストール承認画面の右上からワークスペースを選択できるようになる。逆にインストールURLが分かれば誰でもインストールできるようになる。 -
インストール方法
所属ワークスペースへのインストールと同じ。 -
botトークン
所属ワークスペースへのインストールと同じ。
Slack App Directoryへの登録
-
インストール先
他のワークスペースへのインストールと同じ。 -
インストール方法
公開した上で更にチェックリストをクリアするとSlack App Directoryに登録できる。
Slack App Directoryに登録すると https://slack.com/apps からインストールできるようになる。 -
botトークン
所属ワークスペースへのインストールと同じ。
追加開発や必要な設定
OAuth認可コード発行後のリダイレクトURLの設定
bot側でOAuthフローを実装した上で OAuth & Permissions から Redirect URLs の設定を行う。
@slack/bolt
や @slack/oauth
のデフォルト設定では /slack/oauth_redirect
のパスに対応しているので、そのまま設定すればよい。
設定値は https://bot.example.com/slack/oauth_redirect
のようになる。
アンインストール/トークン無効化時の対応
アンインストールやトークンの無効化をされた時にインストール情報をDBから削除するため tokens_revoked
イベントを受け取るようbot設定を変更する必要がある。
app_uninstalled
イベントも用意されているが、アンインストール時には tokens_revoked
イベントも発火するのでトークンの削除が目的であれば tokens_revoked
イベントを設定すればよいと思う。
設定はアプリ管理画面の Event Subscriptions から行う。
トークン管理処理
所属ワークスペースへのインストール(直接)の場合、アプリ管理画面からbotトークンを取得できる。
ただコピーしてくるだけなので、bot起動時にトークンをアプリに直接渡すことになる(環境変数など)。
他ワークスペースにインストールできるようにする場合には追加開発が必要になる。