我有一个Slack modal,其中的section
块包含一个输入元素。当用户提交我的模态而不在此输入中输入值时,如何将该错误传达给用户?
Slack的文档描述了当我收到input
事件(view_submission
)时如何验证https://api.slack.com/surfaces/modals/using#displaying_errors块的方法。但是,如果我为包含section
的static_select
块返回错误,则Slack不会显示错误消息(也不会关闭模态)。
optional
字段设置为falseinput
块具有optional
字段,可用于验证。但是static_select
块中的section
没有optional
字段:https://api.slack.com/reference/block-kit/block-elements#select
input
块我无法使用input
块,因为它们不会触发block_actions
消息(记录在https://api.slack.com/surfaces/modals/using#interactions中)。当用户回答问题时,我需要更新模式。
我可以用view_submission
响应来回复"response_action": "update"事件。在该响应中,在输入内容上方包含如下错误消息:缺少值:
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Please provide a start time:*"
}
}
我不喜欢此解决方案,因为我怀疑我是否可以复制Slack为input
块验证提供的出色的错误消息传递UX。
这里是我传递给view
调用的views.open参数的简化版本:
{
"blocks": [
{
"block_id": "start_times",
"type": "section",
"text": {
"type": "plain_text",
"text": "Choose a start time"
},
"accessory": {
"action_id": "start_times",
"type": "static_select",
"placeholder": {
"type": "plain_text",
"text": "Choose start"
},
"options": [
{
"text": {
"type": "plain_text",
"text": "10:27 pm"
},
"value":
"{\"path\":\"bookings/new\",\"date\":\"2020-02-14 04:27:22 UTC\"}"
},
{
"text": {
"type": "plain_text",
"text": "10:45 pm"
},
"value":
"{\"path\":\"bookings/new\",\"date\":\"2020-02-14 04:45:00 UTC\"}"
}
]
}
}
],
"callback_id": "create booking",
"private_metadata":
"{\"channel_id\":\"C6M2A4690\",\"min_start_time\":\"2020-02-14 04:27:22 UTC\",\"path\":\"bookings/create\",\"room_id\":175128,\"selected_end_time\":null,\"selected_start_time\":null}",
"type": "modal",
"submit": {
"type": "plain_text",
"text": "Book"
},
"title": {
"type": "plain_text",
"text": "Booking room"
}
}
如果用户立即单击提交,这是我对view_submission
事件的答复:
{
"response_action": "errors",
"errors": {
"start_times": "Please complete this required field"
}
}
[收到我的回复后,Slack关闭微调器,将模式保持打开状态,但不显示错误消息。模态看起来与通过views.open
首次打开时完全相同。
问题我有一个Slack模态,带有一个包含输入元素的节块。当用户提交我的模态而不在此输入中输入值时,如何将错误传达给用户?我的...
在返回响应之前,将响应的“ content_type
”设置为“ application/json
”。