/// <inheritdoc/>
        public INLUService CreateInstance(IConfiguration configuration, string settingsPath)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            var userDefinedName = configuration[LuisAppNameConfigurationKey];
            var appName         = userDefinedName ?? GetRandomName(configuration[LuisAppNamePrefixConfigurationKey]);

            var isStagingString = configuration[LuisIsStagingConfigurationKey];
            var isStaging       = isStagingString != null?bool.Parse(isStagingString) : false;

            var luisSettings = settingsPath != null
                ? JsonConvert.DeserializeObject <LuisSettings>(File.ReadAllText(settingsPath))
                : new LuisSettings();

            var luisSpeechKey = configuration[LuisSpeechKeyConfigurationKey];

            var azureSubscriptionInfo = AzureSubscriptionInfo.Create(
                configuration[LuisSubscriptionIdConfigurationKey],
                configuration[LuisResourceGroupConfigurationKey],
                configuration[LuisAzureAppNameConfigurationKey],
                configuration[ArmTokenConfigurationKey]);
            var luisClient = luisSpeechKey != null
                ? new RestSpeechLuisClient(
                configuration[LuisAuthoringKeyConfigurationKey],
                configuration[LuisAuthoringRegionConfigurationKey],
                configuration[LuisEndpointKeyConfigurationKey],
                configuration[LuisEndpointRegionConfigurationKey],
                azureSubscriptionInfo,
                luisSpeechKey,
                isStaging)
                : new LuisClient(
                configuration[LuisAuthoringKeyConfigurationKey],
                configuration[LuisAuthoringRegionConfigurationKey],
                configuration[LuisEndpointKeyConfigurationKey],
                configuration[LuisEndpointRegionConfigurationKey],
                azureSubscriptionInfo,
                isStaging);

            return(new LuisNLUService(
                       appName,
                       configuration[LuisAppIdConfigurationKey],
                       GetVersionId(configuration),
                       luisSettings,
                       luisClient));
        }
Example #2
0
        public async Task <string> CreateAppAsync(string appName, CancellationToken cancellationToken)
        {
            var request = new ApplicationCreateObject
            {
                Name    = appName,
                Culture = "en-us",
            };

            // Creating LUIS app.
            var appId = await this.AuthoringClient.Apps.AddAsync(request, cancellationToken).ConfigureAwait(false);

            // Assign Azure resource to LUIS app.
            var azureSubscriptionInfo = AzureSubscriptionInfo.Create(this.LuisConfiguration);

            if (azureSubscriptionInfo != null)
            {
                await this.AssignAzureResourceAsync(azureSubscriptionInfo, appId).ConfigureAwait(false);
            }

            return(appId.ToString());
        }