/// <summary>
        /// Function to process LUIS results. Creates a new <see cref="LuisUtteranceResultEventArgs"/> objects and populates it with information
        /// </summary>
        /// <param name="result">The <see cref="LuisResult"/> object from the API call</param>
        private void ProcessResult(LuisResult result)
        {
            LuisUtteranceResultEventArgs args = new LuisUtteranceResultEventArgs();

            args.RequiresReply  = !string.IsNullOrEmpty(result.DialogResponse?.Prompt);
            args.DialogResponse = !string.IsNullOrEmpty(result.DialogResponse?.Prompt) ? result.DialogResponse.Prompt : string.Empty;

            if (!string.IsNullOrEmpty(result.TopScoringIntent.Name))
            {
                var intentName = result.TopScoringIntent.Name;
                args.IntentName = intentName;
            }
            else
            {
                args.IntentName = string.Empty;
            }

            if (result.Entities.Count > 0)
            {
                var entity = result.Entities.First().Value;
                if (entity.Count > 0)
                {
                    var entityName = entity.First().Value;
                    args.EntityName = entityName;
                }
            }

            args.Status  = "Succeeded";
            args.Message = $"Top intent is {result.TopScoringIntent.Name} with score {result.TopScoringIntent.Score}. Found {result.Entities.Count} entities.";

            RaiseOnLuisUtteranceResultUpdated(args);
        }
Esempio n. 2
0
        private void ProcessResult(LuisResult result)
        {
            LuisUtteranceResultEventArgs args = new LuisUtteranceResultEventArgs();

            args.RequiresReply  = !string.IsNullOrEmpty(result.DialogResponse.Prompt);
            args.DialogResponse = !string.IsNullOrEmpty(result.DialogResponse.Prompt) ? result.DialogResponse.Prompt : string.Empty;

            if (result.TopScoringIntent.Actions != null && result.TopScoringIntent.Actions.Length != 0)
            {
                var action = result.TopScoringIntent.Actions[0];
                args.ActionExecuted = action.Triggered;
                args.ActionName     = action.Name;

                string actionValue = (action.Parameters[0].ParameterValues != null && action.Parameters[0].ParameterValues.Length != 0) ? action.Parameters[0].ParameterValues[0].Entity : string.Empty;
                args.ActionValue = actionValue;
            }
            else
            {
                args.ActionExecuted = false;
                args.ActionName     = "None";
            }

            args.Status  = "Succeeded";
            args.Message = $"Top intent is {result.TopScoringIntent.Name} with score {result.TopScoringIntent.Score}. Found {result.Entities.Count} entities.";

            RaiseOnLuisUtteranceResultUpdated(args);
        }
        private void ProcessResult(LuisResult result)
        {
            LuisUtteranceResultEventArgs args = new LuisUtteranceResultEventArgs();

            args.RequiresReply  = result.DialogResponse != null;
            args.DialogResponse = result.DialogResponse != null ? result.DialogResponse.Prompt : string.Empty;
            args.Result         = result;

            if (result.TopScoringIntent.Actions != null && result.TopScoringIntent.Actions.Length != 0)
            {
                args.ActionExecuted = result.TopScoringIntent.Actions[0].Triggered;
                args.ActionName     = result.TopScoringIntent.Actions[0].Name;
            }
            else
            {
                args.ActionExecuted = false;
                args.ActionName     = "None";
            }

            args.Status  = "Succeeded";
            args.Message = $"Top intent is {result.TopScoringIntent.Name} with score {result.TopScoringIntent.Score}. Found {result.Entities.Count} entities.";

            RaiseOnLuisUtteranceResultUpdated(args);
        }
Esempio n. 4
0
 private void RaiseOnLuisUtteranceResultUpdated(LuisUtteranceResultEventArgs args)
 {
     OnLuisUtteranceResultUpdated?.Invoke(this, args);
 }