alexa - 我可以确定 Alexa 请求是由例程还是用户触发的吗?

标签 alexa alexa-skills-kit alexa-skill alexa-app

我需要区分显式请求和例程请求。

这是一个例子。假设我正在控制智能灯。灯能够检测占用。

如果用户进入房间并说开灯,它会检查入住情况并关闭。 但是,如果用户创建了一个预定例程来打开灯,我们应该禁用占用检查。

我在 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/

相关文章:

alexa - 您将如何设计字母和数字代码的插槽?

amazon-web-services - 以编程方式配置架构和话语

alexa-skills-kit - Alexa 卡响应中的图像未显示

python - Alexa 技能 : Get user location

python - 将所有查询结果返回至 Alexa Skill

python - 无法在 python 中将字母数字转换为字符串

javascript - Alexa 技能 - sessionAttributes 实际上如何工作?

alexa-skill - 如何使用有效的AWS配置文件配置Alexa ask-cli?

alexa - 更改 Alexa 履行中已识别 intent 的选项

javascript - 当用户在 this.emit (":ask",语音)之后没有向 Alexa 输入任何内容时,我该如何解释?