我有一个名为“rollDice”的意图的Alexa技能。意图有两个话语:
nil
roll a {sides} sided dice
roll a {sides} sided die
在下面定义了广告位类型sides
。
技能构建成功,我打开它并运行“滚动20个骰子”,它运行正确的意图请求处理程序,但当我尝试使用AMAZON.NUMBER
插槽的值时,它是{ {1}}。我检查了JSON输入面板,我发现它没有被传递:
sides
以下是处理undefined
意图的代码:
"intent": {
"name": "rollDice",
"confirmationStatus": "NONE",
"slots": {
"sides": {
"name": "sides",
"confirmationStatus": "NONE"
}
}
}
我从Alexa得到的回复:
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')}`;
};
函数没有问题,所以我不认为这是问题,但这只是以防万一:
Rolled a 6 sided dice and got 4. undefined
编辑:
使用slot
后,这是我的Lambda函数中slot(name, defaultValue) {
const { intent } = this;
const slot = intent && intent.slots && intent.slots[name];
return slot && slot.value || defaultValue;
}
的值:
event.request.intent
答案 0 :(得分:1)
当您使用alexa进行测试时,您必须考虑您正在测试VOICE服务并且您正在模拟SPEECH而不是文本。你不能说"滚动20面骰子"物理。因此,如果你的意思是掷20个骰子,你必须说"滚动一个二十面骰子"因为这就是你怎么说数字20。