Alexa 智能家居 "Failed to Retrieve State"
Alexa Smart Home "Failed to Retrieve State"
我正在玩 Alexa Smart Home 技能示例 - 我不是在与任何真实的硬件或后端对话,只是想让消息流正常工作。我已经设置了一个简单的 switch/plug/light,它可以只支持转动 On/Off - 我有帐户链接工作和启用的技能。当我尝试通过 phone 上的 Alexa 应用程序或网络(启用调试)查看它时,它总是说设备没有响应,或者它是“无法检索状态”。我绝对可以看到云观察中的消息如下
知道为什么我会长期收到这样的回复吗??
要求:
"directive": {
"endpoint": {
"cookie": {},
"endpointId": "endpoint-003",
"scope": {
"token": "<<<SUPRESSING>>",
"type": "BearerToken"
}
},
"header": {
"correlationToken": "<<SHORTENED>>",
"messageId": "50397414-bb9d-412f-8a2c-15669978ab64",
"name": "ReportState",
"namespace": "Alexa",
"payloadVersion": "3"
},
"payload": {}
}
}
回复:
{
"context": {
"properties": [
{
"name": "connectivity",
"namespace": "Alexa.EndpointHealth",
"timeOfSample": "2020-06-29T16:49:59.00Z",
"uncertaintyInMilliseconds": 0,
"value": "OK"
},
{
"name": "powerState",
"namespace": "Alexa.PowerController",
"timeOfSample": "2020-06-29T16:49:59.00Z",
"uncertaintyInMilliseconds": 0,
"value": "ON"
}
]
},
"event": {
"endpoint": {
"endpointId": "endpoint-003",
"scope": {
"token": "Alexa-access-token",
"type": "BearerToken"
}
},
"header": {
"correlationToken": "<<SHORTENED>>",
"messageId": "7a8b9a71-adda-41b8-acba-4d3855374845",
"name": "Response",
"namespace": "Alexa",
"payloadVersion": "3"
},
"payload": {}
}
}
问题是:我的 header 响应中的“名称”应该是“ReportState”。 “响应”仅用于 set/change 重视的事物。
我的一般建议是始终验证 三个 事情是好的:
- 最初的“发现”
- “回复”消息
- 常规“ReportState”查询。
我的意思是:
- 您宣传的任何内容都应在“发现”中报告,最好在其他(“ReportState”)消息中报告。如果您宣传“PowerController”——如果您的 ReportStates 不包含该状态,您将看不到该状态,或者它将永远重试(继续寻找它)——或者您 可能 会出现某种错误。
- 如果您更改了您的发现内容 - 确保您确实删除了 re-discovered,并且新 additions/removals 的状态(以上)没问题
- 始终确保报告“EndpointHealth”。
我正在玩 Alexa Smart Home 技能示例 - 我不是在与任何真实的硬件或后端对话,只是想让消息流正常工作。我已经设置了一个简单的 switch/plug/light,它可以只支持转动 On/Off - 我有帐户链接工作和启用的技能。当我尝试通过 phone 上的 Alexa 应用程序或网络(启用调试)查看它时,它总是说设备没有响应,或者它是“无法检索状态”。我绝对可以看到云观察中的消息如下
知道为什么我会长期收到这样的回复吗??
要求:
"directive": { "endpoint": { "cookie": {}, "endpointId": "endpoint-003", "scope": { "token": "<<<SUPRESSING>>", "type": "BearerToken" } }, "header": { "correlationToken": "<<SHORTENED>>", "messageId": "50397414-bb9d-412f-8a2c-15669978ab64", "name": "ReportState", "namespace": "Alexa", "payloadVersion": "3" }, "payload": {} } }
回复:
{
"context": {
"properties": [
{
"name": "connectivity",
"namespace": "Alexa.EndpointHealth",
"timeOfSample": "2020-06-29T16:49:59.00Z",
"uncertaintyInMilliseconds": 0,
"value": "OK"
},
{
"name": "powerState",
"namespace": "Alexa.PowerController",
"timeOfSample": "2020-06-29T16:49:59.00Z",
"uncertaintyInMilliseconds": 0,
"value": "ON"
}
]
},
"event": {
"endpoint": {
"endpointId": "endpoint-003",
"scope": {
"token": "Alexa-access-token",
"type": "BearerToken"
}
},
"header": {
"correlationToken": "<<SHORTENED>>",
"messageId": "7a8b9a71-adda-41b8-acba-4d3855374845",
"name": "Response",
"namespace": "Alexa",
"payloadVersion": "3"
},
"payload": {}
}
}
问题是:我的 header 响应中的“名称”应该是“ReportState”。 “响应”仅用于 set/change 重视的事物。
我的一般建议是始终验证 三个 事情是好的:
- 最初的“发现”
- “回复”消息
- 常规“ReportState”查询。
我的意思是:
- 您宣传的任何内容都应在“发现”中报告,最好在其他(“ReportState”)消息中报告。如果您宣传“PowerController”——如果您的 ReportStates 不包含该状态,您将看不到该状态,或者它将永远重试(继续寻找它)——或者您 可能 会出现某种错误。
- 如果您更改了您的发现内容 - 确保您确实删除了 re-discovered,并且新 additions/removals 的状态(以上)没问题
- 始终确保报告“EndpointHealth”。