Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions docs/english/concepts/custom-steps-dynamic-options.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,13 @@ The `inputs` attribute defines the parameters to be passed as inputs to the step

The following format can be used to reference any input parameter defined by the step: `{{input_parameters.<PARAMETER_NAME>}}`.

In addition, the `{{client.query}}` parameter can be used as a placeholder for an input value. The `{{client.builder_context}}` parameter will inject the [`slack#/types/user_context`](/tools/deno-slack-sdk/reference/slack-types/#usercontext) of the user building the workflow as the value to the input parameter.
In addition, the `{{client.query}}` parameter can be used as a placeholder for an input value. The `{{client.builder_context}}` parameter will inject the [`slack#/types/user_context`](/reference/types/user_context-type) of the user building the workflow as the value to the input parameter.

### Types of dynamic options UIs {#dynamic-option-UIs}

The above example demonstrates one possible UI to be rendered for builders: a single-select drop-down menu of dynamic options. However, dynamic options in Workflow Builder can be rendered in one of two ways: as a drop-down menu (single-select or multi-select), or as a set of fields.

The type is dictated by the output parameter of the custom step used as a dynamic option. In order to use a custom step in a dynamic option context, its output must adhere to a defined interface, that is, it must have an `options` parameter of type [`options_select`](/tools/deno-slack-sdk/reference/slack-types#options_select) or [`options_field`](/tools/deno-slack-sdk/reference/slack-types#options_field), as shown in the following code snippet.
The type is dictated by the output parameter of the custom step used as a dynamic option. In order to use a custom step in a dynamic option context, its output must adhere to a defined interface, that is, it must have an `options` parameter of type [`options_select`](/reference/types/options_select-type) or [`options_field`](/reference/types/options_field-type), as shown in the following code snippet.

```js
"output_parameters": {
Expand All @@ -109,9 +109,9 @@ The type is dictated by the output parameter of the custom step used as a dynami

#### Drop-down menus {#drop-down}

Your dynamic input parameter can be rendered as a drop-down menu, which will use the options obtained from a custom step with an `options` output parameter of the type [`options_select`](/tools/deno-slack-sdk/reference/slack-types#options_select).
Your dynamic input parameter can be rendered as a drop-down menu, which will use the options obtained from a custom step with an `options` output parameter of the type [`options_select`](/reference/types/options_select-type).

The drop-down menu UI component can be rendered in two ways: single-select, or multi-select. To render the dynamic input as a single-select menu, the input parameter defining the dynamic option must be of the type [`string`](/tools/deno-slack-sdk/reference/slack-types#string).
The drop-down menu UI component can be rendered in two ways: single-select, or multi-select. To render the dynamic input as a single-select menu, the input parameter defining the dynamic option must be of the type [`string`](/reference/types/string-type).

```js
"step-with-dynamic-input": {
Expand All @@ -133,7 +133,7 @@ The drop-down menu UI component can be rendered in two ways: single-select, or m
}
```

To render the dynamic input as a multi-select menu, the input parameter defining the dynamic option must be of the type [`array`](/tools/deno-slack-sdk/reference/slack-types#array), and its `items` must be of type [`string`](/tools/deno-slack-sdk/reference/slack-types#string).
To render the dynamic input as a multi-select menu, the input parameter defining the dynamic option must be of the type [`array`](/reference/types/array-type), and its `items` must be of type [`string`](/reference/types/string-type).

```js
"step-with-dynamic-input": {
Expand All @@ -159,9 +159,9 @@ To render the dynamic input as a multi-select menu, the input parameter defining

#### Fields {#fields}

In the code snippet below, the input parameter is rendered as a set of fields with keys and values. The option fields are obtained from a custom step with an `options` output parameter of type [`options_field`](/tools/deno-slack-sdk/reference/slack-types#options_field).
In the code snippet below, the input parameter is rendered as a set of fields with keys and values. The option fields are obtained from a custom step with an `options` output parameter of type [`options_field`](/reference/types/options_field-type).

The input parameter that defines the dynamic option must be of type [`object`](/tools/deno-slack-sdk/reference/slack-types#object), as the completed set of fields in Workflow Builder will be passed to the custom step as an [untyped object](/tools/deno-slack-sdk/reference/slack-types#untyped-object) during workflow execution.
The input parameter that defines the dynamic option must be of type [`object`](/reference/types/object-type), as the completed set of fields in Workflow Builder will be passed to the custom step as an [untyped object](/reference/types/object-type#untyped-object) during workflow execution.

```js
"test-field-dynamic-options": {
Expand All @@ -185,15 +185,15 @@ The input parameter that defines the dynamic option must be of type [`object`](/

### Dynamic option types {#dynamic-option-types}

As mentioned earlier, in order to use a custom step as a dynamic option, its output must adhere to a defined interface: it must have an `options` output parameter of the type either [`options_select`](/tools/deno-slack-sdk/reference/slack-types#options_select) or [`options_field`](/tools/deno-slack-sdk/reference/slack-types#options_field).
As mentioned earlier, in order to use a custom step as a dynamic option, its output must adhere to a defined interface: it must have an `options` output parameter of the type either [`options_select`](/reference/types/options_select-type) or [`options_field`](/reference/types/options_field-type).

To take a look at these in more detail, refer to our [Options Slack type](/tools/deno-slack-sdk/reference/slack-types#options) documentation.
To take a look at these in more detail, refer to our [Options Slack type](/reference/types) documentation.

## Dynamic options handler {#dynamic-option-handler}

Each custom step defined in the manifest needs a corresponding handler in your Slack app. Although implemented similarly to existing function execution event handlers, there are two key differences between regular custom step invocations and those used for dynamic options:

* The custom step must have an `options` output parameter that is of type [`options_select`](/tools/deno-slack-sdk/reference/slack-types#options_select) or [`options_field`](/tools/deno-slack-sdk/reference/slack-types#options_field).
* The custom step must have an `options` output parameter that is of type [`options_select`](/reference/types/options_select-type) or [`options_field`](/reference/types/options_field-type).
* The [`function_executed`](/reference/events/function_executed) event must be handled synchronously. This optimizes the response time of returned dynamic options and provides a crisp builder experience.

### Asynchronous event handling {#async}
Expand Down
2 changes: 1 addition & 1 deletion docs/english/creating-an-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -615,4 +615,4 @@ Now that you have an app up and running, you can start exploring how to make you
- Read through the various concepts pages to learn about the different methods and features accessible to your Bolt app.
- Explore the different events your bot can listen to with the [`event`](/tools/bolt-js/concepts/event-listening) method. View the full events reference docs [here](/reference/events).
- The Bolt framework allows you to [call Web API methods](/tools/bolt-js/concepts/web-api) with the client attached to your app. View the over 200 methods [here](/reference/methods).
- Check out how to use AI in your app with the [Using AI in apps](/tools/bolt-js/concepts/ai-apps) guide.
- Check out how to use AI in your app with the [Using AI in apps](/tools/bolt-js/concepts/adding-agent-features) guide.
6 changes: 3 additions & 3 deletions docs/english/deployments/aws-lambda.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ You're now set up with the Serverless tools! Let's move on to preparing your Bol

## Get a Bolt Slack app {#get-a-bolt-slack-app}

If you haven't already built your own Bolt app, you can use our [Quickstart guide](/tools/bolt-js/getting-started) or clone the template app below:
If you haven't already built your own Bolt app, you can use our [Quickstart guide](/tools/bolt-js/creating-an-app) or clone the template app below:

```shell
git clone https://github.com/slack-samples/bolt-js-getting-started-app.git
Expand Down Expand Up @@ -193,7 +193,7 @@ plugins:

`SLACK_SIGNING_SECRET` and `SLACK_BOT_TOKEN` must be environment variables on your local machine.

You can [learn how to export Slack environment variables](/tools/bolt-js/getting-started#creating-a-project) in our Quickstart guide.
You can [learn how to export Slack environment variables](/tools/bolt-js/creating-an-app#creating-an-app) in our Quickstart guide.

:::

Expand Down Expand Up @@ -255,7 +255,7 @@ Second, select **Event Subscriptions** from the side and update the **Request UR

### 3. Test your Slack app

Now you can test your Slack app by inviting your app to a channel then saying “hello” (lower-case). Just like in the [Quickstart guide](/tools/bolt-js/getting-started#running-the-app), your app should respond back:
Now you can test your Slack app by inviting your app to a channel then saying “hello” (lower-case). Just like in the [Quickstart guide](/tools/bolt-js/creating-an-app#running-the-app), your app should respond back:

```
> 👩‍💻 hello
Expand Down
4 changes: 2 additions & 2 deletions docs/english/deployments/heroku.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Using Heroku dynos to complete this tutorial counts towards your usage. [Delete

## Get a Bolt Slack app {#get-a-bolt-slack-app}

If you haven't already built your own Bolt app, you can use our [Quickstart guide](/tools/bolt-js/getting-started) or clone the template app below:
If you haven't already built your own Bolt app, you can use our [Quickstart guide](/tools/bolt-js/creating-an-app) or clone the template app below:

```shell
git clone https://github.com/slack-samples/bolt-js-getting-started-app.git
Expand Down Expand Up @@ -254,7 +254,7 @@ Second, select **Event Subscriptions** from the side and update the **Request UR

Your app is now deployed and Slack is updated, so let's try it out!

Open a Slack channel that your app has joined and say "hello" (lower-case). Just like in the [Quickstart guide](/tools/bolt-js/getting-started#running-the-app), your app should respond back. If you don't receive a response, check your **Request URL** and try again.
Open a Slack channel that your app has joined and say "hello" (lower-case). Just like in the [Quickstart guide](/tools/bolt-js/creating-an-app#running-the-app), your app should respond back. If you don't receive a response, check your **Request URL** and try again.

---

Expand Down
2 changes: 1 addition & 1 deletion docs/english/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Bolt for JavaScript

Bolt for JavaScript is a JavaScript framework to build Slack apps with the latest Slack platform features. Read the [Quickstart Guide](/tools/bolt-js/getting-started) to set up and run your first Bolt app.
Bolt for JavaScript is a JavaScript framework to build Slack apps with the latest Slack platform features. Read the [Quickstart Guide](/quickstart) to set up and run your first Bolt app.

Then, explore the rest of the pages within the Guides section. The documentation there will help you build a Bolt app for whatever use case you may have.

Expand Down
4 changes: 2 additions & 2 deletions docs/english/migration/migration-v4.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ With the above, now when a message payload is wrapped in middleware arguments, i

All bolt handlers are [provided a convenience `client` argument](../concepts/web-api) that developers can use to make API requests to [Slack's public HTTP APIs][methods]. This `client` is powered by [the `@slack/web-api` package][web-api]. In bolt v4, `web-api` has been upgraded from v6 to v7.

More APIs! Better argument type safety! And a whole slew of other changes, too. Many of these changes won't affect JavaScript application builders, but if you are building a bolt app using TypeScript, you may see some compilation issues. Head over to [the `@slack/web-api` v6 -> v7 migration guide](/tools/node-slack-sdk/migration/migrating-web-api-package-to-v7) to get the details on what changed and how to migrate to v7.
More APIs! Better argument type safety! And a whole slew of other changes, too. Many of these changes won't affect JavaScript application builders, but if you are building a bolt app using TypeScript, you may see some compilation issues. Head over to [the `@slack/web-api` v6 -> v7 migration guide](/tools/node-slack-sdk/migration/web-api/migrating-web-api-package-to-v7) to get the details on what changed and how to migrate to v7.

## 🔌 `@slack/socket-mode` v2 upgrade {#socket-mode-v2}

While the breaking changes from this upgrade should be shielded from most bolt-js users, if you are using [the `SocketModeReceiver` or setting `socketMode: true`](../concepts/socket-mode) _and_ attach custom code to how the `SocketModeReceiver` operates, we suggest you read through [the `@slack/socket-mode` v1 -> v2 migration guide](/tools/node-slack-sdk/migration/migrating-socket-mode-package-to-v2/), just in case.
While the breaking changes from this upgrade should be shielded from most bolt-js users, if you are using [the `SocketModeReceiver` or setting `socketMode: true`](../concepts/socket-mode) _and_ attach custom code to how the `SocketModeReceiver` operates, we suggest you read through [the `@slack/socket-mode` v1 -> v2 migration guide](/tools/node-slack-sdk/migration/socket-mode/migrating-socket-mode-package-to-v2), just in case.

## 🚅 `express` v5 upgrade {#express-v5}

Expand Down
4 changes: 2 additions & 2 deletions docs/japanese/concepts/authenticating-oauth.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ const app = new App({

* **Slack で開く**: ユーザーが **Slack で開く** を選択した後、アプリが Slack からのイベントをするときに `installationStore` の `fetchInstallation` や `storeInstallation` ハンドラーが実行されます。ハンドラーに渡す引数に関するより詳しい情報は **Installation Object** セクションを参照してください。

* アプリがすでにインストールされていて、さらにユーザーから追加の認可情報(例:ユーザートークンの発行)な場合や、何らかの理由で動的にインストール用の URL を生成したい場合は、`ExpressReceiver` を自前でインスタンス化し、それを `receiver` という変数に代入した上で `receiver.installer.generateInstallUrl()` を呼び出してください。詳しくは [OAuth ライブラリのドキュメント](/tools/node-slack-sdk/oauth#generating-an-installation-url)の `generateInstallUrl()` を参照してください。
* アプリがすでにインストールされていて、さらにユーザーから追加の認可情報(例:ユーザートークンの発行)な場合や、何らかの理由で動的にインストール用の URL を生成したい場合は、`ExpressReceiver` を自前でインスタンス化し、それを `receiver` という変数に代入した上で `receiver.installer.generateInstallUrl()` を呼び出してください。詳しくは [OAuth ライブラリのドキュメント](/tools/node-slack-sdk/oauth#showing-an-installation-page)の `generateInstallUrl()` を参照してください。

* 💡 Bolt for JavaScript は [カスタムのレシーバー](/tools/bolt-js/concepts/receiver)での OAuth をサポートしていません。カスタムのレシーバーで OAuth フローを実装したい場合は、私たちが提供している [OAuth ライブラリ](/tools/node-slack-sdk/oauth#slack-oauth) を使うことができます。Bolt for JavaScript の組み込みのモジュールもこれを内部的に利用しています。
* 💡 Bolt for JavaScript は [カスタムのレシーバー](/tools/bolt-js/concepts/receiver)での OAuth をサポートしていません。カスタムのレシーバーで OAuth フローを実装したい場合は、私たちが提供している [OAuth ライブラリ](/tools/node-slack-sdk/oauth) を使うことができます。Bolt for JavaScript の組み込みのモジュールもこれを内部的に利用しています。

##### Redirect URI

Expand Down
8 changes: 4 additions & 4 deletions docs/japanese/deployments/aws-lambda.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ Serverless のツールのセットアップが完了しました。次に、AWS

## Bolt Slack アプリを入手する {#get-a-bolt-slack-app}

まだ Bolt アプリを自分で作成したことがない場合は、[入門ガイド](/tools/bolt-js/getting-started)を参照してください。テンプレートのアプリをクローンするには、以下のコマンドを実行します。
まだ Bolt アプリを自分で作成したことがない場合は、[入門ガイド](/tools/bolt-js/ja-jp/creating-an-app)を参照してください。テンプレートのアプリをクローンするには、以下のコマンドを実行します。

```shell
git clone https://github.com/slackapi/bolt-js-getting-started-app.git
Expand Down Expand Up @@ -194,7 +194,7 @@ plugins:

:::tip

`SLACK_SIGNING_SECRET` と `SLACK_BOT_TOKEN` の環境変数は、ローカルマシンで設定しておく必要があります。[Slack の環境変数をエクスポートする方法](/tools/bolt-js/getting-started#setting-up-your-project)を入門ガイドで参照してください。
`SLACK_SIGNING_SECRET` と `SLACK_BOT_TOKEN` の環境変数は、ローカルマシンで設定しておく必要があります。[Slack の環境変数をエクスポートする方法](/tools/bolt-js/ja-jp/creating-an-app#setting-up-your-project)を入門ガイドで参照してください。

:::

Expand Down Expand Up @@ -238,7 +238,7 @@ ngrok http 3000

:::tip

パブリック URL の作成方法と、ローカルマシンへのリクエストの転送方法については、[ngrok の使い方](/tools/bolt-js/getting-started#setting-up-events)を参照してください。
パブリック URL の作成方法と、ローカルマシンへのリクエストの転送方法については、[ngrok の使い方](/tools/bolt-js/ja-jp/creating-an-app#setting-up-events)を参照してください。

:::

Expand All @@ -262,7 +262,7 @@ ngrok http 3000

### 3. Slack アプリをテストする

Slack アプリをテストします。今作った Bolt アプリを Slack のチャンネルに招待し、半角の小文字で「hello」と入力してみましょう。[入門ガイド](/tools/bolt-js/getting-started)のとおり、アプリから応答があるはずです。
Slack アプリをテストします。今作った Bolt アプリを Slack のチャンネルに招待し、半角の小文字で「hello」と入力してみましょう。[入門ガイド](/tools/bolt-js/ja-jp/creating-an-app)のとおり、アプリから応答があるはずです。

> 👩‍💻 hello<br/>
> 🤖 Hey there @Jane!
Expand Down
Loading
Loading