Jovo FrameWork:this.followUpState的工作不像应该做的

时间:2018-07-06 10:28:24

标签: alexa alexa-skill alexa-slot jovo-framework

我有这个意图

       '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。我认为使用状态对于解决这种混乱是完美的。他们应该。但是,事实并非如此,我也不是很清楚为什么。 帮助吗?

1 个答案:

答案 0 :(得分:1)

Jovo Routing处于以下状态时,其工作方式如下:(1)查看是否在该状态中找到了意图,如果没有,则(2)查看是否在该状态中定义了“未处理”,如果没有, (3)查看是否可以在状态之外找到该意图,否则(4)查看是否在该状态之外定义了“未处理”,(5)抛出错误。

在您的情况下,无法在状态中找到“ NameIntent”,因此它转到全局(无状态)“ NameIntent”。要保持状态,您可以添加一个“未处理”的意图,该意图充当所有未找到的意图的“全部捕获”。

请参阅本节以了解有关状态和未处理的更多信息:https://www.jovo.tech/blog/p2s5-introduction-to-states/#unhandled-intent