Node.js 如何使用gcloud凭据对Dialogflow API进行身份验证
我有一个NodeJS应用程序,可以向Dialogflow代理发出请求。我实际上使用了一个临时的基于令牌的请求,但是如何通过google服务凭据来更改它呢?(). 我创建了一个凭证(添加了账单)和服务账户json文件 我想在node()中使用Dialogflow包,但我不知道如何在json文件中使用它Node.js 如何使用gcloud凭据对Dialogflow API进行身份验证,node.js,dialogflow-es,service-accounts,Node.js,Dialogflow Es,Service Accounts,我有一个NodeJS应用程序,可以向Dialogflow代理发出请求。我实际上使用了一个临时的基于令牌的请求,但是如何通过google服务凭据来更改它呢?(). 我创建了一个凭证(添加了账单)和服务账户json文件 我想在node()中使用Dialogflow包,但我不知道如何在json文件中使用它 const projectId = 'ENTER_PROJECT_ID_HERE'; const sessionId = 'quickstart-session-id'; const query
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库中使用该凭据进行身份验证/授权
- 方法1
创建一个环境变量GOOGLE\u APPLICATION\u CREDENTIALS,它的值应该是该JSON凭据文件的绝对路径。通过此方法,GOOGLE library将隐式加载该文件并使用该凭据进行身份验证。我们不需要在代码中执行与此凭据文件相关的任何操作
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
export GOOGLE_APPLICATION_CREDENTIALS=”“#针对UNIX、LINUX #然后运行您的代码,google库将自动选择凭证文件并加载它
- 方法2
假设您知道JSON文件的绝对路径,并将其作为值放入下面的凭证\u文件\u路径变量片段中。
//您可以在Dialogflow agent设置中找到您的项目ID 常量projectId=“”; const sessionId=''; //const sessionid='fa2d5904-a751-40e0-a878-d622fa8d65d9' 常量查询='hi'; 常量语言代码='en US'; 常量凭据\u文件\u路径=“”; //实例化DialogFlow客户端。 const dialogflow=require('dialogflow'); const sessionClient=new dialogflow.sessionClient({ 投射的, keyFilename:凭据\u文件\u路径,
});代码>我已经使用服务帐户完成了,但是使用Java/kotlin如果这对您有帮助,那么我可以共享代码。。我肯定JS也有类似的东西是的,当然请!谢谢!!,但是从那里我得到了“const sessionId='fa2d5904-a751-40e0-a878-d622fa8d65d9';”?。json文件附带以下值:类型、项目id、私钥id、私钥、客户端电子邮件、客户端id、身份验证uri、令牌uri、身份验证提供者证书url和客户端证书url。@Sebastián会话id您可以设置任何想要区分用户聊天的任意值。从JSON文件中,您只考虑PurrestyId、CeleTyEmail和PrimeType密钥,如果使用方法3如何测试和运行该方法3?我们应该做http请求吗??