Пример nodejs для определения намерений в диалоговом потоке облака Google не работает - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь реализовать очень простую интеграцию агента диалогового потока с nodejs.

Вот что я сделал до сих пор

  • Я следовал коду из Обнаружение намерений
  • Я добавил файл личного ключа учетной записи службы .json на свой сервер.
  • Я добавил переменную среды GOOGLE_APPLICATION_CREDENTIALS с путем к моему файлу .json личного ключа.

Вот код, который я пытаюсь запустить прямо сейчас:

require('dotenv').config()
const projectId = 'gg-chatbot-216808'; 
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);

// The text query request.
const request = {
    session: sessionPath,
    queryInput: {
        text: {
            text: query,
            languageCode: languageCode,
        },
    },
};

// This prints the private key path correctly.
console.log(process.env.GOOGLE_APPLICATION_CREDENTIALS);

// 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);
    });

Тогда я получаю эту ошибку в консоли при запуске этого файла

Auth error:Error: invalid_user: Robot is disabled.
ERROR: { Error: 14 UNAVAILABLE: Getting metadata from plugin failed with error: invalid_user: Robot is disabled.
    at Object.exports.createStatusError (/var/www/html/google_auth/node_modules/grpc/src/common.js:87:15)
    at Object.onReceiveStatus (/var/www/html/google_auth/node_modules/grpc/src/client_interceptors.js:1188:28)
    at InterceptingListener._callNext (/var/www/html/google_auth/node_modules/grpc/src/client_interceptors.js:564:42)
    at InterceptingListener.onReceiveStatus (/var/www/html/google_auth/node_modules/grpc/src/client_interceptors.js:614:8)
    at callback (/var/www/html/google_auth/node_modules/grpc/src/client_interceptors.js:841:24)
  code: 14,
  metadata: Metadata { _internal_repr: {} },
  details: 'Getting metadata from plugin failed with error: invalid_user: Robot is disabled.' }

1 Ответ

0 голосов
/ 19 сентября 2018

Я также столкнулся с аналогичной проблемой для моего углового бота.

Вместо того, чтобы использовать google_credentials из файла json, я создал объект с private_key, client_email {эти значения могут быть взяты из файла личного ключа учетной записи службы.json} и передал объект при настройке клиента сеанса.

var config = {
  credentials: {
    private_key: "YOUR_PRIVATE_KEY",
    client_email: "YOUR_CLIENT_EMAIL"
  }
}

const sessionClient = new dialogflow.SessionsClient(config);

note : скопировать полную строку private_key из .json.Это начнется как "-----BEGIN PRIVATE KEY-----\n......".

Кроме того, в GCP перейдите в проект-> IAM, затем попробуйте установить роль для службы как DIALOGLOW API ADMIN.Проверьте, работает ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...