# 模板渲染_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

用于展示纯文本数据。

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

用于展示带一张图的文本消息。

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

用于展示短文本,如闹钟时间

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

用于展示一个列表,包含左右的文本。

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

用来展示天气预报

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 指令

用于展示正在播放的音频的信息。

PlayerInfo

# 消息样式

{
  "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 和尺寸二选一