В настоящее время у меня есть функция Azure, для которой я хотел бы обновлять базу знаний QnaMaker каждый день или около того. В настоящее время все подключено и работает нормально, однако я могу отправлять только объекты Qna (пары qna), а не ссылки на файлы на моем веб-сайте. Таким образом, в приведенном ниже примере, хотя он должен заполнить КБ двумя вопросами и файлом из URL, он заполняет только вопросы.
В настоящее время это не дает мне никакой ошибки, на самом деле код ответа от моего обращения к КБ возвращается как 204. Так что он проходит, но все равно не добавляет файл в КБ, так как should.
ПРИМЕЧАНИЕ. Файл, импортируемый в этом примере (alice-I. html), является случайным для этой демонстрации (не мой, для безопасности), но проблема та же. Если я непосредственно добавлю этот файл в QnaMaker с самого сайта КБ, он будет работать нормально, но он не будет обновляться из Azure кода функции.
Любое понимание происходящего было бы замечательно.
Содержание, отправляемое в базу знаний
string replace_kb = @"{
'qnaList': [
{
'id': 0,
'answer': 'A-1',
'source': 'Custom Editorial',
'questions': [
'Q-1'
],
'metadata': []
},
{
'id': 1,
'answer': 'A-2',
'source': 'Custom Editorial',
'questions': [
'Q-2'
],
'metadata': [
{
'name': 'category',
'value': 'api'
}
]
}
],
'files': [
{
'fileName': 'alice-I.html',
'fileUri': 'https://www.cs.cmu.edu/~rgs/alice-I.html'
}
]
}";
Код Отправка содержимого в базу знаний
using (var clientF = new HttpClient())
using (var requestF = new HttpRequestMessage())
{
requestF.Method = HttpMethod.Put;
requestF.RequestUri = new Uri(<your-uri>);
requestF.Content = new StringContent(replace_kb, Encoding.UTF8, "application/json");
requestF.Headers.Add("Ocp-Apim-Subscription-Key", <your-key>);
var responseF = await clientF.SendAsync(requestF);
if (responseF.IsSuccessStatusCode)
{
log.LogInformation("{'result' : 'Success.'}");
log.LogInformation($"------------>{responseF}");
}
else
{
await responseF.Content.ReadAsStringAsync();
log.LogInformation($"------------>{responseF}");
}
}