Alexa完全匹配样本话语无法通过槽值

时间:2018-04-17 20:30:21

标签: javascript alexa alexa-skills-kit alexa-skill alexa-slot

我有一个名为“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

1 个答案:

答案 0 :(得分:1)

当您使用alexa进行测试时,您必须考虑您正在测试VOICE服务并且您正在模拟SPEECH而不是文本。你不能说"滚动20面骰子"物理。因此,如果你的意思是掷20个骰子,你必须说"滚动一个二十面骰子"因为这就是你怎么说数字20。