0

我有这个意图

       '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 代码如下:
PlayRadioIntent 由话语 {radioName} 触发。示例:用户说:马赛克

'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将mosaique解释为名称而不是radioName并重新输入NameIntent。我认为使用状态将非常适合解决这种混乱。他们应该这样做。但是,他们不是,我真的不明白为什么。帮助?

4

1 回答 1

1

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

在您的情况下,在状态中找不到“NameIntent”,因此它转到全局(无状态)“NameIntent”。要保持该状态,您可以添加一个“未处理”意图,作为在其中找不到的任何意图的“包罗万象”。

查看此部分以了解有关状态和未处理的更多信息:https ://www.jovo.tech/blog/p2s5-introduction-to-states/#unhandled-intent

于 2018-07-06T15:25:02.610 回答