async def test_telemetry_override_on_derive_async(self): # Arrange utterance: str = "please book from May 5 to June 6" response_json: Dict[str, object] = self._empty_luis_response telemetry_client = mock.create_autospec(BotTelemetryClient) options = LuisPredictionOptions( telemetry_client=telemetry_client, log_personal_information=False ) telemetry_properties: Dict[str, str] = {"test": "testvalue", "foo": "foovalue"} # Act await LuisRecognizerTest._get_recognizer_result( utterance, response_json, bot_adapter=NullAdapter(), options=options, telemetry_properties=telemetry_properties, recognizer_class=TelemetryOverrideRecognizer, ) # Assert self.assertEqual(2, telemetry_client.track_event.call_count) call0_args = telemetry_client.track_event.call_args_list[0][0] self.assertEqual("LuisResult", call0_args[0]) self.assertTrue("MyImportantProperty" in call0_args[1]) self.assertTrue(call0_args[1]["MyImportantProperty"] == "myImportantValue") self.assertTrue("test" in call0_args[1]) self.assertTrue(call0_args[1]["test"] == "testvalue") self.assertTrue("foo" in call0_args[1]) self.assertTrue(call0_args[1]["foo"] == "foovalue") call1_args = telemetry_client.track_event.call_args_list[1][0] self.assertEqual("MySecondEvent", call1_args[0]) self.assertTrue("MyImportantProperty2" in call1_args[1]) self.assertTrue(call1_args[1]["MyImportantProperty2"] == "myImportantValue2")
async def test_telemetry_no_pii_logged_async(self): # Arrange utterance: str = "please book from May 5 to June 6" response_json: Dict[str, object] = self._empty_luis_response telemetry_client = mock.create_autospec(BotTelemetryClient) options = LuisPredictionOptions(telemetry_client=telemetry_client, log_personal_information=False) # Act await LuisRecognizerTest._get_recognizer_result( utterance, response_json, bot_adapter=NullAdapter(), options=options, telemetry_properties=None, ) # Assert self.assertEqual(1, telemetry_client.track_event.call_count) args = telemetry_client.track_event.call_args[0] self.assertEqual("LuisResult", args[0]) self.assertEqual(7, len(args[1])) self.assertTrue("applicationId" in args[1]) self.assertTrue("intent" in args[1]) self.assertTrue("intentScore" in args[1]) self.assertTrue("intent2" in args[1]) self.assertTrue("intentScore2" in args[1]) self.assertTrue("fromId" in args[1]) self.assertTrue("entities" in args[1]) self.assertFalse("question" in args[1])
async def test_user_agent_contains_product_version(self): utterance: str = "please book from May 5 to June 6" response_path: str = "MultipleDateTimeEntities.json" # it doesn't matter to use which file. recognizer, _ = await LuisRecognizerTest._get_recognizer_result( utterance, response_path, bot_adapter=NullAdapter()) runtime: LUISRuntimeClient = recognizer._runtime config: LUISRuntimeClientConfiguration = runtime.config user_agent = config.user_agent # Verify we didn't unintentionally stamp on the user-agent from the client. self.assertTrue("azure-cognitiveservices-language-luis" in user_agent) # And that we added the bot.builder package details. self.assertTrue("botbuilder-ai/4" in user_agent)