【发布时间】:2018-12-10 17:00:42
【问题描述】:
目前我正在尝试开发一个动作。
我正在努力实现重用意图。具体来说,就是说助理给我一个清单的前三项,如果我要求更多,那么它应该给我清单的后三项。
我实现了在本地工作的逻辑,但遗憾的是我总是从列表中获得前三个项目。因此,我尝试使用上下文,我想将索引作为参数传递,在这里我遇到了问题。云功能日志总是给我:
无法读取未定义的属性“参数”。
我正在使用 dialog v2 api 和 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']
【问题讨论】:
-
应该是 conv.contexts.get('movieCtx')
-
谢谢!这实际上是真的,我纠正了它,但仍然无法正常工作:(
-
这一行也让 index = movieCtx.parameters.index
-
我也试过了,但仍然遇到同样的错误。如果我正在模拟该操作,我会收到以下错误:由于语音响应为空,无法将 Dialogflow 响应解析为 AppResponse。云函数给我参数错误。
标签: dialogflow-es actions-on-google