【问题标题】:unable to create a document with raw content on dialog flow knowledge bases无法在对话流知识库中创建包含原始内容的文档
【发布时间】:2018-11-01 10:26:55
【问题描述】:

我正在使用 com.google.cloud.dialogflow.v2beta1.Document 通过 java rpc 创建文档,当我尝试时,我们有一个 setContent() 方法用于创建包含原始内容的文档创建文档我遇到了异常。

原因:com.google.api.gax.rpc.InvalidArgumentException:操作 有名字 “项目/代理-fa5be/操作/ks-add_document-NDQ0NDQ3MjI5MDA3NTIxMzgyNA” 失败,状态 = GrpcStatusCode{transportCode=INVALID_ARGUMENT} 和 message = CSV 文档必须正好有两列。这 提供的文档有 1 列。

当我检查 dialogflow.v2beta1 文档时,明确提到内容已被弃用,使用 raw_content 而不是内容。但 com.google.cloud.dialogflow.v2beta1.Document 中的 raw_content 方法不支持

【问题讨论】:

    标签: google-cloud-platform dialogflow-es


    【解决方案1】:

    我正在尝试类似的问题。我尝试了不同的库和技术,直到找到可行的方法。就我而言,我必须按如下方式解析每一行:

    let input = ['Question1', 'Answer1\n'];
    let input2 = ['Question2', 'Answer2\n'];
    let base64data = input.toString('base64') + input2.toString('base64');
    
    const request = {
        parent: 'projects/PROJECT_ID/knowledgeBases/KNOWLEDGEBASE_ID',
        document: {
            knowledgeTypes: ['FAQ'],
            displayName: 'Echele',
            content: base64data,
            source: 'rawContent',
            mimeType: 'text/csv',
        },
    };
    

    这允许我提交文件,希望它也适用于您! 问候

    【讨论】:

      【解决方案2】:

      请找到可行的解决方案

      String documentName="test.csv";
                  try {
                      byte[] bytedata = filedata.toString().getBytes();
                      ByteString bytestring = ByteString.copyFrom(bytedata);
                      byte[] bytedata1 = "text/csv".getBytes();
                      ByteString mimestring = ByteString.copyFrom(bytedata1);
                      DocumentsSettings docuemtnSettings = DocumentsSettings.newBuilder()
                              .setCredentialsProvider(FixedCredentialsProvider.create(credentials)).build();
                      DocumentsClient documentsClient = DocumentsClient.create(docuemtnSettings);
                      Document document = Document.newBuilder().setDisplayName(documentName).setContentBytes(bytestring)
                              .setMimeTypeBytes(mimestring).addKnowledgeTypes(KnowledgeType.FAQ).build();
                      CreateDocumentRequest createDocumentRequest = CreateDocumentRequest.newBuilder().setDocument(document)
                              .setParent(knowledgeBaseName).build();
                      OperationFuture<Document, KnowledgeOperationMetadata> response = documentsClient
                              .createDocumentAsync(createDocumentRequest);
                      Document createdDocument = response.get();
                      System.out.format(" - docuemnt created  ID: %s\n", createdDocument.getName());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 2011-01-05
        • 2021-08-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多