Bolt アプリケーションを構築してリリースする
リスナー関数の概要
プロジェクトを作成しましたので、 次はメッセージをリスンして応答するようにします。Slack アプリは通常、Slack から 1:n (一対多) の要求を受信して応答します。Slack から受信する要求の各型に対応する、処理と応答のリスナー関数があります。
Bolt アプリが関数を渡すことができるリスナーのサブセットは次のとおりです。
リスナー |
Description (説明) |
|---|---|
app.event(eventType, fn) |
Events API イベントをリスンします。eventType は、特定のイベントを識別するために使用される文字列です。 |
app.message([pattern ,], fn) |
message 型のイベントを処理するのに便利なリスナー。パターンは任意のサブ文字列か正規表現 (RegExp) を使用できます。 |
app.action(actionId, fn) |
ボタンを使用したユーザー操作など、Block 要素からのインタラクティブイベントをリスンします。actionId 識別子は、block 要素の action_id と一致する文字列です。 |
app.shortcut(callbackId, fn) |
グローバルショートカットとメッセージショートカットの呼び出しをリスンします。callbackId はショートカットの callback_id と一致する文字列または正規表現パターンです。callback_id はアプリの設定で指定されます。 |
次は、イベント、インタラクション、インタラクティビティをリスンして応答するようにアプリを設定します。
イベントリスナーを追加する
イベント登録では、event() リスナーが使用されます。このリスナーの例については Bolt のドキュメントを参照してください。ここでは、message() リスナーを使用してメッセージをリスンし、応答します。
- コンピューターの say-hello フォルダーで、任意のテキストエディターを使用して app.js ファイルを開きます。
-
//Listens to incoming messages that contain "hello" で始まる行以降のすべてのコードを、次のコードに置き換えます。コードブロックの右上にある [Copy (コピー)] をクリックすると、コードをすばやくクリップボードにコピーできます。その後で、必ず作業内容を保存してください。
// Listens to incoming messages that contain “hello”
app.message(/hello/i, async ({ message, say }) => {
//say() sends a message to the channel where the event was triggered.
await say(`Hey there <@${message.user}>`);
});
(async () => {
// Global middleware to log all incoming requests once the app starts
app.use(async ({ body, next }) => {
console.log("⚡️ Received request:", body); //Log app status and the incoming request
await next(); //Pass to next middleware or listener
});
// Start your app
await app.start(process.env.PORT || 3000);
app.logger.info("⚡️ Bolt app is running!");
})();作業結果を見てみましょう。「Hello」という単語を検索する message() リスナーを入力しました (1)。「/hello/i」形式になっているため、ユーザーはこの単語を「Hello」、「hello」、さらには「HeLlO」など、さまざまな形で入力でき、それにアプリが応答します。say() パラメーターはイベントの応答 URL を公開します (2)。これは、chat.postMessage() をコールするのとは違い、message イベントに応答するために追加のスコープを必要としません。
要求が受信された (リスナーが「Hello」と聞いた) ことを知らせるミドルウェアを使用してログを強化することもできます (3)。アプリが適切に機能していることを知らせるメッセージが最終ログに渡されます (4)。これは、構築とテストを行っているときにアプリを監視し、発生した問題をトラブルシューティングするのに役立ちます。

Say Hello を Slack にリリースする
Slack CLI を使用してアプリケーションをリリースします。Slack CLI はすでに Trailhead Slack Playground で認証されています。そのため、アプリケーションの送信先を正確に把握しています。
- アプリケーションフォルダーから、または Command とスペースバーを同時に押して、ターミナルウィンドウを開きます。
- プロジェクトに移動します。
cd say-helloと入力します。
- ホスティングを開始します。
slack runと入力します。
- Slack CLI は、新しい Slack アプリケーションを作成し、リリース先のチームとワークスペースを確認するプロセスを案内します。各オプションを確認します。
- アプリケーションを選択し、[Create a new app (新しいアプリケーションを作成)] を選択して Return キーを押します。
- チーム (自分のチームとワークスペース) を選択して Return キーを押します。
- アクセスを許可するワークスペースを選択し、[All of them (すべて)] が選択されていることを確認して Return キーを押します。
- アプリケーションを選択し、[Create a new app (新しいアプリケーションを作成)] を選択して Return キーを押します。

Slack CLI によって、アプリケーションがリリースされ、起動して実行していることが確認されます。後は Slack で承認して正しいチャンネルに追加するだけです。
アプリケーションを正しいチャンネルに追加してテストする
これでアプリケーションが Slack Playground で有効になりましたので、オンボーディングチャンネルに追加します。
- Trailhead Slack Playground に戻ります。
-
#welcome-new-team-members をクリックします。
-
say-hello (local) を @ メンションして Return キーを押します。Slackbot はアプリケーションがメンションされたことを通知しますが、まだチャンネルには追加されていません。アプリケーションを追加するオプションが表示されます。
-
[Add Them (追加)] をクリックします。

- アプリケーションをテストするために、メッセージ項目から
helloと送信します。アプリケーションは「Hey there @USER」と応答します。

Slack CLI を使用してアプリケーションを構築し、リリースしました。スタートとしては上々の出来です。次のステップでは、プレーンテキストではなくボタン要素を送信して、もう少しインタラクティブな操作を試します。
