Alexa 完全匹配的样本话语无法传递槽值
Alexa exactly matching sample utterance fails to pass slot value through
我有一个名为 "rollDice" 的 Alexa 技能。意图有两个语句:
roll a {sides} sided dice
roll a {sides} sided die
sides
定义如下,插槽类型为 AMAZON.NUMBER
.
技能构建成功,我打开它 运行 "roll a 20 sided dice",它 运行 是正确的意图请求处理程序,但是当我尝试使用sides
槽,是undefined
。我检查了 JSON 输入面板,我发现它没有被传递:
"intent": {
"name": "rollDice",
"confirmationStatus": "NONE",
"slots": {
"sides": {
"name": "sides",
"confirmationStatus": "NONE"
}
}
}
这是我处理 rollDice
意图的代码:
module.exports = ({ store, slot }) => {
const sideCount = +slot('sides', 6);
const roll = 1 + Math.floor(Math.random() * sideCount);
store.state.rolls.push({sideCount, roll});
return `Rolled a ${sideCount} sided dice and got ${roll}. ${slot('sides')}`;
};
我从 Alexa 得到的回复:
Rolled a 6 sided dice and got 4. undefined
我在其他几个意图处理程序中使用 slot
函数没有问题,所以我不认为这是问题所在,但这里以防万一:
slot(name, defaultValue) {
const { intent } = this;
const slot = intent && intent.slots && intent.slots[name];
return slot && slot.value || defaultValue;
}
编辑:
这是 event.request.intent
在我的 Lambda 函数中 运行 和 roll a 20 sided dice
:
之后的值
{
"name": "rollDice",
"confirmationStatus": "NONE",
"slots": {
"sides": {
"name": "sides",
"confirmationStatus": "NONE"
}
}
}
当您使用 alexa 进行测试时,您必须考虑到您正在测试语音服务并且您正在模拟语音而不是文本。你不能在身体上说 "roll a 20 sided dice"。所以如果你想掷一个 20 面的骰子,你必须说 "roll a twenty sided dice" 因为这就是你说数字 20 的方式。
我有一个名为 "rollDice" 的 Alexa 技能。意图有两个语句:
roll a {sides} sided dice
roll a {sides} sided die
sides
定义如下,插槽类型为 AMAZON.NUMBER
.
技能构建成功,我打开它 运行 "roll a 20 sided dice",它 运行 是正确的意图请求处理程序,但是当我尝试使用sides
槽,是undefined
。我检查了 JSON 输入面板,我发现它没有被传递:
"intent": {
"name": "rollDice",
"confirmationStatus": "NONE",
"slots": {
"sides": {
"name": "sides",
"confirmationStatus": "NONE"
}
}
}
这是我处理 rollDice
意图的代码:
module.exports = ({ store, slot }) => {
const sideCount = +slot('sides', 6);
const roll = 1 + Math.floor(Math.random() * sideCount);
store.state.rolls.push({sideCount, roll});
return `Rolled a ${sideCount} sided dice and got ${roll}. ${slot('sides')}`;
};
我从 Alexa 得到的回复:
Rolled a 6 sided dice and got 4. undefined
我在其他几个意图处理程序中使用 slot
函数没有问题,所以我不认为这是问题所在,但这里以防万一:
slot(name, defaultValue) {
const { intent } = this;
const slot = intent && intent.slots && intent.slots[name];
return slot && slot.value || defaultValue;
}
编辑:
这是 event.request.intent
在我的 Lambda 函数中 运行 和 roll a 20 sided dice
:
{
"name": "rollDice",
"confirmationStatus": "NONE",
"slots": {
"sides": {
"name": "sides",
"confirmationStatus": "NONE"
}
}
}
当您使用 alexa 进行测试时,您必须考虑到您正在测试语音服务并且您正在模拟语音而不是文本。你不能在身体上说 "roll a 20 sided dice"。所以如果你想掷一个 20 面的骰子,你必须说 "roll a twenty sided dice" 因为这就是你说数字 20 的方式。