Gra*_*ray 8 node.js dialogflow-es
是否存在将Dialogflow代理连接到我的node.js
代码的简单方法?当我使用此代码与Dialogflow代理的设置页面中的正确projectID时,我有以下错误:
错误:获取应用程序默认凭据时出现意外错误:无法加载默认凭据.有关详细信息,请浏览到https://developers.google.com/accounts/docs/application-default-credentials.
const sessionClient = new dialogflow.SessionsClient();
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
Run Code Online (Sandbox Code Playgroud)
我访问了该页面,但是我想要的是我认为很混乱(他们引用其他API和很多设置),我该如何解决这个问题?
我想这样做从文件中获取信息并加载所有信息而不安装API或其他一些...
Mar*_*nde 11
它没有很好的文档记录,但最简单的身份验证方法是使用Google云平台控制台上提供的JSON文件.
const sessionClient = new dialogflow.SessionsClient({
keyFilename: '/path/to/google.json'
});
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
Run Code Online (Sandbox Code Playgroud)
这也适用于所有其他客户.ContextsClients
,EntityTypesClient
等等.
我正在编写代码,这对我有用。请按照参考链接 2 中提供的所有步骤进行操作,出于编码目的,您可以使用提供的代码段。
我还添加了 Google Cloud Oauth 的示例 JSON
参考:
//Downloaded JSON format
{
"type": "service_account",
"project_id": "mybot",
"private_key_id": "123456asd",
"private_key": "YOURKEY",
"client_email": "yourID@mybot.iam.gserviceaccount.com",
"client_id": "098091234",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/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/yourID%40mybot.iam.gserviceaccount.com"
}
//------*********************---------------------------
//
const projectId = 'mybot';
//https://dialogflow.com/docs/agents#settings
// generate session id (currently hard coded)
const sessionId = '981dbc33-7c54-5419-2cce-edf90efd2170';
const query = 'hello';
const languageCode = 'en-US';
// Instantiate a DialogFlow client.
const dialogflow = require('dialogflow');
let privateKey = 'YourKey';
// as per goolgle json
let clientEmail = "yourID@mybot.iam.gserviceaccount.com";
let config = {
credentials: {
private_key: privateKey,
client_email: clientEmail
}
}
const sessionClient = new dialogflow.SessionsClient(config);
// Define session path
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
// The text query request.
const request = {
session: sessionPath,
queryInput: {
text: {
text: query,
languageCode: languageCode,
},
},
};
// Send request and log result
sessionClient
.detectIntent(request)
.then(responses => {
console.log('Detected intent');
const result = responses[0].queryResult;
console.log(` Query: ${result.queryText}`);
console.log(` Response: ${result.fulfillmentText}`);
if (result.intent) {
console.log(` Intent: ${result.intent.displayName}`);
} else {
console.log(` No intent matched.`);
}
})
.catch(err => {
console.error('ERROR:', err);
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3434 次 |
最近记录: |