最新のプラットフォーム機能を備えた Slack アプリを瞬時に構築するための Python フレームワーク。スタート ガイドを読み、コード例を見て、Bolt を使用してアプリを構築する方法を学びます。 Python モジュールのドキュメントはここから入手できます。
# Python 3.6+ required
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install slack_bolt
最上位のエクスポートであるコンストラクターを呼び出して、Bolt for Python アプリを作成します。必要に応じて、非同期アプリを作成できます。
import logging
logging . basicConfig ( level = logging . DEBUG )
from slack_bolt import App
# export SLACK_SIGNING_SECRET=***
# export SLACK_BOT_TOKEN=xoxb-***
app = App ()
# Add functionality here
if __name__ == "__main__" :
app . start ( 3000 ) # POST http://localhost:3000/slack/events
export SLACK_SIGNING_SECRET= ***
export SLACK_BOT_TOKEN=xoxb- ***
python app.py
# in another terminal
ngrok http 3000
アプリの実行にソケット モードを使用する場合は、 SocketModeHandler
使用できます。
import os
from slack_bolt import App
from slack_bolt . adapter . socket_mode import SocketModeHandler
# Install the Slack app and get xoxb- token in advance
app = App ( token = os . environ [ "SLACK_BOT_TOKEN" ])
# Add functionality here
if __name__ == "__main__" :
# Create an app-level token with connections:write scope
handler = SocketModeHandler ( app , os . environ [ "SLACK_APP_TOKEN" ])
handler . start ()
次の方法でアプリを実行します。
export SLACK_APP_TOKEN=xapp- ***
export SLACK_BOT_TOKEN=xoxb- ***
python app.py
# SLACK_SIGNING_SECRET is not required
# Running ngrok is not required
通常、アプリは受信イベントのコレクションに反応します。これらのイベントは、イベント API イベント、アクション、ショートカット、スラッシュ コマンド、またはオプション リクエストに対応します。リクエストの種類ごとに、リスナー関数を構築するメソッドがあります。
# Listen for an action from a Block Kit element (buttons, select menus, date pickers, etc)
app . action ( action_id )( fn )
# Listen for dialog submissions
app . action ({ "callback_id" : callbackId })( fn )
# Listen for slash commands
app . command ( command_name )( fn )
# Listen for an event from the Events API
app . event ( event_type )( fn )
# Listen for a custom step execution from a workflow
app . function ( callback_id )( fn )
# Convenience method to listen to only `message` events using a string or re.Pattern
app . message ([ pattern ,])( fn )
# Listen for options requests (from select menus with an external data source)
app . options ( action_id )( fn )
# Listen for a global or message shortcuts
app . shortcut ( callback_id )( fn )
# Listen for view_submission modal events
app . view ( callback_id )( fn )
これらのメソッドの推奨される使用方法は、デコレータです。
@ app . event ( event_type )
def handle_event ( event ):
pass
アプリの機能のほとんどはリスナー関数 (上記のfn
パラメーター) 内にあります。これらの関数は一連の引数を指定して呼び出されます。各引数は任意の順序で使用できます。単一オブジェクトの引数にアクセスしたい場合は、そのイベントで使用可能なすべての引数を含む、 slack_bolt.kwargs_injection.Args
インスタンスであるargs
を使用できます。
口論 | 説明 |
---|---|
body | リクエストの本文全体( payload のスーパーセット)を含むディクショナリ。一部のアクセサリ データ ( trigger_id やauthorizations など) はペイロードの外部でのみ使用できます。 |
payload | 受信イベントの内容。ペイロード構造はリスナーによって異なります。たとえば、イベント API イベントの場合、 payload イベント タイプの構造になります。ブロック アクションの場合、 actions リスト内のアクションになります。 payload ディクショナリには、リスナー ( message 、 event 、 action 、 shortcut 、 view 、 command 、またはoptions ) に対応するエイリアスを介してアクセスすることもできます。たとえば、 message() リスナーを構築している場合、 payload とmessage 引数を交換して使用できます。ペイロードの内容を理解する簡単な方法は、ペイロードをログに記録することです。 |
context | イベントコンテキスト。このディクショナリには、 botId などのイベントとアプリに関するデータが含まれています。ミドルウェアは、イベントがリスナーに渡される前に追加のコンテキストを追加できます。 |
ack | アプリが受信イベントを受信したことを確認するために呼び出す必要がある関数。 ack すべてのアクション、ショートカット、ビューの送信、スラッシュ コマンドおよびオプションのリクエストに対して存在します。 ack 完了時に解決される Promise を返します。詳細については、「イベントの承認」を参照してください。 |
respond | 受信イベントにresponse_url (ショートカット、アクション、およびスラッシュ コマンド) が含まれている場合に応答するユーティリティ関数。 |
say | 受信イベントに関連付けられたチャネルにメッセージを送信するユーティリティ関数。この引数は、 channel_id 含むイベント (最も一般的なのはmessage イベント) に対してリスナーがトリガーされた場合にのみ使用できます。 say 単純な文字列 (プレーンテキスト メッセージの場合) と辞書 (ブロックを含むメッセージの場合) を受け入れます。 |
client | イベントに関連付けられたトークンを使用する Web API クライアント。単一ワークスペースのインストールの場合、トークンはコンストラクターに提供されます。マルチワークスペース インストールの場合、トークンは OAuth ライブラリを使用するか、 authorize 関数を手動で使用して返されます。 |
logger | ミドルウェア/リスナーで使用できる組み込みのlogging.Logger インスタンス。 |
complete | カスタム ステップの実行が正常に完了したことを通知するために使用されるユーティリティ関数。これにより、Slack はワークフローの次のステップに進むように指示されます。この引数は、カスタム ワークフロー ステップの実行を処理する場合、 .function および.action リスナーでのみ使用できます。 |
fail | カスタム ステップが完了できなかったことを通知するために使用されるユーティリティ関数。これにより、Slack にワークフローの実行を停止するように指示されます。この引数は、カスタム ワークフロー ステップの実行を処理する場合、 .function および.action リスナーでのみ使用できます。 |
asyncio を使用してアプリを構築したい場合は、AIOHTTP ライブラリをインポートし、 AsyncApp
コンストラクターを呼び出すことができます。非同期アプリ内では、async/await パターンを使用できます。
# Python 3.6+ required
python -m venv .venv
source .venv/bin/activate
pip install -U pip
# aiohttp is required
pip install slack_bolt aiohttp
非同期アプリでは、すべてのミドルウェア/リスナーが非同期関数である必要があります。これらの関数内でユーティリティ メソッド ( ack
やsay
) を呼び出す場合は、 await
キーワードを使用する必要があります。
# Import the async app instead of the regular one
from slack_bolt . async_app import AsyncApp
app = AsyncApp ()
@ app . event ( "app_mention" )
async def event_test ( body , say , logger ):
logger . info ( body )
await say ( "What's up?" )
@ app . command ( "/hello-bolt-python" )
async def command ( ack , body , respond ):
await ack ()
await respond ( f"Hi <@ { body [ 'user_id' ] } >!" )
if __name__ == "__main__" :
app . start ( 3000 )
別の非同期 Web フレームワーク (Sanic、FastAPI、Starlette など) を使用したい場合は、組み込みアダプターとその例を参照してください。
このドキュメントには、Bolt for Python の基本概念と高度な概念に関する詳細情報が記載されています。また、このライブラリのすべての Python モジュール ドキュメントはここから入手できます。
その他の方法で行き詰まった場合は、私たちがお手伝いいたします。問題を解決するための最善の方法は次のとおりです。
[email protected]