如何使用 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_id、client_email和private_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,
});
我有一个向 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 文件(或使用像
拜托,如果有人可以帮助我或指导如何以更好的方式做到这一点?。谢谢
这是使用服务帐户代码示例的方法,它是在 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_id、client_email和private_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,
});