Alexa 技能不适用于“将 device_name 增加/减少到百分比”。
示例:Me - Alexa,将设备增加 20%
Alexa - 抱歉,设备没有响应。
但是,当我检查 Alexa 应用程序时,它的亮度增加了 20%。
要求:
{
"directive": {
"header": {
"namespace": "Alexa.BrightnessController",
"name": "AdjustBrightness",
"payloadVersion": "3",
"messageId": "0d-4605-9d50",
"correlationToken": ""
},
"endpointId": "device",
"cookie": {
"Load": "LOAD_1",
"NodeIndex": "0",
"Type": "LIGHT",
"Name": "96005E",
"Thing": "device_0001"
}
},
"payload": {
"brightnessDelta": 20
}
}
}
回应:
{
"context": {
"properties": [
{
"namespace": "Alexa.BrightnessController",
"name": "brightness",
"value": 71,
"timeOfSample": "2017-02-03T16:20:50.52Z",
"uncertaintyInMilliseconds": 500
}
]
},
"event": {
"header": {
"namespace": "Alexa",
"name": "Response",
"payloadVersion": "3",
"messageId": "48CE-BBE5",
"correlationToken": ""
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "access-token-from-Amazon"
},
"endpointId": "device"
},
"payload": {}
}
}
当我命令“将设备设置为 20%”时,它工作正常,Alexa 响应为“OK”。
注意:我已经尝试过 Alexa.PercentageController 它仍然给了我相同的错误响应。
所以,我终于想通了,所有功劳都归功于亚马逊团队。问题出在我发送给 Alexa 的响应上。我发送的响应是异步的,但 Alexa 需要同步响应。
这是亚马逊团队的回复:
https://developer.amazon.com/docs/device-apis/alexa-interface.html#response
注意:同步响应不包括承载令牌、范围等。
如果您的意图是遵循异步响应模式,那么您首先需要发送同步延迟响应消息,然后发送发送到 Alexa 事件网关的异步响应。
注意:我们的大多数照明合作伙伴不使用延迟响应模式,而是仅使用同步消息响应原始控制消息。您通常只会在后端架构需要此流程的极少数情况下遵循延迟响应模式。