我无法使用 "DialogflowApp.getUser" 方法获取信息
I can not get information with "DialogflowApp.getUser" method
https://developers.google.com/actions/reference/nodejs/ApiAiApp
我想参考上述官网获取Dialogflow上的access token,但是DialogflowApp.getUser()
执行结果为null
帐户链接已设置,并在客户端通过 Google 帐户认证。
AssistantToAgentDebug.assistantToAgentJson.user
DialogFlow 模拟器的 DEBUG 选项卡上包含一个值。
此外,我可以通过在请求正文中引用 req.body.originalRequest.data.user.accessToken
变量来获取访问令牌。
我想通过DialogflowApp.getUser()
获取用户信息,
下面的定义有错吗?
*使用Fullfilment,逻辑在index.js中描述。
*index.js
'use strict';
const App = require('actions-on-google').DialogflowApp;
exports.testMethod = (req, res) => {
// result is null
const app = new App({req, res});
let user = app.getUser();
console.log('User is ' + user);
// Access token can be acquired
let accessToken = req.body.originalRequest.data.user.accessToken;
console.log('accessToken is ' + accessToken);
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ 'speech': 'success!', 'displayText': 'success!' }));
};
*package.json
{
"name": "testMethod",
"engines": {
"node": "~4.2"
},
"dependencies": {
"actions-on-google": "^1.0.0",
"firebase-admin": "^4.2.1",
"firebase-functions": "^0.5.7"
}
}
问题是对构造函数的调用期望参数被命名为 request
和 response
。所以你应该把这一行写成
const app = new App({request:req, response:res});
您需要像这样使用 get User().access Token:
let accestoken = app.getUser().accessToken;
https://developers.google.com/actions/reference/nodejs/ApiAiApp
我想参考上述官网获取Dialogflow上的access token,但是DialogflowApp.getUser()
执行结果为null
帐户链接已设置,并在客户端通过 Google 帐户认证。
AssistantToAgentDebug.assistantToAgentJson.user
DialogFlow 模拟器的 DEBUG 选项卡上包含一个值。
此外,我可以通过在请求正文中引用 req.body.originalRequest.data.user.accessToken
变量来获取访问令牌。
我想通过DialogflowApp.getUser()
获取用户信息,
下面的定义有错吗?
*使用Fullfilment,逻辑在index.js中描述。
*index.js
'use strict';
const App = require('actions-on-google').DialogflowApp;
exports.testMethod = (req, res) => {
// result is null
const app = new App({req, res});
let user = app.getUser();
console.log('User is ' + user);
// Access token can be acquired
let accessToken = req.body.originalRequest.data.user.accessToken;
console.log('accessToken is ' + accessToken);
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ 'speech': 'success!', 'displayText': 'success!' }));
};
*package.json
{
"name": "testMethod",
"engines": {
"node": "~4.2"
},
"dependencies": {
"actions-on-google": "^1.0.0",
"firebase-admin": "^4.2.1",
"firebase-functions": "^0.5.7"
}
}
问题是对构造函数的调用期望参数被命名为 request
和 response
。所以你应该把这一行写成
const app = new App({request:req, response:res});
您需要像这样使用 get User().access Token:
let accestoken = app.getUser().accessToken;