Dialogflow NodeJS Знание разрешения IAM - PullRequest
0 голосов
/ 04 марта 2020

Я следовал за примерами 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":{}}}

1 Ответ

0 голосов
/ 04 марта 2020

Проблема была с ключом учетных данных. Это было для клиента, а не для администратора. Создав ключ роли администратора, я смог создать КБ.

...