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

如何在Bolt for Java的Slack模态框中调用chatPostMessage()发送内容到频道?

实现模态框提交内容发送到启动频道的方案

要实现将模态框提交的内容发送到其启动的频道,需按以下两步操作:

1. 启动模态框时保存频道ID

当用户通过/launchModal命令打开模态框时,把当前频道ID存入模态框的privateMetadata字段,确保后续提交事件能获取到目标频道。示例代码如下:

app.command("/launchModal", (req, ctx) -> {
    ctx.client().viewsOpen(r -> r
        .triggerId(ctx.getTriggerId())
        .view(v -> v
            .callbackId("case-handoff")
            .privateMetadata(ctx.getChannelId()) // 存储启动模态框的频道ID
            // 以下为模态框布局示例,可根据需求调整
            .blocks(Arrays.asList(
                InputBlock.builder()
                    .blockId("firstName")
                    .element(PlainTextInputElement.builder().actionId("agenda-action1").build())
                    .label(PlainTextObject.builder().text("姓名").build())
                    .build()
            ))
        )
    );
    return ctx.ack("");
});

2. 模态框提交时发送消息

在viewSubmission处理逻辑中,从privateMetadata取出频道ID,调用chatPostMessage方法将用户输入内容发送到目标频道,同时修正原代码中的变量名错误:

// 用户点击模态框“提交”按钮时触发
app.viewSubmission("case-handoff", (req, ctx) -> {
    // 获取启动模态框的频道ID
    String channelId = req.getPayload().getView().getPrivateMetadata();
    Map<String, Map<String, ViewState.Value>> stateValues = req.getPayload().getView().getState().getValues();
    String firstName = stateValues.get("firstName").get("agenda-action1").getValue();

    Map<String, String> errors = new HashMap<>();
    // 修正原代码变量名错误,将caseName改为firstName
    if (firstName.length() <= 10) {
        errors.put("firstName", "输入内容需要超过10个字符。");
    }
    if (!errors.isEmpty()) {
        return ctx.ack(r -> r.responseAction("errors").errors(errors));
    } else {
        // 调用chatPostMessage发送内容到目标频道
        ctx.client().chatPostMessage(r -> r
            .channel(channelId)
            .text(firstName)
        );
        return ctx.ack("");
    }
});

效果验证

当用户在模态框输入John Smith并提交后,启动模态框的频道会显示:

John Smith

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:01:26