Я не могу получить информацию с помощью метода "DialogflowApp.getUser"
https://developers.google.com/actions/reference/nodejs/ApiAiApp
Я хотел бы получить токен доступа в Dialogflow, обратившись к вышеуказанному официальному сайту, но результат выполнения DialogflowApp.getUser()
будет нулевым
Установлена связь с учетной записью, и на стороне клиента она сертифицирована с учетной записью Google.AssistantToAgentDebug.assistantToAgentJson.user
на вкладке ОТЛАДКА в DialogFlow Simulator содержится значение.
Кроме того, я могу получить токен доступа, обратившись 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"
}
}
2 ответа
Проблема в том, что при вызове конструктора ожидаются параметры request
а также response
, Таким образом, вы должны написать строку как
const app = new App({request:req, response:res});
Вам нужно использовать getUser(). AccesToken следующим образом:
let accestoken = app.getUser().accessToken;