Slack Modal 和 AWS Lambda:在错误的用户输入后返回 response_action 会引发模态错误
Slack Modal and AWS Lambda: Returning response_action after wrong user input throws an error in modal
我目前正在构建一个带有模式的 Slack 应用程序。我使用包含处理用户交互的 Lambda 函数的无服务器 AWS Stack。这些交互在 Lambda 中得到验证。
如果用户输入正确,模式将成功关闭(Lambda returns 200 响应)。但是,如果我 return 在用户输入错误并且用户提交模态 (as per Slack´s documentation) 时将以下内容作为正文:
{
"response_action" : "errors",
"errors": {
"startDate": "Start date is incorrect.",
},
}
我在 Lambda 函数末尾 return 的完整响应是:
response = {
statusCode: 200,
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
response_action : "errors",
errors: {
"endDate": "Start date is incorrect.",
}
})
};
我在下一个屏幕截图中收到错误消息:
我错过了什么吗?非常感谢。
所以我发现了问题,这里是我的解决方案(可能对你有帮助 reader):
正确的块类型
我构建的模态由交互式组件组成,例如日期选择器。这些组件是“部分”类型的块。为了更好地理解,它们看起来像这样:
但是,似乎与显示输入错误的功能不兼容。为此,您必须选择“输入”类型的块。同样,为了便于理解,它们看起来像这样:
并且那种类型的块与displaying error messages as per Slack documentation兼容。
来自 AWS Lambda 的响应
当您在 AWS Lambda 函数中验证用户输入时,Slack expects 如果您想警告错误,您可以在响应中 return 以下结构:
{ "response_action": "errors", "errors": { "ticket-due-date": "You may not select a due date in the past" } }
但是,您似乎需要通过添加 header 定义内容的 JSON 类型来指示内容的时间,而没有 statusCode。就我而言,有效的回应是:
response = {
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
response_action : "errors",
errors: {
"test": "That date is invalid. Please, select a future date.",
}
})
这样,自定义错误消息就会出现:
我目前正在构建一个带有模式的 Slack 应用程序。我使用包含处理用户交互的 Lambda 函数的无服务器 AWS Stack。这些交互在 Lambda 中得到验证。
如果用户输入正确,模式将成功关闭(Lambda returns 200 响应)。但是,如果我 return 在用户输入错误并且用户提交模态 (as per Slack´s documentation) 时将以下内容作为正文:
{
"response_action" : "errors",
"errors": {
"startDate": "Start date is incorrect.",
},
}
我在 Lambda 函数末尾 return 的完整响应是:
response = {
statusCode: 200,
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
response_action : "errors",
errors: {
"endDate": "Start date is incorrect.",
}
})
};
我在下一个屏幕截图中收到错误消息:
我错过了什么吗?非常感谢。
所以我发现了问题,这里是我的解决方案(可能对你有帮助 reader):
正确的块类型
我构建的模态由交互式组件组成,例如日期选择器。这些组件是“部分”类型的块。为了更好地理解,它们看起来像这样:
但是,似乎与显示输入错误的功能不兼容。为此,您必须选择“输入”类型的块。同样,为了便于理解,它们看起来像这样:
并且那种类型的块与displaying error messages as per Slack documentation兼容。
来自 AWS Lambda 的响应
当您在 AWS Lambda 函数中验证用户输入时,Slack expects 如果您想警告错误,您可以在响应中 return 以下结构:
{ "response_action": "errors", "errors": { "ticket-due-date": "You may not select a due date in the past" } }
但是,您似乎需要通过添加 header 定义内容的 JSON 类型来指示内容的时间,而没有 statusCode。就我而言,有效的回应是:
response = {
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
response_action : "errors",
errors: {
"test": "That date is invalid. Please, select a future date.",
}
})
这样,自定义错误消息就会出现: