Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用gcloud凭据对Dialogflow API进行身份验证_Node.js_Dialogflow Es_Service Accounts - Fatal编程技术网

Node.js 如何使用gcloud凭据对Dialogflow API进行身份验证

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

我有一个NodeJS应用程序,可以向Dialogflow代理发出请求。我实际上使用了一个临时的基于令牌的请求,但是如何通过google服务凭据来更改它呢?(). 我创建了一个凭证(添加了账单)和服务账户json文件

我想在node()中使用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库中使用该凭据进行身份验证/授权

  • 方法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请求吗??