2017-12-11 11 views
0

https://developers.google.com/actions/reference/nodejs/ApiAiApp나는 "DialogflowApp.getUser"방법과 정보를 얻을 수

나는 위의 공식 웹 사이트를 참조하여 Dialogflow에 액세스 토큰을 얻기 위해 싶습니다

하지만 DialogflowApp.getUser()의 실행 결과는 널 (NULL)이 될 것입니다.

계정 연결이 설정되어 있으며 클라이언트 측에서 Google 계정 인증을 받았습니다. AssistantToAgentDebug.assistantToAgentJson.user에는 DialogFlow Simulator의 디버그 탭에 값이 들어 있습니다.

또한 요청 본문에 req.body.originalRequest.data.user.accessToken 변수를 참조하여 액세스 토큰을 얻을 수 있습니다.

DialogflowApp.getUser()으로 사용자 정보를 얻고 싶습니다. 아래 정의에 실수가 있습니까?

* Fullfilment를 사용하면 논리가 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!' })); 
}; 

을하는 index.js * 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" 
    } 
} 

답변

1

문제는 생성자에 대한 호출이 매개 변수가 requestresponse 이름을 기대한다는 것입니다. . 그래서 당신은 당신이 같은 인 getUser() accesToken를 사용할 필요가

const app = new App({request:req, response:res}); 
+0

감사합니다,이 일! 도움 주셔서 감사합니다. – Masa

+0

다행이 당신을 도왔습니다! 응답을 upvoting 및/또는 수락 항상 감사합니다. – Prisoner

0

로 라인을 작성해야 :

let accestoken = app.getUser().accessToken; 
+0

그들은'getUser()'가 null을 반환한다고보고하고 있습니다. – Prisoner