diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive.Testing/TestScript.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive.Testing/TestScript.cs
index 30501ba21f..65311ae8fe 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive.Testing/TestScript.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive.Testing/TestScript.cs
@@ -143,8 +143,9 @@ public TestAdapter DefaultTestAdapter(ResourceExplorer resourceExplorer, [Caller
/// Name of the test.
/// The bot logic.
/// optional test adapter.
+ /// The default language policy.
/// Runs the exchange between the user and the bot.
- public async Task ExecuteAsync(ResourceExplorer resourceExplorer, [CallerMemberName] string testName = null, BotCallbackHandler callback = null, TestAdapter adapter = null)
+ public async Task ExecuteAsync(ResourceExplorer resourceExplorer, [CallerMemberName] string testName = null, BotCallbackHandler callback = null, TestAdapter adapter = null, LanguagePolicy languagePolicy = null)
{
if (adapter == null)
{
@@ -185,6 +186,11 @@ await adapter.ProcessActivityAsync(
.UseResourceExplorer(resourceExplorer)
.UseLanguageGeneration();
+ if (languagePolicy != null)
+ {
+ dm.UseLanguagePolicy(languagePolicy);
+ }
+
foreach (var testAction in Script)
{
await testAction.ExecuteAsync(adapter, dm.OnTurnAsync, Inspect).ConfigureAwait(false);
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Recognizers/MultiLanguageRecognizer.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Recognizers/MultiLanguageRecognizer.cs
index 6b6b23d5ec..d6549fca4a 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Recognizers/MultiLanguageRecognizer.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Recognizers/MultiLanguageRecognizer.cs
@@ -41,7 +41,7 @@ public MultiLanguageRecognizer([CallerFilePath] string callerPath = "", [CallerL
///
[JsonProperty("languagePolicy")]
#pragma warning disable CA2227 // Collection properties should be read only (we can't change this without breaking binary compat)
- public LanguagePolicy LanguagePolicy { get; set; } = new LanguagePolicy();
+ public LanguagePolicy LanguagePolicy { get; set; }
#pragma warning restore CA2227 // Collection properties should be read only
///
@@ -66,13 +66,17 @@ public MultiLanguageRecognizer([CallerFilePath] string callerPath = "", [CallerL
/// Analysis of utterance.
public override async Task RecognizeAsync(DialogContext dialogContext, Activity activity, CancellationToken cancellationToken = default, Dictionary telemetryProperties = null, Dictionary telemetryMetrics = null)
{
+ var languagePolicy = LanguagePolicy ??
+ dialogContext.Services.Get() ??
+ new LanguagePolicy();
+
var policy = new List();
- if (activity.Locale != null && LanguagePolicy.TryGetValue(activity.Locale, out string[] targetpolicy))
+ if (activity.Locale != null && languagePolicy.TryGetValue(activity.Locale, out string[] targetpolicy))
{
policy.AddRange(targetpolicy);
}
- if (LanguagePolicy.TryGetValue(string.Empty, out string[] defaultPolicy))
+ if (languagePolicy.TryGetValue(string.Empty, out string[] defaultPolicy))
{
// we now explictly add defaultPolicy instead of coding that into target's policy
policy.AddRange(defaultPolicy);
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/MultiLanguageRecognizerTests.cs b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/MultiLanguageRecognizerTests.cs
index 6a578467d2..af4215eae2 100644
--- a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/MultiLanguageRecognizerTests.cs
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/MultiLanguageRecognizerTests.cs
@@ -46,5 +46,12 @@ public async Task MultiLanguageRecognizerTest_DefaultFallback()
{
await TestUtils.RunTestScript(_resourceExplorerFixture.ResourceExplorer);
}
+
+ [Fact]
+ public async Task MultiLanguageRecognizerTest_LanguagePolicy()
+ {
+ var languagePolicy = new LanguagePolicy("en-gb");
+ await TestUtils.RunTestScript(_resourceExplorerFixture.ResourceExplorer, languagePolicy: languagePolicy);
+ }
}
}
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/TestUtils.cs b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/TestUtils.cs
index 35d412cf83..9e4c281fbf 100644
--- a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/TestUtils.cs
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/TestUtils.cs
@@ -22,12 +22,12 @@ public static IEnumerable