在亚马逊alexa中给出一个字符串插槽

时间:2016-11-07 10:52:49

标签: alexa alexa-skills-kit alexa-slot

我是alexa的新手。我学会了并开始构建天气应用程序。

现在我能够获得天气数据,但在以下情况下,

我已经开始使用自定义广告位(LIST_OF_CITIES)来保存城市,如下所示。

{
  "intents": [
    {
      "intent": "WeatherIntent",
      "slots": [
        {
          "name": "city",
          "type": "LIST_OF_CITIES"
        }
      ]
    },
    {
      "intent": "AMAZON.HelpIntent"
    },
    ]
}

并在我的自定义插槽中,如下所示。

Type               Values
LIST_OF_CITIES     Hyderabad | pune | london

以下是我的话语

WeatherIntent give me {city} climate
WeatherIntent {city}
WeatherIntent what's the climate in {city}
WeatherIntent what's the weather in {city}
WeatherIntent {city}

当我使用上表中提到的三个城市中的任何一个来运行我的程序时,我能够得到正确的答案。如果我使用除上述之外的任何东西,它将返回值为-4。

如果我想得到其他城市的温度,我需要在插槽列表中添加该城市。

请让我知道如何动态获取vaues,我的意思是取决于LIST_OF_CITIES,如果我输入城市名称,它应该发回结果。

此外,我尝试添加类型作为LITERAL,也作为AMAZON.LITERAL。当我保存它时,我得到了例外

Error: There was a problem with your request: Unknown slot name '{city}'. Occurred in sample 'WeatherIntent get me weather of {city}' on line 1.
Please let me know where am I going wrong and how can I fix this.

由于

2 个答案:

答案 0 :(得分:1)

首先,不要使用LITERAL - 它已被弃用,甚至在美国以外的地区都不受支持。

不,你无法动态管理单词列表。

Alexa将尝试将用户所说的内容与您的LIST_OF_CITIES相匹配,并尝试返回其中一个单词,但如果无法匹配其中一个单词,则可能会返回其他内容(如您所见)。

您可以使用和构建的城市有一些自定义插槽类型,请参见此处:
https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interaction-model-reference#h2_custom_syntax

但这可能不适合你,因为他们每个人只是一个国家,所以你需要建立自己的城市列表(在你的LIST_OF_CITIES中)。

答案 1 :(得分:1)

亚马逊为城市甚至地区提供了一些default list Slot Types。 E.g。

  • AMAZON.US_CITY
  • AMAZON.AT_CITY
  • AMAZON.DE_REGION
  • ...

您可以在定义自定义广告位时将其用作类型。