Как аутентифицировать с помощью учетных данных gcloud API Dialogflow - PullRequest
0 голосов
/ 15 мая 2018

У меня есть приложение Node JS, которое отправляет запросы агенту Dialogflow.Я на самом деле использую запрос, основанный на временных токенах, но как я могу изменить это, чтобы сделать это через учетные данные службы Google?(https://cloud.google.com/docs/authentication/getting-started). У меня созданы учетные данные (с добавлением биллинга) и файл service_account json.

Я хотел бы использовать пакет Dialogflow в узле (https://www.npmjs.com/package/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);

В примере пакета используется идентификатор проекта и идентификатор сеанса, но не с файлом json, как на примере служб Google (или с использованием большихзапрос типа Как пройти проверку подлинности с помощью большого запроса gcloud с использованием файла учетных данных json? ). В любом случае, где я могу получить этот проект и идентификатор сеанса?

Пожалуйста, если кто-то может мне помочь или направитьКак сделать это лучше? Спасибо

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Сначала необходимо создать учетную запись службы и загрузить файл учетных данных в формате .JSON в локальной системе.Теперь есть три способа использования этих учетных данных для аутентификации / авторизации в библиотеке диалогового потока.

  • Метод 1

    Создание переменной среды GOOGLE_APPLICATION_CREDENTIALS и его значением должен быть абсолютный путь к этому файлу учетных данных JSON. При использовании этого метода библиотека Google неявно загружает файл и использует эти учетные данные для аутентификации.Нам не нужно ничего делать внутри нашего кода, относящегося к этому файлу учетных данных.

    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
    
  • Метод 2

    Предположим, вы знаете,абсолютный путь к вашему файлу JSON и укажите его в качестве значения в приведенном ниже фрагменте переменной credentials_file_path .

    // You can find your project ID in your Dialogflow agent settings
    const projectId = '<project-id-here>';
    const sessionId = '<put-chat-session-id-here>'; 
    // const sessionid = 'fa2d5904-a751-40e0-a878-d622fa8d65d9'
    const query = 'hi';
    const languageCode = 'en-US';
    const credentials_file_path = '<absolute-file-path-of-JSON-file>';
    
    // Instantiate a DialogFlow client.
    const dialogflow = require('dialogflow');
    
    const sessionClient = new dialogflow.SessionsClient({
      projectId,
      keyFilename: credentials_file_path,
    });
  • Метод 3

    Вы можете записать project_id , client_email и private_key из JSON, используйте их в своем коде для явной аутентификации.

// You can find your project ID in your Dialogflow agent settings
const projectId = '<project-id-here>';
const sessionId = '<put-chat-session-id-here>';
// const sessionid = 'fa2d5904-a751-40e0-a878-d622fa8d65d9'
const query = 'hi';
const languageCode = 'en-US';
const credentials = {
  client_email: '<client-email-here>',
  private_key:
    '<private-key-here>',
};
// Instantiate a DialogFlow client.
const dialogflow = require('dialogflow');

const sessionClient = new dialogflow.SessionsClient({
  projectId,
  credentials,
});
0 голосов
/ 17 мая 2018

Вот как вы можете это сделать с помощью примера кода учетной записи службы, который находится в 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 в облачной консоли ur.

...