0

我有一个斜杠命令,当调用它时,会打印一个团队列表(存储在列表中),旁边有复选框。我可以在旁边创建带有团队名称的复选框,但前提是团队名称是硬编码的。如何遍历列表并创建未知数量的复选框?

app.command("/message", (req, ctx) -> {
  ctx.respond(res -> res
    .responseType("in_channel") // or "in_channnel"
    .blocks(asBlocks(
      section(section -> section.text(markdownText("Select channels to receive message")).accessory(
        checkboxes(checkboxes -> checkboxes
          .options(asOptions(
            option(option -> option.value("0").text(markdownText("some-team")))
            option(option -> option.value("1").text(markdownText("another-team")))
          ))
        )
      )),
      actions(actions -> actions
        .elements(asElements(
          button(b -> b.actionId("submit").text(plainText
            (pt -> pt.emoji(true).text("Submit"))).style("primary").value("submit"))
        ))
      )
    ))
  );
  return ctx.ack();
});
4

1 回答 1

0

假设您熟悉使用块套件/块套件构建器。

您可以将完整的块集创建为文本
,然后可以使用blocksAsString(String)方法对其进行分配。
https://slack.dev/java-slack-sdk/guides/composing-messages

丰富消息布局的构建块

Block Kit是一个用于 Slack 应用程序的 UI 框架,它在构建消息和其他表面的体验时提供了控制和灵活性的平衡。

用 Java 代码编写大型 JSON 数据结构可能并不容易。因此,我们提供了像 blocksAsString(String) 这样的 setter 方法,它们接受整个块部分作为单个字符串值。这种方法应该与模板引擎加载的外部文件数据或结果一起使用。

ChatPostMessageResponse response = slack.methods(token).chatPostMessage(req -> req
  .channel("C1234567")
  .blocksAsString("[{\"type\": \"divider\"}]")
);
于 2021-07-28T17:48:51.307 回答