我有这个意图
'NameIntent': function(name) {
let speech = 'Hello ' + name.value + ', nice to meet you! which Radio do you want me to play? ;
this.followUpState('MakeSureEnterRadioIntentState').ask(speech);
},
,该语音由语音{name}触发。示例:用户说:SAM
stateIntent代码如下:
语音{radioName}触发了PlayRadioIntent。示例:用户说:Mosaique
'MakeSureEnterRadioIntentState': { //TO solve this problem: IN CASE USER SAYS MOSAIQUE AFTER NAMEINTENT ALEXA WILL INTERPRET MOSAIQUE AS A NAME AND WILL REENTER NAMEINTENT
'PlayRadioIntent': function(channel) {
this.tell("The radioName is" + channel.value);}
我尝试使用此状态解决的问题:
ALEXA:您好,Sam,很高兴认识您!您要我播放哪个电台? ;
使用者:Mosaique
// Mosaique是电台名称
ALEXA:您好Mosaique,很高兴认识您!您要我播放哪个电台? ;
// ALEXA将马赛克解释为名称,而不是radioName,然后重新输入NameIntent。我认为使用状态对于解决这种混乱是完美的。他们应该。但是,事实并非如此,我也不是很清楚为什么。
帮助吗?
答案 0 :(得分:1)
Jovo Routing处于以下状态时,其工作方式如下:(1)查看是否在该状态中找到了意图,如果没有,则(2)查看是否在该状态中定义了“未处理”,如果没有, (3)查看是否可以在状态之外找到该意图,否则(4)查看是否在该状态之外定义了“未处理”,(5)抛出错误。
在您的情况下,无法在状态中找到“ NameIntent”,因此它转到全局(无状态)“ NameIntent”。要保持状态,您可以添加一个“未处理”的意图,该意图充当所有未找到的意图的“全部捕获”。
请参阅本节以了解有关状态和未处理的更多信息:https://www.jovo.tech/blog/p2s5-introduction-to-states/#unhandled-intent