如何在Slack应用的/day-off命令中用模态窗口替代带Blocks的消息
修改代码实现Slack模态窗口触发
要把/day-off命令后的消息改为打开模态窗口,你需要调整返回的响应结构,符合Slack命令交互中打开模态窗口的规范:
核心修改思路:
Slack要求触发模态窗口的响应必须包含response_action: 'open_modal'字段,同时通过view字段定义模态窗口的完整结构——包括必填的标题、关闭按钮,以及你已有的表单Blocks。完整修改后的代码:
let newTimeOff = 'test'; if (ctx.state.isSlackBot) { newTimeOff = { response_action: 'open_modal', view: { type: 'modal', title: { type: 'plain_text', text: '申请休假', emoji: true }, close: { type: 'plain_text', text: '取消', emoji: true }, blocks: [ // 开始日期 { type: 'input', block_id: 'start_date_datepicker', element: { type: 'datepicker', initial_date: '1990-04-28', placeholder: { type: 'plain_text', text: '选择日期', emoji: true, }, action_id: 'datepicker-action', }, label: { type: 'plain_text', text: '开始日期', emoji: true, }, }, // ... 其他输入项保持原有结构不变 ] } }; } ctx.body = newTimeOff;
- 关键细节说明:
response_action: 'open_modal':明确告知Slack要打开模态窗口,而非发送普通消息view.type: 'modal':指定当前视图为模态窗口类型title和close是模态窗口的必填属性,文本长度不能超过24个字符- 你原先编写的表单Blocks可直接迁移到
view.blocks下,无需修改原有Blocks的内部结构
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

