/// <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); }
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); }
private void RaiseOnLuisUtteranceResultUpdated(LuisUtteranceResultEventArgs args) { OnLuisUtteranceResultUpdated?.Invoke(this, args); }