Я не могу получить информацию с помощью метода "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;
Другие вопросы по тегам