Slack App の作り方
Slack App / Slack Bot を作るのが初めてだったので、備忘録として作り方を詳しめに書きました。同じような方の参考になれば幸いです。
以下は 2021年10月7日に公開された Slack App Configuration 新デザイン の場合です。
新デザインが気に入らない場合は Distribution > Revert to the old design から旧デザインに戻せます。
Slack App 作成
slack api > Your Apps から Create New App
をクリックします。
特にこだわりがなければ From scratch
を選択、最初から YAML や JSON で app manifest を入力する場合は From an app manifest
を選択します。
次の画面で slack app 名と、この slack app を適用する slack workspace を指定します。
workspace は後から変更できません。
Slack App に必要な権限を付与
Settings > App Manifest で公式ドキュメントを参考に、YAML または JSON で App に必要な権限を定義します。
下は user scopes に channels:history
, bot scopes に channels:history
と chat:write
を設定する例です。
bot scope を設定する場合は bot_user
の記述も必要となります。
features:
bot_user:
display_name: Test App
always_online: false
oauth_config:
scopes:
user:
- channels:history
bot:
- channels:history
- chat:write
user scope と bot scope の違いですが
- user scope はユーザーに成り代わって処理をする権限
- bot scope はあくまでボットユーザーとして処理をする権限
となっているようです。
どの scope が必要かは用途に応じて選択します。どの Web API methods が用途に合うかを公式ドキュメントで調べて、その API method の Required scopes
に書いてある scope を逆引きして設定する、とすると上手く権限設定ができそうです。
例えばチャンネルにメッセージを投稿する chat.postMessage
という method を実装で使うのであれば、Bot なら chat:write
, User なら chat:write
/ chat:write:user
/ chat:write:bot
を scope として追加すれば良いことが分かります。
Slack App を Workspace にインストール
Distribution > Install App から対象 Workspace に Slack App をインストールします。
前段階で scopes として設定した権限に対するリクエストが表示されるので、許可するをクリックします。
User OAuth Token (xoxp-) / Bot User OAuth Token (xoxb-) が表示されます。
後で Distribution > Install App からも Token は確認可能です。
Slack App を Slack Channel に追加
主に bot scope として権限を追加している場合に必要な手順です。
Slack を開き、Slack App の処理対象としたい Slack Channel の チャンネル詳細 > インテグレーション > app から作成した Slack App を追加します。
この追加を忘れると bot user として Slack API リクエスト時には not_in_channel
というエラーが返ってきます。
実装
あとは発行した Token を用いて Slack API をリクエストするなどの実装を進めていきます。
Slack 公式の各言語 SDK はこちらです。
Slack API Tester
Web API methods ページには GUI から簡単に API をリクエストする Tester があり、実装前にエラー無く API をリクエストできるかテストすることが可能です。
参考
Discussion