因此,您希望将所有垃圾输入通过管道传输到单个意图。你很幸运。在继续之前,您应该了解以下几点。
在 Node.js 中,如果 Alexa 语音服务返回的意图在给定的 MODE 内不可用,则在 MODE 内触发未处理的处理程序。
一个示例MODE 将是确认模式。在许多可用的意图中,是和否是唯一被接受的意图。
var ConfirmationHandlers = Alexa.CreateStateHandler(states.CONFIRMATIONMODE, {
'YesIntent': function () {
this.handler.state = states.CLOSINGCOSTSMODE;
message = ` So you will be buying this house. Great! `;
reprompt = `Please carry on with the other intents found in the house buyer skill. `;
this.emit(':ask', message, reprompt);
},
'NoIntent': function () {
this.handler.state = states.GENERALSEARCHMODE;
message = ` So you won't be buying this house. That's Ok, Continue searching for your dream house in the House buyer skill. !`;
reprompt = `Continue searching for your dream house in the House buyer skill.`;
this.emit(':ask', message, reprompt);
},
'Unhandled': function() {
console.log("UNHANDLED");
var reprompt = ` All other intents are disabled at this moment. Would you like to buy this house Yes or No? `;
this.emit(':ask', reprompt, reprompt);
}
});
但是,在到达 lambda 函数之前,Alexa 语音服务必须解释您的话语并将其映射到可用意图之一。如果您的话语是垃圾并且未映射到任何特定意图,则它当前正在映射到第一个意图。
解决方案:如果您想添加垃圾 Intent,则应由 Intent 架构处理,而不是由未处理 Intent 处理。要添加垃圾意图,您可以按照这篇亚马逊文章中的说明进行操作。
https://developer.amazon.com/blogs/post/Tx3IHSFQSUF3RQP/Why-a-Custom-Slot-is-the-Literal-Solution
场景 3:我什么都想要。使用自定义插槽类型
如上所述的语法通常可以满足这种愿望并实现
您可以通过 NLP 训练提高准确性。如果你还只是想要
一切,您可以创建一个自定义插槽,称为
“CatchAll”以及相应的意图和话语:CatchAllIntent
{全部捕获}。如果您使用与您将使用的相同的训练数据
对于 LITERAL,您将得到相同的结果。人们通常会发现
添加更多特定场景的训练数据可以提高
准确性。
如果您仍然没有得到结果,请尝试设置 CatchAll
值大约为 20 个 2 到 8 个单词的随机短语(来自一个随机单词
生成器——真的是随机的)。当用户说了一些
与您的其他话语相匹配,这些意图仍将被发送。什么时候
它与其中任何一个都不匹配,它将落入 CatchAll 插槽。 如果
你走这条路,你会失去准确性,因为你不是
充分利用 Alexa 的 NLP,因此您需要进行大量测试。
任何未映射到您的更具体意图之一的输入,例如YES 或NO,很可能会映射到此CatchAll 意图。