语音助手集成(可选)
请确保您已将 RainMaker 部署至 AWS 账户。 在开始以下配置前,请首先在 RainMaker 手机应用(或您自定义的应用)中创建新用户,并将某一节点关联到此用户。
语音助手集成
- 借助 Smart Home Skill,通过 Alexa 控制 RainMaker 节点。
- 借助 Smart Home Actions,通过谷歌语音助手 (Google Voice Assistant, GVA) 控制 RainMaker 节点。
创建 Skill 或 Action
创建 Alexa Smart Home Skill
- 创建 Amazon Alexa 开发者账号,如下图所示:

- 前往 Alexa 开发者控制台,如下图所示:

- 创建 Skill,如下图所示。在这一步中,选择
Smart Home选项。

- 记下您的 Skill ID,这一 ID 将用于为 Alexa Skill Lambda 创建智能家居触发器。

- 点击左侧导航栏中的
ACCOUNT LINKING并记下底部Alexa Redirect URLs字段的内容,这些内容将被用于组成 Alexa 的回调 URL。

创建谷歌 Smart Home Actions
在 谷歌开发者 网站上登录谷歌账号。
在 Google Actions 控制台 创建新项目。
如果您未曾创建过 Google Actions 项目,您将看到以下界面:

- 如果您已经创建过 Google Actions 项目,您将看到以下界面:

- 选择
Smart Home选项卡并点击Start Building。

- 打开
Project Settings,记下您的Project ID。

- 您的 Google Actions 项目的回调 URL 将为
https://oauth-redirect.googleusercontent.com/r/<project-id>。

为 Alexa 和谷歌语音助手创建 AWS Cognito 应用客户端
部署 SAR 应用的前提条件
- 参照 配置自定义域名 中的步骤创建 Cognito 域。

- 记下身份提供商的名称。
- 要获取 RainMaker 部署中配置的身份提供商列表,请进入 RainMaker 管理面板,点击左侧导航栏中的
Deployment Settings。 - 点击
Identity Providers。 - 记下
Identity Provider一栏中的身份提供商名称。 - 如果您配置的身份提供商包括谷歌、GitHub 和苹果,那么在部署 ESP-RainMaker-3p-CognitoClients SAR 应用时,
SkillIdentityProviders的值将包括 Google、GitHub、SignInWithApple 和 COGNITO。
注意: 若未配置身份提供商,那么 SkillIdentityProviders 的默认值将为 COGNITO。

参考创建 Alexa Smart Home Skill 小节中的步骤,记下
AlexaCognitoCallbackURL和SkillId。参考创建谷歌 Smart Home Actions 小节中的步骤,记下
GVACallbackURLs。
部署 ESP-RainMaker-3p-Cognito 客户端 SAR 应用
- 前往 AWS 控制台,搜索 "Serverless Application Repository" 或 "SAR"。
- 打开
Private applications并勾选复选框Show apps that create custom IAM roles or resource policies。

- 搜索并点击打开
ESP-RainMaker-3p-CognitoClients。

- 在以下字段中输入相应值,完成后点击
Deploy。
AlexaCognitoCallBackUrls- 具体参数值请参阅 创建 Alexa Smart Home Skill 小节。GVACognitoCallBackUrls- 具体参数值请参阅 创建谷歌 Smart Home Actions 小节。SkillIdentityProvidersNewUserPool- 输入您准备配置的身份提供商,具体名称可参阅 为 Alexa 和谷歌语音助手创建 AWS Cognito 应用客户端 小节。SkillIdentityProviders- 保持默认值即可。

其他参数值可保持不变,然后点击 Deploy。
- 部署成功后,您将看到如下页面:

