我正在构建一个内部休闲应用程序,该应用程序可以启动模态,以便可以更有效地发出技术要求。
当我从我的API以斜线命令的JSON响应返回以下内容时,我收到一个错误失败,错误为“ invalid_blocks”,但是,当我将其放入block-kit-builder中时,它运行良好(包括“发送到松弛状态”按钮)
有什么想法为什么我运行斜线命令时失败了?是否有可能从松弛中看到更详细的错误消息?
return {
statusCode: 200,
body: JSON.stringify({
"callback_id": "tech-support",
"title": {
"type": "plain_text",
"text": "Tech Support Ticket",
"emoji": true
},
"submit": {
"type": "plain_text",
"text": "Submit",
"emoji": true
},
"type": "modal",
"close": {
"type": "plain_text",
"text": "Cancel",
"emoji": true
},
"blocks": [
{
"type": "input",
"element": {
"type": "plain_text_input"
},
"label": {
"type": "plain_text",
"text": "Ticket Title",
"emoji": true
}
},
{
"type": "divider"
},
{
"type": "input",
"element": {
"type": "static_select",
"placeholder": {
"type": "plain_text",
"text": "Select an item",
"emoji": true
},
"options": [
{
"text": {
"type": "plain_text",
"text": "Website",
"emoji": true
},
"value": "value-0"
},
{
"text": {
"type": "plain_text",
"text": "Hubspot",
"emoji": true
},
"value": "value-1"
},
{
"text": {
"type": "plain_text",
"text": "Email",
"emoji": true
},
"value": "value-2"
},
{
"text": {
"type": "plain_text",
"text": "Other",
"emoji": true
},
"value": "value-3"
}
]
},
"label": {
"type": "plain_text",
"text": "Impacted Technology",
"emoji": true
}
},
{
"type": "divider"
},
{
"type": "input",
"element": {
"type": "checkboxes",
"options": [
{
"text": {
"type": "plain_text",
"text": "Security",
"emoji": true
},
"value": "value-4"
},
{
"text": {
"type": "plain_text",
"text": "Productivity",
"emoji": true
},
"value": "value-5"
},
{
"text": {
"type": "plain_text",
"text": "Data Accuracy",
"emoji": true
},
"value": "value-6"
},
{
"text": {
"type": "plain_text",
"text": "Feature Suggestion",
"emoji": true
},
"value": "value-7"
},
{
"text": {
"type": "plain_text",
"text": "Client Useability",
"emoji": true
},
"value": "value-8"
}
]
},
"label": {
"type": "plain_text",
"text": "Business Impacts",
"emoji": true
}
},
{
"type": "divider"
},
{
"type": "input",
"element": {
"type": "radio_buttons",
"options": [
{
"text": {
"type": "plain_text",
"text": "Yes",
"emoji": true
},
"value": "value-9"
},
{
"text": {
"type": "plain_text",
"text": "No",
"emoji": true
},
"value": "value-10"
}
]
},
"label": {
"type": "plain_text",
"text": "Does the problem block you from your core deliverables",
"emoji": true
}
},
{
"type": "divider"
},
{
"type": "input",
"element": {
"type": "plain_text_input",
"multiline": true
},
"label": {
"type": "plain_text",
"text": "Give a detailed description of the problem",
"emoji": true
}
},
{
"type": "divider"
},
{
"type": "input",
"element": {
"type": "static_select",
"placeholder": {
"type": "plain_text",
"text": "Select an item",
"emoji": true
},
"options": [
{
"text": {
"type": "plain_text",
"text": "High: Critical To Reach Operations",
"emoji": true
},
"value": "value-11"
},
{
"text": {
"type": "plain_text",
"text": "Medium: Multi-Person Technical Inconvenience",
"emoji": true
},
"value": "value-12"
},
{
"text": {
"type": "plain_text",
"text": "Low: Normal Technical Issue",
"emoji": true
},
"value": "value-13"
}
]
},
"label": {
"type": "plain_text",
"text": "Select a priority",
"emoji": true
}
},
{
"type": "divider"
},
{
"type": "input",
"element": {
"type": "multi_users_select",
"placeholder": {
"type": "plain_text",
"text": "Select users",
"emoji": true
}
},
"label": {
"type": "plain_text",
"text": "Does this impact other people as well?",
"emoji": true
}
}
]
}),
};```
答案 0 :(得分:1)
从Slash命令获取有效负载时,发送的响应只能返回一条消息。必须通过views.open
API方法打开模式,并将JSON传递给view
参数,斜杠命令有效负载中的trigger_id
以及用于认证您的请求的令牌。 / p>
使用Bolt和Block Builder JS库,看起来像这样:
const openMyView = async ({ body, context, client }) => {
// Do some stuff and build viewParams object
const view = callSomeMethod(viewParams); // Calls a method that uses Block Builder to build a modal
await client.views.open({
view: view.buildToJSON(); // Could also be just the JSON built from Slack's builder site
token: context.botToken,
trigger_id: body.trigger_id,
});
};