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

Slack交互按钮点击后响应仅出现在最后一条消息下如何解决

操作步骤:请依次点击「Approve」和「Yes」按钮:
操作配图

问题成因
  • 你当前的代码没有为响应消息指定所属的原始消息关联标识,Slack默认会将同源交互的异步响应统一追加到最新的相关消息下方。你的两个按钮复用了同一个action_id,且响应时没有明确绑定触发交互的原始消息ID,Slack无法区分响应要关联到哪条消息,所以所有返回都只会出现在最后一条消息下方。
实现方案

调整响应参数,明确指定响应要绑定的原始消息标识即可,修改后的代码如下:

app.blockAction("button-action", (req, ctx) -> {
  // 3秒内必须返回ack确认收到请求,否则Slack会判定交互超时
  ctx.ack();
  String value = req.getPayload().getActions().get(0).getValue();
  if (req.getPayload().getResponseUrl() != null) {
    ctx.respond(res -> res
      // 可根据需求调整:ephemeral仅点击用户可见,in_channel为频道全可见
      .responseType("ephemeral")
      .text("You " + value + " it")
      // 核心配置:绑定当前触发交互的原始消息,确保响应出现在对应消息下方
      .threadTs(req.getPayload().getMessage().getTs())
    );
  }
  return ctx.ack();
});
  • 核心修改说明:
    • 通过req.getPayload().getMessage().getTs()获取被点击按钮所属原始消息的唯一标识ts,赋值给threadTs参数,明确告知Slack响应的关联目标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:54:03