Bolt の概要
Bolt for Java は、最新のプラットフォーム機能を使った Slack アプリの開発をスピーディに行うための抽象レイヤーを提供するフレームワークです。
このガイドは、Bolt を使ったアプリ開発の基礎的な内 容を全てカバーします。なお Slack アプリ開発全般についてまだ不慣れな方は、まず「An introduction to Slack apps(英語)」に軽く目を通した方がよいかもしれません。
App クラス
App クラスは、些末なことに煩わされることなく、その Slack アプリの本質的なロジックだけを書くことができる場所です。
App インスタンスを設定していくコードは、主に Slack から受信したイベント(アクション、コマンド実行、セレクトメニューの選択肢の読み込み、Events API で購読した Slack 内でのイベントなど)へどう応答するかの定義で構成されます。
import com.slack.api.bolt.App;
App app = new App();
app.command("/echo", (req, ctx) -> {
return ctx.ack(req.getText());
});
イベントのディスパッチ
以下は、利用可能なイベントをディスパッ チするためのメソッドの一覧です。
メソッド | ディスパッチの条件 (値: 型) | 説明 |
---|---|---|
app.event | イベントデータ型: Class<Event> | イベント API: 購読しているあらゆる bot/user events に応答します。 |
app.message | キーワード: String | Pattern | イベント API: ユーザーからのメッセージ投稿で指定のキーワード・正規表現にマッチする bot/user events に応答します。 |
app.command | コマンド名: String | Pattern | スラッシュコマンド: スラッシュコマンドの実行に応答します。 |
app.blockAction | action_id: String | Pattern | インタラクティブコンポーネント: blocks 内でのボタンクリック、セレクトメニューからの選択、ラジオボタン選択などユーザクアションに応答します。これらのイベントは全てのサーフェスエリア(メッセージ、モーダル、Home タブ)で発火します。 |
app.blockSuggestion | action_id: String | Pattern | インタラクティブコンポーネント: blocks 内の external data source を使ったセレクトメニュー内でユーザーが min_query_length 以上の長さのキーワードを入力したときに表示する選択肢を応答します。 |
app.viewSubmission | callback_id: String | Pattern | モーダル: Submit ボタンクリックによるデータ送信に応答します。 |
app.viewClosed | callback_id: String | Pattern | モーダル: ユーザーがモーダルを閉じたときのイベントに応答します。そのモーダルを open/push したときに notify_on_close が true に設定されている必要があります。 |
app.globalShortcut | callback_id: String | Pattern | ショートカット: ショートカット実行に応答します。 |
app.messageShortcut | callback_id: String | Pattern | ショートカット: メッセージメニューのショートカット実行に応答します。 |
app.dialogSubmission | callback_id: String | Pattern | ダイアログ: ダイアログでのデータ送信に応答します。 |
app.dialogSuggestion | callback_id: String | Pattern | ダイアログ: ダイアログ内での "external" type に設定されたセレクトメニューの選択肢読み込みのリクエストに応答します。 |
app.dialogCancellation | callback_id String | Pattern | ダイアログ: ダイアログが閉じたときのイベントに応答します。 |
app.attachmentAction | callback_id: String | Pattern | 旧式のメッセージ: attachements 内で発生したユーザアクションに応答します。これらのイベントはメッセージのみで発火します。 |
機能ごとの開発ガイド
以下のガイドページで、それぞれの機能について具体的なコード例を見つけることができます。