Skip to content

Latest commit

 

History

History
81 lines (67 loc) · 1.85 KB

README_zhCN.md

File metadata and controls

81 lines (67 loc) · 1.85 KB

卡片构造工具

交互卡片是飞书消息中比较受欢迎的交互形式,但构造起来比较复杂,因此我们提供了专门的卡片构造工具。

卡片构造工具采用声明式 API 设计,我们把每一个元素(divtextbutton 等)都映射成声明的形式。

我们约定使用「参数」来表示元素内部的子元素(例如 div 中的 fields),用「链式调用」来设置元素本身的属性(例如卡片中的 forward)。

使用方式

b := lark.NewCardBuilder()
c := b.Card(
    b.Markdown("some text"),
).
    Title("title").
    NoForward()

fmt.Println(c.String())

会渲染出:

{
  "config": {
    "wide_screen_mode": true,
    "enable_forward": false
  },
  "header": {
    "title": {
      "tag": "plain_text",
      "content": "title"
    }
  },
  "elements": [
    {
      "tag": "markdown",
      "content": "some text"
    }
  ]
}

参考实例:交互卡片

国际化支持

我们也支持构造多语言的卡片,在标题和内容等特定部分,需要引用 I18N 结构中的方法构造:

b := lark.NewCardBuilder()
c := b.I18N.Card(
        b.I18N.WithLocale(
            LocaleEnUS,
            b.Div(
                b.Field(b.Text("English Content")),
            ),
        ),
        b.I18N.WithLocale(
            LocaleZhCN,
            b.Div(
                b.Field(b.Text("中文内容")),
            ),
        ),
    ).
    Title(
        b.I18N.LocalizedText(LocaleEnUS, "English Title"),
        b.I18N.LocalizedText(LocaleZhCN, "中文标题"),
    )

发送

b := lark.NewCardBuilder()
c := b.Card(...Elements)
msg := lark.NewMsgBuffer(lark.MsgInteractive)
om := msg.BindEmail("[email protected]").Card(c.String()).Build()
bot.PostMessage(om)