У меня есть навык Alexa с целью под названием «rollDice». В намерении есть два высказывания:
roll a {sides} sided dice
roll a {sides} sided die
sides
определяется ниже с помощью типа слота 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')}`;
};
И ответ, который я получаю от Алексы:
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
в моей лямбда-функции после запуска с roll a 20 sided dice
:
{
"name": "rollDice",
"confirmationStatus": "NONE",
"slots": {
"sides": {
"name": "sides",
"confirmationStatus": "NONE"
}
}
}