【问题标题】: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());