我有一个名为“rollDice”的意图的 Alexa 技能。意图有两种表达方式:
roll a {sides} sided dice
roll a {sides} sided die
sides
下面用 slot type 定义AMAZON.NUMBER
。
技能构建成功,我打开它并运行“掷 20 面骰子”,它运行正确的意图请求处理程序,但是当我尝试使用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"
}
}
}