// </snippet_create_client>

        // <snippet_maintask>
        static async Task <PredictionResponse> GetPredictionAsync()
        {
            // Get client
            using (var luisClient = CreateClient())
            {
                var requestOptions = new PredictionRequestOptions
                {
                    DatetimeReference      = DateTime.Parse("2019-01-01"),
                    PreferExternalEntities = true
                };

                var predictionRequest = new PredictionRequest
                {
                    Query   = "turn on the bedroom light",
                    Options = requestOptions
                };

                // get prediction
                return(await luisClient.Prediction.GetSlotPredictionAsync(
                           Guid.Parse(appId),
                           slotName : "production",
                           predictionRequest,
                           verbose : true,
                           showAllIntents : true,
                           log : true));
            }
        }
Example #2
0
        private static async Task <PredictionResponse> GetIntentAndEntities(string messageText)
        {
            var credentials = new ApiKeyServiceClientCredentials(_luisPredictionKey);
            var luisClient  = new LUISRuntimeClient(credentials, new System.Net.Http.DelegatingHandler[] { })
            {
                Endpoint = _luisBaseUrl
            };

            var requestOptions = new PredictionRequestOptions
            {
                DatetimeReference      = DateTime.Parse("2019-01-01"),
                PreferExternalEntities = true
            };

            var predictionRequest = new PredictionRequest
            {
                Query   = messageText,
                Options = requestOptions
            };

            // get prediction
            return(await luisClient.Prediction.GetSlotPredictionAsync(
                       Guid.Parse(_luisAppId),
                       slotName : "production",
                       predictionRequest,
                       verbose : true,
                       showAllIntents : true,
                       log : true));
        }
Example #3
0
        private PredictionResponse GetPrediction(string utterance)
        {
            var language    = GuessLanguage(utterance);
            var appId       = GetAppId(language);
            var credentials = new ApiKeyServiceClientCredentials(Config.PredictionKey);

            using (var luisClient = new LUISRuntimeClient(credentials, new System.Net.Http.DelegatingHandler[] { })
            {
                Endpoint = Config.Endpoint
            })
            {
                var requestOptions = new PredictionRequestOptions
                {
                    DatetimeReference      = DateTime.Now, //DateTime.Parse("2019-01-01"),
                    PreferExternalEntities = true
                };

                var predictionRequest = new PredictionRequest
                {
                    Query   = utterance,
                    Options = requestOptions
                };

                // get prediction
                return(luisClient.Prediction.GetSlotPredictionAsync(
                           Guid.Parse(appId),
                           slotName: "staging",
                           predictionRequest,
                           verbose: true,
                           showAllIntents: true,
                           log: true).Result);
            }
        }
Example #4
0
        // Send a query to a LUIS application.
        async static Task Query_App(LUISRuntimeClient client, ApplicationInfo app, string query)
        {
            DateTime offsetNow = DateTime.UtcNow;

            PredictionRequestOptions options = new PredictionRequestOptions
            {
                OverridePredictions = true,
                DatetimeReference   = offsetNow
            };

            PredictionRequest obj = new PredictionRequest
            {
                Query            = query,
                Options          = options,
                DynamicLists     = null,
                ExternalEntities = null
            };

            Boolean verbose        = true;
            Boolean showAllIntents = true;
            Boolean logUtterance   = true;

            try
            {
                var info = await client.Prediction.GetSlotPredictionAsync(app.ID, "production", obj, verbose, showAllIntents, logUtterance);

                Console.WriteLine("Top intent: " + info.Prediction.TopIntent);
                Console.WriteLine("Score: " + info.Prediction.Intents[info.Prediction.TopIntent]);

                foreach (var item in info.Prediction.Intents.Values)
                {
                    // For Dispatch Parent apps
                    //Console.WriteLine(item.ChildApp.TopIntent);

                    Console.WriteLine(item.Score);
                }
            }
            catch (ErrorException e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.Response.Content);
            }
        }
        private async Task <PredictionResponse> getLUISPredictionAsync(string query)
        {
            using (var client = new LUISRuntimeClient(credentials, new DelegatingHandler[] { })
            {
                Endpoint = _luisPredictionEndpoint
            }) {
                var appId    = Guid.Parse(_luisAppId);
                var slotName = "production";

                var options = new PredictionRequestOptions()
                {
                    DatetimeReference      = DateTime.Parse("2020-01-01"),
                    PreferExternalEntities = true
                };

                var predictionRequest = new PredictionRequest(query, options);

                var result = await client.Prediction.GetSlotPredictionAsync(appId, slotName, predictionRequest, true, true, true);

                return(result);
            }
        }
Example #6
0
        public void Prediction_Slot()
        {
            UseClientFor(async client =>
            {
                var utterance = "today this is a test with post";
                var slotName  = "production";

                var requestOptions = new PredictionRequestOptions
                {
                    DatetimeReference   = DateTime.Parse("2019-01-01"),
                    OverridePredictions = true
                };

                var externalResolution = JObject.FromObject(new { text = "post", external = true });
                var externalEntities   = new[]
                {
                    new ExternalEntity
                    {
                        EntityName   = "simple",
                        StartIndex   = 26,
                        EntityLength = 4,
                        Resolution   = externalResolution
                    }
                };

                var dynamicLists = new[]
                {
                    new DynamicList
                    {
                        ListEntityName = "list",
                        RequestLists   = new[]
                        {
                            new RequestList
                            {
                                Name          = "test",
                                CanonicalForm = "testing",
                                Synonyms      = new[] { "this" }
                            }
                        }
                    }
                };

                var predictionRequest = new PredictionRequest
                {
                    Query            = utterance,
                    Options          = requestOptions,
                    ExternalEntities = externalEntities,
                    DynamicLists     = dynamicLists
                };

                var result = await client.Prediction.GetSlotPredictionAsync(
                    Guid.Parse(appId),
                    slotName,
                    predictionRequest,
                    verbose: true,
                    showAllIntents: true);

                var prediction = result.Prediction;
                Assert.Equal(utterance, result.Query);
                Assert.Equal(utterance, prediction.NormalizedQuery);
                Assert.Equal("intent", prediction.TopIntent);
                Assert.Equal(2, prediction.Intents.Count);
                Assert.Equal(4, prediction.Entities.Count);
                Assert.Contains("datetimeV2", prediction.Entities.Keys);
                Assert.Contains("simple", prediction.Entities.Keys);
                Assert.Contains("list", prediction.Entities.Keys);
                Assert.Contains("$instance", prediction.Entities.Keys);

                // Test external resolution
                var actualResolution = (prediction.Entities["simple"] as JArray).Single();
                Assert.True(JToken.DeepEquals(externalResolution, actualResolution));

                var topIntent = prediction.Intents[prediction.TopIntent];
                Assert.True(topIntent.Score > 0.5);

                Assert.Equal("positive", prediction.Sentiment.Label);
                Assert.True(prediction.Sentiment.Score > 0.5);

                // dispatch
                var child = topIntent.ChildApp;
                Assert.Equal(utterance, child.NormalizedQuery);
                Assert.Equal("None", child.TopIntent);
                Assert.Equal(1, child.Intents.Count);
                Assert.Equal(2, child.Entities.Count);
                Assert.Contains("datetimeV2", child.Entities.Keys);
                Assert.Contains("$instance", child.Entities.Keys);

                var dispatchTopIntent = child.Intents[child.TopIntent];
                Assert.True(dispatchTopIntent.Score > 0.5);

                Assert.Equal("positive", child.Sentiment.Label);
                Assert.True(child.Sentiment.Score > 0.5);
            });
        }