AIエージェントとSlackを繋いでみる、なんて場面が最近増えているのではないでしょうか。
しかし、Slackをincomming webhookで使う方法は、Webhook URLが漏洩すると勝手にメッセージ投稿する権限を与えてしまうことになり、セキュリティの観点からよろしくなく、Slack側が廃止予定とSlack Appへの移行が推奨されています。
Legacy custom integrations: incoming webhooks | Slack
ただSlack Appの管理画面からの設定が、どこに何があるのか調べるのが結構手間だったり、いざSlack Appを作ってもそこからSlackのアプリでチャンネルの設定をするのも覚えられないので、ここに備忘録として、Slack App作成からSlack通知できるまでのやり方をまとめました。
ステップ1:Slack Appを作成
- ここにアクセスして、Create New Appボタンを押します。
- From Scrachを選択します。
- App Nameにアプリ名、Pick a workspace to develop your app in:で追加するワークスペースを選択します。
- サイドメニューのApp Homeを選択して開く。
- Your App’s Presence in Slackの見出しのところにEditボタンがあるので押す
- Display Name(表示名:日本語可)とDefault Name(デフォルト名:日本語不可)を入力してAddボタンを押す
- 画面上部にBot user added!と出たらOK
ステップ2:権限スコープを付与する
サイドメニューのOAuth & Permissionsを選択して開く。
下にスクロールするとボットトークンのスコープ(Bot Token Scopes)の見出しがあります。
ここで、OAuthスコープを追加する(Add an OAuth Scope)ボタンを押して、権限を与えます。だいたいchat:writeの権限だけを与えたら事足りると思います。
- chat:write → slak botがチャンネルにメッセージ送信できる
- chat:write.public → slack botが参加していないチャンネルにメッセージを送信する
- channels:read →ワークスペースのパブリックチャンネルに関する基本情報にアクセスできる
ステップ3:OAuth Tokensをプロジェクトに追加
先ほど権限追加したページの上部にあるOAuth Tokensの見出しのところに、参加させたいslackワークスペースへインストールさせるボタンがあるので、これを押す。
コピーしておく
先ほど取得したOAuth Tokensと、送信先チャンネルをプロジェクトに追加して、叩くように設定します。
ステップ4:通知先のチャンネルを作る。
slackのワークスペースを開き、先ほど送信先チャンネルとして入力した名前のボットをチャンネルへを追加します。
追加できたら、そのチャンネルが開くので、/invite SlackApp名で、ボットをチャンネル参加者に追加して下さい。
ステップ5:送信テスト
Botが正しく動作しているか確認するには、Pythonが入っている環境で以下を実行すれば、送信先チャンネルにメッセージが送信されます。
from main.utils.slack_notifier import post_slack_message
post_slack_message("xoxb-あなたのトークン", "#作成したチャンネル名", "テストメッセージです")