private object RemoveLuisApplicationAsync(OperationRunner context) { AzureClient client = new AzureClient(WizardContext.TokenProvider); client.SetLogger(context.Logger); LuisApplication application = client.GetLuisAppByNameAsync( DataModel.InstallationConfiguration.Azure.Luis.AuthoringKey, DataModel.InstallationConfiguration.Azure.Luis.AppName, DataModel.InstallationConfiguration.Azure.Luis.AuthoringRegion).Result; if (application == null) { return(true); } return(client.DeleteLuisAppAsync( DataModel.InstallationConfiguration.Azure.Luis.AuthoringKey, application.Id, DataModel.InstallationConfiguration.Azure.Luis.AuthoringRegion).Result); }
private object UpdateLuisApplicationAsync(OperationRunner context) { AzureClient client = new AzureClient(WizardContext.TokenProvider); client.SetLogger(context.Logger); LuisApplication luisApp = client.GetLuisAppByNameAsync( DataModel.InstallationConfiguration.Azure.Luis.AuthoringKey, DataModel.InstallationConfiguration.Azure.Luis.AppName, DataModel.InstallationConfiguration.Azure.Luis.AuthoringRegion).Result; if (luisApp != null) { LuisGeneralResponse response = client.DeleteLuisAppAsync( DataModel.InstallationConfiguration.Azure.Luis.AuthoringKey, luisApp.Id, DataModel.InstallationConfiguration.Azure.Luis.AuthoringRegion).Result; if (response == null) { throw new Exception("Failed to delete existing LUIS application."); } } string luisAppId = client.ImportLuisAppAsync( DataModel.InstallationConfiguration.Azure.Luis.AuthoringKey, DataModel.InstallationConfiguration.Azure.Luis.AppName, DataModel.InstallationConfiguration.Azure.Luis.AppFilePath, DataModel.InstallationConfiguration.Azure.Luis.AuthoringRegion).Result; if (string.IsNullOrWhiteSpace(luisAppId)) { throw new Exception("Failed to import LUIS application."); } DataModel.InstallationConfiguration.Azure.Luis.ApplicationId = luisAppId; LuisGeneralResponse associatedApp = client.AssociateAzureResourceWithLuisAppAsync( luisAppId, DataModel.InstallationConfiguration.Azure.Luis.AuthoringRegion, DataModel.InstallationConfiguration.Azure.Luis.AuthoringKey, new LuisAssociatedAzureResourceRequest() { AzureSubscriptionId = DataModel.InstallationConfiguration.Azure.SelectedSubscription.Id, ResourceGroup = DataModel.InstallationConfiguration.Azure.ResourceGroupName, AccountName = DataModel.InstallationConfiguration.Azure.Luis.ResourceName, }).Result; if (associatedApp == null || string.Compare(associatedApp.Code, "Success", true) != 0) { throw new Exception("Failed to associated LUIS application with Azure LUIS Cognitive Services resource!"); } LuisModelTrainingStatus[] trainedApp = client.TrainLuisApp( DataModel.InstallationConfiguration.Azure.Luis.ApplicationId, DataModel.InstallationConfiguration.Azure.Luis.AppVersion, DataModel.InstallationConfiguration.Azure.Luis.AuthoringRegion, DataModel.InstallationConfiguration.Azure.Luis.AuthoringKey); if (trainedApp .Where(x => x.Details.StatusId != 0 && x.Details.StatusId != 2).Count() > 0) { throw new Exception("Failed to train LUIS application!"); } LuisPublishResponse publishedApp = client.PublishLuisAppAsync( DataModel.InstallationConfiguration.Azure.Luis.ApplicationId, DataModel.InstallationConfiguration.Azure.Luis.AppVersion, DataModel.InstallationConfiguration.Azure.Luis.AuthoringRegion, DataModel.InstallationConfiguration.Azure.Luis.AuthoringKey).Result; if (publishedApp == null) { throw new Exception("Failed to publish LUIS application!"); } DataModel.InstallationConfiguration.Azure.Luis.EndpointUri = publishedApp.EndpointUrl.Replace(DataModel.InstallationConfiguration.Azure.Luis.AuthoringRegion, DataModel.InstallationConfiguration.Azure.Luis.ResourceRegion); // Update settings AppServiceAppSettings appSettings = client.GetAppServiceAppSettingsAsync( DataModel.InstallationConfiguration.Azure.SelectedSubscription.Id, DataModel.InstallationConfiguration.Azure.ResourceGroupName, DataModel.InstallationConfiguration.Azure.FunctionApp.AppName).Result; if (appSettings == null) { throw new Exception("Failed to get app settings for app service!"); } appSettings.Properties["luisEndpoint"] = DataModel.InstallationConfiguration.Azure.Luis.EndpointUri; AppServiceAppSettings updatedAppSettings = client.UpdateAppServiceAppSettingsAsync( DataModel.InstallationConfiguration.Azure.SelectedSubscription.Id, DataModel.InstallationConfiguration.Azure.ResourceGroupName, DataModel.InstallationConfiguration.Azure.FunctionApp.AppName, appSettings).Result; if (appSettings == null) { throw new Exception("Failed to update app settings for app service!"); } return(true); }