将机器人连接到 Alexa

适用于:SDK v4

可以配置机器人,使其与使用支持自定义技能的 Alexa 设备的用户通信。 本文介绍如何使用 Alexa 开发人员控制台创建 Alexa 技能,将机器人连接到 Azure 中的 Alexa 技能,以及如何在 Alexa 中测试机器人。

先决条件

  • Azure 订阅。 如果你还没有该订阅,请在开始之前先创建试用版订阅
  • 发布到要连接到 Alexa 的 Azure 机器人。
  • Amazon 帐户。

重要

机器人必须使用 Bot Framework SDK 版本 4.8 或更高版本。 如果现有一个机器人,可能需要更新 SDK 版本。

创建 Alexa 技能

  1. 登录到 Alexa 开发人员控制台 并选择创建技能

  2. 在下一页上执行以下操作:

    1. 为您的新技能输入一个名称。
    2. 确保选择要添加到技能的模型设置为自定义
    3. 确保选择用于托管技能后端资源的方法设置为 预配自己的资源
    4. 选择创建技能

    选择模型和托管

  3. 在下一页上执行以下操作:

    1. 确保将选择模板设置为从头开始
    2. 选择选择

    选择模板

  4. 交互模型下的技能仪表板上,选择JSON 编辑器

  5. 在 JSON 编辑器中:

    1. 将现有内容替换为以下 JSON。

      {
          "interactionModel": {
              "languageModel": {
                  "invocationName": "<your-skill-invocation-name>",
                  "intents": [
                      {
                          "name": "GetUserIntent",
                          "slots": [
                              {
                                  "name": "phrase",
                                  "type": "phrase"
                              }
                          ],
                          "samples": [
                              "{phrase}"
                          ]
                      },
                      {
                          "name": "AMAZON.StopIntent",
                          "samples": []
                      }
                  ],
                  "types": [
                      {
                          "name": "phrase",
                          "values": [
                              {
                                  "name": {
                                      "value": "<example-phrase>"
                                  }
                              },
                              {
                                  "name": {
                                      "value": "<example-phrase>"
                                  }
                              },
                              {
                                  "name": {
                                      "value": "<example-phrase>"
                                  }
                              }
                          ]
                      }
                  ]
              }
          }
      }
      
    2. 对于 invocationName,将<your-skill-invocation-name> 改成用户在 Alexa 上调用技能时将使用的名称。 例如,如果技能调用名称为“适配器助手”,则用户可能会说“Alexa,启动适配器助手”以启动该技能。

    3. types下方数组values,将三个实例<example-phrase>替换为用户说出可以触发技能的短语。 例如,如果用户说“Alexa,请求适配器助手提供 Alexa 适配器的详细信息”,示例短语将为“请提供 Alexa 适配器的详细信息”。

  6. 选择保存模型,然后选择生成模型。 这会更新 Alexa 上的技能配置。

在 Azure 配置机器人

若要完成此步骤,需要 Alexa 技能 ID。 可以通过 Alexa 门户中的 URL 获取ID,也可以转到 Alexa 开发人员控制台,选择复制技能 ID。 Alexa 技能 ID 应该是一个类似于“amzn1.ask.skill.<some-guid>”的值。

  1. 打开 Azure 门户
  2. 打开机器人的Azure机器人资源边栏选项卡。
  3. 打开频道并选择 Alexa
  4. Alexa 频道配置中,输入在上一步中复制的信息。
    1. 输入技能 ID 中,输入从 Alexa 开发人员控制台复制的 Alexa 技能 ID。
    2. 选择应用
    3. 复制 Azure 生成的 Alexa 服务终结点 URI。

更新 Alexa 机器人注册

  1. 登录到 Alexa 开发人员控制台

  2. 查找并打开技能的配置页。

  3. 选择终结点

  4. 对于 服务终结点类型,请选择 HTTPS

  5. 设置默认区域

    1. 输入从Azure 门户复制的 Alexa 服务终结点 URI。
    2. 在下列选项框中,选择我的开发终结点是具有来自证书颁发机构的通配符证书的域的子域

    设置服务终结点和终结点类型

  6. 选择保存终结点

测试和发布技能

如果你拥有 Alexa 设备,可以在发布技能之前对其进行测试。

有关如何在其平台上测试和发布技能的信息,请参阅自定义语音模型技能的 Alexa 技能工具包开发人员文档

其他信息

有关 Alexa 技能的详细信息,请参阅 Amazon 开发人员文档:

Alexa 中的用户身份验证

Alexa 中的用户身份验证是通过设置和使用 Alexa 技能上的帐户链接来完成的。 有关详细信息,请参阅 了解 Alexa 技能的帐户链接。 用户可以在用户启用技能时要求帐户链接,也可以将其作为聊天流的一部分进行要求。

如果将用户身份验证添加为聊天的一部分:

  1. 在传出活动上附加登录卡。 这将转换为 Alexa LinkAccount 卡,提示用户使用 Alexa 应用登录。

  2. 如果用户成功将帐户链接到应用,则通道数据中的后续请求中会提供令牌。

后续步骤