alexa - 捕获未在自定义类型中定义的值

alexa - capture values not defined in custom type

我的 alexa 应用程序有一个带有自定义数据类型的购买意向,它有一些值,比如

vehicles : [car, bus]

如果用户说

I want to buy a bike

alexa 默认为回退意图,没有关于用户所说内容的信息。

如何捕获 'bike' 值以便我可以用

进行响应

we dont support 'bikes' at the moment.

自定义槽类型将使用未明确定义的值。因此,即使 bike 不在 vehicles 槽类型中,您也应该可以说 I want to buy a bike

据我所知,唯一的选择是 AMAZON.LITERALAMAZON.SearchQuery 插槽类型。

假设您的意图已在技能界面中正确设置,您应该已经能够捕获它。

我不知道你的技能是如何设置的或者你使用什么语言进行开发,所以我不能告诉你访问它的代码,但是 JSON 请求看起来有点像像这样:

"request": {
  "type": "IntentRequest",
  "intent": {
    "name": "BuyIntent",
    "confirmationStatus": "NONE",
    "slots": {
      "vehicleType": {
        "name": "vehicleType",
        "value": "bike",
        "resolutions": {
          "resolutionsPerAuthority": [
            {
              "authority": "amzn1.er-authority.echo-sdk.[skill-id].vehicleType",
              "status": {
                "code": "ER_SUCCESS_NO_MATCH"
              },
            }
          ]
        }
      }
    }
  }
}

如果你能弄清楚如何访问车辆类型插槽下的 'value' 属性,你将拥有用户所说的价值!您只需要将其捕获到一个变量中并将其插入到您发送回 Alexa 的字符串中。

即使没有定义槽类型也能工作的原因是因为 Alexa 实际上为一个槽存储了两种不同类型的值。一个是我之前提到的值,这个存储了用户实际说的内容。第二个位于插槽的 'resolutions' 部分,并保存 Alexa 与用户语音匹配的插槽类型中的值。当没有找到匹配时,Alexa 仍然 returns 用户所说的值的插槽,并将分辨率的状态代码设置为 "ER_SUCCESS_NO_MATCH",这意味着没有找到相应的插槽类型。

至于为什么你的技能得到的是后备请求而不是你的 Intent 请求,我不能用你提供的信息告诉你,但是 'bike' 缺少定义的车辆类型是'的原因。您是否为购买意图设置了与您用于与技能交互的短语相匹配的话语?类似于:"I want to buy a {vehicleType}"