使用Deno SDK开发Slack工作流:如何在首个表单后打开第二个表单?
解决方法
你的问题核心在于第二个OpenForm步骤复用了工作流初始的interactivity输入,而非第一个表单提交后生成的新交互式上下文指针。根据Slack的规则,非首个交互式步骤必须依赖前一个交互式步骤返回的新指针才能正常运行。
修改代码如下,重点调整第二个表单的interactivity参数:
import { DefineWorkflow, Schema } from "deno-slack-sdk/mod.ts"; import { submitIssue_function } from "../functions/submit_issue_function.ts"; export const submitIssueWorkflow = DefineWorkflow({ callback_id: "submit_issue", title: "Workflow for submitting issue", input_parameters: { properties: { interactivity: { type: Schema.slack.types.interactivity, }, }, required: ["interactivity"], }, }); const inputForm = submitIssueWorkflow.addStep( Schema.slack.functions.OpenForm, { title: "Submit the issue", interactivity: submitIssueWorkflow.inputs.interactivity, submit_label: "Submit the issue", fields: { elements: [ { name: "message", title: "Your question", type: Schema.slack.types.rich_text, }, ], required: ["message"], }, }, ); const chooseChannelForm = submitIssueWorkflow.addStep( Schema.slack.functions.OpenForm, { title: "Choose the channel", // 改为使用第一个表单返回的interactivity上下文 interactivity: inputForm.outputs.interactivity, submit_label: "Submit", fields: { elements: [ { name: "channel", title: "Mention the channel name", //后续可改为频道下拉框,当前先保留原输入类型 type: Schema.slack.types.rich_text, }, ], required: ["channel"], }, }, );
关键说明
OpenForm步骤执行完成后,会在outputs中返回一个全新的interactivity对象,这个对象包含了触发后续交互式操作所需的有效指针。将第二个表单的interactivity参数指向第一个表单的输出,就能符合Slack的要求,让第二个表单正常弹出。
内容的提问来源于stack exchange,提问作者Kripanath Aditya
相关产品推荐
相关产品推荐

