卡片

卡片消息给予开发者便利,让用户感觉更方便的交互展示形式。卡片消息统一为JSON对象,发送卡片消息时,将JSON对象套入messageBody字段即可。

卡片编辑器

为了方便开发者使用,我们提供了可视化卡片编辑器在新窗口打开,通过卡片编辑器可以很方便的构建你想要的卡片样式。

卡片属性

字段

字段类型必传说明
contentstring附加文本,支持Markdown语法、菱形语法
cardobject卡片,限制10000个字符,支持Markdown语法,不支持菱形语法

卡片

字段类型必传说明
typestring类型,固定填写card
componentslist<object>内容组件
themestring卡片风格,grey,red,orange,yellow ,green,indigo,blue,purple,black,default
titlestring卡片标题,只支持普通文本,可以为空字符串

JSON

{
    "content": "这是一段卡片外的文字消息,可以附带Markdown语法、@用户、#频道等菱形语法功能,在卡片编辑器中不会实时预览。",
    "card": {
        "type": "card",
        "components": [],
        "theme": "grey",
        "title": "这是一个卡片标题"
    }
}

内容组件

标题

字段

字段类型必传说明
typestring组件类型,当前填写header
textobject标题数据

标题数据

字段类型必传说明
typestring文本类型,plain-text:普通文本,dodo-md:Markdown文本
contentstring文本内容,支持Markdown语法,最多显示2行

JSON

{
    "type": "header",
    "text": {
        "type": "dodo-md",
        "content": "一个标题字号的文本内容,支持Markdown"
    }
}

文本

字段

字段类型必传说明
typestring组件类型,当前填写section
textobject文本数据

文本数据

字段类型必传说明
typestring文本类型,plain-text:普通文本,dodo-md:Markdown文本
contentstring文本内容,支持Markdown语法

JSON

{
    "type": "section",
    "text": {
        "type": "dodo-md",
        "content": "一长段文本字号的文本内容,支持Markdown,最大支持字符数2000。"
    }
}

多栏文本

字段

字段类型必传说明
typestring组件类型,当前填写section
textobject文本数据

文本数据

字段类型必传说明
typestring数据类型,当前填写paragraph
colsstring栏数,2~6栏
fieldslist<object>数据列表

数据列表

字段类型必传说明
typestring文本类型,plain-text:普通文本,dodo-md:markdown文本
contentstring文本内容

JSON

{
    "type": "section",
    "text": {
        "type": "paragraph",
        "cols": 6,
        "fields": [{
                "type": "dodo-md",
                "content": "第一栏\n内容"
            }, {
                "type": "dodo-md",
                "content": "第二栏\n内容"
            }, {
                "type": "dodo-md",
                "content": "第三栏\n内容"
            }, {
                "type": "dodo-md",
                "content": "第四栏\n内容"
            }, {
                "type": "dodo-md",
                "content": "第五栏\n内容"
            }, {
                "type": "dodo-md",
                "content": "第六栏\n内容"
            }
        ]
    }
}

备注

字段

字段类型必传说明
typestring组件类型,当前填写remark
elementslist<object>数据列表

数据列表

字段类型必传说明
typestring数据类型,image:图片,plain-text:普通文本,dodo-md:markdown文本
contentstring文本内容,数据类型为文本时必填
srcstring图片地址,一般用作备注头部图标显示,数据类型为图片时必填

JSON

{
    "type": "remark",
    "elements": [{
            "type": "image",
            "src": "https://img.imdodo.com/upload/cdn/4803E0BBF8678A657EBD762D7AC45710_1660189645624.png"
        }, {
            "type": "dodo-md",
            "content": "BiliBili"
        }, {
            "type": "image",
            "src": "https://img.imdodo.com/upload/cdn/1C274FE42B6C98494A06D674559B2206_1658739484506.png"
        }, {
            "type": "dodo-md",
            "content": "DoDo"
        }
    ]
}

图片

字段

字段类型必传说明
typestring组件类型,当前填写image
srcstring图片地址

JSON

{
    "type": "image",
    "src": "https://img.imdodo.com/upload/cdn/09151DF5C726C6E2F5915E5B117EF98E_1660189645615.png"
}

多图

字段

字段类型必传说明
typestring组件类型,当前填写image-group
elementslist<object>数据列表,最多9条

数据列表

字段类型必传说明
typestring数据类型,当前填写image
srcstring图片地址

JSON

{
    "type": "image-group",
    "elements": [{
            "type": "image",
            "src": "https://img.imdodo.com/upload/cdn/1C274FE42B6C98494A06D674559B2206_1658739484506.png"
        }, {
            "type": "image",
            "src": "https://img.imdodo.com/upload/cdn/09151DF5C726C6E2F5915E5B117EF98E_1660189645615.png"
        }
    ]
}

视频

提示

视频链接,必须是官方的链接,后期会提供视频上传接口,前期可通过DoDo群内上传视频,从消息事件内获得视频链接

字段

字段类型必传说明
typestring组件类型,当前填写video
titlestring视频标题
coverstring视频封面
srcstring视频地址

JSON

