微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java Slack Bot:如何在斜杠命令中迭代?

如何解决Java Slack Bot:如何在斜杠命令中迭代?

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

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();
});

解决方法

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

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

丰富消息布局的构建块

Block Kit 是 Slack 应用的 UI 框架,它提供了一个平衡 在建立消息体验时的控制力和灵活性 其他surfaces

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

ChatPostMessageResponse response = slack.methods(token).chatPostMessage(req -> req
  .channel("C1234567")
  .blocksAsString("[{\"type\": \"divider\"}]")
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。