0

https://developers.google.com/actions/reference/nodejs/ApiAiApp

我想参考上面的官​​网获取Dialogflow上的access token,但是执行结果DialogflowApp.getUser()会为null。

帐户链接已设置,并在客户端通过 Google 帐户进行认证。 AssistantToAgentDebug.assistantToAgentJson.userDialogFlow Simulator 的 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"
  }
}
4

2 回答 2

1

问题是对构造函数的调用期望参数被命名requestresponse. 所以你应该把这一行写成

const app = new App({request:req, response:res});
于 2017-12-11T11:11:59.297 回答
0

您需要像这样使用 getUser().accesToken :

let accestoken = app.getUser().accessToken;
于 2017-12-11T11:49:19.110 回答