Я разрабатываю навык для Alexa, используя их шаблон SpaceGeek. Сам шаблон очень прост, но я пытаюсь улучшить его на , убедившись, что используемые факты не появятся снова в том же сеансе. Поэтому I удалите элемент после его использования. Однако теперь проблема заключается в том, что те элементы, которые были удалены в сеансе, даже не появятся в будущих сеансах. Итак, я предполагаю, что глобальная переменная остается в бэкэнд и, таким образом, создает массив копий, как показано ниже. Но это все равно не сработает. Поэтому, после использования всех фактов один раз, я всегда буду получать «Это все факты, которые мы имеем сейчас». Даже если я начну новую сессию . Любая помощь будет оценена по достоинству.Как использовать переменные сеанса в Alexa Skills?
function handleNewFactRequest(response) {
var COPY_FACTS= SOME_FACTS.splice(0);
if(COPY_FACTS.length>0){
var factIndex = Math.floor(Math.random() * COPY_FACTS.length);
var fact = COPY_FACTS[factIndex];
// Create speech output
var speechOutput = "Here's your random fact: " + fact + " would you like more?";
var repromptOutput = "would you like more random facts?";
COPY_FACTS.splice(factIndex, 1);
response.ask(speechOutput, repromptOutput);
}else{
var speechOutput = "That's all the facts we have for now.";
response.tell(speechOutput);
}
}
Это будет работать даже хуже, чем код OP. Поскольку вызов 'splice()' не присваивается переменной, изменение его для вызова 'slice()' приведет к созданию копии массив с удаленным элементом, который будет немедленно оставлен. –
Мой комментарий был направлен только на строку кода, которая специально использовала 'splice (0)' которая была 'var COPY_FACTS = SOME_FACTS.splice (0);' Изменение этой строки на 'var COPY_FACTS = SOME_FACTS.slice();' будет решить проблему из-за того, что исходный массив фактов 'SOME_FACTS' становится пустым. Я должен был быть яснее, – GregI
Это справедливо, но это все равно никоим образом не приведет к тому, что удаленные вопросы будут сохраняться между ответами. Это решает половину проблемы, но не очень важную половину. –