跳到主要内容

配置语音助手

语音助手集成

任何智能家居物联网系统都离不开语音助手集成。ESP RainMaker 支持与 Amazon Alexa 和谷歌语音助手 (GVA) 集成,用户可通过语音命令控制物联网设备。

本节介绍如何在 iOS 和 安卓的 ESP RainMaker Home App 上配置原生代码,以实现与语音助手的集成。

安卓代码级配置

Alexa 账户关联

该账户关联流程允许用户从应用发起,将其 Alexa 用户账户与其他服务中的账户进行关联。以下章节介绍 Alexa 账户关联的应用端配置。

注意

关于账户关联与云端配置的更多信息,请参见此处

创建安卓应用链接

在 Alexa 账户关联流程中,需要允许 Alexa 应用或浏览器将用户重定向到你的应用。要实现这一重定向,必须为安卓应用启用应用关联。

请参阅安卓文档中的创建深层链接验证应用链接两章,启用应用链接。

参照以下步骤,在使用 ESP RainMaker 部署的安卓应用中创建与配置应用链接。

  1. 参照这些步骤为 ESP RainMaker 部署创建应用链接,并获取通过这些步骤生成的 重定向 URL(将于第 12 步获得此重定向 URL)。

  2. 按以下步骤创建 assetlinks.json 文件。

    1. 下载此 assetlinks.json 文件。
    2. your_application_id 替换为你的应用 ID。
    3. 在 JSON 数组中,将 add_your_sha256_fingerprint_here 替换为 keystore 文件的 sha256_cert_fingerprint。
    注意
    • 如果没有用于应用签名的 keystore,请按这些步骤创建。
    • 运行 ./gradlew signingReport 命令以获取 SHA-256 证书指纹。
    • 只有当安装的应用使用的签名证书,其 SHA-256 指纹与配置中的指纹一致时,应用链接才能生效。
  3. 参照这些步骤assetlinks.json 文件上传到 .well-known 文件夹。

  4. 修改 AndroidManifest.xml 文件中 AlexaAppLinkingActivity data 标签内的 host 值。从 重定向 URL 中去掉 "https://" 即可获取 host 值。在 AndroidManifest.xml 文件中将 your_host_value 替换为该值。

以下为安卓应用链接设置示例。

  1. 假设已完成第 1 步,并获得如下重定向 URL。

    https://my-app-link.s3.amazonaws.com/
  2. 下载 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"
    ]
    }
    }]
  3. assetlinks.json 文件上传至 .well-known 文件夹。

  4. 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 GeneratorApp 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。

iOS 代码级配置

Alexa 账户关联

该账户关联流程可从应用程序端开始,将用户的 Alexa 账户与其他服务中的账户进行关联。以下章节介绍为实现 Alexa 账户关联所需的应用程序端配置。

注意

注意 关于账户关联与云端配置的更多信息,请参见此处

配置账户关联

Configuration.plist 文件的 AWS Configuration 部分,请确保添加以下值:

类型说明
Authentication URL字符串OAuth URL。参阅此处可获取该值。

Configuration.plist 文件的 ESP Alexa Configuration 部分,请添加以下值:

类型说明
Alexa Client Id字符串Alexa 客户端 ID。可以参照以下步骤找到:
- 进入 Alexa 开发者控制台
- 选择你的技能
- 前往 Build 选项卡
- 打开 Permissions 部分
- 在 Permissions 下可看到 Alexa Client Id
Alexa Client Secret字符串Alexa 客户端密钥。可以参照以下步骤找到:
- 进入 Alexa 开发者控制台
- 选择你的技能
- 前往 Build 选项卡
- 打开 Permissions 部分
- 在 Permissions 下可看到 Alexa Client Secret
Alexa RM Client Id字符串参见获取 Alexa 与 GVA client ID 的步骤,复制 esp-rainmaker-alexa-skill 的客户端 ID。
Skill Id字符串待关联技能的技能 ID。可以参照以下步骤找到:
- 进入 Alexa 开发者控制台
- 选择你的技能
- 前往 Build 选项卡
- 打开 Smart Home 部分
- 在 Smart Home 部分可以看到 Skill Id
Skill Stage字符串可能的取值:
live:用于上线的技能
development:用于开发中的技能。
Redirect URL字符串调用 Alexa 授权码与 RainMaker(或自定义用户认证服务)授权码的时会提供重定向 URL。该 URL 同时用作 iOS 应用的通用链接。关于如何配置应用链接,请查看此文档
Alexa Access Token URL字符串API 端点,用于通过 Alexa 授权码获取 Alexa 访问令牌。
参阅此文档,了解如何获取 Alexa 访问令牌 URL。

On this page