我需要区分显式请求和例程请求。
这是一个例子。假设我正在控制智能灯。灯能够检测占用。
如果用户进入房间并说开灯,它会检查入住情况并关闭。 但是,如果用户创建了一个预定例程来打开灯,我们应该禁用占用检查。
我在 documentation 中没有看到任何内容对于指示请求来源的 TurnOn 指令。
有没有我错过的指标?我可以添加一些指标吗?或者有人使用不同的方法来完成类似的功能吗?
最佳答案
亚马逊的官方回应是你无法分辨。这是亚马逊 Alexa 开发者论坛最近的回复:https://forums.developer.amazon.com/questions/218340/skills-invoking-routines.html
也就是说,如果启动请求是从例程启动的,您通常会在启动请求中看到其他字段:
"request": {
"type": "LaunchRequest",
"requestId": "amzn1.echo-api.request.abunchofnumbers",
"timestamp": "2020-01-18T22:27:01Z",
"locale": "en-US",
"target": {
"path": "AMAZON.Launch",
"address": "amzn1.ask.skill.abunchofnumbers"
},
"metadata": {
"referrer": "amzn1.alexa-speechlet-client.SequencedSimpleIntentHandler"
},
"body": {},
"payload": {},
"targetURI": "alexa://amzn1.ask.skill.abunchofnumbers/AMAZON.Launch",
"launchRequestType": "FOLLOW_LINK_WITH_RESULT",
"shouldLinkResultBeReturned": true
}
目标、元数据、正文、负载、targetURI 和 launchRequestType 字段通常在用户使用语音启动技能时找不到。但是,我不认为这些字段的存在是由 Alexa Routine 启动的。我怀疑如果启动该技能,您会发现它们,例如,当 Alexa 询问“嘿,既然你喜欢 Blind Monkey 技能,你想试试 Blind Pig 吗?”然后你说"is"。
关于alexa - 我可以确定 Alexa 请求是由例程还是用户触发的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59771065/