飞书开放平台-全新消息卡片搭建工具

前言

你还在为需要手撕 JSON 代码而烦恼吗?消息卡片搭建工具全新升级,为你带来更优雅的卡片创作体验:
卡片编辑:纯可视化操作编辑消息卡片,再也不用碰代码
我的卡片:一键保存卡片,轻松构建你的专属卡片模板库
模板消息:无需烦恼冗长的请求体,一个卡片 ID 就能发送

可视化编辑工具

飞书开放平台-全新消息卡片搭建工具_第1张图片

如上图卡片上每个元素,都提供了可视化的边界功能,用来方便的编辑卡片元素的属性信息。

卡片样式与卡片数据分离

飞书开放平台-全新消息卡片搭建工具_第2张图片


如上每个卡片都有一个ID,我们称之为卡片模板的ID。另外卡片上每个元素都可以绑定一个变量,通过修改变量的值,卡片模板会生成一个具体的卡片实例。

发送消息卡片

新版消息卡片消息内容协议如下:

{
    "type":"template",
    "data":{
        "template_id":"ctp_xxxxxxxxxxxx",//卡片id,参数必填。可在搭建工具中通过“复制卡片ID”获取
        "template_variable":
        {    
            //卡片中绑定的变量的取值。如没有绑定变量,可不填此字段。
        }       
    }
}

也就是开发者发送卡片消息时,只需要传递卡片模板的ID,以及模板中需要的占位符的值。

服务端接受请求后会根据模板ID获取到模板内容,然后结合模板占位符的值进行渲染就得到一个具体的消息卡片的实例。

基于oapi-go-sdk进行发送消息的代码如下:

package main


import (
  "context"
  "encoding/json"
  "fmt"
  lark "github.com/larksuite/oapi-sdk-go/v3"
  larkcore "github.com/larksuite/oapi-sdk-go/v3/core"
  larkim "github.com/larksuite/oapi-sdk-go/v3/service/im/v1"
  "os"
)


type NewCardContent struct {
  Type string              `json:"type,omitempty"`
  Data *NewCardContentData `json:"data,omitempty"`
}


type NewCardContentData struct {
  TemplateID       string                 `json:"template_id,omitempty"`
  TemplateVariable map[string]interface{} `json:"template_variable,omitempty"`
}


func (m *NewCardContent) String() (string, error) {
  bs, err := json.Marshal(m)
  if err != nil {
    return "", err
  }
  return string(bs), nil
}


func main() {
  // 创建client
  var appID, appSecret = os.Getenv("APP_ID"), os.Getenv("APP_SECRET")
  client := lark.NewClient(appID, appSecret)


  // 构建卡片消息
  cardContent := &NewCardContent{
    Type: "template",
    Data: &NewCardContentData{
      TemplateID: "ctp_AAYmRrRBHYZP",
      TemplateVariable: map[string]interface{}{
        "title": "我是加多888",
      },
    },
  }
  content, err := cardContent.String()
  if err != nil {
    fmt.Println(err)
    return
  }


  // 发送消息
  resp, err := client.Im.Message.Create(context.Background(), larkim.NewCreateMessageReqBuilder().
    ReceiveIdType(larkim.ReceiveIdTypeOpenId).
    Body(larkim.NewCreateMessageReqBodyBuilder().
      MsgType(larkim.MsgTypeInteractive).
      ReceiveId("ou_c245b0a7dff2725cfa2fb104f8b48b9d").
      Content(content).
      Build()).
    Build())


  if err != nil {
    fmt.Println(err)
    return
  }


  if !resp.Success() {
    fmt.Println(resp.Code, resp.Msg, resp.RequestId())
    return
  }


  fmt.Println(larkcore.Prettify(resp))
  fmt.Println(resp.RequestId())


}

你可能感兴趣的:(飞书,json,java,前端,开发语言)