屏幕展示

摘要

本接口定义屏幕展示相关的功能,如果设备有屏幕,应该实现本接口,接入屏幕展示功能,DuerOS在回复用户请求时除了语音播报之外还可以通过屏幕展示来提供更丰富的信息。

HtmlView指令

设备端收到该指令,应该打开一个webview并渲染附带的Html内容。

消息样例

"directive": {
    "header": {
        "namespace": "ai.dueros.device_interface.screen",
        "name": "HtmlView",
        "messageId": "{{STRING}}"
    },
    "payload": {
        "url": "{{STRING}}",
        "token": "{{STRING}}"
    }
}
  • url
    • 所需要渲染的Html内容url;如果url是"cid:{{Html Content CID}}"格式,则本http回复附件中附带所要渲染的Html内容
  • token
    • 本页面对应的唯一token

LinkClicked事件

用户通过遥控器、触屏等方式点击了页面中的链接时,应该上报本事件。

消息样例

"event": {
    "header": {
        "namespace": "ai.dueros.device_interface.screen",
        "name": "LinkClicked",
        "messageId": "{{STRING}}"
    },
    "payload": {
        "url": "{{STRING}}",
        "token": "{{STRING}}",
        "requestId": "{{STRING}}"
    }
}
  • url
    • 被点击的url
  • token
    • 当前展示页面的token
  • (optional)requestId
    • 设备端在上报LinkClicked事件时,由于错误重试或者完成特定功能的需要,希望将LinkClicked事件与服务端下发的指令关联起来。为了建立起这种关联,设备端在上报LinkClicked事件时,可以携带requestId字段,服务端在相应LinkClicked并返回指令时,可以根据指令的定义,在指令的payload中返回对应的requestId,从使设备端能够而建立起LinkClicked事件与相应指令的关联关系。

状态上报

当设备端收到以下几个namespace的指令后:

  • "ai.dueros.device_interface.extensions.screen_extended_card.*"
  • "ai.dueros.device_interface.screen_extended_card"
  • "ai.dueros.device_interface.screen"

当前屏幕渲染对应的界面,这时的语音请求和事件请求需要带上此状态,云端根据状态就知道当前设备端处于哪个界面,界面的内容是什么,从而可以更好地做进一步决策。

消息样例

"clientContext": [
    {
        "header": {
            "namespace": "ai.dueros.device_interface.screen",
            "name": "ViewState"
        },
        "payload": {
            "token": "{{STRING}}",
            "extension": {
                "audioPlayer": {
                    "viewState": "{{ENUM}}"
                }
            }
        }
    }
]

Payload参数说明

  • token
    • 当前展示页面的token
  • (optional) extension
    • 扩展字段
  • (optional) extension.audioPlayer
    • 播放器相关扩展信息
  • (optional) extension.audioPlayer.viewState
    • 播放器当前状态
    • 取值参考 viewState