Skip to content

Commit 0b1e8e1

Browse files
committed
Update documents
1 parent 0528784 commit 0b1e8e1

File tree

3 files changed

+72
-2
lines changed

3 files changed

+72
-2
lines changed

docs/guides/ja/modals.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,10 +379,34 @@ ctx.ackWithPush(newViewInStack)
379379

380380
#### モーダル送信後にメッセージを投稿
381381

382-
`view_submission` のペイロードはデフォルトでは `response_url` を含んでいません。しかし、モーダルがユーザーにメッセージを投稿するためのチャンネルを入力するよう求める `input` タイプのブロックを含む場合、ペイロード内の `response_urls` として URL を受け取ることができます。
382+
`view_submission` のペイロードはデフォルトでは `response_url` を含んでいません。しかし、モーダルがユーザーにメッセージを投稿するためのチャンネルを入力するよう求める `input` タイプのブロックを含む場合、ペイロード内の `response_urls` (Java では `List<ResponseUrl> responseUrls` となります) として URL を受け取ることができます。
383383

384384
これを有効にするためには [`channels_select`](https://api.slack.com/reference/block-kit/block-elements#channel_select) もしくは [`conversations_select`](https://api.slack.com/reference/block-kit/block-elements#conversation_select) のタイプのブロックエレメントを配置し、さらにその属性として `"response_url_enabled": true` を追加してください。より詳細な情報は [API ドキュメント(英語)](https://api.slack.com/surfaces/modals/using#modal_response_url)を参照してください。
385385

386+
また、ユーザーがモーダルを開いたときに見ていたチャンネルや DM を `initial_conversation(s)` として自動的に反映したい場合は [`conversations_select`](https://api.slack.com/reference/block-kit/block-elements#conversation_select) / [`multi_conversations_select`](https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select) エレメントの `default_to_current_conversation` を有効にしてください。
387+
388+
```java
389+
import static com.slack.api.model.block.Blocks.*;
390+
import static com.slack.api.model.block.composition.BlockCompositions.*;
391+
import static com.slack.api.model.block.element.BlockElements.*;
392+
import static com.slack.api.model.view.Views.*;
393+
394+
View modalView = view(v -> v
395+
.type("modal")
396+
.callbackId("request-modal")
397+
.submit(viewSubmit(vs -> vs.type("plain_text").text("Start")))
398+
.blocks(asBlocks(
399+
section(s -> s
400+
.text(plainText("The channel we'll post the result"))
401+
.accessory(conversationsSelect(conv -> conv
402+
.actionId("notification_conv_id")
403+
.responseUrlEnabled(true)
404+
.defaultToCurrentConversation(true)
405+
))
406+
)
407+
)));
408+
```
409+
386410
### `"view_closed"` リクエスト (`notify_on_close` が `true` のときのみ)
387411

388412
BoltSlack アプリに必要な共通処理の多くを巻き取ります。それを除いて、あなたのアプリがやらなければならない手順は以下の通りです。

docs/guides/modals.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,10 +371,34 @@ ctx.ack { it.responseAction("push").view(newViewInStack) }
371371

372372
#### Publishing Messages After Modal Submissions
373373

374-
`view_submission` payloads don't have `response_url` by default. However, if you have an `input` block asking users a channel to post a message, payloads may provide `response_urls`.
374+
`view_submission` payloads don't have `response_url` by default. However, if you have an `input` block asking users a channel to post a message, payloads may provide `response_urls` (`List<ResponseUrl> responseUrls` in Java).
375375
376376
To enable this, set the block element type as either [`channels_select`](https://api.slack.com/reference/block-kit/block-elements#channel_select) or [`conversations_select`](https://api.slack.com/reference/block-kit/block-elements#conversation_select) and add `"response_url_enabled": true`. Refer to [the API document](https://api.slack.com/surfaces/modals/using#modal_response_url) for details.
377377
378+
Also, if you want to automatically set the channel a user is viewing when opening a modal to`initial_conversation(s)`, turn `default_to_current_conversation` on in [`conversations_select`](https://api.slack.com/reference/block-kit/block-elements#conversation_select) / [`multi_conversations_select`](https://api.slack.com/reference/block-kit/block-elements#conversation_multi_select) elements.
379+
380+
```java
381+
import static com.slack.api.model.block.Blocks.*;
382+
import static com.slack.api.model.block.composition.BlockCompositions.*;
383+
import static com.slack.api.model.block.element.BlockElements.*;
384+
import static com.slack.api.model.view.Views.*;
385+
386+
View modalView = view(v -> v
387+
.type("modal")
388+
.callbackId("request-modal")
389+
.submit(viewSubmit(vs -> vs.type("plain_text").text("Start")))
390+
.blocks(asBlocks(
391+
section(s -> s
392+
.text(plainText("The channel we'll post the result"))
393+
.accessory(conversationsSelect(conv -> conv
394+
.actionId("notification_conv_id")
395+
.responseUrlEnabled(true)
396+
.defaultToCurrentConversation(true)
397+
))
398+
)
399+
)));
400+
```
401+
378402
### `"view_closed"` requests (only when `notify_on_close` is `true`)
379403
380404
Bolt does many of the commonly required tasks for you. The steps you need to handle would be:

slack-api-model/src/test/java/test_locally/api/model/block/BlocksTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.slack.api.model.block.element.ChannelsSelectElement;
77
import com.slack.api.model.block.element.ConversationsSelectElement;
88
import com.slack.api.model.block.element.MultiConversationsSelectElement;
9+
import com.slack.api.model.view.View;
910
import org.junit.Test;
1011
import test_locally.unit.GsonFactory;
1112

@@ -16,6 +17,8 @@
1617
import static com.slack.api.model.block.composition.BlockCompositions.asSectionFields;
1718
import static com.slack.api.model.block.composition.BlockCompositions.plainText;
1819
import static com.slack.api.model.block.element.BlockElements.*;
20+
import static com.slack.api.model.view.Views.view;
21+
import static com.slack.api.model.view.Views.viewSubmit;
1922
import static org.hamcrest.CoreMatchers.is;
2023
import static org.hamcrest.CoreMatchers.notNullValue;
2124
import static org.hamcrest.MatcherAssert.assertThat;
@@ -371,5 +374,24 @@ public void defaultToCurrentConversation() {
371374
assertTrue(elem2.getDefaultToCurrentConversation());
372375
}
373376

377+
@Test
378+
public void codeInDocs() {
379+
View modalView = view(v -> v
380+
.type("modal")
381+
.callbackId("view-id")
382+
.submit(viewSubmit(vs -> vs.type("plain_text").text("Submit")))
383+
.blocks(asBlocks(
384+
section(s -> s
385+
.text(plainText("Conversation to post the result"))
386+
.accessory(conversationsSelect(conv -> conv
387+
.actionId("a")
388+
.defaultToCurrentConversation(true)
389+
.responseUrlEnabled(true))
390+
)
391+
)
392+
)));
393+
assertNotNull(modalView);
394+
}
395+
374396

375397
}

0 commit comments

Comments
 (0)