1 message消息结构说明
1.1 message 卡片消息 数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
message | json | 必须 | 无 | 卡片消息,数据结构请参考1.2单卡片说明和1.3多卡片说明 |
1.2 单卡片消息数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
generalPurposeCard | json | 必须 | 无 | 单卡片消息结构,见下方1.2.1 |
1.2.1 generalPurposeCard数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
content | json | 必须 | 无 | 卡片内容,见下方1.2.2 单卡片content消息结构说明 |
layout | json | 必须 | 无 | 卡片样式,见下方1.2.3 单卡片layout数据结构说明 |
1.2.2 单卡片content数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
title | string | 必须 | 无 | 卡片标题,最大长度200个字节 |
description | string | 必须 | 无 | 文字描述,最大长度2000个字节 |
media | json | 必须 | 无 | 素材数据,见下方1.2.4 media数据结构说明 |
suggestions | json array | 可选 | 无 | 卡片菜单,数据结构请参考1.4 suggestions数据结构 |
1.2.3 单卡片layout数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
cardOrientation | enum | 必须 | 无 | 可选值包括:VERTICAL :垂直HORIZONTAL :水平 |
imageAlignment | enum | 条件参数 | 无 | 排列方式,当cardOrientation 为HORIZONTAL ,该参数为必须参数,可选值包括:LEFT :左对齐RIGHT :右对齐 |
titleFontStyle | enum | 可选 | 无 | 卡片标题样式,可多选,可选值包括:italics :斜体bold :粗体underline :下划线 |
descriptionFontStyle | enum | 可选 | 无 | 文字描述样式,可多选,可选值包括:italics :斜体bold :粗体<br/>underline :下划线 |
style | string | 可选 | 无 | css样式表链接,描述见附录 |
1.2.4 media数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
mediaUrl | string | 必须 | 无 | 图片地址 |
mediaContentType | string | 必须 | 无 | 图片类型,示例:image/png |
mediaFileSize | int | 必须 | 无 | 图片大小 |
height | enum | 必须 | 无 | 图片高度,可选值包括:SHORT_HEIGHT :小图MEDIUM_HEIGHT :中图TALL_HEIGHT :大图 |
thumbnailUrl | string | 可选 | 无 | 缩略图地址缩略图存在时,此参数必须 |
thumbnailContentType | string | 可选 | 无 | 缩略图类型,缩略图存在时,此参数必须,示例:image/png |
thumbnailFileSize | int | 必须 | 无 | 缩略片大小,缩略图存在时,此参数必须, |
contentDescription | string | 可选 | 无 | 卡片描述,最大支持长度200字节 注:描述文本为屏幕阅读器可访问,不会显示在屏幕上 |
1.2.5 数据示例
{
"message": {
"generalPurposeCard": {
"content": {
"description": "这是卡片正文",
"media": {
"height": "MEDIUM_HEIGHT",
"mediaContentType": "image/png",
"mediaFileSize": "1259515",
"mediaUrl": "https://ftnj01.xnq.r.10086.cn:10099/s/003032024040311atT7rLLdSyn050FD.png"
},
"suggestions": [{
"action": {
"displayText": "打开链接(内置浏览器)",
"postback": {
"data": "open_url_internal"
},
"urlAction": {
"openUrl": {
"application": "webview",
"url": "https://rcs.10086.cn/"
}
}
}
},
{
"action": {
"displayText": "打开链接(默认浏览器)",
"postback": {
"data": "open_url_browser"
},
"urlAction": {
"openUrl": {
"application": "browser",
"url": "https://rcs.10086.cn/"
}
}
}
},
{
"action": {
"mapAction": {
"requestLocationPush": {}
},
"displayText": "上报当前位置",
"postback": {
"data": "set_by_chatbot_request_location_push"
}
}
}
],
"title": "这是卡片标题"
},
"layout": {
"cardOrientation": "VERTICAL",
"imageAlignment": "LEFT"
}
}
}
}
1.3 多卡片消息数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
generalPurposeCardCarousel | json | 必须 | 无 | 多卡片消息结构,见下方1.3.1 |
1.3.1 generalPurposeCardCarousel多卡片消息结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
content | json array | 必须 | 无 | 多卡片内容,最小2个卡片,最多支持12个卡片,见下方1.3.2 多卡片content消息结构说明 |
layout | json | 必须 | 无 | 卡片样式,见下方1.3.3 多卡片layout数据结构说明 |
1.3.2 多卡片content数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
title | string | 必须 | 无 | 卡片标题,最大长度200个字节 |
description | string | 必须 | 无 | 文字描述,最大长度2000个字节 |
media | json | 必须 | 无 | 素材数据,见下方1.2.4 media数据结构说明 |
suggestions | json array | 可选 | 无 | 卡片菜单,最小一个,最大四个,数据结构请参考1.4 suggestions数据结构 |
1.3.3 多卡片layout数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
cardWidth | enum | 必须 | 无 | 可选值包括:SMALL_WIDTH :小图MEDIUM_WIDTH :中等 |
titleFontStyle | enum | 可选 | 无 | 卡片标题样式,可多选,可选值包括:italics :斜体bold :粗体underline :下划线 |
descriptionFontStyle | enum | 可选 | 无 | 文字描述样式,可多选,可选值包括:italics :斜体bold :粗体underline :下划线 |
style | string | 可选 | 无 | css样式表链接,描述见附录 |
1.3.4 数据示例
{
"message": {
"generalPurposeCardCarousel": {
"layout": {
"cardWidth": "MEDIUM_WIDTH"
},
"content": [{
"media": {
"mediaUrl": "https://ftjn01.xnq.r.10086.cn:10099/s/0110120430804161p1FVZ0sZHk027FD.gif",
"mediaContentType": "image/gif",
"mediaFileSize": "209484",
"height": "MEDIUM_HEIGHT",
"thumbnailUrl": "https://ftjn01.xnq.r.10086.cn:10099/s/0110120430804161p1FVZ0sZHk027TD",
"thumbnailContentType": "image/jpeg",
"thumbnailFileSize": "9431"
},
"title": "这是卡片1标题",
"description": "这是卡片1正文内容……",
"suggestions": [{
"reply": {
"displayText": "上行YES",
"postback": {
"data": "YES"
}
}
}, {
"action": {
"displayText": "打开链接",
"postback": {
"data": "1536309460312657920"
},
"urlAction": {
"openUrl": {
"url": "https://rcs.10086.cn/",
"application": "browser"
}
}
}
}]
}, {
"media": {
"mediaUrl": "https://ftjn01.xnq.r.10086.cn:10099/s/0110120430804161p1FVZ0sZHk027FD.gif",
"mediaContentType": "image/gif",
"mediaFileSize": "209484",
"height": "MEDIUM_HEIGHT",
"thumbnailUrl": "https://ftjn01.xnq.r.10086.cn:10099/s/0110120430804161p1FVZ0sZHk027TD",
"thumbnailContentType": "image/jpeg",
"thumbnailFileSize": "9431"
},
"title": "这是卡片2标题",
"description": "这是卡片2正文内容……",
"suggestions": [{
"reply": {
"displayText": "上行NO",
"postback": {
"data": "1536309659126861824"
}
}
}, {
"action": {
"displayText": "拨打10086",
"postback": {
"data": "1536309578193571840"
},
"dialerAction": {
"dialPhoneNumber": {
"phoneNumber": "10086"
}
}
}
}]
}]
}
}
}
1.4 suggestions数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
reply | json string | 可选 | 无 | 上行回复消息,数据结构请参考1.4.1 reply数据结构 |
action | json string | 可选 | 无 | 携带手机操作的上行回复消息,数据结构请参考2 action事件数据结构说明 |
1.4.1 action数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
displayText | string | 必须 | 无 | 上行文本,最大长度25个字节 |
postback | json | 必须 | 无 | 上行文本携带的数据标识,数据结构请参考1.4.2 postback数据结构 |
1.4.2 postback数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
data | string | 必须 | 无 | 上行文本标识,建议使用UUID |
1.4.3 数据示例
[{
"reply": {
"displayText": "上行NO",
"postback": {
"data": "1536309659126861824"
}
}
}, {
"action": {
"displayText": "拨打10086",
"postback": {
"data": "1536309578193571840"
},
"dialerAction": {
"dialPhoneNumber": {
"phoneNumber": "10086"
}
}
}
}]
2 action 事件数据结构说明
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
displayText | string | 必须 | 无 | 按钮文本,最大长度25个字节 |
postback | json | 必须 | 无 | 按钮文本携带的数据标识,数据结构请参考1.9 postback数据结构 |
urlAction | json | 可选 | 无 | 链接事件,具体数据结构请参考2.1 |
dialerAction | json | 可选 | 无 | 拨号事件,具体数据结构请参考2.2 |
mapAction | json | 可选 | 无 | 地图事件,具体数据结构请参考2.3 |
calendarAction | json | 可选 | 无 | 日历事件,具体数据结构请参考2.4 |
composeAction | json | 可选 | 无 | 草稿事件,具体数据结构请参考2.5 |
deviceAction | json | 可选 | 无 | 设备事件,具体数据结构请参考2.6 |
settingsAction | json | 可选 | 无 | 应用事件,具体数据结构请参考2.7 |
2.1 urlAction 链接事件
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
openUrl | json | 必须 | 无 | 链接事件,数据结构请参考2.1.1 openUrl数据结构 |
2.1.1 openUrl数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
url | string | 必须 | 无 | 链接地址 |
application | enum | 必须 | 无 | 浏览器类型,可选值:browser :内置浏览器webview :默认浏览器 |
viewMode | enum | 条件参数 | full | application 为webview 可用,可选值:full :全屏half :半屏tall :浮动 |
parameters | string | 条件参数 | 无 | application 为webview 可用,最大长度200个字节 |
2.1.2 数据示例
{
"openUrl": {
"application": "webview",
"url": "https://www.mysubmail.com",
"viewMode": "full",
"parameters": "visitorId=10001&code=123456"
}
}
2.2 dialerAction 拨号事件
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
dialPhoneNumber | json | 可选 | 无 | 通话事件,数据结构请参考2.2.1 dialPhoneNumber数据结构 |
dialEnrichedCall | json | 可选 | 无 | 增强通话事件,数据结构请参考2.2.2 dialEnrichedCall数据结构 |
dialVideoCall | json | 可选 | 视频通话,数据结构请参考2.2.3 dialVideoCall数据结构 |
2.2.1 dialPhoneNumber数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
phoneNumber | string | 必须 | 无 | 要通话的号码,比如15288888888 |
fallbackUrl | string | 可选 | 无 | 话单推送地址 |
2.2.2 dialEnrichedCall数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
phoneNumber | string | 必须 | 无 | 要通话的号码,比如15288888888 |
subject | string | 可选 | 无 | |
fallbackUrl | string | 可选 | 无 | 话单推送地址 |
2.2.3 dialVideoCall数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
phoneNumber | string | 必须 | 无 | 要通话的号码,比如15288888888 |
fallbackUrl | string | 可选 | 无 | 话单推送地址 |
2.2.4 数据示例
{
"dialPhoneNumber": {
"phoneNumber": "15288888888"
}
}
2.3 mapAction 地图事件
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
showLocation | json | 二选一 | 无 | 在地图上显示给定位置,数据结构请参考 2.3.1 showLocation数据结构 |
requestLocationPush | json | 二选一 | 无 | 一次从UE发送地理位置推送到的请求聊天机器人,数据结构参考 2.3.2 requestLocationPush数据结构 |
2.3.1 showLocation 数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
location | json | 必须 | 无 | 地理位置,数据结构请参考2.3.3 location数据结构 |
fallbackUrl | json | 可选 | 无 | 消息推送地址 |
2.3.2 requestLocationPush 数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
showLocation | json | 二选一 | 无 | 在地图上显示给定位置,数据结构参考 2.3.1 showLocation数据结构 |
requestLocationPush | json | 二选一 | 无 | 一次从UE发送地理位置推送到的请求聊天机器人,数据结构暂无 |
2.3.3 location 数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
latitude | float | 与query 二选一 | 无 | 纬度,示例:23.170408552888855 |
longitude | float | 与query 二选一 | 无 | 经度,示例:113.40224851582335 |
label | string | 可选 | 无 | 标签,最大长度100个字节 |
query | string | 与latitude ,longitude 二选一 | 无 | 基于用户位置的位置进行搜索,示例:GSMA Head Office, 25 Walbrook, London, UK。最大长度200个字节 |
2.3.4 数据示例
{
"showLocation": {
"location": {
"latitude": 23.170408552888855,
"longitude": 113.40224851582335,
"label": "中国移动南方基地智汇中心"
},
"fallbackUrl": "https://j.map.baidu.com/eb/XWkf"
}
}
2.4 calendarAction 日历事件
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
createCalendarEvent | json | 必须 | 无 | 日历事件,消息结构请驾考2.4.1 createCalendarEvent数据结构 |
2.4.1 createCalendarEvent数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
startTime | string | 必须 | 无 | 开始时间,示例:2024-04-14T00:00:00Z |
endTime | string | 必须 | 无 | 结束时间,示例:2024-04-14T23:59:59Z |
title | string | 必须 | 无 | 提醒主题,最大长度100个字节,示例:会议提醒 |
description | string | 可选 | 无 | 提醒描述,最大长度500个字节 |
fallbackUrl | string | 可选 | 无 | 回落地址 |
2.4.2 数据示例
{
"createCalendarEvent": {
"startTime": "2024-04-14T00:00:00Z",
"endTime": "2024-04-14T23:59:59Z",
"title": "会议提醒",
"description": "下午3点公司会议"
}
}
2.5 composeAction 编写消息草稿事件
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
composeTextMessage | json | 二选一 | 无 | 编写文字短信,数据结构请参考2.5.1 composeTextMessage数据结构 |
composeRecordingMessage | json | 二选一 | 无 | 录制多媒体信息,数据结构请参考2.5.2 composeRecordingMessage数据结构 |
2.5.1 composeTextMessage数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
phoneNumber | string | 必须 | 无 | 接收方号码 |
text | string | 必须 | 无 | 短信内容,最长支持100个字节 |
2.5.2 composeRecordingMessage数据结构
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
phoneNumber | string | 必须 | 无 | 接收方号码 |
type | enum | 必须 | 无 | 多媒体信息类型,可选值包括:AUDIO :语音消息VIDEO :视频消息 |
2.5.3 数据示例
暂无
2.6 deviceAction 与设备交互事件
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
requestDeviceSpecifics | json | 必须 | 无 | 请求有关用户设备的详细信息。数据结构暂无 |
2.7 settingsAction 与应用设备进行交互的事件
参数 | 类型 | 必须/可选 | 默认 | 描述 |
---|---|---|---|---|
disableAnonymization | json | 二选一 | 无 | 要求用户禁用匿名设置。数据结构暂无 |
enableDisplayedNotifications | json | 二选一 | 无 | 要求用户启用发送显示通知。数据结构暂无 |
附录:富媒体卡片支持的 CSS 属性说明
富媒体卡片的 CSS 控制元素包含以下四种:
1.整个富媒体卡片,与 CSS 中的消息选择器一起引用
2.富媒体卡片标题,与 CSS 中的 message.content.Title 选择器一起引用
3.富媒体卡片描述,与 CSS 中的 message.content.description 选择器一起引用
4.富媒体卡片建议,与 CSS 中的 message.content.suggestions 选择器一起引用
富媒体卡片支持的 CSS 选择器和属性如下表所示:
CSS选择器 | 选择器支持的CSS属性 | CSS属性和CSS属性支持值的描述 |
---|---|---|
message | color | 富媒体卡片中所有文本内容的颜色 |
message | font | 富媒体卡片中所有元素的文本内容的字体 |
message | text-align | 富卡中所有元素文本内容的对齐方式 |
message | background-color | 富媒体卡片的背景颜色,默认值为transparent |
message | background-image | 富媒体卡片的背景图片。通过图片 URI 来指定图片,当不使用背景图片时,采用‘none’默认值。当背景图片不可用时,将采用背景色。当图片可用时,它将在背景色之上渲染。 |
message.content.title | color | title 元素文本内容的颜色,未指定时,它可以从 message 元素继承。 |
message.content.title | font | title 元素文本内容的字体,未指定时,从 message 元素继承。 |
message.content.title | text-align | title 元素文本内容的对齐方式,未指定时,从 message 元素继承。 |
message.content.description | color | description 元素文本内容的颜色,未指定时,从 message 元素继承。 |
message.content.description | font | description 元素文本内容的字体,未指定时,从 message 元素继承。 |
message.content.description | text-align | description 元素文本内容的对齐方式,未指定时,从 message 元素继承。 |
message.content.suggestions | color | suggestions 元素的文本内容的颜色,如果没指定,则从 message 元素继承。 |
message.content.suggestions | font | suggestions 元素文本内容的字体,未指定时,从 message 元素继承。 |
message.content.suggestions | text-align | suggestions 元素文本内容的对齐方式。该值参考[CSS2.1]。未指定时,从 message 元素继承。 |
示例:
@charset "utf-8";
/* CSS Document */
Message {
text-align:center;
font-size:12px;
color:#555;
font-family:Verdana, Arial, Helvetica, sans-serif;
background-color: green;
}
message.content.title {
font-size:14px;
font-weight:bold;
color:#666699
}
message.content.description {
color:#666699
}
message.content.suggestions {
color:#669999
}