# 唤醒词管理
在产品定义过程中,我们为终端用户提供自定义设备唤醒词的功能。通过这个功能,同样一款设备,在不同用户手里,可能会有不同的唤醒词。
# 触发方式
- 有屏设备触发:可以在设备上提供入口,让用户输入自定义唤醒词
 - 关联APP触发:可以在关联APP中提供入口,让用户输入自定义唤醒词
 - 语音触发:暂不支持
 
# 功能实现步骤
- 用户输入自定义唤醒词
 - 评估该词语是否适合作为唤醒词
 - 设置唤醒词
 
# 协议类型
| 消息类型 | 名称 | 必须实现 | 
|---|---|---|
| directive | set_wakeword | 否,设备需要支持终端自定义唤醒词才需实现 | 
| event | set_wakeword_result | 否,设备需要支持终端自定义唤醒词才需实现 | 
# context
请求示例
"unios_context": {
  ...
  "wakeword": {
    "version": "1.0"
  }
  ...
}
 1
2
3
4
5
6
7
2
3
4
5
6
7
| 参数 | 类型 | 说明 | 必填 | 
|---|---|---|---|
| version | String | 模块版本,现在是1.0 | 是 | 
# directive
设置唤醒词
当云端设置了唤醒词后,将会下发set_wakeword指令,设备端应该根据云端返回的值,更新本地的唤醒资源;更新成功/失败时,上报set_wakeword_result事件。
回复示例
{
    "unios_directives": [
        {
            "header": {
                "name": "wakeword.set_wakeword"
            },
            "payload": {
                "url": "https://wakeword.unios.cn/your_wakeword",
                "resource_id": "xxxxxx"
            }
        }
    ]
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
| 参数 | 类型 | 说明 | 必填 | 
|---|---|---|---|
| url | String | 唤醒词资源的下载地址 | 是 | 
| resource_id | String | 唤醒词资源的唯一id | 是 | 
# event
设置唤醒词结果
请求示例
{
  "unios_header": {...},
  "unios_context": {...},
  "unios_event": {
    "header": {
      "name": "wakeword.set_wakeword_result",
      "message_id": "xxxxxxxx"
    },
    "payload": {
      "result": "SUCCEED",
      "resource_id": "xxxx",
      "errorType": "DOWNLOAD_ERROR"
    }
  }
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 参数 | 类型 | 说明 | 必填 | 
|---|---|---|---|
| unios_header | Object | 构建的通用 unios_header | 是 | 
| unios_context | Object | 构建的通用 unios_context | 是 | 
| result | String | 设置唤醒词的结果,取值为SUCCEED或FAILED | 是 | 
| resource_id | String | 唤醒词资源的唯一id | 是 | 
| errorType | String | 设置失败的类型,只有在result取值为FAILED时才需出现。详见errorType取值说明 | 否 | 
errorType取值说明
| errorType | 说明 | 
|---|---|
| USER_DENY | 用户拒绝设置唤醒词 | 
| DOWNLOAD_ERROR | 下载唤醒资源失败 | 
| TIME_OUT | 在特定时间内用户未进行设置确认。建议超时时间设置为10分钟 | 
| UNKONWN | 无法明确知晓原因的失败 | 
说明
如果errorType为USER_DENY、DOWNLOAD_ERROR、TIME_OUT中的一种时,云端会再次下发set_wakeword指令,设备端应该根据云端返回的值,更新本地的唤醒资源;更新成功/失败时,上报set_wakeword_result事件。