You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Slack应用的/day-off命令中用模态窗口替代带Blocks的消息

修改代码实现Slack模态窗口触发

要把/day-off命令后的消息改为打开模态窗口,你需要调整返回的响应结构,符合Slack命令交互中打开模态窗口的规范:

  1. 核心修改思路:
    Slack要求触发模态窗口的响应必须包含response_action: 'open_modal'字段,同时通过view字段定义模态窗口的完整结构——包括必填的标题、关闭按钮,以及你已有的表单Blocks。

  2. 完整修改后的代码:

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;
  1. 关键细节说明:
    • response_action: 'open_modal':明确告知Slack要打开模态窗口,而非发送普通消息
    • view.type: 'modal':指定当前视图为模态窗口类型
    • title和close是模态窗口的必填属性,文本长度不能超过24个字符
    • 你原先编写的表单Blocks可直接迁移到view.blocks下,无需修改原有Blocks的内部结构

内容的提问来源于stack exchange,提问作者Roman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:10:36