仅从 Alexa Skills Kit 获取单个单词参数

Only getting single word parameters from Alexa Skills Kit

我正在编写 Alexa Skill,我只能将单个单词参数放入我的代码中。

这是意图模式:

    {
  "intents": [
    {
      "intent": "HeroQuizIntent",
      "slots": [
        {
          "name": "SearchTerm",
          "type": "SEARCH_TERMS"
        }
      ]
    },
    {
      "intent": "HeroAnswerIntent",
      "slots": [
        {
          "name": "SearchTerm",
          "type": "SEARCH_TERMS"
        }
      ]
    },
    {
      "intent": "AMAZON.HelpIntent"
    }
  ]
}

我的示例话语是:

HeroQuizIntent quiz me
HeroAnswerIntent is it {SearchTerm}

对于 HeroAnswerIntent,我正在检查 SearchTerm 插槽,但我只在其中找到单个单词。

因此,"Peter Parker" 给出 "Parker","Steve Rogers" 给出 "Rogers","Tony Stark" 给出 "Stark"。

如何将多个词放入一个槽中?

我不得不将插槽类型更改为 AMAZON.LITERAL。

诀窍在于,在示例话语中,我还必须提供多个话语来演示 Alexa 应该解释的最小和最大文字大小。这很不稳定,但有效。

参考资料如下:https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interaction-model-reference

我的技能遇到了同样的问题,这是唯一适用于我的技能使用多个单词的解决方案,但你需要检查这些槽是否不为空并将它们连接起来

意图架构:

{
  "intent": "HeroAnswerIntent",
  "slots": [
    {
      "name": "SearchTermFirst",
      "type": "SEARCH_TERMS"
    },
    {
      "name": "SearchTermSecond",
      "type": "SEARCH_TERMS"
    },
    {
      "name": "SearchTermThird",
      "type": "SEARCH_TERMS"
    }
  ]
},

示例话语

HeroAnswerIntent is it {SearchTermFirst} HeroAnswerIntent is it {SearchTermFirst} {SearchTermSecond} HeroAnswerIntent is it {SearchTermFirst} {SearchTermSecond} {SearchTermThird}

最后一个你需要在SEARCH_TERMS插槽定义

中将你的每个单词放在单独的行中

同时使用 AMAZON.LITERAL 有时根本不会将变量传递给技能,即使您使用服务模拟器(技能控制台,测试选项卡)对其进行测试

@Xanxir 提到的解决方案与较新的 custom slots 格式等效。在这种情况下,您只需将多个长度示例放入您的插槽类型的自定义值列表中。

AMAZON.SearchQuery

所以你可以在你的话语中使用这个,它会检测用户说出的所有单词,它相当准确

它将解决您的问题。

参考 Link:Alexa SearcQuery