public async Task Telemetry_OverrideOnLogAsync() { // Arrange // Note this is NOT a real LUIS application ID nor a real LUIS subscription-key // theses are GUIDs edited to look right to the parsing and validation code. var endpoint = "https://westus.api.cognitive.microsoft.com/luis/v3.0-preview/apps/b31aeaf3-3511-495b-a07f-571fc873214b/slots/production/predict?verbose=true&timezoneOffset=-360&subscription-key=048ec46dc58e495482b0c447cfdbd291&q="; var clientHandler = new EmptyLuisResponseClientHandler(); var luisApp = new LuisApplication(endpoint); var telemetryClient = new Mock <IBotTelemetryClient>(); var adapter = new NullAdapter(); var options = new LuisRecognizerOptions { TelemetryClient = telemetryClient.Object, LogPersonalInformation = false, HttpClient = clientHandler, }; var activity = new Activity { Type = ActivityTypes.Message, Text = "please book from May 5 to June 6", Recipient = new ChannelAccount(), // to no where From = new ChannelAccount(), // from no one Conversation = new ConversationAccount(), // on no conversation }; var turnContext = new TurnContext(adapter, activity); var recognizer = new LuisRecognizer(luisApp, options); // Act var additionalProperties = new Dictionary <string, string> { { "test", "testvalue" }, { "foo", "foovalue" }, }; var result = await recognizer.RecognizeAsync(turnContext, additionalProperties).ConfigureAwait(false); // Assert Assert.IsNotNull(result); Assert.AreEqual(telemetryClient.Invocations.Count, 1); Assert.AreEqual(telemetryClient.Invocations[0].Arguments[0].ToString(), "LuisResult"); Assert.IsTrue(((Dictionary <string, string>)telemetryClient.Invocations[0].Arguments[1]).ContainsKey("test")); Assert.IsTrue(((Dictionary <string, string>)telemetryClient.Invocations[0].Arguments[1])["test"] == "testvalue"); Assert.IsTrue(((Dictionary <string, string>)telemetryClient.Invocations[0].Arguments[1]).ContainsKey("foo")); Assert.IsTrue(((Dictionary <string, string>)telemetryClient.Invocations[0].Arguments[1])["foo"] == "foovalue"); Assert.IsTrue(((Dictionary <string, string>)telemetryClient.Invocations[0].Arguments[1]).ContainsKey("applicationId")); Assert.IsTrue(((Dictionary <string, string>)telemetryClient.Invocations[0].Arguments[1]).ContainsKey("intent")); Assert.IsTrue(((Dictionary <string, string>)telemetryClient.Invocations[0].Arguments[1]).ContainsKey("intentScore")); Assert.IsTrue(((Dictionary <string, string>)telemetryClient.Invocations[0].Arguments[1]).ContainsKey("fromId")); Assert.IsTrue(((Dictionary <string, string>)telemetryClient.Invocations[0].Arguments[1]).ContainsKey("entities")); }
public void UserAgentContainsProductVersion() { var application = new LuisApplication { EndpointKey = "this-is-not-a-key", ApplicationId = Guid.Empty.ToString(), Endpoint = "https://westus.api.cognitive.microsoft.com", }; var clientHandler = new EmptyLuisResponseClientHandler(); var recognizer = new LuisRecognizer(application, new LuisRecognizerOptions { HttpClient = clientHandler }); var adapter = new NullAdapter(); var activity = new Activity { Type = ActivityTypes.Message, Text = "please book from May 5 to June 6", Recipient = new ChannelAccount(), // to no where From = new ChannelAccount(), // from no one Conversation = new ConversationAccount(), // on no conversation }; var turnContext = new TurnContext(adapter, activity); var recognizerResult = recognizer.RecognizeAsync(turnContext, CancellationToken.None).Result; Assert.NotNull(recognizerResult); var userAgent = clientHandler.UserAgent; // And that we added the bot.builder package details. var majorVersion = typeof(ConnectorClient).GetTypeInfo().Assembly.GetName().Version.Major; Assert.Contains($"Microsoft.Bot.Builder.AI.Luis/{majorVersion}", userAgent); }