# 模板渲染_v1.0
# 版本说明
版本 | 说明 | 日期 |
---|---|---|
v1.0 | RenderTemplate指令:BodyTemplate1, BodyTemplate2 , ListTemplate1 , WeatherTemplate RenderPlayerInfo指令:PlayerInfo | 2018.5.17 |
v1.1 | RenderTemplate指令:增加backgroundImage、backButton字段;增加BodyTemplate3 , OptionTemplate2 , OptionTemplate3 增加ElementSelected事件 | 2019.5.21 |
# RenderTemplate 指令
# BodyTemplate1
用于展示纯文本数据。
# 消息样式
{
"directive": {
"header": {
"namespace": "TemplateRuntime",
"name": "RenderTemplate",
"messageId": "e52e7a4c...",
"dialogRequestId": "49687be..."
},
"payload": {
"token": "S0wiXQZ1rVBkov...",
"type": "BodyTemplate1",
"backgroundImage": {{IMAGE_STRUCTURE}},
"backButton": "VISIBLE"//HIDDEN,默认为VISIBLE,
"title": {
"mainTitle": "String",
"subTitle": "String"
},
"skillIcon": {{IMAGE STRUCTURE}},
"textField": "String"
}
}
}
Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
dialogRequestId | 客户端必须为recognize 请求创建的唯一ID,此参数用于关联响应特定Recognize 事件发送的指令 | String |
Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
token | iFLYOS提供的token | String | 是 |
type | 模板消息的类型,这里是BodyTemplate1 | String | 是 |
backgroundImage | 背景图片 | image structure | 否 |
backButton | 是否显示返回键,取值:VISIBLE,HIDDEN。默认为HIDDEN | 否 | |
title | 消息的键值对,包含主标题和副标题 | Object | 是 |
title.mainTitle | 主标题 | String | 是 |
title.subTitle | 副标题 | String | 否 |
skillIcon | 技能图标,可选 | image structure | 否 |
textField | 文本内容 | String | 是 |
# BodyTemplate2
用于展示带一张图的文本消息。
# 消息样式
{
"directive": {
"header": {
"namespace": "TemplateRuntime",
"name": "RenderTemplate",
"messageId": "e52e7a4c...",
"dialogRequestId": "49687be..."
},
"payload": {
"token": "S0wiXQZ1rVBkov...",
"type": "BodyTemplate2",
"backgroundImage": {{IMAGE_STRUCTURE}},
"backButton": "VISIBLE"//HIDDEN,默认为VISIBLE,
"title": {
"mainTitle": "String",
"subTitle": "String"
},
"skillIcon": {{IMAGE_STRUCTURE}},
"textField": "String",
"image": {{IMAGE_STRUCTURE}},
}
}
}
Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
dialogRequestId | 客户端必须为recognize 请求创建的唯一ID,此参数用于关联响应特定Recognize 事件发送的指令 | String |
Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
token | iFLYOS提供的token | String | 是 |
type | 模板消息的类型,这里是BodyTemplate2 | String | 是 |
backgroundImage | 背景图片 | image structure | 否 |
backButton | 是否显示返回键,取值:VISIBLE,HIDDEN。默认为HIDDEN | 否 | |
title | 消息的键值对,包含主标题和副标题 | Object | 是 |
title.mainTitle | 主标题 | String | 是 |
title.subTitle | 副标题 | String | 否 |
skillIcon | 技能图标,可选 | image structure | 是 |
textField | 文本内容 | String | 是 |
image | 模板中的图片 | image structure | 是 |
# BodyTemplate3
用于展示短文本,如闹钟时间
{
"directive": {
"header": {
"namespace": "TemplateRuntime",
"name": "RenderTemplate",
"messageId": "e52e7a4c...",
"dialogRequestId": "49687be..."
},
"payload": {
"token": "S0wiXQZ1rVBkov...",
"type": "BodyTemplate3",
"backgroundImage": {{IMAGE_STRUCTURE}},
"backButton": "VISIBLE"//HIDDEN,默认为VISIBLE,
"title": {
"mainTitle": "String",
"subTitle": "String"
},
"skillIcon": {{IMAGE_STRUCTURE}},
"textField": "String",
"subtextField": "String"
}
}
}
Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
dialogRequestId | 客户端必须为recognize 请求创建的唯一ID,此参数用于关联响应特定Recognize 事件发送的指令 | String |
Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
token | iFLYOS提供的token | String | 是 |
type | 模板消息的类型,这里是BodyTemplate3 | String | 是 |
backgroundImage | 背景图片 | image structure | 否 |
backButton | 是否显示返回键,取值:VISIBLE,HIDDEN。默认为HIDDEN | 否 | |
title | 消息的键值对,包含主标题和副标题 | Object | 是 |
title.mainTitle | 主标题 | String | 是 |
title.subTitle | 副标题 | String | 否 |
skillIcon | 技能图标,可选 | image structure | 是 |
textField | 文本内容 | String | 是 |
subtextField | 次级文本内容 | String | 是 |
# ListTemplate1
用于展示一个列表,包含左右的文本。
# 消息样式
{
"directive": {
"header": {
"namespace": "TemplateRuntime",
"name": "RenderTemplate",
"messageId": "e52e7a4c...",
"dialogRequestId": "49687be..."
},
"payload": {
"token": "S0wiXQZ1rVBkov...",
"type": "ListTemplate1",
"backgroundImage":{{IMAGE_STRUCTURE}},
"backButton": "VISIBLE"//HIDDEN,默认为VISIBLE,
"title": {
"mainTitle": "String",
"subTitle": "String"
},
"skillIcon": {{IMAGE_STRUCTURE}},
"listItems": [
{
"leftTextField": "String",
"rightTextField": "String"
},
{
"leftTextField": "String",
"rightTextField": "String"
},
{
...
}
]
}
}
}
Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
dialogRequestId | 客户端必须为recognize 请求创建的唯一ID,此参数用于关联响应特定Recognize 事件发送的指令 | String |
Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
token | iFLYOS提供的token | String | 是 |
type | 模板消息的类型,这里是ListTemplate1 | String | 是 |
backgroundImage | 背景图片 | image structure | 否 |
backButton | 是否显示返回键,取值:VISIBLE,HIDDEN。默认为HIDDEN | 否 | |
title | 消息的键值对,包含主标题和副标题 | Object | 是 |
title.mainTitle | 主标题 | String | 是 |
title.subTitle | 副标题 | String | 是 |
skillIcon | 技能图标,可选 | image structure | 否 |
listItems | 列表内容 | List | 是 |
listItems. leftTextField | 左边的文本内容 | String | 否 |
listItems. rightTextField | 右边的文本内容 | String | 否 |
# OptionTemplate2
用于展示一个选项列表,仅支持点击选择和语音序号选择,选项图标为竖向显示,选项被选择后会上报事件。
{
"directive": {
"header": {
"namespace": "TemplateRuntime",
"name": "RenderTemplate",
"messageId": "e52e7a4c...",
"dialogRequestId": "49687be..."
},
"payload": {
"token": "S0wiXQZ1rVBkov...",
"type": "OptionTemplate2",
"backgroundImage": {{IMAGE_STRUCTURE}},
"backButton": "VISIBLE"//HIDDEN,默认为VISIBLE,
"title": {
"mainTitle": "String",
"subTitle": "String"
},
"skillIcon": {{IMAGE_STRUCTURE}},
"optionItems": [
{
"token": "string",
"primaryTextField": "String",
"secondaryTextField": "String",
"tertiaryTextField": "String",
"image":{{IMAGE_STRUCTURE}}//新增
},
{
...
}
]
}
}
}
Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
dialogRequestId | 客户端必须为recognize 请求创建的唯一ID,此参数用于关联响应特定Recognize 事件发送的指令 | String |
Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
token | iFLYOS提供的token | String | 是 |
type | 模板消息的类型,这里是OptionTemplate2 | String | 是 |
backgroundImage | 背景图片 | image structure | 否 |
backButton | 是否显示返回键,取值:VISIBLE,HIDDEN。默认为HIDDEN | 否 | |
title | 消息的键值对,包含主标题和副标题 | Object | 是 |
title.mainTitle | 主标题 | String | 是 |
title.subTitle | 副标题 | String | 是 |
skillIcon | 技能图标,可选 | image structure | 否 |
OptionItems | 选项内容 | List | 是 |
OptionItems token | 选项唯一标识,item被选择时设备应该上报被选择的item的token | String | 是 |
OptionItems image | 选项图片 | image structure | 是 |
OptionItems primaryTextField | 一级文本 | String | 是 |
OptionItems secondaryTextField | 二级文本 | String | 是 |
OptionItems tertiaryTextField | 三级文本 | String | 是 |
# OptionTemplate3
用于展示一个选项列表,仅支持点击选择和语音序号选择,选项图标为横向显示,选项被选择后会上报事件。
{
"directive": {
"header": {
"namespace": "TemplateRuntime",
"name": "RenderTemplate",
"messageId": "e52e7a4c...",
"dialogRequestId": "49687be..."
},
"payload": {
"token": "S0wiXQZ1rVBkov...",
"type": "OptionTemplate3",
"backgroundImage": {{IMAGE_STRUCTURE}},
"backButton": "VISIBLE"//HIDDEN,默认为VISIBLE,
"title": {
"mainTitle": "String",
"subTitle": "String"
},
"skillIcon": {{IMAGE_STRUCTURE}},
"optionItems": [
{
"token": "string",
"primaryTextField": "String",
"secondaryTextField": "String",
"tertiaryTextField": "String",
"image":{{IMAGE_STRUCTURE}}//新增
},
{
...
}
]
}
}
}
Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
dialogRequestId | 客户端必须为recognize 请求创建的唯一ID,此参数用于关联响应特定Recognize 事件发送的指令 | String |
Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
token | iFLYOS提供的token | String | 是 |
type | 模板消息的类型,这里是OptionTemplate3 | String | 是 |
backgroundImage | 背景图片 | image structure | 否 |
backButton | 是否显示返回键,取值:VISIBLE,HIDDEN。默认为HIDDEN | 否 | |
title | 消息的键值对,包含主标题和副标题 | Object | 是 |
title.mainTitle | 主标题 | String | 是 |
title.subTitle | 副标题 | String | 是 |
skillIcon | 技能图标,可选 | image structure | 否 |
OptionItems | 选项内容 | List | 是 |
OptionItems.*. token | 选项唯一标识,item被选择时设备应该上报被选择的item的token | String | 是 |
OptionItems.*. image | 选项图片 | image structure | 是 |
OptionItems.*. primaryTextField | 一级文本 | String | 是 |
OptionItems.*. secondaryTextField | 二级文本 | String | 是 |
OptionItems.*. tertiaryTextField | 三级文本 | String | 是 |
# WeatherTemplate
用来展示天气预报
# 消息样式
{
"directive": {
"header": {
"namespace": "TemplateRuntime",
"name": "RenderTemplate",
"messageId": "e52e7a4c...",
"dialogRequestId": "49687be..."
},
"payload": {
"token": "S0wiXQZ1rVBkov...",
"type": "WeatherTemplate",
"backgroundImage": {{IMAGE_STRUCTURE}},
"title": {
"mainTitle": "String",
"subTitle": "String"
},
"skillIcon": {{IMAGE_STRUCTURE}},
"currentWeather": "String",
"description": "String",
"currentWeatherIcon": {{IMAGE_STRUCTURE}},
"highTemperature": {
"value": "String",
"arrow": {{IMAGE_STRUCTURE}}
},
"lowTemperature": {
"value": "String",
"arrow": {{IMAGE_STRUCTURE}}
},
"weatherForecast": [
{
"image": {{IMAGE_STRUCTURE}},
"day": "String",
"date": "String",
"highTemperature": "String",
"lowTemperature": "String"
},
{
"image": {{IMAGE_STRUCTURE}},
"day": "String",
"date": "String",
"highTemperature": "String",
"lowTemperature": "String"
},
{
...
}
]
}
}
}
Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
dialogRequestId | 客户端必须为recognize 请求创建的唯一ID,此参数用于关联响应特定Recognize 事件发送的指令 | String |
Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
token | iFLYOS提供的token | String | 是 |
type | 模板消息的类型,这里是WeatherTemplate1 | String | 是 |
backgroundImage | 背景图片 | image structure | 否 |
title | 消息的键值对,包含主标题和副标题 | Object | 是 |
title.mainTitle | 主标题,建议填写日期 | String | 是 |
title.subTitle | 副标题,建议填写地区 | String | 是 |
skillIcon | 技能图标,可选 | image structure | 否 |
currentWeather | 当前天气 | String | 是 |
description | 当前天气描述 | String | 否 |
currentWeatherIcon | 当前天气的图片 | image structure | 是 |
highTemperature | 最高温天气的值和图片 | Object | 是 |
highTemperature.value | 查询的天气的最高温 | String | 是 |
highTemperature.arrow | 高温天气的图片 | image structure | 否 |
lowTemperature | 最低温天气的值和图片 | Object | 是 |
lowTemperature.value | 查询的天气的最低温 | String | 是 |
lowTemperature.arrow | 低温天气的图片 | image structure | 否 |
weatherForecast | 要求查询的几天的天气预报 | List | 否 |
weatherForecast.image | 天气情况图片 | image structure | 是 |
weatherForecast.day | 星期 | String | 否 |
weatherForecast.date | 日期 | String | 否 |
weatherForecast. highTemperature | 高温 | String | 是 |
weatherForecast. lowTemperature | 低温 | String | 是 |
# ElementSelected 事件
在OptionTemplate2
和OptionTemplate3
中,用户点击选择选项时,设备需要上报该事件。
{
"event": {
"header": {
"namespace": "TemplateRuntime",
"name": "ElementSelected",
"messageId": "e52e7a4c...",
},
"payload": {
"token": "S0wiXQZ1rVBkov...",
"selectedItemToken": "string"
}
}
}
Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
token | 展示的模板的token。 | String | 是 |
selectedItemToken | 被选择的选项的token | String | 是 |
# RenderPlayerInfo 指令
用于展示正在播放的音频的信息。
# 消息样式
{
"directive": {
"header": {
"namespace": "TemplateRuntime",
"name": "RenderPlayerInfo",
"messageId": "e52e7a4c...",
"dialogRequestId": "49687be..."
},
"payload": {
"audioItemId": "2698f663288aedebab0f4773727448c4",
"content": {
"title": "String",
"titleSubtext1": "String",
"titleSubtext2": "String",
"header": "String",
"headerSubtext1": "String",
"mediaLengthInMilliseconds": 60000,
"lyric": {
"url": "https://url-of-the-lyric.iflyos.cn/xiaoxingyun.lrc",
"format": "lrc"
}
"art": {{IMAGE_STRUCTURE}},
"provider": {
"name": "String",
"logo": {{IMAGE_STRUCTURE}}
}
},
"controls": [
{
"type": "BUTTON",
"name": "String",
"enabled": false,
"selected": false
},
{
"type": "BUTTON",
"name": "String",
"enabled": false,
"selected": false
},
{
...
}
]
}
}
}
# Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
dialogRequestId | 客户端必须为recognize 请求创建的唯一ID,此参数用于关联响应特定Recognize 事件发送的指令 | String |
# Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
audioItemId | 音频文件的唯一Id,和Play指令中下发的Id相同 | String | 是 |
content | 标题内容 | Object | 是 |
controls | 显示在屏幕上的控制类型 | List | 是 |
content 参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
title | 主标题 | String | 是 |
titleSubtext1 | 一级标题 | String | 否 |
titleSubtext2 | 二级标题 | String | 否 |
header | 顶部文本内容 | String | 否 |
headerSubtext1 | 顶部二级文本内容 | String | 否 |
mediaLengthInMilliseconds | 音频长度 | String | 否 |
lyric | 音频歌词信息 | Object | 否 |
lyric.url | 歌词文件链接 | String | 是 |
lyric.format | 歌词文件格式,可取值:lrc,txt | String | 是 |
art | 图片 | image structure | 是 |
provider | 内容提供方的信息 | Object | 否 |
provider.name | 内容提供方名称 | String | 否 |
provider.logo | 内容提供方LOGO | image structure | 否 |
controls 参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
type | 控制类型。**取值:**BUTTON | String | 是 |
name | 控制名称。取值: PLAY_PAUSE, NEXT, PREVIOUS | String | 是 |
enabled | 是否可点,TRUE为可点 | Boolean | 是 |
selected | 是否被选中,TURE为选中。如收藏按钮 | Boolean | 是 |
# Image Structure
内容提供方可能只提供 source.url
,但客户端需要考虑到其他内容提供或不提供的展示形式。
sources是一个图片的来源列表,列表中可能有一个或多个来源。
# 消息样式
{
"contentDescription": "String",
"sources": [
{
"url": "https://www.iflyos.cn/example...",
"darkBackgroundUrl": "String",
"size": "String",
"widthPixels": 640,
"heightPixels": 380
},
{
...
},
{
...
}
]
}
# 参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
contentDescription | 图片描述,可选 | String | 否 |
sources | 一个图片的来源列表,,每个来源中包含url, size, widthPixels, heightPixels | List | 是 |
-[i].url | 图片的URL,必填 | String | 是 |
-[i].darkBackgroundUrl | 夜间模式的图片,可选 | String | 否 |
-[i].size | 图片尺寸,可选,出现这个参数时,在模板中渲染不同尺寸的容器。取值: X-SMALL, SMALL, MEDIUM, LARGE, X-LARGE | String | 和宽高二选一 |
-[i].widthPixels | 图片宽度,像素为单位,可选 | Long | 和尺寸二选一 |
-[i].heightPixels | 图片高度,像素为单位,可选 | Long | 和尺寸二选一 |