-
DuerOS开放平台
-
技能开放平台
-
自定义技能
- 自定义技能简介
- 自定义技能创建
-
有屏技能
-
技能交互模型
-
自定义技能协议
- 处理DuerOS发送的请求
-
技能部署
-
技能开发样例
- 账户关联
-
技能测试
-
技能发布
-
技能付费
-
个性化服务
-
内容播报技能
-
小技能
-
平台能力扩展
-
SDK
-
预览版功能
- 全双工(Preview)
-
APP技能(Preview)
-
-
智能家居开放平台
- 品牌使用规范
-
开发者服务条款
技能可以根据用户的基本信息,为用户提供个性化的服务。在使用用户信息时,首先要获得用户的同意,然后去请求用户的信息,最后根据用户的信息为用户提供服务。开放平台支持技能申请使用用户的百度账号信息(包括用户的昵称、邮箱、电话、头像等基础信息)、用户的地理位置信息和用户的打印机服务。目前该功能在小度在家和小度音箱设备上使用。
本文将详细介绍技能如何申请、获取用户信息以及一些注意事项,主要分为以下几部分。
- 配置权限
- 请求用户授权
- 请求用户信息内容
- 用户信息使用须知
在开放平台上对技能使用的权限进行配置。如下图所示。
注意:如果技能没有在平台上进行权限配置,则无法申请用户授权。
技能请求用户授权,是为了获取用户的权限,只有用户授权成功,技能才能去申请用户的信息。请求用户授权的过程分为如下几步。
- 技能向DuerOS发送授权请求授权指令Permission.AskForPermissionsConsent。
-
DuerOS收到授权请求指令后,向用户发送权限确认信息,如图所示。用户同意授权会选择确认按钮,授权成功后DuerOS会向技能发送Permission.Granted事件,用户不同意授权时,会点击取消按钮,此时DuerOS会向技能发送Permission.Rejected事件。
说明:
- DuerOS在小度在家设备(有屏设备)上直接展示用户权限请求消息,在小度音箱(无屏设备)上会通过向手机APP发送消息的方式请求用户授权。
- 技能只需要在第一次使用用户信息时请求用户授权,后续使用过程不需要用户再次授权。
- 如果在授权过程中,DuerOS发出“您正在申请未声明的权限,请到技能开放平台服务配置中配置权限”的信息时,说明技能没有配置权限,请先完成配置权限。
- 如果用户拒绝授权,技能无法获取用户信息,也不能为用户提供相应的服务,此时技能可以提醒用户不能提供服务。
- 在某些特殊情况下(如网络异常等),即使用户同意授权,也可能会出现授权失败的情况,DuerOS会向技能发送Permission.GrantFailed事件。
- 目前已经支持的权限有用户百度账号权限、用户地理位置信息和打印机服务权限。
技能请求用户授权,当授权成功时,技能可以向DuerOS发送请求用户信息的消息(包括百度账号权限信息、用户地理位置信息、用户的打印机服务信息)来获取用户信息,DuerOS收到技能的请求后,进行相应的处理,并将处理结果返回给技能。
技能向DuerOS请求用户信息的消息中需要包含apiAccessToken和apiEndPoint信息,用于身份和权限的校验,技能可以从LaunchRequest请求的context结构中获取apiAccessToken和apiEndPoint两个信息。
{
"version": "2.0",
"context": {
"System": {
"apiEndPoint": "https://xiaodu.baidu.com",
"apiAccessToken": "sfqJoW..."
}
},
"request": {
"type": "LaunchRequest",
"requestId": "d407e869-55f7-4681-b49f-8a41bc196da0",
"dialogRequestId": "e5c713d0-f5ec-48c6-89bf-a023c38512d7",
"timestamp": "1499790258"
}
}
技能向DuerOS发送请求用户信息消息后,DuerOS根据消息处理情况,将结果返回给技能。在返回的消息中可能会遇到以下几种情况:
- 技能请求用户信息成功,根据用户信息为用户提供相应的服务。
- 技能请求用户信息成功,但是用户的信息不完整,技能不能提供服务,比如缺少电话号码,技能可以提醒用户到百度账号中完善这些信息。
- 如果返回消息中提示用户没有授权时,明确的告知用户不能提供相应的服务。
- 技能每次提供服务时,需要重新申请用户信息,保证服务中使用的是用户最新的数据。
为了保护用户数据,技能在使用用户数据信息必须满足以下条件。如果发现技能违背了下面的原则,DuerOS有权下线技能,并通知开发者对技能进行修改。
- 技能必须满足DuerOS隐私政策。
- 技能只有在提供服务时才能使用用户信息。使用用户信息时,必须告知用户使用范围,在用户同意并且不违背用户隐私和法律的情况下使用。
- 技能使用用户信息,包括用户的昵称、邮箱、电话、头像等,都必须通过向DuerOS发送请求消息来获取,不能将用户的信息本地存储。
- 技能每次提供服务时,必须使用API接口请求用户最新的信息。