Form事件

当用户不使用语音交互,而是从设备端的屏幕控制音频或视频的播放时,DuerOS会把用户操作的控件及含义通过Form事件上报给技能。本文首先介绍用户常用的控件类型,接下来介绍如何将这些控件上报给技能。

控件

设备端包含BUTTON和RADIO_BUTTON两种控件类型。

BUTTON控件

BUTTON控件指普通按钮控件,可以通过点击按钮执行命令。BUTTON控件可以渲染为选中状态和非选中两种状态。如音乐播放过程中的暂停、上一首、下一首、继续播放等都使用BUTTON控件。

BUTTON控件消息样例

{
    "type": "BUTTON",
    "name": "{{STRING}}",
    "enabled": {{BOOLEAN}},
    "selected": {{BOOLEAN}}
}

参数说明

  • type
    • 控件类型,这里取固定值BUTTON。
  • name
    • 控件名字。
  • enabled
    • 按钮是否可点击,布尔类型,true表示按钮可以点击,false表示按钮不可点击。
  • selected
    • 按钮是否要渲染为选中状态,布尔类型,true表示渲染为选中状态,false表示渲染为非选中状态。

RADIO_BUTTON控件

RADIO_BUTTON控件指单选按钮控件,支持通过点击来选择需要的选项。多个选项之间是互斥的,即一组选项中只能选择一个。例如音乐播放器的“循环模式切换”为单选按钮,用户可以从“单曲循环”、“随机播放”、“列表循环”三种模式中选择一种。

RADIO_BUTTON消息样例

{
    "type": "RADIO_BUTTON",
    "name": "{{STRING}}",
    "selectedValue": "{{STRING}}"
}

参数说明

  • type
    • 控件类型,取固定值RADIO_BUTTON。
  • name
    • 控件名称。
  • selectedValue
    • 选中的选项值。

控件使用列表

介绍DuerOS支持的常用控件列表。音乐播放器在播放音乐过程中会使用以下控件。

控件名 类型 描述
PLAY_PAUSE BUTTON 上报该控件事件时,表示暂停播放或继续播放音频。
PREVIOUS BUTTON 上报该控件事件时,表示用户播放上一首音频。
NEXT BUTTON 上报该控件事件时,表示用户播放下一首音频。
REPEAT RADIO_BUTTON 上报该控件事件时,表示用户切换循环模式,目前支持以下三种循环模式。
  • REPEAT_ONE:单曲循环
  • REPEAT_ALL:列表循环
  • SHUFFLE:随机播放
FAVORITE BUTTON 上报该控件事件时,表示用户收藏或取消收藏正在播放的音频。
SHOW_PLAYLIST BUTTON 上报该控件事件时,表示用户显示或隐藏播放列表。
SHOW_FAVORITE_LIST BUTTON 上报该控件事件时,表示显示或隐藏收藏列表。

视频播放器支持的控件列表

控件名 类型 功能
PLAY_PAUSE BUTTON 上报该控件事件时,表示用户暂停播放或继续播放视频。
PREVIOUS BUTTON 上报该控件事件时,表示用户播放上一条视频。
NEXT BUTTON 上报该控件事件时,表示用户播放下一条视频。
SHOW_PLAYLIST BUTTON 上报该控件事件时,表示用户显示或隐藏播放列表。
FAVORITE BUTTON 上报该控件事件时,表示用户收藏或取消收藏该视频。
DELETE BUTTON 上报该事件时,表示用户将会删除该视频资源(如果权限满足)
SAVE BUTTON 上报该事件时,表示用户将会保存该视频资源。(保存地点可能为云端,例如网盘)

Form上报控件事件

Form.ButtonClicked事件

当用户在屏幕点击BUTTON按钮时,DuerOS会向技能发送Form.ButtonClicked事件。

消息样例

{
    ...
    "request": {
        "type": "Form.ButtonClicked",
        "name": "{{STRING}}",
        "requestId": "{{STRING}}",
        "timestamp": "{{STRING}}",
        "token": "{{STRING}}"
    }
    ...
}

参数说明

  • type
    • 事件类型,取固定值Form.ButtonClicked。
  • name
    • 控件名称。
  • requestId
    • 标识本次请求的唯一ID。
  • timestamp
    • 请求时间戳,单位是秒。
  • token
    • 渲染此控件指令携带的token。

Form.RadioButtonClicked事件

当用户在屏幕点击RADIO_BUTTON按钮时,DuerOS会向技能发送Form.RadioButtonClicked事件。

消息样例

{
    ...
    "request": {
        "type": "Form.RadioButtonClicked",
        "name": "{{STRING}}",
        "requestId": "{{STRING}}",
        "timestamp": "{{STRING}}",
        "token": "{{STRING}}",
        "selectedValue": "{{STRING}}"
    }
    ...
}

参数说明

  • type
    • 事件类型,取固定值Form.RadioButtonClicked。
  • name
    • 控件名称。
  • requestId
    • 标识本次请求的唯一ID。
  • timestamp
    • 请求时间戳,单位是秒。
  • token
    • 渲染此控件指令携带的token。
  • selectedValue
    • 选中选项值。