Aws lambda 针对智能家居API的Amazon Alexa设备发现,Lambda失败
我已经设置了Alexa智能家居技能,所有设置完成,oauth2处理完成,并且在我的Amazon Echo设备上启用了该技能。Lambda功能已设置并链接到技能。当我“发现设备”时,我可以在日志中看到有效负载命中我的Lambda函数。我通过context.success()方法返回以下带有测试设备的JSON。但是Echo告诉我它找不到任何设备Aws lambda 针对智能家居API的Amazon Alexa设备发现,Lambda失败,aws-lambda,alexa,alexa-skills-kit,amazon-echo,Aws Lambda,Alexa,Alexa Skills Kit,Amazon Echo,我已经设置了Alexa智能家居技能,所有设置完成,oauth2处理完成,并且在我的Amazon Echo设备上启用了该技能。Lambda功能已设置并链接到技能。当我“发现设备”时,我可以在日志中看到有效负载命中我的Lambda函数。我通过context.success()方法返回以下带有测试设备的JSON。但是Echo告诉我它找不到任何设备 { "header": { "messageId": "42e0bf9c-18e2-424f-bb11-f8a12df1a79e", "
{
"header": {
"messageId": "42e0bf9c-18e2-424f-bb11-f8a12df1a79e",
"name": "DiscoverAppliancesResponse",
"namespace": "Alexa.ConnectedHome.Discovery",
"payloadVersion": "2"
},
"payload": {
"discoveredAppliances": [
{
"actions": [
"incrementPercentage",
"decrementPercentage",
"setPercentage",
"turnOn",
"turnOff"
],
"applianceId": "0d6884ab-030e-8ff4-ffffaa15c06e0453",
"friendlyDescription": "Study Light connected to Loxone Kit",
"friendlyName": "Study Light",
"isReachable": true,
"manufacturerName": "Loxone",
"modelName": "Spot"
}
]
}
}
上述有效载荷看起来正确吗?编辑:答案错误。唯一有用的信息是这个
此context.fail语法实际上已弃用。查找Lambda上下文对象属性,它现在应该更像“callback(null,resultObj)”。重新创建Lambda函数帮助我解决了这个问题。我还在创建时设置了“启用触发器”检查按钮,尽管我不确定这是否重要。之后,skill提供的我的设备被成功找到。您的函数中是否包含了
return
语句
return {
"header": header,
"payload": payload
}
示例中缺少它,添加它后,我能够“发现”我的设备。根据版本,需要属性。您的回答似乎缺少该属性
在我(非常短)的经验中,即使是响应中最小的错误也会产生一个无声的错误,就像您正在经历的错误一样。我也有同样的问题。如果要为“娱乐设备”创建发现,请确保已将输出包装在context.success的“event”键中
var payload = {
endpoints:
[
{
"endpointId": "My-id",
"manufacturerName": "Manufacturer",
"friendlyName": "Living room TV",
"description": "65in LED TV from Demo AV Company",
"displayCategories": [ ],
"cookie": {
"data": "e.g. ip address",
},
"capabilities":
[
{
"interface": "Alexa.Speaker",
"version": "1.0",
"type": "AlexaInterface"
},
]
}
]
};
var header = request.directive.header;
header.name = "Discover.Response";
context.succeed({ event: {
header: header, payload: payload
} });
尽管在示例代码中从未提及这一点,但给出了一个不正确的示例()。但是,提供的响应正文包括“事件”键。您有任何证明链接吗?正如我所看到的,有很多示例,其中结果作为context.succeed
函数的参数返回。此外,在智能家居API中,并没有一个回调方法传递给意图处理程序。我误解了什么。您所需要的只是回调函数。从那以后我一直在编辑它你成功了吗?我面临着完全相同的问题。我已经尝试生成一个真正的随机messageId,并更改其他值以防万一,但没有:(我刚刚让min起作用了!在我的例子中,我把name
和namespace
的值混在一起了。不幸的是,我不得不说,现在我的回答和你的一样……我认为Alexa方面缺乏一个好的调试工具,因此很难找到这个小错误……因为问题涉及到JSON,这是不适用的由于头部和有效载荷都在那里。版本肯定丢失了。Domotics、IoT和蝙蝠侠当然也在新的IoT.SE()上讨论这个话题。这仍然是真的,困扰了我大约2个小时,谢谢!