예제 #1
0
    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")
예제 #2
0
    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)