首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alexa技能工具包(ASK)和话语

Alexa技能工具包(ASK)和话语
EN

Stack Overflow用户
提问于 2016-11-15 04:58:24
回答 3查看 1.3K关注 0票数 7

我正在为Alexa开发一个简单的自定义技能。我已经将其启动并运行,并在AWS Lambda上托管处理程序。它工作得很好除了..。

在测试UI中,如果我输入一个有效的语句,例如help,cancel,swim,run (两个自定义语句),一切正常;但是,如果我输入一个无意义的语句,例如dsfhfdsjhf,Alexa服务总是将无意义映射到意图模式中的第一个有效意图。

在我的lambda代码中,我有一个处理未知意图的处理程序;然而,意图永远不是未知的。这是测试界面的工件吗?还发生了什么吗?

谢谢,约翰

EN

回答 3

Stack Overflow用户

发布于 2017-01-22 14:15:57

根据您的方法中包含了一个未处理的意图,看起来您正在使用Alexa Skills Kit SDK for Node.js。您的问题不是测试接口的工件。是的,有些事情正在发生。

虽然亚马逊还没有承认这一点,但这是SDK中许多人都认识到的问题。参见this open issue。从个人经验上讲,对于上面的建议,无论你是使用真实的单词还是胡言乱语,都不会调用未经处理的意图。在这个问题解决之前,我的建议是构建一个处理程序,它是对您技能的高级提示,并向用户重申他们拥有的有效选项。将其定位为包罗万象。希望我们能看到这个SDK得到更好的维护。

票数 2
EN

Stack Overflow用户

发布于 2017-01-18 22:26:27

而不是输入dsfhfdsjhf (在Alexa知道的任何语言中都不能发音),如果你的发音是boogie或shake会发生什么?

在现实世界的场景中,我认为Alexa永远不会通过dsfhfdsjhf,所以可能很难准确地计划行为。

票数 0
EN

Stack Overflow用户

发布于 2017-08-06 15:17:32

因此,您希望通过管道将所有垃圾输入传递到一个意图。你真走运。在继续之前,有几件事你应该知道。

在Node.js中,如果Alexa语音服务返回的意图在给定的MODE中不可用,则在MODE中触发未处理的处理程序。

MODE的一个例子就是确认模式。在许多可用的意图中,是和否是唯一被接受的意图。

代码语言:javascript
复制
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语音服务必须解释您的话语,并将其映射到可用意图之一。如果你的话语是垃圾,并且没有映射到任何特定的意图,那么它当前正被映射到第一个意图。

解决方案:如果您想添加垃圾意图,这应该由意图模式处理,而不是由未处理的意图处理。要添加垃圾意图,可以按照这篇amazon文章中的说明进行操作。

https://developer.amazon.com/blogs/post/Tx3IHSFQSUF3RQP/Why-a-Custom-Slot-is-the-Literal-Solution

Scenario 3:我只想要一切。如上所述,使用语法的自定义槽类型通常可以满足这一需求,并使您能够通过NLP训练来提高准确性。如果你仍然只想要所有的东西,你可以创建一个自定义的槽,叫做“CatchAll”,以及相应的意图和话语: CatchAllIntent {CatchAll}。如果您使用与文字相同的训练数据,您将获得相同的结果。人们通常会发现,添加更多特定于场景的训练数据可以提高准确性。

如果你仍然没有得到结果,试着将CatchAll的值设置为大约20个2到8个单词的随机短语(来自随机单词生成器-真的是随机的)。当用户说了一些与你的其他话语相匹配的东西时,这些意图仍然会被发送。如果你走这条路,你会失去准确性,因为你没有充分利用Alexa的优势,所以你需要进行大量的测试。

任何没有映射到您更具体的意图的输入,如YESNO,都很可能映射到这个CatchAll意图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40597707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档