В настоящее время я пытаюсь разработать действие.
Я пытаюсь добиться повторного использования намерения.Говоря конкретно, это означает, что помощник должен дать мне первые три пункта списка, а если я попрошу еще, то он должен дать мне следующие три пункта списка.
Я реализовал логику, которая работает локально, но, к сожалению, я всегда получал первые три элемента из списка.Поэтому я попытался использовать контекст, где я хочу передать индекс в качестве параметра, и здесь я столкнулся с проблемой.Журналы облачной функции всегда дают мне:
Невозможно прочитать свойства 'параметров' из неопределенного.
Я использую API-интерфейс v2 и действия в Google SDK.Следующая ссылка предоставляет пример того, как реализовать контекст, и я не вижу большой разницы там.https://developers.google.com/actions/reference/nodejsv2/overview
Код, написанный для него, выглядит следующим образом:
app.intent('Default Welcome Intent', conv => {
conv.ask('Welcome.')
const lifespan = 100;
const parameters = {
index: 0,
};
conv.contexts.set('movieCtx', lifespan, parameters);
});
app.intent('New Cinema Movies Intent', async conv => {
let movieCtx = conv.contexts.get('movieCtx');
let index = movieCtx.parameters[index]
let movieRepository = new MovieRepository();
movieRepository.index = index;
await movieRepository.fetchNextTitle(3).then(function(titles) {
movieCtx.parameters[index] = movieRepository.index;
conv.ask('The 3 movies are:' + titles.join(', '))
return true;
}).catch(function(err) {
console.log(err);
return false;
});
})
Мои зависимости:
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"serve": "firebase serve --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"dependencies": {
"actions-on-google": "^2.5.0",
"firebase-admin": "~6.0.0",
"firebase-functions": "^2.0.3",
"pg": "^7.7.1"
},
"devDependencies": {
"eslint": "^4.12.0",
"eslint-plugin-promise": "^3.6.0"
},
"private": true
}
Обновление:
Я также пытался изменить следующие строки, но это не помогло мне:
const parameters = {
movieIndex: 0,
};
let index = movieCtx.parameters['movieIndex']