Skip to main content

Bolt アプリケーションを構築してリリースする

メモ

メモ

日本語で受講されている方へ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻訳を参照しながら進めていってください。Challenge での評価は英語データを対象に行われるため、英語の値のみをコピーして貼り付けるようにしてください。日本語の組織で Challenge が不合格だった場合は、(1) この手順に従って [Locale (地域)] を [United States (米国)] に切り替え、(2) [Language (言語)] を [English (英語)] に切り替えてから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしてみることをお勧めします。

翻訳版 Trailhead を活用する方法の詳細は、自分の言語の Trailhead バッジを参照してください。

リスナー関数の概要

プロジェクトを作成しましたので、 次はメッセージをリスンして応答するようにします。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() リスナーを使用してメッセージをリスンし、応答します。

  1. コンピューターの say-hello フォルダーで、任意のテキストエディターを使用して app.js ファイルを開きます。
  2. //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)。これは、構築とテストを行っているときにアプリを監視し、発生した問題をトラブルシューティングするのに役立ちます。

//Space for your code のすぐ下に入力されたコード。上記のとおりに、app.message リスナー、say() パラメーター、console.log の横に番号が付いている。

Say Hello を Slack にリリースする

Slack CLI を使用してアプリケーションをリリースします。Slack CLI はすでに Trailhead Slack Playground で認証されています。そのため、アプリケーションの送信先を正確に把握しています。

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

ターミナルウィンドウのコマンドと各ステップの応答履歴、そして bolt-app :lightningbolt: Bolt app is running! という結果

Slack CLI によって、アプリケーションがリリースされ、起動して実行していることが確認されます。後は Slack で承認して正しいチャンネルに追加するだけです。

アプリケーションを正しいチャンネルに追加してテストする

これでアプリケーションが Slack Playground で有効になりましたので、オンボーディングチャンネルに追加します。

  1. Trailhead Slack Playground に戻ります。
  2. #welcome-new-team-members をクリックします。
  3. say-hello (local) を @ メンションして Return キーを押します。Slackbot はアプリケーションがメンションされたことを通知しますが、まだチャンネルには追加されていません。アプリケーションを追加するオプションが表示されます。
  4. [Add Them (追加)] をクリックします。

#welcome-new-team-members チャンネルが開いていて、@say-hello (local) がメンションされ、Slackbot がアプリケーションをチャンネルに追加するオプションを表示している

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

@say-hello (local) がチャンネルに追加された後、ユーザーが「hello」と入力し、アプリケーションが応答するまでの Slack 履歴

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

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む