Я использую этот точный пример, и не похоже, что можно увидеть полный список ответов с ведением журнала по умолчанию. Вам потребуется зарегистрировать пользовательскую трассировку (или вы, вероятно, могли бы сделать это как событие) и использовать полезную нагрузку, возвращаемую вызовом API. Вам также необходимо установить верхний параметр в запросе, в противном случае вы получите только один ответ независимо (хотя я подтвердил, что при установке top не отображаются дополнительные ответы в журнале аналитических сообщений приложения по умолчанию).
Кроме того, понимание приложения не поддерживает массивы (насколько мне известно), поэтому вам нужно будет сгладить результаты, используя что-то вроде flat .
Вот пример кода в nodejs. Синтаксис немного отличается для других языков (см. Ссылку выше для пользовательской трассировки). Я вызываю API напрямую, но если вы импортируете модуль QnA, я должен ожидать, что это будет работать точно так же.
const qnaResult = await request({
url: url,
method: 'POST',
headers: headers,
json: {
question: query,
top: 3,
context: qnAcontext
}
});
flatQnaResult = flatten(qnaResult);
appInsightsClient.trackTrace({message: 'QnA Custom Trace',severity: 1,properties: flatQnaResult});
Если вы используете плоский, вы найдете соответствующий ответ и оценку как answers.i.answer
и answers.i.score
, где я - ваш индекс. То, что это не будет делать, это показать, какой порог вы установили. Возможно, это связано с тем, что я обрабатываю этот вызов за пределами QnA Maker, чтобы дать мне больше контроля над действиями (например, в некоторых ботах, если в первичном вызове не достигнут порог, я выполняю вызов отдельного KB QnA вместо предоставления сообщение по умолчанию).
Я не уверен на 100%, вернется ли порог обратно в полезную нагрузку, если вы установите его как часть вызова. Если нет, вы всегда можете добавить его в свой объект flatQnaResults перед тем, как зарегистрировать его в приложении insights (например, flatQnaResults.threshold = YOUR_THRESHOLD
).