- 部署完成后,系统将为 Alexa Skill 和 Google Actions 创建 AWS Cognito 应用客户端。
配置语音助手集成的前提条件
获取 RainMaker API 终端节点 URL
Alexa 谷歌语音助手处理程序将调用 RainMaker API 终端节点 URL 以获取设备信息,因此,RainMaker API URL 需作为一个给定值输入至 ESP-RainMaker-3P-Integrations 应用中。
进入 AWS 控制台,搜索并点击打开
CloudFormation。请确保所选区域为 RainMaker 部署区域。

- 启用
View nested选项。

- 搜索 "ESP-RainMaker-Base-API",在
Outputs窗格中找到RainmakerAPIUrl。

- RainMaker 后端 API 终端节点 URL 为
<RainmakerAPIUrl>/v1/。 请记下该值,后续填写APIEndPointURL字段时将会用到。
启用谷歌异步消息传输并获取谷歌消息传输客户端的详细信息
谷歌语音助手处理程序将主动向谷歌云的 Home Graph 服务报告设备状态,因此您需要创建一个谷歌服务账号 (Google Service Account) 并将该账号添加至处理程序中。
如果您需要部署 Google Actions,请参考以下步骤以获取账号凭证:
- 在您的账户中启用 Home Graph API。以下为详细步骤:
- 前往 谷歌 Home Graph 主页。
- 在顶部的下拉菜单中,选择您在前面步骤中创建的智能家居项目。
- 点击
Enable。
- 创建一个服务账号密钥文件。
- 前往 谷歌服务账号主页。
- 选择您在上一步中创建的智能家居项目。
- 点击
Create Service Account选项。 - 在
Service Account Name字段下,输入合适名称。 - 在
Description中,输入 "Service Account for report state token creation"。 - 点击
Create and Continue。 - 在下一步中,选择角色类型 (role type) 为
Service Accounts,并选择角色 (role) 为Service Account token creator。 - 点击
Continue,然后点击Done。 - 服务账号已经创建,现在需要添加使用服务账号的密钥。
- 点击已创建的服务账号电子邮件。
- 打开
Keys选项,点击Add Key。 - 选择
Create Key选项。 - 选择密钥类型为 JSON。
- 系统将为您下载服务账号文件,其中包含所需的账号凭证信息。
- 打开下载的服务账号文件。
- 记下服务账号文件中
GVAClientID(client_id)、GVAClientEmail(client_email)、GVAPrivateKey(private_key)、GVAPrivateKeyID(private_key_id) 和GVAProjectID(project_id) 的值。
启用 Alexa 异步消息传输并获取 Alexa 消息传输客户端的详细信息
为了获取 Works with Alexa 认证,应当确保系统主动向 Alexa 报告设备状态,因此需启用异步消息。
部署 Alexa Skill 集成,需要启用 Alexa 异步消息传输,并复制 AlexaClientId 和 AlexaClientSecret 字段。详细步骤如下:
登录 Alexa 开发者控制台。
选择您在前面步骤中创建的 Smart Home Skill。
在左侧导航栏中打开
Permissions选项卡,启用Send Alexa Events选项。

启用
Send Alexa Events选项后,您将会看到Alexa Skill Messaging模块。记下
Alexa Client Id和Alexa Client Secret的值。

部署 Alexa Smart Home Skill 和 Google Smart Home Actions
- 此步骤将部署 lambda 函数,该函数用于处理 Alexa 和谷歌语音助手的指令。
部署 ESP-RainMaker-3P-Integrations 堆栈
- 前往 AWS 控制台,搜索 "Serverless Application Repository" 或 "SAR"。请确保选择的 AWS 区域为 us-east-1。
- 打开
Private applications并勾选复选框Show apps that create custom IAM roles or resource policies。

- 搜索并点击打开
ESP-RainMaker-3P-Integrations。

- 您将看到 ESP-RainMaker-3P-Integrations 堆栈的部署页面,如下图所示:

