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.LITERAL
和 AMAZON.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}"
我的 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.LITERAL
和 AMAZON.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}"