所以你想将所有的垃圾输入管道到一个单一的意图。你很幸运。在继续之前,您应该了解以下几件事。
在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语音服务必须解释您的话语并将其映射到其中一个可用意图。如果你的话语是垃圾,并没有映射到任何特定的意图,它目前被映射到第一个意图。
解决方案:如果您想添加垃圾意图,应该由意向模式来处理,而不是由未处理的意图处理。要添加垃圾意图,您可以按照这篇亚马逊文章中的说明操作。
https://developer.amazon.com/blogs/post/Tx3IHSFQSUF3RQP/Why-a-Custom-Slot-is-the-Literal-Solution
方案3:我只是想要的一切。如上所述使用 语法的自定义插槽类型通常可满足此愿望,并使您能够通过NLP培训提高准确性。如果你仍然只想要 的一切,你可以创建一个自定义的插槽,称为“CatchAll”和相应的意图和话语:CatchAllIntent {CatchAll}。如果您使用的训练数据与LITERAL使用的 相同,则会得到相同的结果。人们通常会发现,添加更多特定场景的训练数据可提高准确性。
如果你还没有得到结果,试图设置包罗万象 值约二十2〜8字随机短语(从随机字 发电机 - 是真正随机的)。当用户说出与您的其他话语相匹配的内容时,这些意图仍将被发送。当 与其中任何一个不匹配时,它将落入CatchAll插槽。如果你走这条路线,你将失去准确性,因为你不是 充分利用Alexa的NLP,所以你需要大量测试。
未映射到你的更具体的意图之一,像YES
或NO
任何投入,很可能会映射到这个CatchAll
意图。
我无法回答这个问题,但在使用测试用户界面和实际设备时,我遇到过类似的差异。 +1提问。我打算引导你走向Alexa技能工具包开发论坛,但看起来你已经在那里发布了这个问题。 :-) – TimHayes
我在想这是测试界面的工件。你有没有尝试过在你的设备上进行测试? –
@John你有没有找到解决方案? – Dhawal