Проблема Создание документа базы знаний - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь создать статью базы знаний типа EXTRACTIVE_QA, используя пример кода из репозитория nodejs-dialogflow.Однако, когда я пытаюсь создать его с определенным MIME-типом, это терпит неудачу.Какие MIME-типы поддерживаются для EXTRACTIVE_QA?

Я попробовал и текст / обычный текст, и текст / html без удачи.Создание документов типа FAQ не сталкивается с такими же проблемами, и создание документа путем загрузки файла HTML из консоли Dialogflow работает нормально.

async function createDocument(projectId, knowledgeBaseFullName, documentPath) {
  const dialogflow = require('dialogflow').v2beta1;

  // Instantiate a DialogFlow Documents client.
  const client = new dialogflow.DocumentsClient({
    projectId: projectId,
  });

  const request = {
    parent: knowledgeBaseFullName,
    document: {
      knowledgeTypes: ['EXTRACTIVE_QA'],
      displayName: 'test',
      contentUri: documentPath,
      source: 'contentUri',
      mimeType: 'text/html',
    },
  };

  const [operation] = await client.createDocument(request);
  const [response] = await operation.promise();
  console.log(`Document created`);
}

Когда я вызываю эту функцию с путем к файлу HTML иправильное полное имя базы данных и идентификатор проекта, я получаю Error: 3 INVALID_ARGUMENT: Documents of type text/html are not supported for EXTRACTIVE_QA. ошибку обратно.Есть ли способ исправить это или выяснить, какие MIME-типы поддерживаются?

Также несколько связано, но я также не могу создать документы, используя тип источника rawContent.Изменение запроса на:

const request = {
  parent: knowledgeBaseFullName,
  document: {
    knowledgeTypes: ['EXTRACTIVE_QA'],
    displayName: 'test',
    rawContent: base64Content,
    source: 'rawContent',
    mimeType: 'text/html',
  },
};

дает ошибку Error: 3 INVALID_ARGUMENT: None of the source field is defined..

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Цитирую мой комментарий к другому ответу:

rawContent, похоже, реализован в последней версии пакета npm (0.9.1).Ответ @ emilianop11 по-прежнему верен для версии 0.6.0, однако вы должны использовать исходное содержимое (rawContent, переданное в функцию createDocument, а не содержимое в кодировке base64 (переменная base64data).

0 голосов
/ 17 марта 2019

У меня была действительно похожая проблема.Мне нужно было прочитать код библиотеки nodejs, чтобы понять это. Здесь мы можем видеть, что rawContent еще не реализован в библиотеке, поэтому нам все еще нужно использовать content (что, согласно документам, будет устаревшим).Это должно сделать трюк:

async createDocument(
  knowledgeBaseFullName,
  rawContent,
  documentName
) {

  // Instantiate a DialogFlow Documents client.
  const client = new dialogflowV2.DocumentsClient({
    projectId: this.projectId,
  });

  let buff = new Buffer(rawContent);  
  let base64data = buff.toString('base64');

  const projectId = this.projectId;
  knowledgeBaseFullName = '';
  const knowledgeTypes = 'EXTRACTIVE_QA';
  const mimeType = 'text/plain';

  const request = {
    parent: knowledgeBaseFullName,
    document: {
      knowledgeTypes: [knowledgeTypes],
      displayName: documentName,
      content: base64data,
      source: 'rawContent',
      mimeType: mimeType,
    },
  };

  const [operation] = await client.createDocument(request);
  const [response] = await operation.promise();
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...