在 Amazon alexa 中给出一个字符串槽

giving a string slot in Amazon alexa

我是 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}

当我运行我的程序使用上面提到的三个城市中的任何一个时table,我能够得到正确的。如果我使用除上述以外的任何东西,它会将值发送回 -4。

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

请告诉我如何动态获取值,我的意思是不依赖 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.

谢谢

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

不,您不能动态管理单词列表。

A​​lexa 将尝试将用户所说的内容与您的 LIST_OF_CITIES 相匹配,并将尝试 return 其中一个词,但如果无法匹配,则可能 return 其他词匹配其中之一(如您所见)。

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

但这可能对你不起作用,因为每个国家都只是一个国家,所以你需要建立自己的城市列表(在你的 LIST_OF_CITIES 中)。

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

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

您可以在定义自定义槽时使用这些作为类型。