public List <MenuItem> GetCompositeItemDetails(LuisWrapper luisWrapper)
        {
            List <MenuItem> items = new List <MenuItem>();

            foreach (var compositeEntity in luisWrapper.CompositeEntities)
            {
                var item = new MenuItem();
                foreach (var child in compositeEntity.Children)
                {
                    switch (child.Type)
                    {
                    case "Drink.Item":
                        item.Name = child.Value;
                        break;

                    case "Drink.Size":
                        item.Size = child.Value;
                        break;

                    case "Drink.Modifier":
                        item.Modifiers.Add(child.Value);
                        break;

                    default:
                        break;
                    }
                }
                items.Add(item);
            }
            return(items);
        }
        private Boolean ProcessRecognizedText(object s, IntentRecognitionEventArgs e)
        {
            Boolean exit = false;

            if (e.Result.Reason == ResultReason.RecognizedIntent)
            {
                // Console.WriteLine($"Recognized Text: {e.Result.Text}");
                // Console.WriteLine($"Detected Intent: {e.Result.IntentId}");

                var         rawJason     = e.Result.Properties.GetProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult);
                LuisWrapper luisResponse = JsonConvert.DeserializeObject <LuisWrapper>(rawJason);

                // Get intent and process entities
                exit = ProcessResponse(luisResponse);
            }
            else if (e.Result.Reason == ResultReason.RecognizedSpeech)
            {
                Console.WriteLine($"Recognized Text: {e.Result.Text}");
                Console.WriteLine($"Detected Intent: <No Intent>");

                if (e.Result.Text.ToUpper().Contains("EXIT") || e.Result.Text.ToUpper().Contains("WINDOW"))
                {
                    exit = true;
                }
            }
            else
            {
                Console.WriteLine("Speech could not be recognized.");
                exit = false;
            }
            return(exit);
        }
        public Boolean ProcessResponse(LuisWrapper luisResponse)
        {
            switch (luisResponse.TopScoringIntent.Intent)
            {
            case "AddToOrder":
                if (luisResponse.CompositeEntities != null)
                {
                    if (luisResponse.CompositeEntities.Length > 0)
                    {
                        var items = GetCompositeItemDetails(luisResponse);
                        _order.AddToOrder(items);
                    }
                }
                PrintOrder(_order);
                break;

            case "RemoveFromOrder":
                if (luisResponse.CompositeEntities != null)
                {
                    if (luisResponse.CompositeEntities.Length > 0)
                    {
                        var items = GetCompositeItemDetails(luisResponse);
                        _order.RemoveFromOrder(items);
                    }
                }
                PrintOrder(_order);
                break;

            case "None":
                Console.WriteLine("None intent.");
                break;

            default:
                break;
            }

            if (luisResponse.Query.ToUpper().Contains("EXIT") || luisResponse.Query.ToUpper().Contains("WINDOW"))
            {
                return(true);
            }
            return(false);
        }