我创建了一个名为“BuyDog”的技能,它的调用名称是“dog app”
所以这应该意味着,只有在听到调用名称后,我才能使用内部定义的意图。(那是对的吗?)
然后我将带有插槽的意图定义为:
"what is {dog} price."
"Tell me the price of {dog}."
其中插槽{dog}
是插槽类型“DogType”。我已根据需要标记此插槽以完成
然后我将端点添加到 AWS lambda 函数中,在该函数中我使用了 node.js 中的 factkills 项目的蓝图代码,并进行了一些小改动以查看其工作情况。
const GET_DOG_PRICE_MESSAGE = "Here's your pricing: ";
const data = [
'You need to pay $2000.',
'You need to pay Rs2000.',
'You need to pay $5000.',
'You need to pay INR 3000.',
];
const handlers = {
//some handlers.......................
'DogIntent': function () {
const factArr = data;
const factIndex = Math.floor(Math.random() * factArr.length);
const randomFact = factArr[factIndex];
const speechOutput = GET_DOG_PRICE_MESSAGE + randomFact;
}
//some handlers.......................
};
根据我期待的关于代码
我说:“Alexa 开放狗应用程序”
它应该只是准备好听“什么是{dog}价格”的意图。另一个。data[]
相反,它表示来自 node.js 代码数组的随机字符串。在说出 Intent 之后,我期待得到这个响应,因为完成 Intent 需要插槽。
什么时候
我说:“打开狗应用程序,告诉我 XXXX 的价格。”
它要求“哪个品种” (这是我定义的问题)但它工作正常并显示定价
Alexa 说:“这是你的定价:你需要支付 5000 美元。”
(或数据数组中的其他值)用于任何 XXXX(即狗或非狗类型)。 为什么 alexa 不确认这个词是否在 slot set 中?
什么时候
我说:“打开狗皮”。
我预计 alexa 不会理解这个问题,但它给了我一个关于吠叫的事实。为什么?那是怎么发生的?
Alexa 是否有一套默认的技能?像搜索谷歌/亚马逊等...
我感到很困惑。请帮助我了解发生了什么?