8000 Merge branch 'axsuarez/connector-needs-channel-token-tenant' of https… · zigri2612/botbuilder-python@2abebc5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 2abebc5

Browse files
committed
Merge branch 'axsuarez/connector-needs-channel-token-tenant' of https://github.com/Microsoft/botbuilder-python into axsuarez/connector-needs-channel-token-tenant
Merge with master
2 parents 63d0730 + 82e9e5c commit 2abebc5

File tree

3 files changed

+51
-3
lines changed

3 files changed

+51
-3
lines changed

libraries/botbuilder-ai/botbuilder/ai/qna/qnamaker.py

Lines changed: 1 addition & 3 deletions
< 8000 td data-grid-cell-id="diff-02b51008073acf20628336bec0878465c0b2719a73be89f805fa9d99f3862aba-307-307-1" data-selected="false" role="gridcell" style="background-color:var(--bgColor-default);text-align:center" tabindex="-1" valign="top" class="focusable-grid-cell diff-line-number position-relative diff-line-number-neutral left-side">307
Original file line numberDiff line numberDiff line change
@@ -305,9 +305,7 @@ async def _format_qna_result(self, result, options: QnAMakerOptions) -> [QueryRe
305305
json_res = await result.json()
306306

307
answers_within_threshold = [
308-
{ **answer,'score': answer['score']/100 }
309-
if answer['score']/100 > options.score_threshold
310-
else {**answer} for answer in json_res['answers']
308+
{ **answer,'score': answer['score']/100 } for answer in json_res['answers'] if answer['score']/100 > options.score_threshold
311309
]
312310
sorted_answers = sorted(answers_within_threshold, key = lambda ans: ans['score'], reverse = True)
313311

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"answers": [
3+
{
4+
"questions": [],
5+
"answer": "No good match found in KB.",
6+
"score": 0,
7+
"id": -1,
8+
"source": null,
9+
"metadata": []
10+
}
11+
],
12+
"debugInfo": null
13+
}

libraries/botbuilder-ai/tests/qna/test_qna.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,43 @@ async def test_telemetry_returns_answer(self):
291291
self.assertEqual(expected_answer, results[0].answer[0])
292292
self.assertEqual('Editorial', results[0].source)
293293

294+
async def test_telemetry_returns_answer_when_no_answer_found_in_kb(self):
295+
# Arrange
296+
question: str = 'gibberish question'
297+
response_json = QnaApplicationTest._get_json_for_file('NoAnswerFoundInKb.json')
298+
telemetry_client = unittest.mock.create_autospec(BotTelemetryClient)
299+
qna = QnAMaker(QnaApplicationTest.tests_endpoint, telemetry_client=telemetry_client, log_personal_information=True)
300+
context = QnaApplicationTest._get_context(question, TestAdapter())
301+
302+
# Act
303+
with patch('aiohttp.ClientSession.post', return_value = aiounittest.futurized(response_json)):
304+
results = await qna.get_answers(context)
305+
306+
telemetry_args = telemetry_client.track_event.call_args_list[0][1]
307+
telemetry_properties = telemetry_args['properties']
308+
number_of_args = len(telemetry_args)
309+
first_answer = telemetry_args['properties'][QnATelemetryConstants.answer_property]
310+
expected_answer = 'No Qna Answer matched'
311+
expected_matched_question = 'No Qna Question matched'
312+
313+
# Assert - Check Telemetry logged.
314+
self.assertEqual(1, telemetry_client.track_event.call_count)
315+
self.assertEqual(3, number_of_args)
316+
self.assertEqual('QnaMessage', telemetry_args['name'])
317+
self.assertTrue('answer' in telemetry_properties)
318+
self.assertTrue('knowledgeBaseId' in telemetry_properties)
319+
self.assertTrue('matchedQuestion' in telemetry_properties)
320+
self.assertEqual(expected_matched_question, telemetry_properties[QnATelemetryConstants.matched_question_property])
321+
self.assertTrue('question' in telemetry_properties)
322+
self.assertTrue('questionId' in telemetry_properties)
323+
self.assertTrue('articleFound' in telemetry_properties)
324+
self.assertEqual(expected_answer, first_answer)
325+
326+
# Assert - Validate we didn't break QnA functionality.
327+
self.assertIsNotNone(results)
328+
self.assertEqual(0, len(results))
329+
330+
294331
async def test_telemetry_pii(self):
295332
# Arrange
296333
question: str = 'how do I clean the stove?'

0 commit comments

Comments
 (0)
0