2

我在 Discovery 中遇到问题。

当我发现设备时,它似乎没有调用我定义的 Lambda 函数。Lambda 函数在 Skill 上配置,事件源在 Lambda 函数上配置。

我从监控日志中检查了当我尝试从 Alexa 界面发现设备时没有调用 lambda 函数。

如果我尝试使用 lambda 测试接口进行测试,它会给我响应。

从 lambda 测试接口发出的示例请求

{
    "header": {
        "messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2",
        "name": "DiscoverAppliancesRequest",
        "namespace": "Alexa.ConnectedHome.Discovery",
        "payloadVersion": "2"
    },
    "payload": {
        "accessToken": "some string"
    }
}

我从我的 API 端点得到的响应如下

 {
  "header": {
    "messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2",
    "name": "DiscoverAppliancesResponse",
    "namespace": "Alexa.ConnectedHome.Discovery",
    "payloadVersion": "2"
  },
  "payload": {
    "discoveredAppliances": [
      {
        "actions": [
          "incrementPercentage",
          "decrementPercentage",
          "setPercentage",
          "turnOn",
          "turnOff"
        ],
        "additionalApplianceDetails": {
          "serialNumber": "CRED DEVICE 1456842949167",
          "firmwareVersion": "0.7.1.1"
        },
        "applianceId": "d4cab60d-b2e5-4d0f-ae50-c566e0de26ce",
        "friendlyDescription": "Den",
        "friendlyName": "Den",
        "isReachable": true,
        "manufacturerName": "CredSmartLabs",
        "modelName": "H+1140-87-",
        "version": "1"
      }
    ]
  }
}
4

3 回答 3

1

我只是有同样的问题。没有发现请求发送到我的 lambda 函数。错误是我为 Trigger > Smart Home Trigger 输入了无效的应用程序 ID。

这需要与您的技能应用程序 ID 具有相同的值。

于 2017-02-02T12:33:52.803 回答
0

我遇到了同样的问题:Alexa 无法发现我的设备。但与@RenRen 不同的是,我没有使用任何 Alexa 模拟器。我的是一个合适的 Amazon Echo 设备。

因此,我确认如果存在区域不匹配,所有 Alexa 设备都将面临同样的问题。

问题:我按照教程 https://github.com/alexa-samples/skill-sample-python-smarthome-switch/blob/master/instructions/README.md verbatim进行操作。

该教程假设我留在北美,但从未明确表示过这个假设。由于我住在印度,我一定是在 EU-West-1 地区(爱尔兰)创建了我的 Lambda!这一点都不明显,本教程从未在任何地方提到过这一点。我无法理解亚马逊在印度捆绑设备并在爱尔兰捆绑 lambda 服务器并保守秘密的逻辑。

最终的解决方案很简单:我删除了我的美国 lambda,并在 EU-West1 中创建了一个具有相同设置的新 lambda。现在发现进展顺利。

附加说明:在智能家居服务端点下的 Alexa 开发人员控制台中,我必须选中“欧洲、印度”框并提供我的爱尔兰 lambda 的 ARN。

于 2021-08-28T16:37:58.767 回答
0

我有同样的问题。一切都已正确配置,但没有发现请求(Alexa.Discovery) 被发送到 lambda 函数。

最后,作为模拟 alexa 设备的 echosim 服务 (echosim.io) 存在问题。

该文档提到设备(回声)必须与您的 lambda 函数位于同一区域,否则不会调用您的 lambda。

要成功发现智能家居设备,您必须选择设备所在的区域。
https://developer.amazon.com/en-US/docs/alexa/smarthome/steps-to-build-a-smart-home-skill.html#create-a-lambda-function

进一步说明:
每个alexa开发者账户都需要连接alexa设备,否则无法使用alexa模拟器。
该设备可以是:

  • 一个真正的 Alexa 设备(Amazon echo、Amazon echo dot、...)
  • 带有 Alexa 应用程序的智能手机
  • 模拟设备(echosim.io)

似乎 echosim 位于美国,而我部署的 lambda 位于欧洲。我删除了 echosim 并在我的手机上安装了 alexa 应用程序并使用开发者帐户登录。之后设备发现工作正常。

于 2020-09-24T18:30:36.977 回答