如何使用QnA Maker API v4.0更新现有知识库?

时间:2018-05-21 08:02:47

标签: qnamaker

我已使用API成功创建了我的知识库。 但我忘了为其中一对添加一些替代问题和元数据。

我注意到API中的{ "add": { }, "delete": { }, "update": { "qnaList": [ { "id": 1, "answer": "Answer", "source": "link_to_source", "questions": [ "Question 1?", "Question 2?" ], "metadata": [ { "name": "oldMetadata", "value": "oldMetadata" }, { "name": "newlyAddedMetaData", "value": "newlyAddedMetaData" } ] }]} } 方法更新了Knowledebase,因此支持更新kb。 我创建了一个有效载荷,如下所示:

HTTP 202 Accepted

我收到以下回复{ "operationState": "NotStarted", "createdTimestamp": "2018-05-21T07:46:52Z", "lastActionTimestamp": "2018-05-21T07:46:52Z", "userId": "user_uuid", "operationId": "operation_uuid" }

{
"operationState": "Succeeded",
"createdTimestamp": "2018-05-21T07:46:52Z",
"lastActionTimestamp": "2018-05-21T07:46:54Z",
"resourceLocation": "/knowledgebases/kb_uuid",
"userId": "user_uuid",
"operationId": "operation_uuid"
}

所以看起来很有效。但实际上,这个要求并没有任何影响。

当我检查操作细节时,它会返回以下内容:

{{1}}

我做错了什么?我应该如何通过API正确更新我的kb?

请帮忙

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我发现即使不使用json,也必须拥有所有数据。 在您的情况下,您需要“更新”部分中的“名称”和“ URL”,以及“更新/ qnaList /问题”部分中的“删除”:

{
  "add": {},
  "delete": {},
  "update": {
  "name": "nameofKbBase", //this
  "qnaList": [
      {
         "id": 2370,
        "answer": "DemoAnswerEdit",
        "source": "CustomSource",
        "questions": {
         "add": [
            "DemoQuestionEdit"
          ],
           "delete": [] //this
        },
        "metadata": { }
      }
     ],
    "urls": [] //this
  }
}