1

我正在构建一个启动模式的内部松弛应用程序,因此可以更有效地处理技术请求。

当我在对斜杠命令的 JSON 响应中从我的 API 返回以下内容时,我收到错误失败,错误为“invalid_blocks”,但是,当我将其放入块工具包构建器中时,它可以正常工作(包括“发送到松弛”按钮)

任何想法为什么在我运行斜杠命令时失败 - 是否可以从 slack 中看到更详细的错误消息?

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
                        }
                    }
                ]

        }),
    };```
4

1 回答 1

2

从 Slash 命令获取有效负载时,发送的响应只能返回一条消息。必须通过views.openAPI 方法打开模态,将 JSON 传递给view参数、trigger_id来自斜杠命令的有效负载以及用于验证您的请求的令牌。

使用BoltBlock 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,
  });
};
于 2020-06-26T10:53:26.793 回答