Я следовал за примерами GitHub для создания, перечисления и добавления документов в базу знаний Dialogflow. Но, используя эти NodeJS примеры, я получаю ошибки, которые требуют проверки подлинности. И когда я пытаюсь добавить некоторые сеансы (на основе обычного сеансового клиента из Dialogflow), я получаю отказ в разрешении IAM.
Как программно протестировать эти образцы из моей локальной NodeJS среды?
Следующий код просит меня выполнить аутентификацию
async function listKnowledgeBases(projectId) {
// [START dialogflow_list_knowledge_base]
// Imports the Dialogflow client library
const dialogflow = require('dialogflow').v2beta1;
// Instantiate a DialogFlow KnowledgeBasesClient.
const client = new dialogflow.KnowledgeBasesClient({
projectPath: projectId,
});
const formattedParent = client.projectPath(projectId);
const [resources] = await client.listKnowledgeBases({
parent: formattedParent,
});
resources.forEach(r => {
console.log(`displayName: ${r.displayName}`);
console.log(`name: ${r.name}`);
});
// [END dialogflow_list_knowledge_base]
}
Ошибка
Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
at GoogleAuth.getApplicationDefaultAsync (/Users/c024323/Documents/Workspace/JSWorkspace/HelpCenterPOC/node_modules/google-gax/node_modules/google-auth-library/build/src/auth/googleauth.js:160:19)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async GoogleAuth.getClient (/Users/c024323/Documents/Workspace/JSWorkspace/HelpCenterPOC/node_modules/google-gax/node_modules/google-auth-library/build/src/auth/googleauth.js:502:17)
at async GrpcClient._getCredentials (/Users/c024323/Documents/Workspace/JSWorkspace/HelpCenterPOC/node_modules/google-gax/build/src/grpc.js:92:24)
at async GrpcClient.createStub (/Users/c024323/Documents/Workspace/JSWorkspace/HelpCenterPOC/node_modules/google-gax/build/src/grpc.js:213:23)
Следующий код дает ошибку отклоненного разрешения IAM
const createKnowledgeBase = async (projectId, displayName) => {
// [START dialogflow_create_knowledge_base]
// Imports the Dialogflow client library
const dialogflow = require('dialogflow').v2beta1;
const sessionId = require('uuid/v1')();
let config = {
credentials: {
private_key: service_key.private_key,
client_email: service_key.client_email
}
};
// // Create a new session
// const sessionClient = new dialogflow.SessionsClient(config);
// const sessionPath = sessionClient.sessionPath(projectId, sessionId);
// Instantiate a DialogFlow client.
const client = new dialogflow.KnowledgeBasesClient(config);
const formattedParent = client.projectPath(projectId);
const knowledgeBase = {
displayName: displayName,
};
const request = {
parent: formattedParent,
knowledgeBase: knowledgeBase,
};
const [result] = await client.createKnowledgeBase(request);
console.log(`Name: ${result.name}`);
console.log(`displayName: ${result.displayName}`);
return result;
// [END dialogflow_create_knowledge_base]
};
Ошибка
{"code":7,"details":"IAM permission 'dialogflow.knowledgeBases.create' on 'projects/XXXXX' denied.","metadata":{"internalRepr":{},"options":{}}}