Пример #1
0
 public RestSpeechLuisClient(
     string authoringKey,
     string authoringRegion,
     string endpointKey,
     string endpointRegion,
     AzureSubscriptionInfo azureSubscriptionInfo,
     string speechKey,
     bool isStaging)
     : base(authoringKey, authoringRegion, endpointKey, endpointRegion, azureSubscriptionInfo, isStaging)
 {
     this.SpeechKey = speechKey;
     this.SpeechEndpoint = string.Format(CultureInfo.InvariantCulture, SpeechEndpointTemplate, endpointRegion ?? authoringRegion, "en-US");
 }
Пример #2
0
        /// <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));
        }
Пример #3
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());
        }
Пример #4
0
        private async Task AssignAzureResourceAsync(AzureSubscriptionInfo azureSubscriptionInfo, Guid appId)
        {
            var jsonBody = JsonConvert.SerializeObject(azureSubscriptionInfo);
            var data     = new StringContent(jsonBody, Encoding.UTF8, "application/json");
            var url      = $"{this.AuthoringClient.Endpoint}/luis/api/v2.0/apps/{appId}/azureaccounts";
            var request  = new HttpRequestMessage
            {
                Method     = HttpMethod.Post,
                RequestUri = new Uri(url),
                Headers    =
                {
                    { HttpRequestHeader.Authorization.ToString(), $"Bearer {this.LuisConfiguration.ArmToken}" },
                    { "Ocp-Apim-Subscription-Key",                this.LuisConfiguration.AuthoringKey         }
                },
                Content = data,
            };

            var result = await this.AuthoringClient.HttpClient.SendAsync(request).ConfigureAwait(false);

            result.EnsureSuccessStatusCode();
        }
Пример #5
0
        public LuisClient(
            string authoringKey,
            string authoringRegion,
            string endpointKey,
            string endpointRegion,
            AzureSubscriptionInfo azureSubscriptionInfo,
            bool isStaging)
        {
            this.IsStaging = isStaging;

            var endpointOrAuthoringKey = endpointKey ?? authoringKey ?? throw new ArgumentException($"Must specify either '{nameof(authoringKey)}' or '{nameof(endpointKey)}'.");

            this.EndpointRegion        = endpointRegion ?? authoringRegion ?? throw new ArgumentException($"Must specify either '{nameof(authoringRegion)}' or '{nameof(endpointRegion)}'.");
            this.AzureSubscriptionInfo = azureSubscriptionInfo;
            this.AuthoringKey          = authoringKey;

            var endpointCredentials = new Microsoft.Azure.CognitiveServices.Language.LUIS.Runtime.ApiKeyServiceClientCredentials(endpointOrAuthoringKey);

            this.RuntimeClient = new LUISRuntimeClient(endpointCredentials)
            {
                Endpoint = $"{Protocol}{this.EndpointRegion}{Domain}",
            };

            this.LazyAuthoringClient = new Lazy <LUISAuthoringClient>(() =>
            {
                if (authoringKey == null || authoringRegion == null)
                {
                    throw new InvalidOperationException("Must provide authoring key and region to perform authoring operations.");
                }

                var authoringCredentials = new Microsoft.Azure.CognitiveServices.Language.LUIS.Authoring.ApiKeyServiceClientCredentials(authoringKey);
                return(new LUISAuthoringClient(authoringCredentials)
                {
                    Endpoint = $"{Protocol}{authoringRegion}{Domain}",
                });
            });

            this.LazySpeechConfig = new Lazy <SpeechConfig>(() => SpeechConfig.FromSubscription(endpointKey, endpointRegion));
        }