亚马逊Alexa智能家居:无法发现设备

时间:2016-07-19 14:07:43

标签: amazon-web-services aws-lambda alexa-skills-kit alexa-skill

我在发现中遇到了问题。

当我发现设备时,它似乎没有调用我定义的Lambda函数。 Lambda函数在技能上配置,事件源在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"
      }
    ]
  }
}

2 个答案:

答案 0 :(得分:1)

我刚才遇到同样的问题。没有发现请求发送到我的lambda函数。错误是我为Trigger输入了无效的应用程序ID>智能家居触发器。

这需要与您的技能应用ID相同。

答案 1 :(得分:0)

我有同样的问题。一切都配置正确,但是没有 Discover Request (Alexa.Discovery)发送到lambda函数。

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

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

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

进一步的解释:
每个alexa开发人员帐户都需要连接一个alexa设备,否则您将无法使用alexa仿真器。
设备可以是:

  • 真正的alexa设备(Amazon回声,Amazon回声点,...)
  • 带有alexa应用程序的智能手机
  • 模拟设备(echosim.io)

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