botbuilder-dotnet/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisExtensions.cs

55 строки
2.3 KiB
C#
Исходник Обычный вид История

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.Extensions.Configuration;
namespace Microsoft.Bot.Builder.AI.Luis
{
public static class LuisExtensions
{
/// <summary>
/// Setup configuration to utilize the settings file generated by bf luis:build.
/// </summary>
/// <remarks>
/// This will pick up LUIS_AUTHORING_REGION or --region settings as the setting to target.
/// This will pick up --environment as the environment to target. If environment is Development it will use the name of the logged in user.
/// This will pick up --root as the root folder to run in.
/// </remarks>
/// <param name="builder">Configuration builder to modify.</param>
/// <returns>Modified configuration builder.</returns>
public static IConfigurationBuilder UseLuisSettings(this IConfigurationBuilder builder)
{
var configuration = builder.Build();
var botRoot = configuration.GetValue<string>("root") ?? ".";
var luisRegion = configuration.GetValue<string>("LUIS_AUTHORING_REGION") ?? configuration.GetValue<string>("region") ?? "westus";
var environment = configuration.GetValue<string>("environment") ?? Environment.UserName;
if (environment == "Development")
{
environment = Environment.UserName;
}
var settings = new Dictionary<string, string>();
settings["luis:endpoint"] = $"https://{luisRegion}.api.cognitive.microsoft.com";
settings["BotRoot"] = botRoot;
builder.AddInMemoryCollection(settings);
// Add general and then user specific luis.settings files to config
var di = new DirectoryInfo(".");
foreach (var file in di.GetFiles($"luis.settings.{environment.ToLower()}.{luisRegion}.json", SearchOption.AllDirectories))
{
if (file.Name.Contains(Environment.UserName) || file.Name.Contains(environment))
{
builder.AddJsonFile(file.FullName, optional: false, reloadOnChange: true);
}
}
return builder;
}
}
}