Bolt 入門ガイド
このガイドでは、Bolt for Python を使った Slack アプリの設定と起動の方法について説明します。ここで説明する手順では、まず新しい Slack アプリを作成し、ローカルの開発環境をセットアップし、Slack ワークスペースからのメッセージをリッスンして応答するアプリを開発するという流れになります。
この手順を全て終わらせたら、あなたはきっと ⚡️Slack アプリのはじめ方のサンプルアプリを動作させたり、それに変更を加えたり、自分のアプリを作ったりすることができるようになるでしょう。
このガイドではソケットモード を利用します。ソケットモードは、Slack アプリ開発をとりあえず始めてみるときやあなたのチームだけのためのアプリをつくるときにおすすめのやり方です。もしすでに HTTP をアプリのコミュニケーションプロトコルとするとわかっている場合は、HTTP の方式に対応した同様のドキュメントである Bolt 入門ガイド(HTTP) を参照してください。
アプリを作成する
最初にやるべきこと : Bolt での開発を始める前に、Slack アプリを作成します。
通常の業務の妨げにならないよう、別の開発用のワークスペースを使用することをおすすめします。新しいワークスペースは無料で作成できます
:::。
アプリ名を入力し(後で変更可能)、インストール先のワークスペースを選択して「Create App
」ボタンをクリックすると、アプリの Basic Information ページが表示されます。
このページでは、アプリの概要や重要な認証情報を確認できます。これらの情報は後ほど参照します。
ひと通り確認して、アプリのアイコンと説明を追加したら、アプリのプロジェクトの構成 🔩 を始めましょう。
トークンとアプリのインストール
Slack アプリでは、Slack API へのアクセスの管理に OAuth を使用します。アプリがインストールされると、トークンが発行されます。アプリはそのトークンを使って API メソッドを呼び出すことができます。
Slack アプリで使用できるトークンには、ユーザートークン(xoxp
)とボットトークン(xoxb
)、アプリレベルトークン(xapp
)の 3 種類があります。
- ユーザートークン を使用すると、アプリをインストールまたは認証したユーザーに成り代わって API メソッドを呼び出すことができます。1 つのワークスペースに複数のユーザートークンが存在する可能性があります。
- ボットトークン はボットユーザーに関連づけられ、1 つのワークスペースでは最初に誰かがそのアプリをインストールした際に一度だけ発行されます。どのユーザーがインストールを実行しても、アプリが使用するボットトークンは同じになります。_ほとんど_のアプリで使用されるのは、ボットトークンです。
- アプリレベルトークン は、全ての組織(とその配下のワークスペースでの個々のユーザーによるインストール)を横断して、あなたのアプリを代理するものです。アプリレベルトークンは、アプリの WebSocket コネクションを確立するためによく使われます。
このガイドではボットトークンとアプリレベルトークンを使用します。
-
左サイドバーの「OAuth & Permissions」をクリックし、「Bot Token Scopes」セクションまで下にスクロールします。「Add an OAuth Scope」をクリックします。
-
ここでは
chat:write
というスコープのみを追加します。このスコープはアプリが参加しているチャンネルにメッセージを投稿することを許可します。 -
OAuth & Permissions ページの一番上までスクロールし、「Install App to Workspace」をクリックします。Slack の OAuth 確認画面 が表示されます。この画面で開発用ワークスペースへのアプリのインストールを承認します。
-
インストー ルを承認すると OAuth & Permissions ページが表示され、Bot User OAuth Access Token を確認できるでしょう。
-
次に「Basic Informationのページ」まで戻り、アプリレベルトークンのセクションまで下にスクロールし「Generate Token and Scopes」をクリックしてアプリレベルトークンを作成します。このトークンに
connections:write
のスコープを付与し、作成されたxapp
トークンを保存します。これらのトークンは後ほど利用します。 -
左サイドメニューの「Socket Mode」を有効にします。
トークンはパスワードと同様に取り扱い、安全な方法で保管してください。アプリはこのトークンを使って Slack ワークスペースで投稿をしたり、情報の取得をしたりします。
プロジェクトをセットアップする
初期設定が終わったら、新しい Bolt プロジェクトのセットアップを行いましょう。このプロジェクトが、あなたのアプリのロジックを処理するコードを配置する場所となります。
プロジェクトをまだ作成していない場合は、新しく作成しましょう。空のディレクトリを作成します。
mkdir first-bolt-app
cd first-bolt-app
次に、プロジェクトの 依存ライブラリを管理する方法として、Python 仮想環境を使ったおすすめの方法を紹介します。これはシステム Python に存在するパッケージとのコンフリクトを防ぐために推奨されている優れた方法です。Python 3.6 以降の仮想環境を作成し、アクティブにしてみましょう。
python3 -m venv .venv
source .venv/bin/activate
python3
へのパスがプロジェクトの中を指していることを確かめることで、仮想環境がアクティブになっていることを確認できます(Windows でもこれに似たコマンドが利用できます)。
which python3
# 出力結果: /path/to/first-bolt-app/.venv/bin/python3
Bolt for Python のパッケージを新しいプロジェクトにインストールする前に、アプリの設定時に作成された ボットトークン と アプリレベルトークン を保存しましょう。
- OAuth & Permissions ページのボットトークン (xoxb) をコピーして、新しい環境変数に保存します。以下のコマンド例は Linux と macOS で利用できます。Windows でもこれに似たコマンドが利用できます。
export SLACK_BOT_TOKEN=xoxb-<ボットトークン>
- Basic Information ページのアプリレベルトークン(xapp)をコピーして、別の環境変数に保存します。
export SLACK_APP_TOKEN=<アプリレベルトークン>
🔒 全てのトークンは安全に保管してください。少なくともパブリックなバージョン管理にチェックインするようなことは避けるべきでしょう。また、上にあった例のように環境変数を介してアクセスするようにしてください。詳細な情報は アプリのセキュリティのベストプラクティスのドキュメントを参照してください。
完了したら、いよいよアプリを作っていきましょう。以下のコマンドを使って、仮想環境に Python の slack_bolt
パッケージをインストールします。
pip install slack_bolt
このディレクトリに「app.py
」という名前の新しいファイルを作成し、以下のコードを追加します。
import os
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
# ボットトークンとソケットモードハンドラーを使っ てアプリを初期化します
app = App(token=os.environ.get("SLACK_BOT_TOKEN"))
# アプリを起動します
if __name__ == "__main__":
SocketModeHandler(app, os.environ["SLACK_APP_TOKEN"]).start()
このようにトークンさえあれば、最初の Bolt アプリを作成することができます。「app.py
」という名前でファイルを保存して、コマンドラインで以下を実行します。
python3 app.py