输入在 获取 RainMaker API 终端节点 URL 小节中记下的 RainMaker 后端 API 终端节点 URL (
APIEndPointURL)。Alexa 和谷歌语音助手处理程序将使用此 URL 与 RainMaker 后端进行通信。为您的产品输入
Manufacturer Name、Product Description和Scene Description字段。Manufacturer Name字段的内容将显示给所有通过您的应用连接的场景和产品。填写Product Description和Scene Description字段时,应向用户描述产品的所有设备和场景。输入在前面小节中记下的客户端 ID 和 Secret,用于为用户获取 Alexa 刷新令牌。向 Alexa 报告状态时需要使用该刷新令牌。
输入 RainMaker 的部署地区 (
RainMakerRegion)。输入在前面小节中记下的 Alexa Skill ID。
按照在上一步中从服务账号密钥文件中所复制的内容,输入 GVA 报告状态证书字段(
GVAClientEmail、GVAClientId、GVAPrivateKey、GVAPrivateKeyID、GVAProjectID)。勾选复选框并点击
Deploy。

- 部署将持续 5-10 分钟。
在 Alexa 中需要配置 多区域部署 以支持所有地区的调用。
由于在 Alexa 中需要配置多区域部署,因此,您需要将 ESP-RainMaker-3P-Integrations 堆栈部署至另外两个区域。在其他地区部署 ESP-RainMaker-3P-Integrations SAR 时,只需要 Alexa 相关参数,参数值与 us-east-1 地区使用的相同。您需要在以下两个地区部署 ESP-RainMaker-3P-Integrations SAR 仓库:
US West 2 (Oregon)
EU West 1 (Ireland)
在 Google Actions 中不需要配置多区域部署,只需将其部署在 us-east-1 区域。将 ESP-RainMaker-3P-Integrations 部署至 us-east-1 区域后,Google Actions 也将正确部署在 AWS 中的 us-east-1 区域。
如果您只需部署 Alexa 集成,您可以为
GVAClientEmail、GVAClientID、GVAPrivateKey、GVAPrivateKeyID和GVAProjectID添加一个占位符值,例如 "NA" 或 "To be decided"。此后,若您需要再集成谷歌语音助手,您可以对这些值进行修改。
配置 Alexa Skill 和 Google Actions 控制台的前提条件
获取已部署 Google Actions 的 API 终端节点
- 前往 AWS 控制台,打开
CloudFormation并启用View nested选项。 - 搜索 "serverless repo - espgva"。
- 点击打开堆栈并打开
Outputs窗格。 - 记下
GoogleSmartHome键对应的值,在 Google Actions 控制台中填写Fulfillment URL时需要用到该值。

获取已部署 Alexa Skill 的 Lambda ARNs
- 前往 AWS 控制台,打开
CloudFormation并启用View nested选项。 - 搜索 "serverless repo - espavs"。
- 点击打开堆栈并打开
Outputs窗格。 - 记下
AlexaSmartHome键对应的值。 - 在 US East 1 (N. California)、US West 2 (Oregon) 和 EU West 1 (Ireland) 区域分别执行上述步骤。
- 这些值将成为 Smart Home 服务的终端节点,并被添加至 Alexa 开发者控制台中创建的 Alexa Skill。

获取域名 URL
- 前往 AWS 控制台,打开 Cognito 服务页面,点击
rainmaker-user-pool。 - 在
App Integration下,点击Domain。 - 复制域名的完整 URL。
- 记下该值,后续步骤中需要使用。
为 Alexa Skill 和 Google Actions 获取客户端 ID 和 Secret
- 在 AWS 搜索栏中搜索并打开
Cognito。

- 在
Your User Pools窗格下,点击rainmaker-user-email-mobile-pool。

- 在
rainmaker-user-pool中,点击左边导航栏中的App clients。


- 记下
esp-rainmaker-alexa-skill和esp-rainmaker-google-action应用客户端的App Client ID和App Client Secret(点击Show Details后可见)。
开发者控制配置
完成上述所有步骤并记下所有需要的值后,您就可以在 Alexa 和谷歌语音助手开发者控制台中继续进行配置。
后续的配置步骤,请参考:
