如何使用 gcloud 凭据和 Dialogflow API 进行身份验证

How authenticate with gcloud credentials an Dialogflow API

我有一个向 Dialogflow 代理发出请求的 Node JS 应用程序。我实际上使用了基于临时令牌的请求,但我如何更改它以通过 google 服务凭据来实现? (https://cloud.google.com/docs/authentication/getting-started)。我创建了一个凭据(添加了账单)和 service_account json 文件。

我想在节点 (https://www.npmjs.com/package/dialogflow) 中使用 Dialogflow 包,但我不明白如何将它与 json 文件一起使用。

const projectId = 'ENTER_PROJECT_ID_HERE'; 
const sessionId = 'quickstart-session-id';
const query = 'hello';
const languageCode = 'en-US';

// Instantiate a DialogFlow client.
const dialogflow = require('dialogflow');
const sessionClient = new dialogflow.SessionsClient();

// Define session path
const sessionPath = sessionClient.sessionPath(projectId, sessionId);

包示例使用项目 ID 和会话 ID,但不像 google 服务示例那样使用 json 文件(或使用像 这样的大查询) .不管怎样,我在哪里可以获得这个项目和会话 ID?

拜托,如果有人可以帮助我或指导如何以更好的方式做到这一点?。谢谢

这是使用服务帐户代码示例的方法,它是在 kotlin 中的,绝对可以翻译成 node.js sdk

    val credentialsProvider = FixedCredentialsProvider.create(ServiceAccountCredentials
            .fromStream(Classes.getResourceAsStream([YOUR JSON CONFIG FILE GOES HERE])))
    val sessionsSettings = SessionsSettings.newBuilder().setCredentialsProvider(credentialsProvider).build()
    sessionsClient = SessionsClient.create(sessionsSettings)

您可以从 Dialogflow 设置中获取服务帐户,单击服务帐户链接,然后在您的云控制台中创建一个 json 配置文件。

首先您必须创建一个服务帐户并在您的本地系统上下载 .JSON 格式的凭据文件。 现在,可以通过三种方式在 dialogflow 库中使用 authentication/authorisation 的凭据。

  • 方法一

    创建一个环境变量GOOGLE_APPLICATION_CREDENTIALS,它的值应该是JSON凭据file.By这个方法的绝对路径,google 库将隐式加载文件并使用该凭据进行身份验证。我们不需要在与此凭据文件相关的代码中执行任何操作。

    export GOOGLE_APPLICATION_CREDENTIALS="<absolute-path-of-json-file>" # for UNIX,LINUX
    # then run your code, google library will pick credentials file and loads it automatically
    
  • 方法二

    假设,您知道 JSON 文件的绝对路径,并将其作为值放在下面的 credentials_file_path 变量片段中。

    // You can find your project ID in your Dialogflow agent settings
    const projectId = '<project-id-here>';
    const sessionId = '<put-chat-session-id-here>'; 
    // const sessionid = 'fa2d5904-a751-40e0-a878-d622fa8d65d9'
    const query = 'hi';
    const languageCode = 'en-US';
    const credentials_file_path = '<absolute-file-path-of-JSON-file>';
    
    // Instantiate a DialogFlow client.
    const dialogflow = require('dialogflow');
    
    const sessionClient = new dialogflow.SessionsClient({
      projectId,
      keyFilename: credentials_file_path,
    });
    

  • 方法三

    你可以记下project_idclient_emailprivate_key 来自 JSON,在您的代码中明确使用它们进行身份验证。

// You can find your project ID in your Dialogflow agent settings
const projectId = '<project-id-here>';
const sessionId = '<put-chat-session-id-here>';
// const sessionid = 'fa2d5904-a751-40e0-a878-d622fa8d65d9'
const query = 'hi';
const languageCode = 'en-US';
const credentials = {
  client_email: '<client-email-here>',
  private_key:
    '<private-key-here>',
};
// Instantiate a DialogFlow client.
const dialogflow = require('dialogflow');

const sessionClient = new dialogflow.SessionsClient({
  projectId,
  credentials,
});