配置语音助手
语音助手集成
任何智能家居物联网系统都离不开语音助手集成。ESP RainMaker 支持与 Amazon Alexa 和谷歌语音助手 (GVA) 集成,用户可通过语音命令控制物联网设备。
本节介绍如何在 iOS 和 安卓的 ESP RainMaker Home App 上配置原生代码,以实现与语音助手的集成。
安卓代码级配置
Alexa 账户关联
该账户关联流程允许用户从应用发起,将其 Alexa 用户账户与其他服务中的账户进行关联。以下章节介绍 Alexa 账户关联的应用端配置。
关于账户关联与云端配置的更多信息,请参见此处。
创建安卓应用链接
在 Alexa 账户关联流程中,需要允许 Alexa 应用或浏览器将用户重定向到你的应用。要实现这一重定向,必须为安卓应用启用应用关联。
请参阅安卓文档中的创建深层链接与验证应用链接两章,启用应用链接。
参照以下步骤,在使用 ESP RainMaker 部署的安卓应用中创建与配置应用链接。
-
参照这些步骤为 ESP RainMaker 部署创建应用链接,并获取通过这些步骤生成的 重定向 URL(将于第 12 步获得此重定向 URL)。
-
按以下步骤创建
assetlinks.json文件。- 下载此 assetlinks.json 文件。
- 将
your_application_id替换为你的应用 ID。 - 在 JSON 数组中,将
add_your_sha256_fingerprint_here替换为 keystore 文件的 sha256_cert_fingerprint。
注意- 如果没有用于应用签名的 keystore,请按这些步骤创建。
- 运行
./gradlew signingReport命令以获取 SHA-256 证书指纹。 - 只有当安装的应用使用的签名证书,其 SHA-256 指纹与配置中的指纹一致时,应用链接才能生效。
-
参照这些步骤 将
assetlinks.json文件上传到.well-known文件夹。 -
修改
AndroidManifest.xml文件中AlexaAppLinkingActivitydata 标签内的host值。从 重定向 URL 中去掉 "https://" 即可获取host值。在AndroidManifest.xml文件中将your_host_value替换为该值。
以下为安卓应用链接设置示例。
-
假设已完成第 1 步,并获得如下重定向 URL。
https://my-app-link.s3.amazonaws.com/ -
下载
assetlinks.json文件。将your_application_id替换为 "com.example.my_app",这是安卓应用的应用 ID。之后运行./gradlew signingReport命令,获取 SHA-256 指纹并将其添加到 JSON 文件中。完成上述更改后,
assetlinks.json文件如下所示。[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.my_app",
"sha256_cert_fingerprints":[
"E6:B5:DD:AF:62:90:93:3E:63:52:6B:C6:15:CC:DC:A3:1E:DE:AF:20:D2:07:3F:A4:89:CB:8C:78:D2:AE:CC:0D"
]
}
}] -
将
assetlinks.json文件上传至.well-known文件夹。 -
在
AndroidManifest.xml中,将来自 重定向 URL 的host值替换为your_host_value,如下所示。<activity
android:name="com.espressif.ui.activities.AlexaAppLinkingActivity"
android:label="@string/title_activity_amazon_alexa"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="my-app-link.s3.amazonaws.com"
android:scheme="https" />
</intent-filter>
</activity>
你也可以在 Android Studio 中使用 Digital Asset Links Generator 或 App Links Assistant 来创建安卓应用链接并测试链接。
配置账户关联
Alexa 账户关联的所有配置参数都可以在 local.properties 文件中设置。
在 Android Studio 中打开项目,local.properties 文件自动生成。请填写以下配置字段。
| 配置键 | 类型 | 说明 |
|---|---|---|
authUrl | 字符串 | OAuth URL。参阅此处可获取该值。 |
alexaClientId | 字符串 | Alexa 客户端 ID。可以参照以下步骤找到: - 进入 Alexa 开发者控制台 - 选择你的技能 - 前往 Build 选项卡- 打开 Permissions 部分- 在 Permissions 下可看到 Alexa Client ID。 |
alexaClientSecret | 字符串 | Alexa 客户端密钥。可以参照以下步骤找到: - 进入 Alexa 开发者控制台 - 选择你的技能 - 前往 Build 选项卡- 打开 Permissions 部分- 在 Permissions 下可看到 Alexa Client Secret。 |
alexaRedirectUrl | 字符串 | 该重定向 URL 用于获取 Alexa 授权码与 RainMaker(或自定义用户认证服务)授权码。该 URL 同时用作安卓应用的应用链接。关于如何配置应用链接,请查看此文档。 |
alexaRMClientId | 字符串 | 参见获取 Alexa 与 GVA 客户端 ID 的步骤,复制 esp-rainmaker-alexa-skill 的客户端 ID。 |
skillId | 字符串 | 待关联技能的技能 ID。可以参照以下步骤找到: - 进入 Alexa 开发者控制台 - 选择你的技能 - 前往 Build 选项卡- 打开 Smart Home 部分- 在 Smart Home 部分可以看到技能 ID。 |
skillStage | 字符串 | 可选值:live:用于上线的技能development:用于开发中的技能。 |
alexaAccessTokenUrl | 字符串 | API 端点,用于通过 Alexa 授权码获取 Alexa 访问令牌。 参阅此文档,了解如何获取 Alexa 访问令牌 URL。 |