# 消息卡片总体结构

卡片消息由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   | 添加卡片筛选状态，需要在开发者后台配置筛选项，详情参考[添加卡片筛选状态](/app-integration-dev/guide/card/card-status/filter)                                                                                                      |
| 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   | 文本组件，详细结构见[文本](/app-integration-dev/guide/card/show-widget/text)                                                                                                                               |
| ∟ ∟ ∟ div                   | 否             | object   | 多列文本组件，详细结构见[多列文本](/app-integration-dev/guide/card/show-widget/div)                                                                                                                            |
| ∟ ∟ ∟ img                   | 否             | object   | 图片组件，详细结构见[图片](/app-integration-dev/guide/card/show-widget/img)                                                                                                                                |
| ∟ ∟ ∟ carousel              | 否             | object   | 轮播图组件，详细结构见[轮播图](/app-integration-dev/guide/card/show-widget/carousel)                                                                                                                         |
| ∟ ∟ ∟ note                  | 否             | object   | 文本+小图组件，详细结构见[文本+小图](/app-integration-dev/guide/card/show-widget/note)                                                                                                                         |
| ∟ ∟ ∟ medium_note           | 否             | object   | 文本+中图组件，详细结构见[文本+中图](/app-integration-dev/guide/card/show-widget/medium-note)                                                                                                                  |
| ∟ ∟ ∟ hr                    | 否             | object   | 线条组件，详细结构见[线条](/app-integration-dev/guide/card/show-widget/hr)                                                                                                                                 |
| ∟ ∟ ∟ action                | 否             | object   | 交互型组件配置                                                                                                                                                                                                                     |
| ∟ ∟ ∟ ∟ tag                 | 是             | string   | 固定为action                                                                                                                                                                                                                   |
| ∟ ∟ ∟ ∟ layout              | 是             | string   | 布局分栏，当多个交互型组件组合放在一行时，卡片的布局适配可分几种布局：exclusive_row-每个独占一行，bisected-等分双列，trisection-等分三列，flow-流式布局；具体每个分栏效果可参考[分栏示例](/app-integration-dev/guide/card/interactive-widget/summary.html#desc-layout) |
| ∟ ∟ ∟ ∟ actions             | 否             | array    | 交互型组件                                                                                                                                                                                                                       |
| ∟ ∟ ∟ ∟ ∟ button            | 否             | object   | 按钮组件，详细结构见[按钮](/app-integration-dev/guide/card/interactive-widget/button)                                                                                                                      |
| ∟ ∟ ∟ ∟ ∟ selection         | 否             | object   | 列表选择器组件 ，详细结构见[列表选择器](/app-integration-dev/guide/card/interactive-widget/selection)                                                                                                            |
| ∟ ∟ ∟ ∟ ∟ date_picker       | 否             | object   | 日期选择器组件，详细结构见[日期选择器](/app-integration-dev/guide/card/interactive-widget/date-picker)                                                                                                           |
| ∟ ∟ ∟ ∟ ∟ input             | 否             | object   | 输入框组件，详细结构见[输入框](/app-integration-dev/guide/card/interactive-widget/input)                                                                                                                     |
| ∟ ∟ ∟ ∟ ∟ dropdown          | 否             | object   | 下拉按钮组件，详细结构见[下拉按钮](/app-integration-dev/guide/card/interactive-widget/dropdown)                                                                                                                |
| ∟ ∟ ∟ text_action           | 否             | object   | 文本+按钮组件，详细结构见[文本+按钮](/app-integration-dev/guide/card/show-widget/text-action)                                                                                                                  |

### 示例代码

```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
                                }
                            },        
                        ]
                    },
                    "text_action": {
                      // 文本+按钮的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": {
         // ...
    }
}

```