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"); }
/// <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)); }
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()); }
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(); }
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)); }