public static CustomEntitiesDefinition GetEntitiesDefinition( int maximumFuziness = 0, bool caseSensitive = false, bool accentSensitive = false, params string[] words) { var targetCustomEntities = new List <CustomEntity>(); foreach (var word in words) { var entity = new CustomEntity( name: word, description: $"description of {word}", type: $"type of {word}", subtype: $"subtype of {word}", id: $"id of {word}", caseSensitive: caseSensitive, accentSensitive: accentSensitive, fuzzyEditDistance: maximumFuziness, defaultCaseSensitive: false, defaultAccentSensitive: false, defaultFuzzyEditDistance: 0, aliases: null); targetCustomEntities.Add(entity); } var entitiesDefinition = new CustomEntitiesDefinition(targetCustomEntities); return(entitiesDefinition); }
public static async Task <IActionResult> RunCustomEntityLookup( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger log, ExecutionContext executionContext) { log.LogInformation("Custom Entity Search function: C# HTTP trigger function processed a request."); if (_impl == null || executionContext.FunctionName == "unitTestFunction") { _impl = new CustomEntityLookupImplementation(CustomEntitiesDefinition.ParseCustomEntityDefinition(EntityDefinitionLocation)); } IEnumerable <WebApiRequestRecord> requestRecords = WebApiSkillHelpers.GetRequestRecords(req); if (requestRecords == null) { return(new BadRequestObjectResult($"{executionContext.FunctionName} - Invalid request record array.")); } WebApiSkillResponse response = WebApiSkillHelpers.ProcessRequestRecords(executionContext.FunctionName, requestRecords, (inRecord, outRecord) => { if (!inRecord.Data.ContainsKey("text") || inRecord.Data["text"] == null) { outRecord.Errors.Add(new WebApiErrorWarningContract { Message = "Cannot process record without the given key 'text' with a string value" }); return(outRecord); } string text = inRecord.Data["text"] as string; var foundEntities = _impl.GetCustomLookupResult(text, System.Threading.CancellationToken.None); outRecord.Data["entities"] = foundEntities; return(outRecord); }); return(new OkObjectResult(response)); }
public CustomEntityLookupImplementation(CustomEntitiesDefinition entityDefinitions) { _targetEntities = entityDefinitions; _selections = new HashSet <CustomEntitySelection>(); foreach (var tce in _targetEntities.TargetCustomEntities) { var entitySelection = new CustomEntitySelection(tce); _selections.Add(entitySelection); if (tce.Aliases?.Any() == true) { foreach (var alias in tce.Aliases) { var aliasSelection = new CustomEntitySelection(tce, alias); if (!_selections.Contains(aliasSelection)) { _selections.Add(aliasSelection); } } } } }