Я использую QnA Maker v4.0 и пытаюсь обновить свою базу знаний программно, используя C # и следуя документации, представленной в:
Я могу добавлять новые пары вопросов и ответов в свою базу знаний, но когда я пытаюсь удалить некоторые из них, я не могу это сделать. Я не получаю сообщения об ошибке, просто если я захожу на портал QnAMaker, я все равно вижу, что вопрос, который я пытаюсь удалить, находится там.
Я попытался удалить весь источник, и это работает хорошо, поэтому я немного не понимаю, как я могу удалить только заданную пару вопросов и ответить вместо всего источника.
До сих пор я пробовал следовать следующей документации:
Добавить пару новых вопросов и ответов
string json = "{\"add\":{\"qnaList\":[{\"id\":123456789,\"answer\":\"fooanswer\",\"source\":\"Editorial\",\"questions\":[\"fooquestion\"],\"metadata\":null},{\"id\":987654321,\"answer\":\"fooanswer2\",\"source\":\"Editorial\",\"questions\":[\"fooquestion2\"],\"metadata\":null}],\"urls\":null,\"files\":null},\"delete\":null,\"update\":null}"
public async void UpdateKnowledgeBase(string json)
{
var knowledgebaseid = "<my kb id>";
var client = new HttpClient();
var querystring = HttpUtility.ParseQueryString(string.Empty);
// Request headers
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "QnA Subscription Key>");
var uri = "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/"+ this.KnowledgeBaseId + "?" + querystring;
// Request body
byte[] byteData = Encoding.UTF8.GetBytes(json);
using (var content = new ByteArrayContent(byteData))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var method = new HttpMethod("PATCH");
var request = new HttpRequestMessage(method, uri)
{
Content = content
};
HttpResponseMessage response;
response = await client.SendAsync(request);
}
}
Это создаст пару вопросов и ответов в моей базе знаний:
Удаление пары вопросов и ответов
Однако, если я сейчас попытаюсь следовать документации и удалю пару вопросов и ответов с идентификатором 123456789
, ничего не произойдет. Для этого я делаю:
json = "{\"add\":null,\"delete\":{\"ids\":[123456789],\"sources\":null},\"update\":null}"
И после вызова метода UpdateKnowledgeBase с этим json я не получу ошибки, но моя пара вопросов и ответов по-прежнему отображается на портале QnA Maker. Если я добавлю источник, он удалит все редакционные источники. Это нормально, но я также хочу удалить только одну пару, а не все. Это возможно?
Обновление существующей пары вопросов и ответов
При обновлении существующей пары вопросов и ответов у меня такая же проблема, я не получаю никаких ошибок, но я не вижу изменений на портале QnA Maker, что заставляет меня думать, что никаких изменений не делается.
Поэтому мой вопрос: как я могу обновить и / или удалить пары вопросов и ответов, не удаляя весь источник?
Заранее спасибо!