DialogFlow v2访问令牌无法生成

时间:2018-05-31 13:12:11

标签: javascript node.js google-cloud-platform google-cloud-storage dialogflow

对于版本1,这是我用来与DialogFlow Api进行通信的方式!

fetch(configs.baseUrl + "query?v=20150910", {
    body: JSON.stringify({query: text, lang: "en", sessionId: "somerandomthing"}),
    headers: {
        'content-type': 'application/json',
        "Authorization": "Bearer " + configs.accessToken,
    },
    method: 'POST',
})
    .then(response => response.json())
    .then(data => {
        console.log(data.result.fulfillment.speech);
        return data.result.fulfillment.speech;
    })
    .catch(error => console.error(error))

我只需将访问令牌传递到标题中即可!

我不知道如何使用DialogFlow v2使这个代码工作,我陷入访问令牌,我的V2代理我不能再看到访问令牌,而是我有一个项目ID和服务帐户。

我设法从谷歌控制台创建服务密钥并激活通过gcloud但我不知道从哪里获取或如何生成此访问令牌,或者我是否需要访问令牌到v2,如果没有,我该如何处理此?

非常感谢一个工作的例子。

注意我已经下载了这个包含这些数据的文件,并在gcloud中使用了这个文件,它说服务激活smth但是接着是什么? 这就是全部?接下来该怎么做才能对V2 DialogFlow进行http调用。

{
  "type": "service_account",
  "project_id": "xxxx",
  "private_key_id": "xxxx",
  "private_key": "-----BEGIN PRIVATE KEY-----xxxx",
  "client_email": "xxxx",
  "client_id": "xxxx",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dialogflow-client%40xxxx"
}

3 个答案:

答案 0 :(得分:1)

你做了很多正确的事,但你可能想要使用Dialogflows Node.js client SDK。实例化客户端时,这些SDK会自动读取身份验证JSON文件(请参阅Github上的the example,该文件由... = new dialogflow.SessionsClient()读取)。

答案 1 :(得分:0)

答案 2 :(得分:0)

下面是使用Node.js创建DialogFlow V2访问令牌的另一个示例。下面代码中使用的库是google-oauth-jwt

const googleAuth = require('google-oauth-jwt');

function generateAccessToken() {
 return new Promise((resolve) => {
  googleAuth.authenticate(
   {
    email: <client_email>,
    key: <private_key>,
    scopes: 'https://www.googleapis.com/auth/cloud-platform',
   },
   (err, token) => {
    resolve(token);
   },
  );
 });
}

您可以从已从Google Cloud Platform项目的服务帐户页面下载的JSON密钥文件中找到client_emailprivate_key。如果您不确定如何/在何处下载,可以查看我的博文here

要找出您可能需要的范围,可以查看DialogFlow V2 REST API文档page