消息卡片总体结构
卡片消息由config、link、i18n_items 三部分组成 卡片消息使用整体限制:
- 所有tag字段必填
- 卡片组件数:每个卡片组件数不得超过 20 个
- 卡片内容阈值:每个卡片内容不得超过 15000 个字符
结构说明
名称 | 是否必填 | 参数类型 | 说明 |
---|---|---|---|
config | 是 | object | |
∟ allowd_operate_list | 否 | []string | 是否允许右键操作:disable-禁用右键操作,accept_all-启用右键操作,包括:转发、收藏、回复、多选 |
∟ nonsupport_client | 否 | object | 可配置不在指定的客户端展示该消息 |
∟ ∟ client_type | 是 | []string | 可选pc、ios、android |
∟ ∟ describe | 是 | string | 客户端不展示卡片时的提示文本 |
∟ shared_card | 否 | bool | 是否为共享卡片消息,true: 是,false: 否。不传默认为true。具体差异可见本文的《独享/共享卡片说明》部分 |
∟ todo_switch | 否 date_picker | bool | 添加卡片待办状态,true:开启待办,false:关闭待办。不传默认为false。 |
∟ processing_staselectionte | 是 | string | 卡片消息处理状态,默认未处理状态。枚举值:unprocessed-未处理,processed-已处理。 不传默认为processed。 |
∟ filter_key | 否 | string | 添加卡片筛选状态,需要在开发者后台配置筛选项,详情参考添加卡片筛选状态 |
link | 否 | object | 卡片整体的跳转链接 |
∟ url | 是 | string | 默认的链接地址 |
∟ pc_url | 否 | string | PC 端的链接地址 |
∟ ios_url | 否 | string | iOS 端的链接地址 |
∟ android_url | 否 | string | Android 端的链接地址 |
i18n_items | 是 | array | 卡片的内容,支持多语言 |
∟ key | 是 | string | 语言类型,目前支持5种,枚举:简体中文:zh-CN、台湾繁体:zh-TW、英文:en-US、泰文:th-TH、日文:ja-JP |
∟ value | 否 | object | 卡片配置 |
∟ ∟ header | 是 | object | 卡片标题 |
∟ ∟ ∟ title | 是 | object | 主标题配置 |
∟ ∟ ∟ ∟ tag | 是 | string | 固定为text |
∟ ∟ ∟ ∟ text | 是 | object | 标题文本配置 |
∟ ∟ ∟ ∟ ∟ type | 是 | string | 文本类型,支持 plain 和 markdown 两种类型 |
∟ ∟ ∟ ∟ ∟ content | 是 | string | 文本内容 |
∟ ∟ ∟ subtitle | 否 | object | 副标题配置 |
∟ ∟ ∟ ∟ tag | 是 | string | 固定为text |
∟ ∟ ∟ ∟ text | 是 | object | 标题文本配置 |
∟ ∟ ∟ ∟ ∟ type | 是 | string | 文本类型,支持 plain 和 markdown 两种类型 |
∟ ∟ ∟ ∟ ∟ content | 是 | string | 文本内容 |
∟ ∟ elements | 是 | array | 卡片内的组件配置,详情可查看具体组件说明 |
∟ ∟ ∟ text | 否 | object | 文本组件,详细结构见文本 |
∟ ∟ ∟ div | 否 | object | 多列文本组件,详细结构见多列文本 |
∟ ∟ ∟ img | 否 | object | 图片组件,详细结构见图片 |
∟ ∟ ∟ carousel | 否 | object | 轮播图组件,详细结构见轮播图 |
∟ ∟ ∟ note | 否 | object | 文本+小图组件,详细结构见文本+小图 |
∟ ∟ ∟ medium_note | 否 | object | 文本+中图组件,详细结构见文本+中图 |
∟ ∟ ∟ hr | 否 | object | 线条组件,详细结构见线条 |
∟ ∟ ∟ action | 否 | object | 交互型组件配置 |
∟ ∟ ∟ ∟ tag | 是 | string | 固定为action |
∟ ∟ ∟ ∟ layout | 是 | string | 布局分栏,当多个交互型组件组合放在一行时,卡片的布局适配可分几种布局:exclusive_row-每个独占一行,bisected-等分双列,trisection-等分三列,flow-流式布局;具体每个分栏效果可参考分栏示例 |
∟ ∟ ∟ ∟ actions | 否 | array | 交互型组件 |
∟ ∟ ∟ ∟ ∟ button | 否 | object | 按钮组件,详细结构见按钮 |
∟ ∟ ∟ ∟ ∟ selection | 否 | object | 列表选择器组件 ,详细结构见列表选择器 |
∟ ∟ ∟ ∟ ∟ date_picker | 否 | object | 日期选择器组件,详细结构见日期选择器 |
∟ ∟ ∟ ∟ ∟ input | 否 | object | 输入框组件,详细结构见输入框 |
∟ ∟ ∟ ∟ ∟ dropdown | 否 | object | 下拉按钮组件,详细结构见下拉按钮 |
示例代码
json
{
"config": {
"allowd_operate_list": [
"accept_all"
],
"filter_key": "key1",
"nonsupport_client": {
"client_type": [
"pc",
"ios",
"android"
],
"describe": "请前往XX端查看"
},
"shared_card": true,
"todo_switch": true,
"processing_state": "unprocessed"
},
"link": {
"android_url": "",
"ios_url": "",
"pc_url": "",
"url": "默认链路url"
},
"i18n_items": [
{
"key": "zh-CN",
"value": {
"header": { // 标题配置
"title": {
"tag": "text",
"text": {
"type": "plain",
"content": "标题"
}
},
"subtitle": {
"tag": "text",
"text": {
"type": "plain",
"content": "副标题"
}
}
},
"elements": { // 组件配置
"text":{
// 文本组件的json
},
"div":{
// 多列文本组件的json
},
"img":{
// 图片组件的json
},
"carousel":{
// 轮播图组件的json
},
"note":{
// 文本+小图组件的json
},
"medium_note":{
// 文本+中图组件的json
},
"hr":{
// 线条组件的json
},
"action": {
"tag": "action",
"layout":"flow",
"actions": [
{
"button": {
// 按钮组件的json
}
},
{
"dropdown": {
// 下拉操作按钮组件的json
}
},
{
"selection": {
// 列表选择器组件的json
}
},
{
"date_picker": {
// 日期选择器组件的json
}
},
{
"input": {
// 输入框组件的json
}
},
]
}
}
}
}
]
}
独享/共享卡片说明
卡片消息分为独享和共享,其含义如下:
- 共享: 当将一个卡片发送给多个用户时,多个用户共享该卡片,即业务方或某一用户对卡片进行修改,则所有用户的卡片均会改变。
- 独享: 当将一个卡片发送给多个用户时,多个用户对该卡片状态相互独立,即某一用户对卡片进行修改,只会影响到该用户的卡片状态。
独享/共享的配置是在卡片config结构部分的shared_card
字段控制的
卡片跳转说明
消息卡片提供了不同维度(层级)的链接跳转配置,分为4种:
- 交互型组件的跳转交互
- 非交互型组件内的跳转交互
- 组件的跳转交互
- 整个消息卡片的跳转交互
同时,卡片跳转链接支持分端,一般分为四个参数:android_url、ios_url、pc_url、url,其中最后一个为默认url。仅当某个端没有设置特定url时,会使用该默认url。
当卡片同时具有多个维度的链接跳转配置时,跳转触发的逻辑存在响应优先级,优先级顺序为: 交互型组件的跳转交互 = 非交互型组件内的跳转交互 > 组件的跳转交互 > 整个消息卡片的跳转交互
以下罗列4种链接的json示例(示例中省略了与链接无关的参数):
交互型组件的跳转交互
即在交互型组件内设置的跳转交互,以按钮组件举例:
json
{
"button": {
"tag": "button",
"text": {
//.....
},
"style": "",
"link": {
"android_url": "",
"ios_url": "",
"pc_url": "",
"url": "默认链路url"
},
"key": "用于回传标识,会将该字段值回传(回传必须)",
"required": false,
"modal": {
//.....
}
}
}
非交互型组件内的跳转交互
即在非交互组件内设置的跳转交互,以文本组件内的超链接举例:
json
{
"text":{
"tag": "text",
"text": {
"content": "[差异化链接]($key1)",
"type": "markdown"
},
"href": [
{
"key": "key1",
"value": {
"android_url": "string",
"ios_url": "string",
"pc_url": "string",
"url": "https://www.baidu.com"
}
}
],
"link": {
//.....
}
}
}
组件的跳转交互
部分组件可以设置整体组件区域的点击跳转,以“文本+中图”组件为例:
json
{
"button": {
"tag": "button",
"text": {
//.....
},
"style": "",
"link": {
"android_url": "",
"ios_url": "",
"pc_url": "",
"url": "默认链路url"
},
"key": "用于回传标识,会将该字段值回传(回传必须)",
"required": false,
"modal": {
//.....
}
}
}
整个消息卡片的跳转交互
即在消息卡片最外层的link进行设置,点击卡片整体会进行链接跳转
json
{
"config": {
//.....
},
"link": {
"android_url": "",
"ios_url": "",
"pc_url": "",
"url": "默认链路url"
},
"i18n_items": {
// ...
}
}