问题描述
在以下示例中:如果用户说太妃糖,那不应该翻译成糖果吗?我问是因为传递给我的意图的价值是太妃糖".所以不确定我有什么不正确.
In the following example:If the user says toffee, shouldn't that be translated to candy? I ask because the value handed to my intent is 'toffee'. So not sure what I have incorrect.
types":[
{
"name":"SHOPPING_LIST",
"values":[
{
"id":null,
"name":{
"value":"candy",
"synonyms":[
"toffee"
]
}
},
{
"name":"GetPrice",
"samples":[
"Get me the price of {item}",
"tell me the price of {item}",
],
"slots":[
{
"name":"item",
"type":"SHOPPING_LIST"
}
]
}
推荐答案
我们需要在您的后端代码中处理实体解析.更多可以参考这里:https://developer.amazon.com/blogs/alexa/post/5de2b24d-d932-4c6f-950d-d09d8ffdf4d4/entity-resolution-and-slot-validation
We need to handle the entity resolution in your backend code.More can be referred here:https://developer.amazon.com/blogs/alexa/post/5de2b24d-d932-4c6f-950d-d09d8ffdf4d4/entity-resolution-and-slot-validation
您可以在代码中添加,
this.attributes.item = slotValue(this.event.request.intent.slots.item);
另外,在你的处理函数之外添加这个,
Also, add this outside your handler function,
function slotValue(slot, useId){
let value = slot.value;
let resolution = (slot.resolutions && slot.resolutions.resolutionsPerAuthority && slot.resolutions.resolutionsPerAuthority.length > 0) ? slot.resolutions.resolutionsPerAuthority[0] : null;
if(resolution && resolution.status.code == 'ER_SUCCESS_MATCH'){
let resolutionValue = resolution.values[0].value;
value = resolutionValue.id && useId ? resolutionValue.id : resolutionValue.name;
}
return value;
}
现在当您的用户输入太妃糖时,它会被翻译成糖果.
Now when your user enters toffee, it will be translated to candy.
这篇关于如何在 Alexa 中处理意图中的同义词?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!