Как получить доступ к API Dialogflow V2 с веб-страницы?

У меня есть веб-страница, где я хочу использовать диалоговый чат chatflow. Это настраиваемое окно чата, поэтому я не хочу использовать интеграцию в один клик. Я могу получить доступ к агенту чата V1 API, используя javascript/ajax (передав маркер клиентского доступа в заголовок запроса).

Но я не знаю, как это сделать в V2 API. Документация по диалоговым процессам мне не понятна (я установил Аутентификацию, ссылаясь на эту ссылку. Я не знаю, как действовать дальше). Я тоже не знаком с облаком Google. Таким образом, рабочий пример или пошаговое руководство по доступу к руководству по API будет высоко оценено.

Ответ 1

почему вы не используете клиент узла для диалогового окна, если вы в порядке с использованием узла https://github.com/dialogflow/dialogflow-nodejs-client-v2

вы можете отправлять запросы в приложение с диалоговым потоком и получать ответ от этого сегмента кода. идентификатор сеанса должен быть уникальным для каждого пользователя

// You can find your project ID in your Dialogflow agent settings
const projectId = 'ENTER_PROJECT_ID_HERE'; //https://dialogflow.com/docs/agents#settings
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,
    },
  },
};

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

у них также есть java-клиент, а также https://github.com/dialogflow/dialogflow-java-client-v2

Ответ 2

Вы можете использовать API Dialogflow Rest. Вам необходимо сгенерировать токен доступа с помощью Google cloud sdk (область действия: облачная платформа, диалоговое окно)

  public df_client_call(request) {
    var config = {
      headers: {
        'Authorization': "Bearer " + this.accessToken,
        'Content-Type': 'application/json; charset=utf-8'
      }
    };   
   return this.http.post(
      'https://dialogflow.googleapis.com/v2/projects/' + environment.project_id +
      '/agent/sessions/' + sessionId + ':detectIntent',
      request,
      config
    )
  }

В запросе вы должны пройти,

{
    queryInput: {
        text: {
            text: action.payload.text,
            languageCode: 'en-US',
        },
    }
}

для запуска события :,

    {
        queryInput: {
            event: {
                name: action.payload.event,
                languageCode: 'en-US',
            },
        }
    }

sessionId => уникальный идентификатор для вашего пользователя