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

时间:2018-06-01 18:07:47

标签: alexa

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

  车辆:[汽车,公共汽车]

如果用户说

  

我想买一辆自行车

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

如何捕捉'自行车'值,以便我可以回复

  

我们目前不支持'自行车'。

2 个答案:

答案 0 :(得分:1)

自定义插槽类型将使用未明确定义的值。因此,即使I want to buy a bike广告位类型中bike不是vehicles,您也可以说AMAZON.LITERAL

据我所知,唯一的选择是AMAZON.SearchQueryenterAnim广告位类型。

答案 1 :(得分:1)

如果在技能界面中正确设置了您的意图,您应该能够捕获它。

我不确切知道您的技能是如何设置的,或者您正在使用哪种语言进行开发,因此我无法告诉您访问它的代码,但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"
              },
            }
          ]
        }
      }
    }
  }
}

如果您可以弄清楚如何访问'值'在您的车位类型下的属性,您将拥有用户所说的价值!您只需要在变量中捕获它并将其插入到发送回Alexa的字符串中即可。

即使没有定义的插槽类型,这仍然有效的原因是因为Alexa实际上为插槽存储了两种不同类型的值。一个是我之前提到的价值,它存储了用户实际说的内容。第二个是在'决议中找到的。插槽的一部分,并保存Alexa与用户语音匹配的插槽类型中的值。如果未找到匹配项,Alexa仍会返回带有用户所述值的插槽,并将分辨率的状态代码设置为" ER_SUCCESS_NO_MATCH",这意味着找不到相应的插槽类型。

至于为什么你的技能获得后备请求而不是你的意图,我无法告诉你你提供的信息,但缺乏定义的车辆类型' bike&# 39;不是原因。您是否为购买意图设置了与您用于与该技能交互的短语相匹配的话语?类似于:"我想购买{vehicleType}"