static async Task EnsureUtterance(this LUISAuthoringClient client, ApplicationInfoResponse app, string intent, string utterance, List <string> entitiesFound) { var elos = new List <EntityLabelObject>(); var effectiveUtterance = utterance; while (true) { var entityInfoCaptured = entityInfoRegex.Match(effectiveUtterance); if (!entityInfoCaptured.Success) { break; } var entityInfo = entityInfoCaptured.Groups["entityInfo"].Value.Split(':'); var entityValue = entityInfo[0]; var entityName = entityInfo[1]; if (!entitiesFound.Contains(entityName)) { // brute force insert (throws ex if exists) try { await client.Model.AddEntityAsync(app.Id.Value, app.ActiveVersion, new ModelCreateObject { Name = entityName }); } catch (Exception ex) { } finally { entitiesFound.Add(entityName); } } var elo = new EntityLabelObject { EntityName = entityName, StartCharIndex = entityInfoCaptured.Index, EndCharIndex = entityInfoCaptured.Index + entityValue.Length - 1 }; elos.Add(elo); effectiveUtterance = effectiveUtterance.Replace(entityInfoCaptured.Groups[0].Value, entityValue); } await client.Examples.AddAsync(app.Id.Value, app.ActiveVersion, new ExampleLabelObject { Text = effectiveUtterance, IntentName = intent, EntityLabels = elos }); }
static void Main(string[] args) { // authoring Key found in LUIS portal under user settings var cogServicesAllInOneKey = "<YOUR-AUTHORING-KEY>"; var credentials = new ApiKeyServiceClientCredentials(cogServicesAllInOneKey); // set parameters for app var resourceRegion = "westus"; var culture = "en-us"; var appName = "myEnglishApp"; var description = "app made with .Net SDK"; var versionId = "0.1"; // create client object var authoringClient = new LUISAuthoringClient(credentials, new System.Net.Http.DelegatingHandler[] { }); authoringClient.Endpoint = "https://westus.api.cognitive.microsoft.com/"; // create app var appId = CreateApp(authoringClient, resourceRegion, appName, versionId, culture, description); // create intent var intent = "FindForm"; var intentID = CreateIntent(authoringClient, resourceRegion, appId, versionId, intent); // create entity `HRF-number regular express var entityRegEx = "hrf-[0-9]{6}"; var entityName = "HRF-number"; var regularExpressEntity = new RegexModelCreateObject(entityRegEx, entityName); var entityId = CreateRegularExpressionEntity(authoringClient, resourceRegion, appId, versionId, regularExpressEntity); // add example utterance with 1 entity to intent var entity = "HRF-number"; var utterance = "When was hrf-123456 published?"; var taggedEntity = new EntityLabelObject(entity, 9, 18); var exampleUtteranceId = AddExampleUtterance(authoringClient, appId, versionId, intent, utterance, taggedEntity); }
static int AddExampleUtterance(LUISAuthoringClient client, Guid appId, string versionId, string intent, string utterance, EntityLabelObject taggedEntity) { try { // creating list and adding 1 item var taggedEntities = new List <EntityLabelObject>(); taggedEntities.Add(taggedEntity); // create example object var exampleLabelObject = new ExampleLabelObject(utterance, taggedEntities, intent); // create example var response = client.Examples.AddAsync(appId, versionId, exampleLabelObject, CancellationToken.None).Result; if (response.ExampleId == null) { return(default(int)); } else { return(response.ExampleId.Value); } } catch (Exception ex) { Console.WriteLine(ex.InnerException); throw ex; } }