对话流 v2 访问令牌无法生成



在版本 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"
}

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

下面是使用 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。如果您不确定如何/在哪里下载它,您可以在此处查看我的博客文章。

要了解您可能需要哪个范围,您可以查看 DialogFlow V2 REST API 文档页面。

您可能对此感兴趣:

https://cloud.google.com/docs/authentication/api-keys

最新更新