{
    "type": "video",
    "title": "屏幕内覆盖视频地址",
    "cover": "https://img.imdodo.com/dodo/2493bf9b000b8dc18e77d079ac517bb9.png",
    "src": "https://video.imdodo.com/dodo/7f0a1979c818fa05cf7bdeae20aad24b.mp4"
}

倒计时

字段

字段类型必传说明
typestring组件类型,当前填写countdown
titlestring倒计时标题
stylestring显示样式,day:按天显示,hour :按小时显示
endTimelong结束时间戳

JSON

{
    "type": "countdown",
    "title": "主题",
    "style": "hour",
    "endTime": 1660644927968
}

分割线

字段

字段类型必传说明
typestring组件类型,当前填写divider

JSON

{
    "type": "divider"
}

交互组件

按钮

提示

所有按钮的Action都会回传事件给开发者,且会带上value值

字段

字段类型必传说明
typestring组件类型,当前填写button-group
elementslist<object>数据列表

数据列表

字段类型必传说明
typestring数据类型,当前填写button
interactCustomIdstring自定义按钮ID
clickobject按钮点击动作
colorstring按钮颜色,grey,red,orange,green,blue,purple,default
namestring按钮名称
formobject回传表单,仅当按钮点击动作为form时需要填写

按钮点击动作

字段类型必传说明
valuestringValue
actionstring按钮动作类型,link_url:跳转链接,call_back:回传参数,copy_content:复制内容,form:回传表单

JSON

{
    "type": "button-group",
    "elements": [{
            "type": "button",
            "interactCustomId": "交互自定义id1",
            "click": {
                "value": "https://www.imdodo.com",
                "action": "link_url"
            },
            "color": "blue",
            "name": "链接跳转"
        }, {
            "type": "button",
            "interactCustomId": "交互自定义id2",
            "click": {
                "value": "value",
                "action": "call_back"
            },
            "color": "green",
            "name": "回传参数"
        }, {
            "type": "button",
            "interactCustomId": "交互自定义id3",
            "click": {
                "value": "这段话会在点击按钮后复制到剪贴板",
                "action": "copy_content"
            },
            "color": "grey",
            "name": "复制内容"
        }, {
            "type": "button",
            "interactCustomId": "交互自定义id",
            "click": {
                "value": "",
                "action": "form"
            },
            "color": "grey",
            "name": "回传表单",
            "form": {
                "title": "表单标题",
                "elements": [{
                        "type": "input",
                        "key": "选项自定义id1",
                        "title": "第1个问题",
                        "rows": 4,
                        "placeholder": "未填写时的默认内容",
                        "minChar": 1,
                        "maxChar": 4000
                    }, {
                        "type": "input",
                        "key": "选项自定义id2",
                        "title": "第2个问题",
                        "rows": 1,
                        "placeholder": "输入框提示",
                        "minChar": 0,
                        "maxChar": 1000
                    }
                ]
            }
        }
    ]
}

列表选择器

字段

字段类型必传说明
typestring组件类型,当前填写list-selector
interactCustomIdstring交互自定义ID
placeholderstring输入框提示
elementslist<object>数据列表
minint最少选中个数
maxint最大选中个数

数据列表

字段类型必传说明
namestring选项名
descstring选项描述

JSON

{
    "type": "list-selector",
    "interactCustomId": "交互自定义id",
    "placeholder": "未选择时显示的文本内容",
    "elements": [{
            "name": "选项1",
            "desc": "可以填一些描述"
        }, {
            "name": "选项2"
        }, {
            "name": "选项3",
            "desc": "也可以不填"
        }
    ],
    "min": 1,
    "max": 2
}

回传表单

提示

表单页面由表单按钮触发,因此外层需要先定义表单按钮!!!

字段

字段类型必传说明
titlestring表单标题
elementslist<object>数据列表

数据列表

字段类型必传说明
typestring选项类型,input:输入框
keystring选项自定义ID
titlestring选项名称
rowsint输入框高度,填1表示单行,最多4行
placeholderstring输入框提示
minCharint最小字符数,介于0~4000
maxCharint最大字符数,介于1~4000,且最大字符数不得小于最小字符数

JSON

{
    "title": "表单标题",
    "elements": [{
            "type": "input",
            "key": "选项自定义id1",
            "title": "第1个问题",
            "rows": 4,
            "placeholder": "未填写时的默认内容",
            "minChar": 1,
            "maxChar": 4000
        }, {
            "type": "input",
            "key": "选项自定义id2",
            "title": "第2个问题",
            "rows": 1,
            "placeholder": "输入框提示",
            "minChar": 0,
            "maxChar": 1000
        }
    ]
}

文字 + 模块

字段

字段类型必传说明
typestring组件类型,当前填写section
alignstring对齐方式,left:左对齐,right:右对齐
textobject文本
accessoryobject附件

文本

左侧文本可以设置为文本多栏文本

附件

右侧附件可以设置为图片按钮

JSON

{
    "type": "section",
    "text": {
        "type": "dodo-md",
        "content": "左侧文本可以设置为文本或多栏文本,右侧附件为可以设置图片或按钮"
    },
    "align": "right",
    "accessory": {
        "type": "button",
        "click": {
            "value": "https://www.imdodo.com",
            "action": "link_url"
        },
        "color": "green",
        "name": "按钮"
    }
}