diff --git a/Microsoft.Bot.Builder.sln b/Microsoft.Bot.Builder.sln
index 4f6425102..b1cc12684 100644
--- a/Microsoft.Bot.Builder.sln
+++ b/Microsoft.Bot.Builder.sln
@@ -172,6 +172,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Bot.Builder.TestB
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Bot.Builder.TestBot.NetCore21.Tests", "tests\Microsoft.Bot.Builder.TestBot.NetCore21.Tests\Microsoft.Bot.Builder.TestBot.NetCore21.Tests.csproj", "{2FBA2BB7-73C8-45CD-99B7-D65F817C9051}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Bot.Expressions.Properties", "libraries\Microsoft.Bot.Expressions.Properties\Microsoft.Bot.Expressions.Properties.csproj", "{4943C197-0742-480E-B1D3-6738D41582A3}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -700,6 +702,14 @@ Global
{2FBA2BB7-73C8-45CD-99B7-D65F817C9051}.Release|Any CPU.Build.0 = Release|Any CPU
{2FBA2BB7-73C8-45CD-99B7-D65F817C9051}.Release-Windows|Any CPU.ActiveCfg = Release|Any CPU
{2FBA2BB7-73C8-45CD-99B7-D65F817C9051}.Release-Windows|Any CPU.Build.0 = Release|Any CPU
+ {4943C197-0742-480E-B1D3-6738D41582A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4943C197-0742-480E-B1D3-6738D41582A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4943C197-0742-480E-B1D3-6738D41582A3}.Debug-Windows|Any CPU.ActiveCfg = Debug|Any CPU
+ {4943C197-0742-480E-B1D3-6738D41582A3}.Debug-Windows|Any CPU.Build.0 = Debug|Any CPU
+ {4943C197-0742-480E-B1D3-6738D41582A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4943C197-0742-480E-B1D3-6738D41582A3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4943C197-0742-480E-B1D3-6738D41582A3}.Release-Windows|Any CPU.ActiveCfg = Release|Any CPU
+ {4943C197-0742-480E-B1D3-6738D41582A3}.Release-Windows|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -776,6 +786,7 @@ Global
{D9242899-AB3F-46BB-BAB4-386CB8EC535C} = {AD743B78-D61F-4FBF-B620-FA83CE599A50}
{99C466C3-1931-4C0E-AA0A-A8D9D140F56E} = {AD743B78-D61F-4FBF-B620-FA83CE599A50}
{2FBA2BB7-73C8-45CD-99B7-D65F817C9051} = {AD743B78-D61F-4FBF-B620-FA83CE599A50}
+ {4943C197-0742-480E-B1D3-6738D41582A3} = {4269F3C3-6B42-419B-B64A-3E6DC0F1574A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {7173C9F3-A7F9-496E-9078-9156E35D6E16}
diff --git a/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisApplication.cs b/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisApplication.cs
index 4f9f8e624..29949a1d8 100644
--- a/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisApplication.cs
+++ b/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisApplication.cs
@@ -54,9 +54,9 @@ namespace Microsoft.Bot.Builder.AI.Luis
throw new ArgumentException($"\"{applicationId}\" is not a valid LUIS application id.");
}
- if (!Guid.TryParse(endpointKey, out var subscriptionGuid))
+ if (!Guid.TryParse(endpointKey, out var _))
{
- throw new ArgumentException($"\"{subscriptionGuid}\" is not a valid LUIS subscription key.");
+ throw new ArgumentException($"\"{endpointKey}\" is not a valid LUIS subscription key.");
}
if (string.IsNullOrWhiteSpace(endpoint))
diff --git a/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizer.cs b/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizer.cs
index a3d033378..5b8f75f6e 100644
--- a/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizer.cs
+++ b/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizer.cs
@@ -20,7 +20,7 @@ namespace Microsoft.Bot.Builder.AI.Luis
///
/// A LUIS based implementation of .
///
- public class LuisRecognizer : Recognizer, ITelemetryRecognizer
+ public class LuisRecognizer : ITelemetryRecognizer
{
[JsonProperty("$kind")]
public const string DeclarativeType = "Microsoft.LuisRecognizer";
@@ -198,11 +198,6 @@ namespace Microsoft.Bot.Builder.AI.Luis
return result;
}
- public override Task RecognizeAsync(DialogContext dialogContext, CancellationToken cancellationToken = default)
- {
- return this.RecognizeAsync(dialogContext.Context, cancellationToken);
- }
-
///
/// Runs an utterance through a recognizer and returns a strongly-typed recognizer result.
///
@@ -352,18 +347,6 @@ namespace Microsoft.Bot.Builder.AI.Luis
return result;
}
- public override async Task RecognizeAsync(DialogContext dialogContext, string text, string locale, CancellationToken cancellationToken = default)
- {
- // TODO: Review how to better integrate this--it assumes the turn context contains the text/locale
- var context = dialogContext.Context;
- if (context.Activity == null || context.Activity.Type != ActivityTypes.Message || context.Activity.Text != text || context.Activity.Locale != locale)
- {
- throw new ArgumentException("TurnContext is different than text");
- }
-
- return await RecognizeAsync(dialogContext.Context, cancellationToken).ConfigureAwait(false);
- }
-
///
/// Invoked prior to a LuisResult being logged.
///
diff --git a/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptions.cs b/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptions.cs
index e5721d851..ba42629b8 100644
--- a/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptions.cs
+++ b/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptions.cs
@@ -5,6 +5,7 @@ using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Bot.Builder.Dialogs;
namespace Microsoft.Bot.Builder.AI.Luis
{
@@ -50,6 +51,10 @@ namespace Microsoft.Bot.Builder.AI.Luis
public bool IncludeAPIResults { get; set; } = false;
+ // Support original ITurnContext
internal abstract Task RecognizeInternalAsync(ITurnContext turnContext, HttpClient httpClient, CancellationToken cancellationToken);
+
+ // Support DialogContext
+ internal abstract Task RecognizeInternalAsync(DialogContext context, HttpClient httpClient, CancellationToken cancellationToken);
}
}
diff --git a/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptionsV2.cs b/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptionsV2.cs
index 18f0ac4c8..81c1fb803 100644
--- a/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptionsV2.cs
+++ b/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptionsV2.cs
@@ -7,9 +7,11 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.Azure.CognitiveServices.Language.LUIS.Runtime;
using Microsoft.Azure.CognitiveServices.Language.LUIS.Runtime.Models;
+using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Builder.TraceExtensions;
using Microsoft.Bot.Schema;
using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Serialization;
namespace Microsoft.Bot.Builder.AI.Luis
{
@@ -40,6 +42,9 @@ namespace Microsoft.Bot.Builder.AI.Luis
/// This settings will be used to call Luis.
public LuisPredictionOptions PredictionOptions { get; set; } = new LuisPredictionOptions();
+ internal override async Task RecognizeInternalAsync(DialogContext context, HttpClient httpClient, CancellationToken cancellationToken)
+ => await RecognizeInternalAsync(context.Context, httpClient, cancellationToken).ConfigureAwait(false);
+
internal override async Task RecognizeInternalAsync(ITurnContext turnContext, HttpClient httpClient, CancellationToken cancellationToken)
{
BotAssert.ContextNotNull(turnContext);
diff --git a/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptionsV3.cs b/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptionsV3.cs
index aff144a4d..e0d3db8c6 100644
--- a/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptionsV3.cs
+++ b/libraries/Microsoft.Bot.Builder.AI.LUIS/LuisRecognizerOptionsV3.cs
@@ -8,6 +8,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
+using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Builder.TraceExtensions;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
@@ -36,13 +37,72 @@ namespace Microsoft.Bot.Builder.AI.Luis
{
}
+ ///
+ /// Gets or sets entity recognizer to recognize external entities to pass to LUIS.
+ ///
+ /// External entity recognizer.
+ [JsonProperty("externalEntityRecognizer")]
+ public Recognizer ExternalEntityRecognizer { get; set; }
+
///
/// Gets or sets the Luis Prediction Options for the V3 endpoint.
///
/// This settings will be used to call Luis.
public LuisV3.LuisPredictionOptions PredictionOptions { get; set; } = new LuisV3.LuisPredictionOptions();
+ internal override async Task RecognizeInternalAsync(DialogContext context, HttpClient httpClient, CancellationToken cancellationToken)
+ {
+ var utterance = Utterance(context.Context);
+ var options = PredictionOptions;
+ if (ExternalEntityRecognizer != null)
+ {
+ var matches = await ExternalEntityRecognizer.RecognizeAsync(context, cancellationToken).ConfigureAwait(false);
+ if (matches.Entities != null && matches.Entities.Count > 2)
+ {
+ options = new LuisV3.LuisPredictionOptions(options);
+ options.ExternalEntities = new List();
+ var entities = matches.Entities;
+ var instance = entities["$instance"].ToObject();
+ if (instance != null)
+ {
+ foreach (var child in entities)
+ {
+ // TODO: Checking for "text" because we get an extra non-real entity from the text recognizers
+ if (child.Key != "text" && child.Key != "$instance")
+ {
+ var instances = instance[child.Key]?.ToObject();
+ var values = child.Value.ToObject();
+ if (instances != null && values != null
+ && instances.Count == values.Count)
+ {
+ for (var i = 0; i < values.Count; ++i)
+ {
+ var childInstance = instances[i].ToObject();
+ if (childInstance != null
+ && childInstance.ContainsKey("startIndex")
+ && childInstance.ContainsKey("endIndex"))
+ {
+ var start = childInstance["startIndex"].Value();
+ var end = childInstance["endIndex"].Value();
+ options.ExternalEntities.Add(new LuisV3.ExternalEntity(child.Key, start, end - start, child.Value));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return await RecognizeAsync(context.Context, utterance, options, httpClient, cancellationToken).ConfigureAwait(false);
+ }
+
internal override async Task RecognizeInternalAsync(ITurnContext turnContext, HttpClient httpClient, CancellationToken cancellationToken)
+ {
+ return await RecognizeAsync(turnContext, Utterance(turnContext), PredictionOptions, httpClient, cancellationToken).ConfigureAwait(false);
+ }
+
+ private string Utterance(ITurnContext turnContext)
{
BotAssert.ContextNotNull(turnContext);
if (turnContext.Activity == null || turnContext.Activity.Type != ActivityTypes.Message)
@@ -50,8 +110,11 @@ namespace Microsoft.Bot.Builder.AI.Luis
return null;
}
- var options = PredictionOptions;
- var utterance = turnContext.Activity?.AsMessageActivity()?.Text;
+ return turnContext.Activity?.AsMessageActivity()?.Text;
+ }
+
+ private async Task RecognizeAsync(ITurnContext turnContext, string utterance, LuisV3.LuisPredictionOptions options, HttpClient httpClient, CancellationToken cancellationToken)
+ {
RecognizerResult recognizerResult;
JObject luisResponse = null;
@@ -66,8 +129,8 @@ namespace Microsoft.Bot.Builder.AI.Luis
}
else
{
- var uri = BuildUri();
- var content = BuildRequestBody(utterance);
+ var uri = BuildUri(options);
+ var content = BuildRequestBody(utterance, options);
httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", Application.EndpointKey);
var response = await httpClient.PostAsync(uri.Uri, new StringContent(content.ToString(), System.Text.Encoding.UTF8, "application/json")).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
@@ -80,7 +143,7 @@ namespace Microsoft.Bot.Builder.AI.Luis
recognizerResult.AlteredText = prediction["alteredQuery"]?.Value();
recognizerResult.Intents = LuisV3.LuisUtil.GetIntents(prediction);
recognizerResult.Entities = LuisV3.LuisUtil.ExtractEntitiesAndMetadata(prediction);
-
+
LuisV3.LuisUtil.AddProperties(prediction, recognizerResult);
if (IncludeAPIResults)
{
@@ -113,9 +176,8 @@ namespace Microsoft.Bot.Builder.AI.Luis
return recognizerResult;
}
- private UriBuilder BuildUri()
+ private UriBuilder BuildUri(LuisV3.LuisPredictionOptions options)
{
- var options = PredictionOptions;
var path = new StringBuilder(Application.Endpoint);
path.Append($"/luis/prediction/v3.0/apps/{Application.ApplicationId}");
@@ -138,9 +200,8 @@ namespace Microsoft.Bot.Builder.AI.Luis
return uri;
}
- private JObject BuildRequestBody(string utterance)
+ private JObject BuildRequestBody(string utterance, LuisV3.LuisPredictionOptions options)
{
- var options = PredictionOptions;
var content = new JObject
{
{ "query", utterance },
diff --git a/libraries/Microsoft.Bot.Builder.AI.LUIS/Microsoft.Bot.Builder.AI.Luis.csproj b/libraries/Microsoft.Bot.Builder.AI.LUIS/Microsoft.Bot.Builder.AI.Luis.csproj
index b4a13b0d4..5e64a349f 100644
--- a/libraries/Microsoft.Bot.Builder.AI.LUIS/Microsoft.Bot.Builder.AI.Luis.csproj
+++ b/libraries/Microsoft.Bot.Builder.AI.LUIS/Microsoft.Bot.Builder.AI.Luis.csproj
@@ -34,7 +34,7 @@
-
+
all
diff --git a/libraries/Microsoft.Bot.Builder.AI.LUIS/V3/LuisPredictionOptions.cs b/libraries/Microsoft.Bot.Builder.AI.LUIS/V3/LuisPredictionOptions.cs
index e297c5b07..912f9c52c 100644
--- a/libraries/Microsoft.Bot.Builder.AI.LUIS/V3/LuisPredictionOptions.cs
+++ b/libraries/Microsoft.Bot.Builder.AI.LUIS/V3/LuisPredictionOptions.cs
@@ -11,6 +11,30 @@ namespace Microsoft.Bot.Builder.AI.LuisV3
///
public class LuisPredictionOptions
{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public LuisPredictionOptions()
+ {
+ }
+
+ ///
+ /// Initializes a new instance of the class from an existing instance.
+ ///
+ /// Source of values.
+ public LuisPredictionOptions(LuisPredictionOptions other)
+ {
+ IncludeAllIntents = other.IncludeAllIntents;
+ IncludeAPIResults = other.IncludeAPIResults;
+ IncludeInstanceData = other.IncludeInstanceData;
+ Log = other.Log;
+ DynamicLists = other.DynamicLists;
+ ExternalEntities = other.ExternalEntities;
+ PreferExternalEntities = other.PreferExternalEntities;
+ Slot = other.Slot;
+ Version = other.Version;
+ }
+
///
/// Gets or sets a value indicating whether all intents come back or only the top one.
///
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BaseInvokeDialog.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BaseInvokeDialog.cs
index 7fa94f417..4e8c914c3 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BaseInvokeDialog.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BaseInvokeDialog.cs
@@ -4,8 +4,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
-using Microsoft.Bot.Builder.Dialogs.Declarative;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BeginDialog.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BeginDialog.cs
index 26408588e..8b7c2b4e2 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BeginDialog.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BeginDialog.cs
@@ -2,11 +2,10 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
-using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BreakLoop.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BreakLoop.cs
index 311050f25..a7e0b00f6 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BreakLoop.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/BreakLoop.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/CancelAllDialogs.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/CancelAllDialogs.cs
index 83c77c14f..bb1e084e6 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/CancelAllDialogs.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/CancelAllDialogs.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/CodeAction.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/CodeAction.cs
index 4539033ce..90c87079c 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/CodeAction.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/CodeAction.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ContinueLoop.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ContinueLoop.cs
index b6378b895..bf8a2a0ec 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ContinueLoop.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ContinueLoop.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DebugBreak.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DebugBreak.cs
index 5307d160f..7348e84d3 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DebugBreak.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DebugBreak.cs
@@ -8,7 +8,7 @@ using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteActivity.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteActivity.cs
index 278d21cfe..231b9949a 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteActivity.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteActivity.cs
@@ -5,9 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Templates;
-using Microsoft.Bot.Expressions;
-using Microsoft.Bot.Schema;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteProperties.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteProperties.cs
index 0bbbbe2db..94bd8697e 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteProperties.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteProperties.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteProperty.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteProperty.cs
index f1ebc612f..c66a1e221 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteProperty.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/DeleteProperty.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EditActions.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EditActions.cs
index d56ff17cd..c6a100996 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EditActions.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EditActions.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EditArray.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EditArray.cs
index 0c35ed573..9b9bc7ade 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EditArray.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EditArray.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EmitEvent.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EmitEvent.cs
index 48fafeea2..74f21d760 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EmitEvent.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EmitEvent.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EndDialog.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EndDialog.cs
index 8aa153973..4a42e4574 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EndDialog.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EndDialog.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EndTurn.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EndTurn.cs
index eea83a50c..bdaf8bca4 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EndTurn.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/EndTurn.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ForEach.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ForEach.cs
index 68012e58c..bb8734990 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ForEach.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ForEach.cs
@@ -2,11 +2,10 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
-using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ForEachPage.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ForEachPage.cs
index 31f09c138..c5dea7425 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ForEachPage.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ForEachPage.cs
@@ -5,10 +5,9 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
-using System.Security.Cryptography.X509Certificates;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GetActivityMembers.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GetActivityMembers.cs
index 43dab1f7e..25857a273 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GetActivityMembers.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GetActivityMembers.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GetConversationMembers.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GetConversationMembers.cs
index 75aa7e440..af857c87c 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GetConversationMembers.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GetConversationMembers.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GotoAction.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GotoAction.cs
index f177b5f54..e296f911d 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GotoAction.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/GotoAction.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/HttpRequest.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/HttpRequest.cs
index e01c159a9..3877011fd 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/HttpRequest.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/HttpRequest.cs
@@ -11,6 +11,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.TraceExtensions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/IfCondition.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/IfCondition.cs
index d1b38eea6..9a67fd731 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/IfCondition.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/IfCondition.cs
@@ -7,7 +7,7 @@ using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/LogAction.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/LogAction.cs
index a3279aa04..c1033d7cb 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/LogAction.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/LogAction.cs
@@ -6,9 +6,8 @@ using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs.Adaptive.Templates;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
-using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/PropertyAssignment.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/PropertyAssignment.cs
index e3e57532b..a1736b5b4 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/PropertyAssignment.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/PropertyAssignment.cs
@@ -1,6 +1,7 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
+// Licensed under the MIT License.
+// Copyright (c) Microsoft Corporation. All rights reserved.
+
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/RepeatDialog.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/RepeatDialog.cs
index 88601f38c..4f5302ccc 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/RepeatDialog.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/RepeatDialog.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ReplaceDialog.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ReplaceDialog.cs
index 7129e15af..44107cb6d 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ReplaceDialog.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/ReplaceDialog.cs
@@ -2,11 +2,10 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
using System;
-using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SendActivity.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SendActivity.cs
index 40dbd203e..237df13e2 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SendActivity.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SendActivity.cs
@@ -7,7 +7,7 @@ using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs.Adaptive.Templates;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SetProperties.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SetProperties.cs
index 10249aa2d..9c5718950 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SetProperties.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SetProperties.cs
@@ -3,11 +3,10 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SetProperty.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SetProperty.cs
index 407ceee36..d0ff1c847 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SetProperty.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SetProperty.cs
@@ -5,8 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Builder.Dialogs.Declarative;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SignOutUser.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SignOutUser.cs
index f1e3c5b21..e590ee205 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SignOutUser.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SignOutUser.cs
@@ -5,9 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Templates;
-using Microsoft.Bot.Expressions;
-using Microsoft.Bot.Schema;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SwitchCondition.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SwitchCondition.cs
index d89ed0f7d..6c654b8a9 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SwitchCondition.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/SwitchCondition.cs
@@ -3,11 +3,11 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/TraceActivity.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/TraceActivity.cs
index b36cfcb82..fd2c10c5e 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/TraceActivity.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/TraceActivity.cs
@@ -5,7 +5,7 @@ using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/UpdateActivity.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/UpdateActivity.cs
index 7f5851fe5..03c5bacb3 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/UpdateActivity.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Actions/UpdateActivity.cs
@@ -6,7 +6,7 @@ using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs.Adaptive.Templates;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/AdaptiveAdapterExtensions.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/AdaptiveAdapterExtensions.cs
index 2eb872a73..b87b1c606 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/AdaptiveAdapterExtensions.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/AdaptiveAdapterExtensions.cs
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
+using Microsoft.Bot.Builder.AI.Luis;
using Microsoft.Bot.Builder.Dialogs.Declarative;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive
@@ -15,6 +16,7 @@ namespace Microsoft.Bot.Builder.Dialogs.Adaptive
public static BotAdapter UseAdaptiveDialogs(this BotAdapter botAdapter)
{
DeclarativeTypeLoader.AddComponent(new AdaptiveComponentRegistration());
+ DeclarativeTypeLoader.AddComponent(new LuisComponentRegistration());
return botAdapter;
}
}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/AdaptiveComponentRegistration.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/AdaptiveComponentRegistration.cs
index 4b2e082e2..a4ff3bc36 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/AdaptiveComponentRegistration.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/AdaptiveComponentRegistration.cs
@@ -22,6 +22,7 @@ using Microsoft.Bot.Builder.Dialogs.Declarative.Converters;
using Microsoft.Bot.Builder.Dialogs.Declarative.Loaders;
using Microsoft.Bot.Builder.Dialogs.Declarative.Resolvers;
using Microsoft.Bot.Builder.Dialogs.Declarative.Types;
+using Microsoft.Bot.Expressions.Properties.Converters;
using Newtonsoft.Json;
using static Microsoft.Bot.Builder.Dialogs.Adaptive.Actions.EditArray;
@@ -107,7 +108,6 @@ namespace Microsoft.Bot.Builder.Dialogs.Adaptive
yield return new TypeRegistration(Ask.DeclarativeType);
// Recognizers
- yield return new TypeRegistration(LuisRecognizer.DeclarativeType) { CustomDeserializer = new LuisRecognizerLoader(TypeFactory.Configuration) };
yield return new TypeRegistration(RegexRecognizer.DeclarativeType);
yield return new TypeRegistration(MultiLanguageRecognizer.DeclarativeType);
yield return new TypeRegistration(RecognizerSet.DeclarativeType);
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Generators/TemplateEngineLanguageGenerator.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Generators/TemplateEngineLanguageGenerator.cs
index a431113d5..652a3e8e5 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Generators/TemplateEngineLanguageGenerator.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Generators/TemplateEngineLanguageGenerator.cs
@@ -4,10 +4,10 @@
using System;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs.Declarative.Resources;
using Microsoft.Bot.Builder.LanguageGeneration;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Generators
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/Ask.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/Ask.cs
index 2c9ce411a..41b7902e9 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/Ask.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/Ask.cs
@@ -8,7 +8,7 @@ using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs.Adaptive.Templates;
-using Microsoft.Bot.Builder.Dialogs.Declarative;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Actions
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/AttachmentInput.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/AttachmentInput.cs
index d69be5551..586293af8 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/AttachmentInput.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/AttachmentInput.cs
@@ -4,6 +4,7 @@
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/ChoiceInput.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/ChoiceInput.cs
index 7566f2163..fb9a161cb 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/ChoiceInput.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/ChoiceInput.cs
@@ -3,15 +3,13 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs.Choices;
-using Microsoft.Bot.Builder.Dialogs.Declarative;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
-using Newtonsoft.Json.Converters;
using static Microsoft.Recognizers.Text.Culture;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Input
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/ConfirmInput.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/ConfirmInput.cs
index 465e1000e..cf4441566 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/ConfirmInput.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/ConfirmInput.cs
@@ -6,8 +6,7 @@ using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs.Choices;
-using Microsoft.Bot.Builder.Dialogs.Declarative;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Microsoft.Recognizers.Text.Choice;
using Newtonsoft.Json;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/DateTimeInput.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/DateTimeInput.cs
index 0affded32..f7fa7d400 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/DateTimeInput.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/DateTimeInput.cs
@@ -5,7 +5,7 @@ using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Recognizers.Text.DateTime;
using Newtonsoft.Json;
using static Microsoft.Recognizers.Text.Culture;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/InputDialog.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/InputDialog.cs
index aa5b2a7a1..235e55347 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/InputDialog.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/InputDialog.cs
@@ -3,13 +3,12 @@
using System;
using System.Collections.Generic;
-using System.ComponentModel;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs.Choices;
-using Microsoft.Bot.Builder.LanguageGeneration;
using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/NumberInput.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/NumberInput.cs
index 3cc0855dd..122fe5502 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/NumberInput.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/NumberInput.cs
@@ -4,10 +4,9 @@
using System;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Recognizers.Text.Number;
using Newtonsoft.Json;
-using Newtonsoft.Json.Converters;
using static Microsoft.Recognizers.Text.Culture;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Input
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/OAuthInput.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/OAuthInput.cs
index cb0c8a98b..9d79ba5c6 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/OAuthInput.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/OAuthInput.cs
@@ -7,9 +7,8 @@ using System.Linq;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Templates;
using Microsoft.Bot.Connector;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/TextInput.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/TextInput.cs
index a65e39fa7..65b349f98 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/TextInput.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Input/TextInput.cs
@@ -4,7 +4,7 @@
using System;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Input
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LUIS/DynamicList.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LUIS/DynamicList.cs
new file mode 100644
index 000000000..83ffe004a
--- /dev/null
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LUIS/DynamicList.cs
@@ -0,0 +1,40 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license.
+
+using System.Collections.Generic;
+using Microsoft.Bot.Builder.AI.LuisV3;
+using Newtonsoft.Json;
+
+namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Luis
+{
+ ///
+ /// Defines an extension for a list entity.
+ ///
+ public class DynamicList
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public DynamicList()
+ {
+ }
+
+ ///
+ /// Gets or sets the name of the list entity to extend.
+ ///
+ ///
+ /// The name of the list entity to extend.
+ ///
+ [JsonProperty(PropertyName = "entity")]
+ public string Entity { get; set; }
+
+ ///
+ /// Gets or sets the lists to append on the extended list entity.
+ ///
+ ///
+ /// The lists to append on the extended list entity.
+ ///
+ [JsonProperty(PropertyName = "list")]
+ public IList List { get; set; }
+ }
+}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LUIS/LuisAdaptiveRecognizer.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LUIS/LuisAdaptiveRecognizer.cs
new file mode 100644
index 000000000..43a128374
--- /dev/null
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LUIS/LuisAdaptiveRecognizer.cs
@@ -0,0 +1,131 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license.
+
+using System;
+using System.Collections.Generic;
+using System.Net.Http;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Bot.Builder.AI.Luis;
+using Microsoft.Bot.Expressions.Properties;
+using Microsoft.Bot.Schema;
+using Newtonsoft.Json;
+
+namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Recognizers
+{
+ ///
+ /// Class that represents an adaptive LUIS recognizer.
+ ///
+ public class LuisAdaptiveRecognizer : Recognizer
+ {
+ [JsonProperty("$kind")]
+ public const string DeclarativeType = "Microsoft.LuisRecognizer";
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public LuisAdaptiveRecognizer()
+ {
+ }
+
+ ///
+ /// Gets or sets LUIS application ID.
+ ///
+ /// Application ID.
+ [JsonProperty("applicationId")]
+ public StringExpression ApplicationId { get; set; }
+
+ ///
+ /// Gets or sets LUIS endpoint like https://westus.api.cognitive.microsoft.com to query.
+ ///
+ /// LUIS Endpoint.
+ [JsonProperty("endpoint")]
+ public StringExpression Endpoint { get; set; }
+
+ ///
+ /// Gets or sets the key used to talk to a LUIS endpoint.
+ ///
+ /// Endpoint key.
+ [JsonProperty("endpointKey")]
+ public StringExpression EndpointKey { get; set; }
+
+ ///
+ /// Gets or sets an external entity recognizer.
+ ///
+ /// This recognizer is run before calling LUIS and the results are passed to LUIS.
+ /// Recognizer.
+ [JsonProperty("externalEntityRecognizer")]
+ public Recognizer ExternalEntityRecognizer { get; set; }
+
+ ///
+ /// Gets or sets an expression or constant LUIS dynamic list.
+ ///
+ /// Dynamic lists.
+ [JsonProperty("dynamicLists")]
+ public ArrayExpression DynamicLists { get; set; }
+
+ ///
+ /// Gets or sets LUIS prediction options.
+ ///
+ /// Prediction options.
+ [JsonProperty("predictionOptions")]
+ public AI.LuisV3.LuisPredictionOptions PredictionOptions { get; set; } = new AI.LuisV3.LuisPredictionOptions();
+
+ ///
+ /// Gets or sets HTTP client handler.
+ ///
+ /// HTTP client handler.
+ [JsonIgnore]
+ public HttpClientHandler HttpClient { get; set; }
+
+ ///
+ /// Gets or sets .
+ ///
+ /// Telemetry client.
+ [JsonIgnore]
+ public IBotTelemetryClient TelemetryClient { get; set; } = new NullBotTelemetryClient();
+
+ ///
+ public override async Task RecognizeAsync(DialogContext dialogContext, string text, string locale, CancellationToken cancellationToken = default)
+ {
+ var wrapper = new LuisRecognizer(RecognizerOptions(dialogContext), HttpClient);
+ var context = dialogContext.Context;
+ if (context.Activity == null || context.Activity.Type != ActivityTypes.Message || context.Activity.Text != text || context.Activity.Locale != locale)
+ {
+ throw new ArgumentException("TurnContext is different than text");
+ }
+
+ return await wrapper.RecognizeAsync(dialogContext.Context, cancellationToken).ConfigureAwait(false);
+ }
+
+ ///
+ /// Construct V3 recognizer options from the current dialog context.
+ ///
+ /// Context.
+ /// LUIS Recognizer options.
+ public LuisRecognizerOptionsV3 RecognizerOptions(DialogContext dialogContext)
+ {
+ var options = PredictionOptions;
+ var dcState = dialogContext.GetState();
+ if (DynamicLists != null)
+ {
+ options = new AI.LuisV3.LuisPredictionOptions(options);
+ var list = new List();
+ foreach (var listEntity in DynamicLists.GetValue(dcState))
+ {
+ list.Add(new AI.LuisV3.DynamicList(listEntity.Entity, listEntity.List));
+ }
+
+ options.DynamicLists = list;
+ }
+
+ var application = new LuisApplication(ApplicationId.GetValue(dcState), EndpointKey.GetValue(dcState), Endpoint.GetValue(dcState));
+ return new LuisRecognizerOptionsV3(application)
+ {
+ ExternalEntityRecognizer = ExternalEntityRecognizer,
+ PredictionOptions = options,
+ TelemetryClient = TelemetryClient
+ };
+ }
+ }
+}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LUIS/LuisComponentRegistration.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LUIS/LuisComponentRegistration.cs
new file mode 100644
index 000000000..aab56cb01
--- /dev/null
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LUIS/LuisComponentRegistration.cs
@@ -0,0 +1,27 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System.Collections.Generic;
+using Microsoft.Bot.Builder.Dialogs.Adaptive.Luis;
+using Microsoft.Bot.Builder.Dialogs.Adaptive.Recognizers;
+using Microsoft.Bot.Builder.Dialogs.Debugging;
+using Microsoft.Bot.Builder.Dialogs.Declarative;
+using Microsoft.Bot.Builder.Dialogs.Declarative.Resolvers;
+using Microsoft.Bot.Expressions.Properties.Converters;
+using Newtonsoft.Json;
+
+namespace Microsoft.Bot.Builder.AI.Luis
+{
+ public class LuisComponentRegistration : ComponentRegistration
+ {
+ public override IEnumerable GetTypes()
+ {
+ yield return new TypeRegistration(LuisAdaptiveRecognizer.DeclarativeType);
+ }
+
+ public override IEnumerable GetConverters(ISourceMap sourceMap, IRefResolver refResolver, Stack paths)
+ {
+ yield return new ArrayExpressionConverter();
+ }
+ }
+}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LanguageGenerationComponentRegistration.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LanguageGenerationComponentRegistration.cs
index 2ea3cb105..a4b67fc71 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LanguageGenerationComponentRegistration.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/LanguageGenerationComponentRegistration.cs
@@ -1,10 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-using System;
using System.Collections.Generic;
-using System.Text;
-using Microsoft.Bot.Builder.AI.Luis;
using Microsoft.Bot.Builder.Dialogs.Adaptive.Templates;
using Microsoft.Bot.Builder.Dialogs.Debugging;
using Microsoft.Bot.Builder.Dialogs.Declarative;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/DialogContextExtensions.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/DialogContextExtensions.cs
index de03209de..6417c2fbe 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/DialogContextExtensions.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/DialogContextExtensions.cs
@@ -3,7 +3,6 @@
using System;
using Microsoft.Bot.Builder.Dialogs.Memory;
-using Microsoft.Recognizers.Text.DateTime.Chinese;
namespace Microsoft.Bot.Builder.Dialogs
{
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/DialogExpression.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/DialogExpression.cs
index 640a43fa7..b18ed78d6 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/DialogExpression.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/DialogExpression.cs
@@ -1,8 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
-using Newtonsoft.Json;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json.Linq;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Microsoft.Bot.Builder.Dialogs.Adaptive.csproj b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Microsoft.Bot.Builder.Dialogs.Adaptive.csproj
index c2b421464..9bfefe3d3 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Microsoft.Bot.Builder.Dialogs.Adaptive.csproj
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Microsoft.Bot.Builder.Dialogs.Adaptive.csproj
@@ -56,10 +56,12 @@
+
+
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerComponentRegistration.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerComponentRegistration.cs
index 03fa6e050..2fa9d86ba 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerComponentRegistration.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerComponentRegistration.cs
@@ -2,13 +2,12 @@
// Licensed under the MIT License.
using System.Collections.Generic;
-using Microsoft.Bot.Builder.Dialogs.Adaptive;
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
using Microsoft.Bot.Builder.Dialogs.Adaptive.QnA;
using Microsoft.Bot.Builder.Dialogs.Adaptive.QnA.Recognizers;
using Microsoft.Bot.Builder.Dialogs.Debugging;
using Microsoft.Bot.Builder.Dialogs.Declarative;
using Microsoft.Bot.Builder.Dialogs.Declarative.Resolvers;
+using Microsoft.Bot.Expressions.Properties.Converters;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.AI.QnA
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerDialog2.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerDialog2.cs
index 77ee71325..59d923298 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerDialog2.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerDialog2.cs
@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.AI.QnA;
using Microsoft.Bot.Builder.AI.QnA.Dialogs;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Newtonsoft.Json;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerRecognizer.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerRecognizer.cs
index a230b4605..377760416 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerRecognizer.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/QnAMaker/QnAMakerRecognizer.cs
@@ -9,6 +9,7 @@ using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.AI.QnA;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.BeginDialog.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.BeginDialog.schema
index 232e005a9..e01891be4 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.BeginDialog.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.BeginDialog.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string"],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -22,7 +22,7 @@
"dialog": {
"$kind": "Microsoft.IDialog",
"$role": "expression",
- "type": ["string", "object"],
+ "type": "object",
"title": "Dialog name",
"description": "Name of the dialog to call.",
"examples": [
@@ -31,7 +31,7 @@
},
"options": {
"$role": "expression",
- "type": [ "string", "object" ],
+ "type": "object",
"title": "Options",
"description": "One or more options that are passed to the dialog that is called.",
"additionalProperties": {
@@ -41,7 +41,7 @@
},
"activityProcessed": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Activity Processed",
"description": "When set to false, the dialog that is called can process the current activity.",
"default": true
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.BreakLoop.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.BreakLoop.schema
index ef59ead84..dfed64660 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.BreakLoop.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.BreakLoop.schema
@@ -13,7 +13,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.CancelAllDialogs.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.CancelAllDialogs.schema
index 5b8f25b22..4d8cea53b 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.CancelAllDialogs.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.CancelAllDialogs.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -27,7 +27,14 @@
},
"eventValue": {
"$role": "expression",
- "type": [ "object", "array", "number", "integer", "boolean", "string" ],
+ "type": [
+ "object",
+ "array",
+ "number",
+ "integer",
+ "boolean",
+ "string"
+ ],
"title": "Event value",
"description": "Value to emit with the event (optional).",
"additionalProperties": true
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ContinueLoop.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ContinueLoop.schema
index 2308620f1..d555e9b41 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ContinueLoop.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ContinueLoop.schema
@@ -13,7 +13,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DebugBreak.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DebugBreak.schema
index 0c7da75e0..cc86d5543 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DebugBreak.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DebugBreak.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteActivity.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteActivity.schema
index 1436e1a76..a2a806d89 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteActivity.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteActivity.schema
@@ -25,7 +25,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteProperties.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteProperties.schema
index 0f3191eaa..4c703b3f4 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteProperties.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteProperties.schema
@@ -15,7 +15,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteProperty.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteProperty.schema
index eaa9f4ff5..07f4d6a87 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteProperty.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.DeleteProperty.schema
@@ -15,7 +15,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EditActions.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EditActions.schema
index 700c08354..56742268c 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EditActions.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EditActions.schema
@@ -16,7 +16,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EditArray.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EditArray.schema
index cdc086976..96d407a9f 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EditArray.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EditArray.schema
@@ -29,7 +29,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -50,7 +50,14 @@
},
"value": {
"$role": "expression",
- "type": [ "object", "array", "number", "integer", "boolean", "string" ],
+ "type": [
+ "object",
+ "array",
+ "number",
+ "integer",
+ "boolean",
+ "string"
+ ],
"title": "Value",
"description": "New value or expression.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EmitEvent.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EmitEvent.schema
index 2bd5af02a..345af4bed 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EmitEvent.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EmitEvent.schema
@@ -15,7 +15,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -44,13 +44,20 @@
},
"eventValue": {
"$role": "expression",
- "type": [ "object", "array", "number", "integer", "boolean", "string" ],
+ "type": [
+ "object",
+ "array",
+ "number",
+ "integer",
+ "boolean",
+ "string"
+ ],
"title": "Event value",
"description": "Value to emit with the event (optional)."
},
"bubbleEvent": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Bubble event",
"description": "If true this event is passed on to parent dialogs.",
"default": false
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EndDialog.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EndDialog.schema
index caecc1846..8217bb92a 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EndDialog.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EndDialog.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -21,7 +21,14 @@
},
"value": {
"$role": "expression",
- "type": [ "object", "array", "number", "integer", "boolean", "string" ],
+ "type": [
+ "object",
+ "array",
+ "number",
+ "integer",
+ "boolean",
+ "string"
+ ],
"title": "Value",
"description": "Result value returned to the parent dialog.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EndTurn.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EndTurn.schema
index 918c7a474..3ad075387 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EndTurn.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.EndTurn.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.Foreach.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.Foreach.schema
index e80c089c9..e15fe7e08 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.Foreach.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.Foreach.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -21,7 +21,7 @@
},
"itemsProperty": {
"$role": "expression",
- "type": [ "string" ],
+ "type": "string",
"title": "Items property",
"description": "Property that holds the array.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ForeachPage.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ForeachPage.schema
index 0cb62697d..e5d4df082 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ForeachPage.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ForeachPage.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -38,7 +38,7 @@
},
"pageSize": {
"$role": "expression",
- "type": [ "integer", "string" ],
+ "type": "integer",
"title": "Page size",
"description": "Number of items in each page.",
"default": 10
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GetActivityMembers.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GetActivityMembers.schema
index 13ed133d9..6977e22b6 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GetActivityMembers.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GetActivityMembers.schema
@@ -21,7 +21,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GetConversationMembers.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GetConversationMembers.schema
index f489b70b6..9b16eb7bc 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GetConversationMembers.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GetConversationMembers.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GotoAction.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GotoAction.schema
index 192d6508c..028cc3b0c 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GotoAction.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.GotoAction.schema
@@ -15,7 +15,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.HttpRequest.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.HttpRequest.schema
index 8b6149446..9496cc004 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.HttpRequest.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.HttpRequest.schema
@@ -16,7 +16,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -50,7 +50,14 @@
},
"body": {
"$role": "expression",
- "type": [ "object", "array", "number", "integer", "boolean", "string" ],
+ "type": [
+ "object",
+ "array",
+ "number",
+ "integer",
+ "boolean",
+ "string"
+ ],
"title": "Body",
"description": "Body to include in the HTTP call (supports data binding).",
"additionalProperties": true
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.IfCondition.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.IfCondition.schema
index 8cae6b171..844125bc2 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.IfCondition.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.IfCondition.schema
@@ -16,7 +16,7 @@
},
"condition": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Condition",
"description": "Expression to evaluate.",
"examples": [
@@ -25,7 +25,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.LogAction.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.LogAction.schema
index b86c33e02..0940b18f3 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.LogAction.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.LogAction.schema
@@ -15,7 +15,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -36,7 +36,7 @@
},
"traceActivity": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Send Trace Activity",
"description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator).",
"default": false
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.RepeatDialog.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.RepeatDialog.schema
index 197d23d87..c7ede3cb7 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.RepeatDialog.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.RepeatDialog.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -21,7 +21,7 @@
},
"options": {
"$role": "expression",
- "type": [ "string", "object" ],
+ "type": "object",
"title": "Options",
"description": "One or more options that are passed to the dialog that is called.",
"additionalProperties": {
@@ -31,7 +31,7 @@
},
"activityProcessed": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Activity Processed",
"description": "When set to false, the dialog that is called can process the current activity.",
"default": true
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ReplaceDialog.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ReplaceDialog.schema
index f9488a77f..79b34a5a1 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ReplaceDialog.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.ReplaceDialog.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -22,7 +22,7 @@
"dialog": {
"$kind": "Microsoft.IDialog",
"$role": "expression",
- "type": ["string", "object"],
+ "type": "string",
"title": "Dialog name",
"description": "Name of the dialog to call.",
"examples": [
@@ -31,7 +31,7 @@
},
"options": {
"$role": "expression",
- "type": [ "string", "object" ],
+ "type": "object",
"title": "Options",
"description": "One or more options that are passed to the dialog that is called.",
"additionalProperties": {
@@ -41,7 +41,7 @@
},
"activityProcessed": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Activity Processed",
"description": "When set to false, the dialog that is called can process the current activity.",
"default": true
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SendActivity.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SendActivity.schema
index 5a7042ffb..7719b329d 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SendActivity.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SendActivity.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SetProperties.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SetProperties.schema
index d24df64ad..fd171bed0 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SetProperties.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SetProperties.schema
@@ -15,7 +15,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -40,7 +40,14 @@
},
"value": {
"$role": "expression",
- "type": [ "object", "array", "number", "integer", "boolean", "string" ],
+ "type": [
+ "object",
+ "array",
+ "number",
+ "integer",
+ "boolean",
+ "string"
+ ],
"title": "Value",
"description": "New value or expression.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SetProperty.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SetProperty.schema
index dd115df02..0af22c9b0 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SetProperty.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SetProperty.schema
@@ -16,7 +16,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -34,7 +34,14 @@
},
"value": {
"$role": "expression",
- "type": [ "object", "array", "number", "integer", "boolean", "string" ],
+ "type": [
+ "object",
+ "array",
+ "number",
+ "integer",
+ "boolean",
+ "string"
+ ],
"title": "Value",
"description": "New value or expression.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SignOutUser.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SignOutUser.schema
index 89ecbd122..c3c1dc788 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SignOutUser.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SignOutUser.schema
@@ -27,7 +27,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SwitchCondition.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SwitchCondition.schema
index f8472c6e7..03eaae4b7 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SwitchCondition.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.SwitchCondition.schema
@@ -24,7 +24,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -40,7 +40,12 @@
"properties": {
"value": {
"$role": "expression",
- "type": [ "number", "integer", "boolean", "string" ],
+ "type": [
+ "number",
+ "integer",
+ "boolean",
+ "string"
+ ],
"title": "Value",
"description": "Value.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.TraceActivity.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.TraceActivity.schema
index b86b0a0a0..370c88aaf 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.TraceActivity.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.TraceActivity.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -39,7 +39,14 @@
},
"value": {
"$role": "expression",
- "type": [ "object", "array", "number", "integer", "boolean", "string" ],
+ "type": [
+ "object",
+ "array",
+ "number",
+ "integer",
+ "boolean",
+ "string"
+ ],
"title": "Value",
"description": "Property that holds the value to send as trace activity."
}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.UpdateActivity.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.UpdateActivity.schema
index f010896ef..098f3f63b 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.UpdateActivity.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Actions/Microsoft.UpdateActivity.schema
@@ -12,7 +12,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.Ask.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.Ask.schema
index 94b1b6486..4b9d5b4d9 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.Ask.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.Ask.schema
@@ -14,19 +14,12 @@
"$role": "expression",
"title": "Expected Properties",
"description": "Properties expected to be filled by entities from the user",
- "oneOf": [
- {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- {
- "type": "string"
- }
- ]
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
}
}
}
]
-}
\ No newline at end of file
+}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.ChoiceInput.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.ChoiceInput.schema
index 7a5ceaaf5..ab33777e2 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.ChoiceInput.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.ChoiceInput.schema
@@ -22,10 +22,8 @@
"default": "value"
},
"choices": {
- "anyOf": [
- {
- "$role": "expression"
- },
+ "$role": "expression",
+ "oneOf": [
{
"type": "array",
"items": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.OAuthInput.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.OAuthInput.schema
index 6c7860886..6ffe6df22 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.OAuthInput.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.OAuthInput.schema
@@ -16,7 +16,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -43,7 +43,7 @@
},
"timeout": {
"$role": "expression",
- "type": [ "integer", "string" ],
+ "type": "integer",
"title": "Timeout",
"description": "Time out setting for the OAuth signin card.",
"default": "900000"
@@ -75,7 +75,7 @@
},
"maxTurnCount": {
"$role": "expression",
- "type": [ "integer", "string" ],
+ "type": "integer",
"title": "Max turn count",
"description": "Maximum number of re-prompt attempts to collect information.",
"default": 3,
@@ -85,7 +85,14 @@
},
"defaultValue": {
"$role": "expression",
- "type": [ "object", "array", "number", "integer", "boolean", "string" ],
+ "type": [
+ "object",
+ "array",
+ "number",
+ "integer",
+ "boolean",
+ "string"
+ ],
"title": "Default value",
"description": "Expression to examine on each turn of the conversation as possible value to the property.",
"examples": [
@@ -94,7 +101,7 @@
},
"allowInterruptions": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Allow Interruptions",
"description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.",
"default": "true",
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.QnAMakerDialog.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.QnAMakerDialog.schema
index 2cf8fe681..d65fd8cc9 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.QnAMakerDialog.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Dialogs/Microsoft.QnAMakerDialog.schema
@@ -38,7 +38,7 @@
},
"threshold": {
"$role": "expression",
- "type": [ "number", "string" ],
+ "type": "number",
"title": "Threshold",
"description": "Threshold score to filter results.",
"default": 0.3
@@ -65,7 +65,7 @@
},
"strictFilters": {
"$role": "expression",
- "type": [ "array", "string" ],
+ "type": "array",
"title": "Strict Filters",
"description": "Metadata filters to use when calling the QnA Maker KB.",
"items": {
@@ -86,7 +86,7 @@
},
"top": {
"$role": "expression",
- "type": [ "number", "string" ],
+ "type": "number",
"title": "Top",
"description": "The number of answers you want to retrieve.",
"default": 3
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Recognizers/Microsoft.LuisRecognizer.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Recognizers/Microsoft.LuisRecognizer.schema
index e87ddaf92..c7642dd82 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Recognizers/Microsoft.LuisRecognizer.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Recognizers/Microsoft.LuisRecognizer.schema
@@ -29,6 +29,52 @@
"description": "LUIS prediction key used to call endpoint.",
"$role": "expression"
},
+ "externalEntityRecognizer": {
+ "title": "External Entity Recognizer",
+ "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.",
+ "$kind": "Microsoft.Recognizer"
+ },
+ "dynamicLists": {
+ "$role": "expression",
+ "title": "Dynamic lists",
+ "description": "Runtime defined entity lists.",
+ "type": "array",
+ "items": {
+ "title": "Entity list",
+ "description": "Lists of canonical values and synonyms for an entity.",
+ "type": "object",
+ "properties": {
+ "entity": {
+ "title": "Entity",
+ "description": "Entity to extend with a dynamic list.",
+ "type": "string"
+ },
+ "list": {
+ "title": "Dynamic list",
+ "description": "List of canonical forms and synonyms.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "canonicalForm": {
+ "title": "Canonical form",
+ "description": "Resolution if any synonym matches.",
+ "type": "string"
+ },
+ "synonyms": {
+ "title": "Synonyms",
+ "description": "List of synonyms for a canonical form.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
"predictionOptions": {
"type": "object",
"properties": {
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Recognizers/Microsoft.QnAMakerRecognizer.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Recognizers/Microsoft.QnAMakerRecognizer.schema
index 8b6598000..2e66f16c3 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Recognizers/Microsoft.QnAMakerRecognizer.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Recognizers/Microsoft.QnAMakerRecognizer.schema
@@ -12,18 +12,21 @@
},
"knowledgeBaseId": {
"$role": "expression",
+ "type": "string",
"title": "KnowledgeBase Id",
"description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.",
"default": "settings.qna.knowledgebaseid"
},
"endpointKey": {
"$role": "expression",
+ "type": "string",
"title": "Endpoint Key",
"description": "Endpoint key for the QnA Maker KB.",
"default": "settings.qna.endpointkey"
},
"hostname": {
"$role": "expression",
+ "type": "string",
"title": "Hostname",
"description": "Hostname for your QnA Maker service.",
"default": "settings.qna.hostname",
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Selectors/Microsoft.ConditionalSelector.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Selectors/Microsoft.ConditionalSelector.schema
index 42e7d8458..ee1dfbbfc 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Selectors/Microsoft.ConditionalSelector.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Selectors/Microsoft.ConditionalSelector.schema
@@ -6,7 +6,8 @@
"type": "object",
"properties": {
"condition": {
- "$role": "expression"
+ "$role": "expression",
+ "type": "boolean"
},
"ifTrue": {
"$kind": "Microsoft.ITriggerSelector"
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertCondition.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertCondition.schema
index de56d7649..1917f6489 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertCondition.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertCondition.schema
@@ -7,6 +7,7 @@
"properties": {
"condition": {
"$role": "expression",
+ "type": "boolean",
"title": "Condition",
"description": "Expression to evalute",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReply.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReply.schema
index cee6421b4..6d316f204 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReply.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReply.schema
@@ -34,6 +34,7 @@
"description": "Sequence of expressions which must evaluate to true.",
"items": {
"$role": "expression",
+ "type": "boolean",
"title": "Assertion",
"description": "Assertion as an expression, which must evaluate to true or it will fail the test script.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReplyActivity.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReplyActivity.schema
index 4af5d56ca..38960e39d 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReplyActivity.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReplyActivity.schema
@@ -24,6 +24,7 @@
"description": "Sequence of expressions which must evaluate to true.",
"items": {
"$role": "expression",
+ "type": "boolean",
"title": "Assertion",
"description": "Assertion as an expression, which must evaluate to true or it will fail the test script.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReplyOneOf.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReplyOneOf.schema
index 5789cbfa4..7d71e256a 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReplyOneOf.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/Testing/Microsoft.Test.AssertReplyOneOf.schema
@@ -37,6 +37,7 @@
"description": "Sequence of expressions which must evaluate to true.",
"items": {
"$role": "expression",
+ "type": "boolean",
"title": "Assertion",
"description": "Assertion as an expression, which must evaluate to true or it will fail the test script.",
"examples": [
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/TriggerConditions/Microsoft.OnCondition.schema b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/TriggerConditions/Microsoft.OnCondition.schema
index 934932bc5..36e6b65a5 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/TriggerConditions/Microsoft.OnCondition.schema
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Schemas/TriggerConditions/Microsoft.OnCondition.schema
@@ -7,6 +7,7 @@
"properties": {
"condition": {
"$role": "expression",
+ "type": "boolean",
"title": "Condition",
"description": "Condition (expression).",
"examples": [
@@ -21,7 +22,7 @@
}
},
"priority": {
- "type": "string",
+ "type": "integer",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
"$role": "expression"
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Selectors/ConditionalSelector.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Selectors/ConditionalSelector.cs
index 3e8c8e0a3..483e5708d 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Selectors/ConditionalSelector.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Selectors/ConditionalSelector.cs
@@ -7,6 +7,7 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs.Adaptive.Conditions;
using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Selectors
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/SimpleMultiLangGenerator.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/SimpleMultiLangGenerator.cs
index 574a28d1e..8876a5c8b 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/SimpleMultiLangGenerator.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/SimpleMultiLangGenerator.cs
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.LanguageGeneration;
+using Microsoft.Bot.Expressions.Properties;
namespace Microsoft.Bot.Builder.Dialogs.Adaptive
{
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisComponentRegistration.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisComponentRegistration.cs
index 4985a03e3..b05477a95 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisComponentRegistration.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisComponentRegistration.cs
@@ -2,8 +2,12 @@
// Licensed under the MIT License.
using System.Collections.Generic;
+using Microsoft.Bot.Builder.AI.Luis;
+using Microsoft.Bot.Builder.Dialogs.Debugging;
using Microsoft.Bot.Builder.Dialogs.Declarative;
+using Microsoft.Bot.Builder.Dialogs.Declarative.Resolvers;
using Microsoft.Bot.Builder.Dialogs.Declarative.Types;
+using Newtonsoft.Json;
namespace Microsoft.Bot.Builder.MockLuis
{
@@ -14,5 +18,13 @@ namespace Microsoft.Bot.Builder.MockLuis
// Recognizers
yield return new TypeRegistration("Microsoft.LuisRecognizer") { CustomDeserializer = new MockLuisLoader(TypeFactory.Configuration) };
}
+
+ public override IEnumerable GetConverters(ISourceMap sourceMap, IRefResolver refResolver, Stack paths)
+ {
+ foreach (var converter in new LuisComponentRegistration().GetConverters(sourceMap, refResolver, paths))
+ {
+ yield return converter;
+ }
+ }
}
}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisExtensions.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisExtensions.cs
index 4bc95ef17..4b4c06c96 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisExtensions.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisExtensions.cs
@@ -64,11 +64,14 @@ namespace Microsoft.Bot.Builder.MockLuis
return builder
.SetBasePath(Path.GetFullPath(directory))
.AddJsonFile(settings, optional: false)
- .AddInMemoryCollection(new KeyValuePair[]
- {
- new KeyValuePair("luis:endpoint", endpoint),
- new KeyValuePair("luis:resources", directory)
- })
+ .AddInMemoryCollection(new Dictionary
+ {
+ { "luis:endpoint", endpoint },
+ { "luis:resources", directory },
+
+ // Ensure there is a key even if there is no secret
+ { "luis:endpointKey", "00000000-0000-0000-0000-000000000000" }
+ })
.AddUserSecrets(userSecretId);
}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisLoader.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisLoader.cs
index e9e775540..db7a1bbcd 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisLoader.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisLoader.cs
@@ -2,8 +2,8 @@
// Licensed under the MIT License.
using System;
-using System.Runtime.Serialization;
-using Microsoft.Bot.Builder.AI.Luis;
+using Microsoft.Bot.Builder.Dialogs;
+using Microsoft.Bot.Builder.Dialogs.Adaptive.Recognizers;
using Microsoft.Bot.Builder.Dialogs.Declarative;
using Microsoft.Bot.Builder.Dialogs.Declarative.Loaders;
using Microsoft.Extensions.Configuration;
@@ -23,34 +23,15 @@ namespace Microsoft.Bot.Builder.MockLuis
public object Load(JToken obj, JsonSerializer serializer, Type type)
{
- // If the luis service info is inlined with the recognizer, load it here for
- // simpler json format
- if (obj["applicationId"]?.Type == JTokenType.String)
+ var recognizer = obj.ToObject(serializer);
+ var name = recognizer.ApplicationId.ToString();
+ if (name.StartsWith("="))
{
- var luisApplication = obj.ToObject();
- var name = luisApplication.ApplicationId;
- if (name.StartsWith("{") && name.EndsWith("}"))
- {
- var start = name.LastIndexOf('.') + 1;
- var end = name.LastIndexOf('}');
- name = name.Substring(start, end - start);
- }
-
- luisApplication.ApplicationId = configuration.LoadSetting(luisApplication.ApplicationId);
- luisApplication.Endpoint = configuration.LoadSetting(luisApplication.Endpoint);
- luisApplication.EndpointKey = configuration.LoadSetting(luisApplication.EndpointKey);
-
- var options = new LuisRecognizerOptionsV3(luisApplication);
- if (obj["predictionOptions"] != null)
- {
- options.PredictionOptions = obj["predictionOptions"].ToObject();
- }
-
- return new MockLuisRecognizer(options, configuration.GetValue("luis:resources"), name);
+ var start = name.LastIndexOf('.') + 1;
+ name = name.Substring(start);
}
- // Else, just assume it is the verbose structure with LuisService as inner object
- return obj.ToObject(serializer);
+ return new MockLuisRecognizer(recognizer, configuration.GetValue("luis:resources"), name);
}
}
}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisRecognizer.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisRecognizer.cs
index 81cabf10b..2e5b5b90f 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisRecognizer.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Testing/MockLuis/MockLuisRecognizer.cs
@@ -7,6 +7,7 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.AI.Luis;
using Microsoft.Bot.Builder.Dialogs;
+using Microsoft.Bot.Builder.Dialogs.Adaptive.Recognizers;
using Newtonsoft.Json;
using RichardSzalay.MockHttp;
@@ -21,24 +22,21 @@ namespace Microsoft.Bot.Builder.MockLuis
public class MockLuisRecognizer : Recognizer
{
private string _responseDir;
- private LuisRecognizerOptionsV3 _options;
- private string _name;
+ private LuisAdaptiveRecognizer _recognizer;
///
/// Initializes a new instance of the class.
///
+ /// LUIS recognizer definition.
/// Where the settings file generated by lubuild is found.
/// Name of the LUIS model.
- /// LUIS options.
public MockLuisRecognizer(
- LuisRecognizerOptionsV3 options,
+ LuisAdaptiveRecognizer recognizer,
string resourceDir,
string name)
{
- _responseDir = Path.Combine(Path.GetDirectoryName(resourceDir), "cachedResponses", name);
- _name = name;
- _options = options;
- _options.IncludeAPIResults = true;
+ _recognizer = recognizer;
+ _responseDir = Path.Combine(resourceDir, "cachedResponses", name);
if (!Directory.Exists(_responseDir))
{
Directory.CreateDirectory(_responseDir);
@@ -47,33 +45,110 @@ namespace Microsoft.Bot.Builder.MockLuis
public override async Task RecognizeAsync(DialogContext dialogContext, string text, string locale, CancellationToken cancellationToken = default)
{
- var client = GetMockedClient(text);
- var recognizer = new LuisRecognizer(_options, client);
- var result = await recognizer.RecognizeAsync(dialogContext, text, locale, cancellationToken);
+ var recognizer = _recognizer.RecognizerOptions(dialogContext);
+ recognizer.IncludeAPIResults = true;
+ var client = GetMockedClient(text, recognizer);
+ var wrapper = new LuisRecognizer(recognizer, client);
+ var result = await wrapper.RecognizeAsync(dialogContext.Context, cancellationToken).ConfigureAwait(false);
if (client == null)
{
// Save response
- var outPath = ResponsePath(text);
+ var outPath = ResponsePath(text, recognizer);
File.WriteAllText(outPath, JsonConvert.SerializeObject(result.Properties["luisResult"]));
}
return result;
}
- private string ResponsePath(string utterance)
- => Path.Combine(_responseDir, $"{utterance.StableHash()}.json");
+ private string ResponsePath(string utterance, LuisRecognizerOptionsV3 recognizer)
+ {
+ var hash = utterance.StableHash();
+ if (recognizer.ExternalEntityRecognizer != null)
+ {
+ hash ^= "external".StableHash();
+ }
- private HttpClientHandler GetMockedClient(string utterance)
+ if (recognizer.IncludeAPIResults)
+ {
+ hash ^= "api".StableHash();
+ }
+
+ if (recognizer.LogPersonalInformation)
+ {
+ hash ^= "personal".StableHash();
+ }
+
+ var options = recognizer.PredictionOptions;
+ if (options.DynamicLists != null)
+ {
+ foreach (var dynamicList in options.DynamicLists)
+ {
+ hash ^= dynamicList.Entity.StableHash();
+ foreach (var choices in dynamicList.List)
+ {
+ hash ^= choices.CanonicalForm.StableHash();
+ foreach (var synonym in choices.Synonyms)
+ {
+ hash ^= synonym.StableHash();
+ }
+ }
+ }
+ }
+
+ if (options.ExternalEntities != null)
+ {
+ foreach (var external in options.ExternalEntities)
+ {
+ hash ^= external.Entity.StableHash();
+ hash ^= external.Start.ToString().StableHash();
+ hash ^= external.Length.ToString().StableHash();
+ }
+ }
+
+ if (options.IncludeAllIntents)
+ {
+ hash ^= "all".StableHash();
+ }
+
+ if (options.IncludeInstanceData)
+ {
+ hash ^= "instance".StableHash();
+ }
+
+ if (options.Log ?? false)
+ {
+ hash ^= "log".StableHash();
+ }
+
+ if (options.PreferExternalEntities)
+ {
+ hash ^= "prefer".StableHash();
+ }
+
+ if (options.Slot != null)
+ {
+ hash ^= options.Slot.StableHash();
+ }
+
+ if (options.Version != null)
+ {
+ hash ^= options.Version.StableHash();
+ }
+
+ return Path.Combine(_responseDir, $"{hash}.json");
+ }
+
+ private HttpClientHandler GetMockedClient(string utterance, LuisRecognizerOptionsV3 recognizer)
{
HttpClientHandler client = null;
if (utterance != null)
{
- var response = ResponsePath(utterance);
+ var response = ResponsePath(utterance, recognizer);
if (File.Exists(response))
{
var handler = new MockHttpMessageHandler();
handler
- .When(_options.Application.Endpoint + "*")
+ .When(recognizer.Application.Endpoint + "*")
.WithPartialContent(utterance)
.Respond("application/json", File.OpenRead(response));
client = new MockedHttpClientHandler(handler.ToHttpClient());
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/TriggerConditions/OnCondition.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/TriggerConditions/OnCondition.cs
index 745ae3260..63a225c16 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/TriggerConditions/OnCondition.cs
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/TriggerConditions/OnCondition.cs
@@ -11,6 +11,7 @@ using Microsoft.Bot.Builder.Dialogs.Adaptive.Actions;
using Microsoft.Bot.Builder.Dialogs.Debugging;
using Microsoft.Bot.Builder.Dialogs.Memory;
using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Expressions.TriggerTrees;
using Newtonsoft.Json;
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Loaders/LuisRecognizerLoader.cs b/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Loaders/LuisRecognizerLoader.cs
deleted file mode 100644
index 069db27ec..000000000
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Loaders/LuisRecognizerLoader.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-using System;
-using Microsoft.Bot.Builder.AI.Luis;
-using Microsoft.Extensions.Configuration;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using Newtonsoft.Json.Schema;
-
-namespace Microsoft.Bot.Builder.Dialogs.Declarative.Loaders
-{
- public class LuisRecognizerLoader : ICustomDeserializer
- {
- private IConfiguration configuration;
-
- public LuisRecognizerLoader(IConfiguration configuration)
- {
- this.configuration = configuration;
- }
-
- public object Load(JToken obj, JsonSerializer serializer, Type type)
- {
- // If the luis service info is inlined with the recognizer, load it here for
- // simpler json format
- if (obj["applicationId"]?.Type == JTokenType.String)
- {
- var luisApplication = obj.ToObject();
- luisApplication.ApplicationId = configuration.LoadSetting(luisApplication.ApplicationId);
- luisApplication.Endpoint = configuration.LoadSetting(luisApplication.Endpoint);
- luisApplication.EndpointKey = configuration.LoadSetting(luisApplication.EndpointKey);
- var options = new LuisRecognizerOptionsV3(luisApplication);
- if (obj["predictionOptions"] != null)
- {
- options.PredictionOptions = obj["predictionOptions"].ToObject();
- }
-
- return new LuisRecognizer(options);
- }
-
- // Else, just assume it is the verbose structure with LuisService as inner object
- return obj.ToObject(serializer);
- }
- }
-}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Microsoft.Bot.Builder.Dialogs.Declarative.csproj b/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Microsoft.Bot.Builder.Dialogs.Declarative.csproj
index 28c28c20d..9b5d9e93d 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Microsoft.Bot.Builder.Dialogs.Declarative.csproj
+++ b/libraries/Microsoft.Bot.Builder.Dialogs.Declarative/Microsoft.Bot.Builder.Dialogs.Declarative.csproj
@@ -41,8 +41,6 @@
-
-
@@ -50,7 +48,6 @@
-
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ArrayExpression.cs b/libraries/Microsoft.Bot.Expressions.Properties/ArrayExpression.cs
similarity index 90%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ArrayExpression.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/ArrayExpression.cs
index 57f5038c6..21521daa9 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ArrayExpression.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/ArrayExpression.cs
@@ -1,13 +1,10 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-using System.Collections;
using System.Collections.Generic;
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
-using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive
+namespace Microsoft.Bot.Expressions.Properties
{
///
/// ArrayExpression - represents a property which is either a value of array of T or a string expression to bind to a array of T.
@@ -44,7 +41,7 @@ namespace Microsoft.Bot.Builder.Dialogs.Adaptive
///
/// Initializes a new instance of the class.
///
- /// JToken which is either a collection of (T) or expression which evalutes to array.
+ /// JToken which is either a collection of (T) or expression which evaluates to array.
public ArrayExpression(JToken value)
: base(value)
{
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/BoolExpression.cs b/libraries/Microsoft.Bot.Expressions.Properties/BoolExpression.cs
similarity index 94%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/BoolExpression.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/BoolExpression.cs
index 9094a444e..75d5d287e 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/BoolExpression.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/BoolExpression.cs
@@ -1,11 +1,11 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
+using Microsoft.Bot.Expressions.Properties.Converters;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive
+namespace Microsoft.Bot.Expressions.Properties
{
///
/// BoolExpression - represents a property which is either a boolean or a string expression which resolves to a boolean.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ArrayExpressionConverter.cs b/libraries/Microsoft.Bot.Expressions.Properties/Converters/ArrayExpressionConverter.cs
similarity index 83%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ArrayExpressionConverter.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/Converters/ArrayExpressionConverter.cs
index 99c390fab..a92fd0866 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ArrayExpressionConverter.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Converters/ArrayExpressionConverter.cs
@@ -2,13 +2,11 @@
// Licensed under the MIT License.
using System;
-using System.Collections;
-using System.Data.SqlTypes;
-using Microsoft.Bot.Expressions;
+using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Converters
+namespace Microsoft.Bot.Expressions.Properties.Converters
{
///
/// Converter which allows json to be expression to object or static object.
@@ -26,6 +24,8 @@ namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Converters
}
else
{
+ // NOTE: This does not use the serializer because even we could deserialize here
+ // expression evaluation has no idea about converters.
return new ArrayExpression(JToken.Load(reader));
}
}
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/BoolExpressionConverter.cs b/libraries/Microsoft.Bot.Expressions.Properties/Converters/BoolExpressionConverter.cs
similarity index 91%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/BoolExpressionConverter.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/Converters/BoolExpressionConverter.cs
index b675754db..81def6da4 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/BoolExpressionConverter.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Converters/BoolExpressionConverter.cs
@@ -2,12 +2,10 @@
// Licensed under the MIT License.
using System;
-using System.Data.SqlTypes;
-using Microsoft.Bot.Expressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Converters
+namespace Microsoft.Bot.Expressions.Properties.Converters
{
///
/// Converter which allows json to be expression to object or static object.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/EnumExpressionConverter.cs b/libraries/Microsoft.Bot.Expressions.Properties/Converters/EnumExpressionConverter.cs
similarity index 92%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/EnumExpressionConverter.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/Converters/EnumExpressionConverter.cs
index a022b5928..60d0ce7fb 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/EnumExpressionConverter.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Converters/EnumExpressionConverter.cs
@@ -2,12 +2,10 @@
// Licensed under the MIT License.
using System;
-using System.Data.SqlTypes;
-using Microsoft.Bot.Expressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Converters
+namespace Microsoft.Bot.Expressions.Properties.Converters
{
///
/// Converter which allows json to be expression to object or static object.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ExpressionPropertyConverter.cs b/libraries/Microsoft.Bot.Expressions.Properties/Converters/ExpressionPropertyConverter.cs
similarity index 91%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ExpressionPropertyConverter.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/Converters/ExpressionPropertyConverter.cs
index a75cf111c..56784529f 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ExpressionPropertyConverter.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Converters/ExpressionPropertyConverter.cs
@@ -2,12 +2,10 @@
// Licensed under the MIT License.
using System;
-using System.Data.SqlTypes;
-using Microsoft.Bot.Expressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Converters
+namespace Microsoft.Bot.Expressions.Properties.Converters
{
///
/// Converter which allows json to be expression to object or static object.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/IntExpressionConverter.cs b/libraries/Microsoft.Bot.Expressions.Properties/Converters/IntExpressionConverter.cs
similarity index 95%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/IntExpressionConverter.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/Converters/IntExpressionConverter.cs
index cd59692b7..9063ad840 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/IntExpressionConverter.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Converters/IntExpressionConverter.cs
@@ -5,7 +5,7 @@ using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Converters
+namespace Microsoft.Bot.Expressions.Properties.Converters
{
///
/// Converter which allows json to be expression to object or static object.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/NumberExpressionConverter.cs b/libraries/Microsoft.Bot.Expressions.Properties/Converters/NumberExpressionConverter.cs
similarity index 91%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/NumberExpressionConverter.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/Converters/NumberExpressionConverter.cs
index e048e8cec..93d6b1ae7 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/NumberExpressionConverter.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Converters/NumberExpressionConverter.cs
@@ -2,12 +2,10 @@
// Licensed under the MIT License.
using System;
-using System.Data.SqlTypes;
-using Microsoft.Bot.Expressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Converters
+namespace Microsoft.Bot.Expressions.Properties.Converters
{
///
/// Converter which allows json to be expression to object or static object.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ObjectExpressionConverter.cs b/libraries/Microsoft.Bot.Expressions.Properties/Converters/ObjectExpressionConverter.cs
similarity index 91%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ObjectExpressionConverter.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/Converters/ObjectExpressionConverter.cs
index 80d7947de..500aabac7 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ObjectExpressionConverter.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Converters/ObjectExpressionConverter.cs
@@ -2,12 +2,10 @@
// Licensed under the MIT License.
using System;
-using System.Data.SqlTypes;
-using Microsoft.Bot.Expressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Converters
+namespace Microsoft.Bot.Expressions.Properties.Converters
{
///
/// Converter which allows json to be expression to object or static object.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/StringExpressionConverter.cs b/libraries/Microsoft.Bot.Expressions.Properties/Converters/StringExpressionConverter.cs
similarity index 91%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/StringExpressionConverter.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/Converters/StringExpressionConverter.cs
index d9a9cd801..8bc8bbebe 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/StringExpressionConverter.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Converters/StringExpressionConverter.cs
@@ -2,12 +2,10 @@
// Licensed under the MIT License.
using System;
-using System.Data.SqlTypes;
-using Microsoft.Bot.Expressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Converters
+namespace Microsoft.Bot.Expressions.Properties.Converters
{
///
/// Converter which allows json to be expression to object or static object.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ValueExpressionConverter.cs b/libraries/Microsoft.Bot.Expressions.Properties/Converters/ValueExpressionConverter.cs
similarity index 95%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ValueExpressionConverter.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/Converters/ValueExpressionConverter.cs
index 5a6e42d8e..311400c96 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/Converters/ValueExpressionConverter.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Converters/ValueExpressionConverter.cs
@@ -5,7 +5,7 @@ using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Converters
+namespace Microsoft.Bot.Expressions.Properties.Converters
{
///
/// Converter which allows json to be expression to object or static object.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/EnumExpression.cs b/libraries/Microsoft.Bot.Expressions.Properties/EnumExpression.cs
similarity index 95%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/EnumExpression.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/EnumExpression.cs
index e21e28ea6..1eb48a352 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/EnumExpression.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/EnumExpression.cs
@@ -2,11 +2,9 @@
// Licensed under the MIT License.
using System;
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
-using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive
+namespace Microsoft.Bot.Expressions.Properties
{
///
/// EnumExpression - represents a property which is either a enum(T) or a string expression which resolves to a enum(T).
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ExpressionProperty.cs b/libraries/Microsoft.Bot.Expressions.Properties/ExpressionProperty.cs
similarity index 95%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ExpressionProperty.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/ExpressionProperty.cs
index 098156b38..21a88eeea 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ExpressionProperty.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/ExpressionProperty.cs
@@ -1,15 +1,10 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-using System;
-using System.Collections;
-using System.Text;
-using Microsoft.Bot.Builder.LanguageGeneration;
-using Microsoft.Bot.Expressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive
+namespace Microsoft.Bot.Expressions.Properties
{
///
/// Base class which defines a Expression or value for a property.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Extensions.cs b/libraries/Microsoft.Bot.Expressions.Properties/Extensions.cs
similarity index 92%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Extensions.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/Extensions.cs
index 5c7bea522..b1d649da5 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Extensions.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Extensions.cs
@@ -1,10 +1,11 @@
-using System;
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
using Microsoft.Bot.Builder.LanguageGeneration;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive
+namespace Microsoft.Bot.Expressions.Properties
{
///
/// Extension methods for AdaptiveDialog.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/IntExpression.cs b/libraries/Microsoft.Bot.Expressions.Properties/IntExpression.cs
similarity index 94%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/IntExpression.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/IntExpression.cs
index f5decbb0a..cf400187c 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/IntExpression.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/IntExpression.cs
@@ -1,11 +1,11 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
+using Microsoft.Bot.Expressions.Properties.Converters;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive
+namespace Microsoft.Bot.Expressions.Properties
{
///
/// IntExpression - represents a property which is either an Integer or a string expression which resolves to a Integer.
diff --git a/libraries/Microsoft.Bot.Expressions.Properties/Microsoft.Bot.Expressions.Properties.csproj b/libraries/Microsoft.Bot.Expressions.Properties/Microsoft.Bot.Expressions.Properties.csproj
new file mode 100644
index 000000000..b53316831
--- /dev/null
+++ b/libraries/Microsoft.Bot.Expressions.Properties/Microsoft.Bot.Expressions.Properties.csproj
@@ -0,0 +1,44 @@
+
+
+
+ 4.8.0-local
+ $(PreviewPackageVersion)
+ 4.8.0-local
+ $(PreviewPackageVersion)
+ Debug;Release
+ true
+
+
+
+ bin\$(Configuration)\netstandard2.0\Microsoft.Bot.Expressions.Properties.xml
+
+
+
+ Full
+ true
+
+
+
+ netstandard2.0
+ Microsoft.Bot.Expressions.Properties
+ This library defines properties that can be a Microsoft Bot Builder Expression or a concrete type.
+ Properties for Microsoft Bot Builder Expression or a concrete type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \
+ true
+
+
+
+
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/NumberExpression.cs b/libraries/Microsoft.Bot.Expressions.Properties/NumberExpression.cs
similarity index 94%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/NumberExpression.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/NumberExpression.cs
index 4ebff2d8c..ef84ea85b 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/NumberExpression.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/NumberExpression.cs
@@ -1,11 +1,11 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
+using Microsoft.Bot.Expressions.Properties.Converters;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive
+namespace Microsoft.Bot.Expressions.Properties
{
///
/// NumberExpression - represents a property which is either a float or a string expression which resolves to a float.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ObjectExpression.cs b/libraries/Microsoft.Bot.Expressions.Properties/ObjectExpression.cs
similarity index 90%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ObjectExpression.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/ObjectExpression.cs
index 82fb8f2bd..546e9c1b0 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ObjectExpression.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/ObjectExpression.cs
@@ -1,11 +1,9 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
-using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive
+namespace Microsoft.Bot.Expressions.Properties
{
///
/// ObjectExpression(T) - represents a property which is either an object of type T or a string expression which resolves to a object of type T.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/StringExpression.cs b/libraries/Microsoft.Bot.Expressions.Properties/StringExpression.cs
similarity index 96%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/StringExpression.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/StringExpression.cs
index 66b758122..a9a31fec2 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/StringExpression.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/StringExpression.cs
@@ -1,13 +1,12 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
using Microsoft.Bot.Builder.LanguageGeneration;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties.Converters;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive
+namespace Microsoft.Bot.Expressions.Properties
{
///
/// StringExpression - represents a property which is either a string value or a string expression.
diff --git a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ValueExpression.cs b/libraries/Microsoft.Bot.Expressions.Properties/ValueExpression.cs
similarity index 95%
rename from libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ValueExpression.cs
rename to libraries/Microsoft.Bot.Expressions.Properties/ValueExpression.cs
index 3518c387c..8c91afa01 100644
--- a/libraries/Microsoft.Bot.Builder.Dialogs.Adaptive/Memory/Expressions/ValueExpression.cs
+++ b/libraries/Microsoft.Bot.Expressions.Properties/ValueExpression.cs
@@ -1,13 +1,12 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
using Microsoft.Bot.Builder.LanguageGeneration;
-using Microsoft.Bot.Expressions;
+using Microsoft.Bot.Expressions.Properties.Converters;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-namespace Microsoft.Bot.Builder.Dialogs.Adaptive
+namespace Microsoft.Bot.Expressions.Properties
{
///
/// ValueExpression - represents a property which is an object of any kind or a string expression.
diff --git a/libraries/Microsoft.Bot.Expressions.Properties/icon.png b/libraries/Microsoft.Bot.Expressions.Properties/icon.png
new file mode 100644
index 000000000..37c81be7d
Binary files /dev/null and b/libraries/Microsoft.Bot.Expressions.Properties/icon.png differ
diff --git a/schemas/baseComponent.schema b/schemas/baseComponent.schema
index 5ca579661..ff8f5e2a0 100644
--- a/schemas/baseComponent.schema
+++ b/schemas/baseComponent.schema
@@ -1,14 +1,14 @@
{
- "$schema": "http://json-schema.org/draft-07/schema#",
+ "$schema": "https://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/{branch}/schemas/component.schema",
"title": "JSON Schema definition for dialog schemas.",
"description": "In order to create a component for Bot Framework .dialog files you need to create a schema file describing your configuration that meets this definition. This extends http://json-schema.org/draft-07/schema#.",
"definitions": {
"role": {
"title": "$role",
- "description": "Defines the role played in the dialog schema [lg|expression|union()].",
+ "description": "Defines the role played in the dialog schema [expression|union|union(Kind)].",
"type": "string",
- "pattern": "^((lg)|(expression)|(memoryPath)|(union)|(union\\([a-zA-Z][a-zA-Z0-9.]*\\)))$"
+ "pattern": "^((expression)|(union)|(union\\([a-zA-Z][a-zA-Z0-9.]*\\)))$"
},
"id": {
"title": "$id",
@@ -32,27 +32,6 @@
"title": "$designer",
"type": "object",
"description": "Extra information for the Bot Framework Designer."
- },
- "lg": {
- "type": "string",
- "description": "String is used for language generation."
- },
- "memoryPath": {
- "type": "string",
- "description": "String must contain a memory path.",
- "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$"
- },
- "boolExpression": {
- "type": [ "boolean", "string"]
- },
- "integerExpression": {
- "type": [ "integer", "string" ]
- },
- "numberExpression": {
- "type": [ "number", "string" ]
- },
- "valueExpression": {
- "type": [ "object", "array", "number", "integer", "boolean", "string"]
}
},
"properties": {
diff --git a/schemas/component.schema b/schemas/component.schema
index 21d47e2d1..412be8672 100644
--- a/schemas/component.schema
+++ b/schemas/component.schema
@@ -1,5 +1,5 @@
{
- "$schema": "http://json-schema.org/draft-07/schema#",
+ "$schema": "https://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/master/schemas/component.schema",
"title": "JSON Schema definition for dialog schemas.",
"definitions": {
@@ -45,9 +45,9 @@
},
"role": {
"title": "$role",
- "description": "Defines the role played in the dialog schema [lg|expression|union()].",
+ "description": "Defines the role played in the dialog schema [expression|union|union(Kind)].",
"type": "string",
- "pattern": "^((lg)|(expression)|(memoryPath)|(union)|(union\\([a-zA-Z][a-zA-Z0-9.]*\\)))$"
+ "pattern": "^((expression)|(union)|(union\\([a-zA-Z][a-zA-Z0-9.]*\\)))$"
},
"id": {
"title": "$id",
@@ -71,19 +71,6 @@
"title": "$designer",
"type": "object",
"description": "Extra information for the Bot Framework Designer."
- },
- "expression": {
- "type": "string",
- "description": "String must contain an expression."
- },
- "lg": {
- "type": "string",
- "description": "String is used for language generation."
- },
- "memoryPath": {
- "type": "string",
- "description": "String must contain a memory path.",
- "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$"
}
},
"type": [
diff --git a/schemas/sdk.schema b/schemas/sdk.schema
index 6804ce04d..932722778 100644
--- a/schemas/sdk.schema
+++ b/schemas/sdk.schema
@@ -875,14 +875,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"activity": {
@@ -906,10 +913,10 @@
},
{
"type": "string",
- "title": "string"
+ "title": "string",
+ "description": "Expression evaluating to undefined."
}
- ],
- "type": "string"
+ ]
}
},
"additionalProperties": false,
@@ -1039,8 +1046,7 @@
],
"items": {
"$role": "expression",
- "type": "string",
- "description": "String must contain an expression."
+ "type": "string"
}
},
"property": {
@@ -1184,52 +1190,80 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"dialog": {
- "$kind": "Microsoft.IDialog",
"$role": "expression",
- "type": [
- "string",
- "object"
- ],
"title": "Dialog name",
"description": "Name of the dialog to call.",
"examples": [
"AddToDoDialog"
],
- "$ref": "#/definitions/Microsoft.IDialog"
+ "oneOf": [
+ {
+ "$kind": "Microsoft.IDialog",
+ "type": "object",
+ "title": "object",
+ "$ref": "#/definitions/Microsoft.IDialog"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"options": {
"$role": "expression",
- "type": [
- "string",
- "object"
- ],
"title": "Options",
"description": "One or more options that are passed to the dialog that is called.",
- "additionalProperties": {
- "type": "string",
- "title": "Options"
- }
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string",
+ "title": "string"
+ },
+ "title": "object"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"activityProcessed": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Activity Processed",
"description": "When set to false, the dialog that is called can process the current activity.",
- "default": true
+ "oneOf": [
+ {
+ "type": "boolean",
+ "default": true,
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"resultProperty": {
"$role": "expression",
@@ -1299,14 +1333,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
}
},
@@ -1368,14 +1409,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"eventName": {
@@ -1526,8 +1574,7 @@
],
"items": {
"$role": "expression",
- "type": "string",
- "description": "String must contain an expression."
+ "type": "string"
}
},
"property": {
@@ -1613,48 +1660,52 @@
"default": "value"
},
"choices": {
- "anyOf": [
- {
- "$role": "expression",
- "type": "string",
- "description": "String must contain an expression."
- },
+ "$role": "expression",
+ "oneOf": [
{
"type": "array",
"items": [
{
- "type": "string"
+ "type": "string",
+ "title": "string"
}
- ]
+ ],
+ "title": "array"
},
{
"type": "array",
"items": [
{
- "title": "Choice",
+ "title": "object",
"type": "object",
"properties": {
"value": {
"type": "string",
- "title": "Value",
+ "title": "string",
"description": "Value to return when this choice is selected."
},
"action": {
"type": "object",
- "title": "Action",
+ "title": "object",
"description": "Card action for the choice."
},
"synonyms": {
"type": "array",
- "title": "Synonyms",
+ "title": "array",
"description": "List of synonyms to recognize in addition to the value (optional).",
"items": {
- "type": "string"
+ "type": "string",
+ "title": "string"
}
}
}
}
- ]
+ ],
+ "title": "array"
+ },
+ {
+ "type": "string",
+ "title": "string"
}
]
},
@@ -1784,8 +1835,17 @@
},
"condition": {
"$role": "expression",
- "type": "string",
- "description": "String must contain an expression."
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"ifTrue": {
"$kind": "Microsoft.ITriggerSelector",
@@ -1926,8 +1986,7 @@
],
"items": {
"$role": "expression",
- "type": "string",
- "description": "String must contain an expression."
+ "type": "string"
}
},
"property": {
@@ -2034,64 +2093,84 @@
},
"choiceOptions": {
"$role": "expression",
- "type": "object",
- "properties": {
- "inlineSeparator": {
- "type": "string",
- "title": "Inline separator",
- "description": "Character used to separate individual choices when there are more than 2 choices",
- "default": ", "
- },
- "inlineOr": {
- "type": "string",
- "title": "Inline or",
- "description": "Separator inserted between the choices when their are only 2 choices",
- "default": " or "
- },
- "inlineOrMore": {
- "type": "string",
- "title": "Inline or more",
- "description": "Separator inserted between the last 2 choices when their are more than 2 choices.",
- "default": ", or "
- },
- "includeNumbers": {
- "type": "boolean",
- "title": "Include numbers",
- "description": "If true, inline and list style choices will be prefixed with the index of the choice.",
- "default": true
- }
- },
- "description": "String must contain an expression."
- },
- "confirmChoices": {
- "$role": "expression",
- "type": "array",
- "items": [
+ "oneOf": [
{
"type": "object",
"properties": {
- "value": {
+ "inlineSeparator": {
"type": "string",
- "title": "Value",
- "description": "Value to return when this choice is selected."
+ "title": "string",
+ "description": "Character used to separate individual choices when there are more than 2 choices",
+ "default": ", "
},
- "action": {
- "type": "object",
- "title": "Action",
- "description": "Card action for the choice"
+ "inlineOr": {
+ "type": "string",
+ "title": "string",
+ "description": "Separator inserted between the choices when their are only 2 choices",
+ "default": " or "
},
- "synonyms": {
- "type": "array",
- "title": "Synonyms",
- "description": "List of synonyms to recognize in addition to the value (optional)",
- "items": {
- "type": "string"
- }
+ "inlineOrMore": {
+ "type": "string",
+ "title": "string",
+ "description": "Separator inserted between the last 2 choices when their are more than 2 choices.",
+ "default": ", or "
+ },
+ "includeNumbers": {
+ "type": "boolean",
+ "title": "boolean",
+ "description": "If true, inline and list style choices will be prefixed with the index of the choice.",
+ "default": true
}
- }
+ },
+ "title": "object"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
}
- ],
- "description": "String must contain an expression."
+ ]
+ },
+ "confirmChoices": {
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "array",
+ "items": [
+ {
+ "type": "object",
+ "properties": {
+ "value": {
+ "type": "string",
+ "title": "string",
+ "description": "Value to return when this choice is selected."
+ },
+ "action": {
+ "type": "object",
+ "title": "object",
+ "description": "Card action for the choice"
+ },
+ "synonyms": {
+ "type": "array",
+ "title": "array",
+ "description": "List of synonyms to recognize in addition to the value (optional)",
+ "items": {
+ "type": "string",
+ "title": "string"
+ }
+ }
+ },
+ "title": "object"
+ }
+ ],
+ "title": "array"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
}
},
"additionalProperties": false,
@@ -2204,14 +2283,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
}
},
@@ -2513,8 +2599,7 @@
],
"items": {
"$role": "expression",
- "type": "string",
- "description": "String must contain an expression."
+ "type": "string"
}
},
"property": {
@@ -2663,14 +2748,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
}
},
@@ -2741,14 +2833,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
}
},
@@ -2812,14 +2911,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"properties": {
@@ -2893,14 +2999,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"property": {
@@ -3021,14 +3134,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"changeType": {
@@ -3127,14 +3247,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"itemsProperty": {
@@ -3280,14 +3407,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"eventName": {
@@ -3325,13 +3459,20 @@
},
"bubbleEvent": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Bubble event",
"description": "If true this event is passed on to parent dialogs.",
- "default": false
+ "oneOf": [
+ {
+ "type": "boolean",
+ "default": false,
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
}
},
"additionalProperties": false,
@@ -3393,14 +3534,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"value": {
@@ -3479,14 +3627,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
}
},
@@ -3698,21 +3853,26 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"itemsProperty": {
"$role": "expression",
- "type": [
- "string"
- ],
+ "type": "string",
"title": "Items property",
"description": "Property that holds the array.",
"examples": [
@@ -3789,14 +3949,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"itemsProperty": {
@@ -3819,13 +3986,20 @@
},
"pageSize": {
"$role": "expression",
- "type": [
- "integer",
- "string"
- ],
"title": "Page size",
"description": "Number of items in each page.",
- "default": 10
+ "oneOf": [
+ {
+ "type": "integer",
+ "default": 10,
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
}
},
"additionalProperties": false,
@@ -3897,14 +4071,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
}
},
@@ -3966,14 +4147,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
}
},
@@ -4035,14 +4223,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"actionId": {
@@ -4215,14 +4410,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"method": {
@@ -4279,8 +4481,7 @@
"description": "One or more headers to include in the request (supports data binding).",
"additionalProperties": {
"$role": "expression",
- "type": "string",
- "description": "String must contain an expression."
+ "type": "string"
}
},
"responseType": {
@@ -4795,26 +4996,40 @@
},
"condition": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Condition",
"description": "Expression to evaluate.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"actions": {
@@ -4999,14 +5214,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"text": {
@@ -5023,13 +5245,20 @@
},
"traceActivity": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Send Trace Activity",
"description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator).",
- "default": false
+ "oneOf": [
+ {
+ "type": "boolean",
+ "default": false,
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
}
},
"additionalProperties": false,
@@ -5108,6 +5337,65 @@
"description": "LUIS prediction key used to call endpoint.",
"$role": "expression"
},
+ "externalEntityRecognizer": {
+ "title": "External Entity Recognizer",
+ "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.",
+ "$kind": "Microsoft.Recognizer",
+ "$ref": "#/definitions/Microsoft.Recognizer"
+ },
+ "dynamicLists": {
+ "$role": "expression",
+ "title": "Dynamic lists",
+ "description": "Runtime defined entity lists.",
+ "oneOf": [
+ {
+ "type": "array",
+ "items": {
+ "title": "object",
+ "description": "Lists of canonical values and synonyms for an entity.",
+ "type": "object",
+ "properties": {
+ "entity": {
+ "title": "string",
+ "description": "Entity to extend with a dynamic list.",
+ "type": "string"
+ },
+ "list": {
+ "title": "array",
+ "description": "List of canonical forms and synonyms.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "canonicalForm": {
+ "title": "string",
+ "description": "Resolution if any synonym matches.",
+ "type": "string"
+ },
+ "synonyms": {
+ "title": "array",
+ "description": "List of synonyms for a canonical form.",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "title": "string"
+ }
+ }
+ },
+ "title": "object"
+ }
+ }
+ }
+ },
+ "title": "array"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
+ },
"predictionOptions": {
"type": "object",
"properties": {
@@ -5507,8 +5795,7 @@
],
"items": {
"$role": "expression",
- "type": "string",
- "description": "String must contain an expression."
+ "type": "string"
}
},
"property": {
@@ -5714,14 +6001,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"text": {
@@ -5744,13 +6038,20 @@
},
"timeout": {
"$role": "expression",
- "type": [
- "integer",
- "string"
- ],
"title": "Timeout",
"description": "Time out setting for the OAuth signin card.",
- "default": "900000"
+ "oneOf": [
+ {
+ "type": "integer",
+ "default": "900000",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"property": {
"$role": "expression",
@@ -5781,15 +6082,22 @@
},
"maxTurnCount": {
"$role": "expression",
- "type": [
- "integer",
- "string"
- ],
"title": "Max turn count",
"description": "Maximum number of re-prompt attempts to collect information.",
- "default": 3,
"examples": [
3
+ ],
+ "oneOf": [
+ {
+ "type": "integer",
+ "default": 3,
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"defaultValue": {
@@ -5810,15 +6118,22 @@
},
"allowInterruptions": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Allow Interruptions",
"description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.",
- "default": "true",
"examples": [
"true"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "default": "true",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
}
},
@@ -5881,7 +6196,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -5892,10 +6217,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -5968,7 +6303,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -5979,10 +6324,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6063,7 +6418,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6074,10 +6439,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6144,7 +6519,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6155,10 +6540,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6225,7 +6620,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6236,10 +6641,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6316,7 +6731,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6327,10 +6752,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6405,7 +6840,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6416,10 +6861,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6509,7 +6964,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6520,10 +6985,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6595,7 +7070,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6606,10 +7091,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6676,7 +7171,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6687,10 +7192,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6757,7 +7272,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6768,10 +7293,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6844,7 +7379,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6855,10 +7400,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -6931,7 +7486,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -6942,10 +7507,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7012,7 +7587,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7023,10 +7608,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7093,7 +7688,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7104,10 +7709,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7174,7 +7789,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7185,10 +7810,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7255,7 +7890,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7266,10 +7911,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7336,7 +7991,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7347,10 +8012,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7430,7 +8105,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7441,10 +8126,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7511,7 +8206,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7522,10 +8227,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7592,7 +8307,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7603,10 +8328,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7673,7 +8408,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7684,10 +8429,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7754,7 +8509,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7765,10 +8530,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7835,7 +8610,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7846,10 +8631,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7916,7 +8711,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -7927,10 +8732,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -7997,7 +8812,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -8008,10 +8833,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -8078,7 +8913,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"actions": {
"type": "array",
@@ -8089,10 +8934,20 @@
}
},
"priority": {
- "type": "string",
"title": "priority",
"description": "Priority expression of rule with 0 being the most important",
- "$role": "expression"
+ "$role": "expression",
+ "oneOf": [
+ {
+ "type": "integer",
+ "title": "integer"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"runOnce": {
"type": "boolean",
@@ -8342,13 +9197,20 @@
},
"threshold": {
"$role": "expression",
- "type": [
- "number",
- "string"
- ],
"title": "Threshold",
"description": "Threshold score to filter results.",
- "default": 0.3
+ "oneOf": [
+ {
+ "type": "number",
+ "default": 0.3,
+ "title": "number"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"activeLearningCardTitle": {
"$role": "expression",
@@ -8373,37 +9235,52 @@
},
"strictFilters": {
"$role": "expression",
- "type": [
- "array",
- "string"
- ],
"title": "Strict Filters",
"description": "Metadata filters to use when calling the QnA Maker KB.",
- "items": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "title": "Name",
- "maximum": 100
+ "oneOf": [
+ {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "title": "string",
+ "maximum": 100
+ },
+ "value": {
+ "type": "string",
+ "title": "string",
+ "maximum": 100
+ }
+ },
+ "title": "object"
},
- "value": {
- "type": "string",
- "title": "Value",
- "maximum": 100
- }
+ "title": "array"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
}
- }
+ ]
},
"top": {
"$role": "expression",
- "type": [
- "number",
- "string"
- ],
"title": "Top",
"description": "The number of answers you want to retrieve.",
- "default": 3
+ "oneOf": [
+ {
+ "type": "number",
+ "default": 3,
+ "title": "number"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"isTest": {
"type": "boolean",
@@ -8483,27 +9360,27 @@
},
"knowledgeBaseId": {
"$role": "expression",
+ "type": "string",
"title": "KnowledgeBase Id",
"description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.",
- "default": "settings.qna.knowledgebaseid",
- "type": "string"
+ "default": "settings.qna.knowledgebaseid"
},
"endpointKey": {
"$role": "expression",
+ "type": "string",
"title": "Endpoint Key",
"description": "Endpoint key for the QnA Maker KB.",
- "default": "settings.qna.endpointkey",
- "type": "string"
+ "default": "settings.qna.endpointkey"
},
"hostname": {
"$role": "expression",
+ "type": "string",
"title": "Hostname",
"description": "Hostname for your QnA Maker service.",
"default": "settings.qna.hostname",
"examples": [
"https://yourserver.azurewebsites.net/qnamaker"
- ],
- "type": "string"
+ ]
},
"threshold": {
"type": "number",
@@ -8930,38 +9807,59 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"options": {
"$role": "expression",
- "type": [
- "string",
- "object"
- ],
"title": "Options",
"description": "One or more options that are passed to the dialog that is called.",
- "additionalProperties": {
- "type": "string",
- "title": "Options"
- }
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string",
+ "title": "string"
+ },
+ "title": "object"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"activityProcessed": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Activity Processed",
"description": "When set to false, the dialog that is called can process the current activity.",
- "default": true
+ "oneOf": [
+ {
+ "type": "boolean",
+ "default": true,
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
}
},
"additionalProperties": false,
@@ -9022,23 +9920,27 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"dialog": {
"$kind": "Microsoft.IDialog",
"$role": "expression",
- "type": [
- "string",
- "object"
- ],
+ "type": "string",
"title": "Dialog name",
"description": "Name of the dialog to call.",
"examples": [
@@ -9048,26 +9950,40 @@
},
"options": {
"$role": "expression",
- "type": [
- "string",
- "object"
- ],
"title": "Options",
"description": "One or more options that are passed to the dialog that is called.",
- "additionalProperties": {
- "type": "string",
- "title": "Options"
- }
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string",
+ "title": "string"
+ },
+ "title": "object"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"activityProcessed": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Activity Processed",
"description": "When set to false, the dialog that is called can process the current activity.",
- "default": true
+ "oneOf": [
+ {
+ "type": "boolean",
+ "default": true,
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
}
},
"additionalProperties": false,
@@ -9128,14 +10044,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"activity": {
@@ -9203,14 +10126,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"assignments": {
@@ -9310,14 +10240,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"property": {
@@ -9423,14 +10360,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
}
},
@@ -9559,14 +10503,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"cases": {
@@ -9728,7 +10679,17 @@
"examples": [
"user.age > 10"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
},
"description": {
"type": "string",
@@ -9818,7 +10779,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
}
}
},
@@ -9895,7 +10866,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
}
}
},
@@ -9985,7 +10966,17 @@
"examples": [
"user.vip == true"
],
- "type": "string"
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
+ ]
}
}
},
@@ -10556,8 +11547,7 @@
],
"items": {
"$role": "expression",
- "type": "string",
- "description": "String must contain an expression."
+ "type": "string"
}
},
"property": {
@@ -10758,14 +11748,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"name": {
@@ -10910,14 +11907,21 @@
},
"disabled": {
"$role": "expression",
- "type": [
- "boolean",
- "string"
- ],
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
"user.age > 3"
+ ],
+ "oneOf": [
+ {
+ "type": "boolean",
+ "title": "boolean"
+ },
+ {
+ "type": "string",
+ "title": "string",
+ "description": "Expression evaluating to undefined."
+ }
]
},
"activityId": {
@@ -10927,8 +11931,7 @@
"dDescription": "An string expression with the activity id to update.",
"examples": [
"=dialog.lastActivityId"
- ],
- "description": "String must contain an expression."
+ ]
},
"activity": {
"$kind": "Microsoft.IActivityTemplate",
diff --git a/tests/Microsoft.Bot.Builder.AI.LUIS.Tests/Microsoft.Bot.Builder.AI.Luis.Tests.csproj b/tests/Microsoft.Bot.Builder.AI.LUIS.Tests/Microsoft.Bot.Builder.AI.Luis.Tests.csproj
index e6a72f4ce..e691add04 100644
--- a/tests/Microsoft.Bot.Builder.AI.LUIS.Tests/Microsoft.Bot.Builder.AI.Luis.Tests.csproj
+++ b/tests/Microsoft.Bot.Builder.AI.LUIS.Tests/Microsoft.Bot.Builder.AI.Luis.Tests.csproj
@@ -30,12 +30,6 @@
-
-
- System
-
-
-
PreserveNewest
diff --git a/tests/Microsoft.Bot.Builder.Ai.LUISV3.tests/Microsoft.Bot.Builder.AI.LuisV3.Tests.csproj b/tests/Microsoft.Bot.Builder.Ai.LUISV3.tests/Microsoft.Bot.Builder.AI.LuisV3.Tests.csproj
index 572c2768b..9696764ca 100644
--- a/tests/Microsoft.Bot.Builder.Ai.LUISV3.tests/Microsoft.Bot.Builder.AI.LuisV3.Tests.csproj
+++ b/tests/Microsoft.Bot.Builder.Ai.LUISV3.tests/Microsoft.Bot.Builder.AI.LuisV3.Tests.csproj
@@ -27,10 +27,4 @@
-
-
-
- System
-
-
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Templates.Tests/MessageGeneratorTests.cs b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Templates.Tests/MessageGeneratorTests.cs
index fb6709271..e286e0c59 100644
--- a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Templates.Tests/MessageGeneratorTests.cs
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Templates.Tests/MessageGeneratorTests.cs
@@ -7,6 +7,7 @@ using Microsoft.Bot.Builder.Dialogs.Declarative;
using Microsoft.Bot.Builder.Dialogs.Declarative.Resources;
using Microsoft.Bot.Builder.Dialogs.Declarative.Types;
using Microsoft.Bot.Builder.LanguageGeneration;
+using Microsoft.Bot.Expressions.Properties;
using Microsoft.Bot.Schema;
using Microsoft.Extensions.Configuration;
using Microsoft.VisualStudio.TestTools.UnitTesting;
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/ChoiceSetTests.cs b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/ChoiceSetTests.cs
index 6bb8041bf..dd92a83d2 100644
--- a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/ChoiceSetTests.cs
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/ChoiceSetTests.cs
@@ -4,12 +4,10 @@
#pragma warning disable SA1649 // File name should match first type name
using System.Collections.Generic;
-using Microsoft.Bot.Builder.Dialogs.Adaptive;
-using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
using Microsoft.Bot.Builder.Dialogs.Adaptive.Input;
using Microsoft.Bot.Builder.Dialogs.Choices;
-using Microsoft.Bot.Builder.Dialogs.Declarative;
-using Microsoft.Bot.Builder.Dialogs.Declarative.Converters;
+using Microsoft.Bot.Expressions.Properties;
+using Microsoft.Bot.Expressions.Properties.Converters;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/ExpressionPropertyTests.cs b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/ExpressionPropertyTests.cs
index 97b3b954d..0a7bb6fa0 100644
--- a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/ExpressionPropertyTests.cs
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/ExpressionPropertyTests.cs
@@ -14,6 +14,8 @@ using System.Drawing;
using Microsoft.Bot.Builder.Dialogs.Adaptive.Converters;
using Microsoft.Bot.Builder.Dialogs.Adaptive.Input;
using Microsoft.Bot.Builder.Dialogs.Choices;
+using Microsoft.Bot.Expressions.Properties;
+using Microsoft.Bot.Expressions.Properties.Converters;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/GeneratorTests.cs b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/GeneratorTests.cs
index a5601e942..1d8150f7f 100644
--- a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/GeneratorTests.cs
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/GeneratorTests.cs
@@ -2,7 +2,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
using System.Threading.Tasks;
-using Microsoft.Bot.Builder.Dialogs.Declarative.Types;
using Microsoft.Bot.Builder.MockLuis;
using Microsoft.Extensions.Configuration;
using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -16,23 +15,21 @@ namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Tests
private readonly string unitTestsDirectory = PathUtils.NormalizePath(@"..\..\..\..\..\tests\Microsoft.Bot.Builder.Dialogs.Adaptive.Tests\Tests\GeneratorTests\unittests\");
[TestMethod]
- public async Task SandwichOrder()
+ public async Task Generator_sandwich()
{
var config = new ConfigurationBuilder()
- .AddInMemoryCollection()
- .UseLuisSettings(sandwichDirectory, "generatorTests")
+ .UseLuisSettings(sandwichDirectory, "TestBot")
.Build();
- await TestUtils.RunTestScript("generator_sandwich.test.dialog", configuration: config);
+ await TestUtils.RunTestScript(configuration: config);
}
[TestMethod]
- public async Task UnitTests()
+ public async Task Generator_unittests()
{
var config = new ConfigurationBuilder()
- .AddInMemoryCollection()
- .UseLuisSettings(unitTestsDirectory, "generatorTests")
+ .UseLuisSettings(unitTestsDirectory, "TestBot")
.Build();
- await TestUtils.RunTestScript("generator_unittests.test.dialog", configuration: config);
+ await TestUtils.RunTestScript(configuration: config);
}
}
}
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/LuisRecognizerTests.cs b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/LuisRecognizerTests.cs
new file mode 100644
index 000000000..aaa507b09
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/LuisRecognizerTests.cs
@@ -0,0 +1,136 @@
+// Licensed under the MIT License.
+// Copyright (c) Microsoft Corporation. All rights reserved.
+
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.Bot.Builder.Dialogs.Adaptive.Luis;
+using Microsoft.Bot.Builder.Dialogs.Adaptive.Recognizers;
+using Microsoft.Bot.Builder.MockLuis;
+using Microsoft.Bot.Expressions.Properties;
+using Microsoft.Bot.Expressions.Properties.Converters;
+using Microsoft.Extensions.Configuration;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using Newtonsoft.Json;
+
+namespace Microsoft.Bot.Builder.Dialogs.Adaptive.Tests
+{
+ [TestClass]
+ public class LuisRecognizerTests
+ {
+ private const string DynamicListJSon = @"[
+ {
+ 'entity': 'alphaEntity',
+ 'list': [
+ {
+ 'canonicalForm': 'a',
+ 'synonyms': [
+ 'a',
+ 'aa'
+ ]
+ },
+ {
+ 'canonicalForm': 'b',
+ 'synonyms': [
+ 'b',
+ 'bb'
+ ]
+}
+ ]
+ },
+ {
+ 'entity': 'numberEntity',
+ 'list': [
+ {
+ 'canonicalForm': '1',
+ 'synonyms': [
+ '1',
+ 'one'
+ ]
+ },
+ {
+ 'canonicalForm': '2',
+ 'synonyms': [
+ '2',
+ 'two'
+ ]
+ }
+ ]
+ }
+ ]";
+
+ private const string RecognizerJson = @"{
+ '$kind': 'Microsoft.LuisRecognizer',
+ 'applicationId': '=settings.luis.DynamicLists_test_en-us_lu',
+ 'endpoint': '=settings.luis.endpoint',
+ 'endpointKey': '=settings.luis.endpointKey', 'dynamicLists': " + DynamicListJSon + "}";
+
+ private readonly string dynamicListsDirectory = PathUtils.NormalizePath(@"..\..\..\..\..\tests\Microsoft.Bot.Builder.Dialogs.Adaptive.Tests\Tests\LuisRecognizerTests");
+
+ [TestMethod]
+ public async Task DynamicLists()
+ {
+ var config = new ConfigurationBuilder()
+ .UseLuisSettings(dynamicListsDirectory, "TestBot")
+ .Build();
+ await TestUtils.RunTestScript(configuration: config);
+ }
+
+ [TestMethod]
+ public async Task DynamicListsExpression()
+ {
+ var config = new ConfigurationBuilder()
+ .UseLuisSettings(dynamicListsDirectory, "TestBot")
+ .Build();
+ await TestUtils.RunTestScript(configuration: config);
+ }
+
+ [TestMethod]
+ public async Task ExternalEntities()
+ {
+ var config = new ConfigurationBuilder()
+ .UseLuisSettings(dynamicListsDirectory, "TestBot")
+ .Build();
+ await TestUtils.RunTestScript(configuration: config);
+ }
+
+ [TestMethod]
+ public void DeserializeDynamicList()
+ {
+ var dl = JsonConvert.DeserializeObject>(DynamicListJSon);
+ Assert.AreEqual(2, dl.Count);
+ Assert.AreEqual("alphaEntity", dl[0].Entity);
+ Assert.AreEqual(2, dl[0].List.Count);
+ }
+
+ [TestMethod]
+ public void DeserializeSerializedDynamicList()
+ {
+ var ol = JsonConvert.DeserializeObject>(DynamicListJSon);
+ var json = JsonConvert.SerializeObject(ol);
+ var dl = JsonConvert.DeserializeObject>(json);
+ Assert.AreEqual(2, dl.Count);
+ Assert.AreEqual("alphaEntity", dl[0].Entity);
+ Assert.AreEqual(2, dl[0].List.Count);
+ }
+
+ [TestMethod]
+ public void DeserializeArrayExpression()
+ {
+ var ae = JsonConvert.DeserializeObject>(DynamicListJSon, new ArrayExpressionConverter());
+ var dl = ae.GetValue(null);
+ Assert.AreEqual(2, dl.Count);
+ Assert.AreEqual("alphaEntity", dl[0].Entity);
+ Assert.AreEqual(2, dl[0].List.Count);
+ }
+
+ [TestMethod]
+ public void DeserializeLuisAdaptiveRecognizer()
+ {
+ var recognizer = JsonConvert.DeserializeObject(RecognizerJson, new ArrayExpressionConverter());
+ var dl = recognizer.DynamicLists.GetValue(null);
+ Assert.AreEqual(2, dl.Count);
+ Assert.AreEqual("alphaEntity", dl[0].Entity);
+ Assert.AreEqual(2, dl[0].List.Count);
+ }
+ }
+}
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests.csproj b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests.csproj
index d9c2e9e34..f16725236 100644
--- a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests.csproj
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests.csproj
@@ -140,4 +140,8 @@
+
+
+
+
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/generator_sandwich.test.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/Generator_sandwich.test.dialog
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/generator_sandwich.test.dialog
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/Generator_sandwich.test.dialog
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/generator_unittests.test.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/Generator_unittests.test.dialog
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/generator_unittests.test.dialog
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/Generator_unittests.test.dialog
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/2092802335.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1078770328.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/2092802335.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1078770328.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1433479955.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1770008724.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1433479955.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1770008724.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1369200236.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1835879915.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1369200236.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1835879915.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1398984689.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1871959158.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1398984689.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1871959158.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1236542976.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1967472007.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1236542976.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1967472007.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/2662076917.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/2724006514.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/2662076917.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/2724006514.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/2245504220.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/3106322267.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/2245504220.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/3106322267.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/4239464293.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/3225423074.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/4239464293.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/3225423074.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/3731741184.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/3801923975.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/3731741184.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/3801923975.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1057361391.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/66524776.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/1057361391.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/66524776.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/455026286.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/669924841.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/455026286.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/669924841.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/360168015.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/696689096.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/360168015.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/696689096.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/141232855.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/882512208.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/141232855.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/cachedResponses/sandwich_en-us_lu/882512208.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/luis/sandwich.en-us.lu.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/luis/sandwich.en-us.lu.dialog
index 2c396ad72..3a5334b3c 100644
--- a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/luis/sandwich.en-us.lu.dialog
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/sandwich/luis/sandwich.en-us.lu.dialog
@@ -2,9 +2,9 @@
{
"$schema": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/master/schemas/sdk.schema",
"$kind": "Microsoft.LuisRecognizer",
- "applicationId": "{settings.luis.sandwich_en-us_lu}",
- "endpoint": "{settings.luis.endpoint}",
- "endpointKey": "{settings.luis.endpointKey}",
+ "applicationId": "=settings.luis.sandwich_en-us_lu",
+ "endpoint": "=settings.luis.endpoint",
+ "endpointKey": "=settings.luis.endpointKey",
"predictionOptions": {
"includeInstanceData": true
}
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/19522071.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1037629840.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/19522071.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1037629840.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2108541064.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1096602383.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2108541064.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1096602383.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2063579347.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1175364436.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2063579347.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1175364436.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2075774777.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1195955390.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2075774777.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1195955390.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1842498579.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1361270676.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1842498579.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1361270676.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/876742609.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/145955926.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/876742609.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/145955926.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/874887311.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/148153096.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/874887311.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/148153096.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1579948635.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1658651100.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1579948635.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1658651100.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1304334247.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1901040672.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1304334247.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1901040672.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/929700970.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/194709485.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/929700970.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/194709485.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/821409446.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/201633057.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/821409446.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/201633057.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1143015717.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2026902178.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/1143015717.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2026902178.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3162815224.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2155192703.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3162815224.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2155192703.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2892062428.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2425374043.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2892062428.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2425374043.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2745357792.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2673069671.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2745357792.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2673069671.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2662076917.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2724006514.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2662076917.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2724006514.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/749451549.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/274375322.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/749451549.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/274375322.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2466717130.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2952136269.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2466717130.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2952136269.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/786526808.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/303065567.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/786526808.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/303065567.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2310623463.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3041413984.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/2310623463.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3041413984.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3843651349.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3655888018.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3843651349.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3655888018.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3875167354.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3658172413.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3875167354.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3658172413.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3528672691.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/4003618356.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3528672691.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/4003618356.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3450514987.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/4049319340.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3450514987.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/4049319340.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3340878002.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/4224768821.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3340878002.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/4224768821.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3273998392.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/4292107199.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/3273998392.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/4292107199.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/655188851.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/469530868.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/655188851.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/469530868.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/189585520.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/935183351.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/189585520.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/935183351.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/83716306.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/940340053.json
similarity index 100%
rename from tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/83716306.json
rename to tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/cachedResponses/unittests_en-us_lu/940340053.json
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/luis/luis.settings.development.westus.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/luis/luis.settings.development.westus.json
new file mode 100644
index 000000000..718e858b2
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/luis/luis.settings.development.westus.json
@@ -0,0 +1,5 @@
+{
+ "luis": {
+ "unittests_en-us_lu": "1e092fbd-d304-44c1-98c4-1eaf81f7b654"
+ }
+}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/luis/unittests.en-us.lu.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/luis/unittests.en-us.lu.dialog
index 60f4942e0..801cc6a8d 100644
--- a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/luis/unittests.en-us.lu.dialog
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/GeneratorTests/unittests/luis/unittests.en-us.lu.dialog
@@ -2,9 +2,9 @@
{
"$schema": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/master/schemas/sdk.schema",
"$kind": "Microsoft.LuisRecognizer",
- "applicationId": "{settings.luis.unittests_en-us_lu}",
- "endpoint": "{settings.luis.endpoint}",
- "endpointKey": "{settings.luis.endpointKey}",
+ "applicationId": "=settings.luis.unittests_en-us_lu",
+ "endpoint": "=settings.luis.endpoint",
+ "endpointKey": "=settings.luis.endpointKey",
"predictionOptions": {
"includeInstanceData": true
}
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.dialog
new file mode 100644
index 000000000..fac4d81c1
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.dialog
@@ -0,0 +1,116 @@
+{
+ "$schema": "../../../../schemas/sdk.schema",
+ "$kind": "Microsoft.Test.Script",
+ "dialog": {
+ "$kind": "Microsoft.AdaptiveDialog",
+ "recognizer": {
+ "$kind": "Microsoft.LuisRecognizer",
+ "applicationId": "=settings.luis.DynamicLists_test_en-us_lu",
+ "endpoint": "=settings.luis.endpoint",
+ "endpointKey": "=settings.luis.endpointKey",
+ "dynamicLists": [
+ {
+ "entity": "alphaEntity",
+ "list": [
+ {
+ "canonicalForm": "a",
+ "synonyms": [
+ "a",
+ "aa"
+ ]
+ },
+ {
+ "canonicalForm": "b",
+ "synonyms": [
+ "b",
+ "bb"
+ ]
+ }
+ ]
+ },
+ {
+ "entity": "numberEntity",
+ "list": [
+ {
+ "canonicalForm": "1",
+ "synonyms": [
+ "1",
+ "one"
+ ]
+ },
+ {
+ "canonicalForm": "2",
+ "synonyms": [
+ "2",
+ "two"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "triggers": [
+ {
+ "$kind": "Microsoft.OnIntent",
+ "intent": "intent",
+ "entities": [
+ "alphaEntity"
+ ],
+ "actions": [
+ {
+ "$kind": "Microsoft.SendActivity",
+ "activity": "alphaEntity"
+ }
+ ]
+ },
+ {
+ "$kind": "Microsoft.OnIntent",
+ "intent": "intent",
+ "entities": [
+ "numberEntity"
+ ],
+ "actions": [
+ {
+ "$kind": "Microsoft.SendActivity",
+ "activity": "numberEntity"
+ }
+ ]
+ }
+ ]
+ },
+ "locale": "en-us",
+ "script": [
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "word1"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "alphaEntity"
+ },
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "a"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "alphaEntity"
+ },
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "three"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "numberEntity"
+ },
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "one"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "numberEntity"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.en-us.lu.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.en-us.lu.dialog
new file mode 100644
index 000000000..18ac55209
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.en-us.lu.dialog
@@ -0,0 +1,6 @@
+{
+ "$type": "Microsoft.LuisRecognizer",
+ "applicationId": "=settings.luis.DynamicLists_test_en-us_lu",
+ "endpoint": "=settings.luis.endpoint",
+ "endpointKey": "=settings.luis.endpointKey"
+}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.lu b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.lu
new file mode 100644
index 000000000..0fdfcf58f
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.lu
@@ -0,0 +1,14 @@
+$alphaEntity:word1=
+$alphaEntity:word2=
+
+$numberEntity:3=
+- three
+
+$numberEntity:4=
+- four
+
+# intent
+- word1
+- word2
+- three
+- four
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.lu.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.lu.dialog
new file mode 100644
index 000000000..8798aafde
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicLists.test.lu.dialog
@@ -0,0 +1,7 @@
+{
+ "$type": "Microsoft.MultiLanguageRecognizer",
+ "recognizers": {
+ "en-us": "DynamicLists.test.en-us.lu",
+ "": "DynamicLists.test.en-us.lu"
+ }
+}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicListsExpression.test.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicListsExpression.test.dialog
new file mode 100644
index 000000000..bf24a87fc
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/DynamicListsExpression.test.dialog
@@ -0,0 +1,77 @@
+{
+ "$schema": "../../../../schemas/sdk.schema",
+ "$kind": "Microsoft.Test.Script",
+ "dialog": {
+ "$kind": "Microsoft.AdaptiveDialog",
+ "recognizer": {
+ "$kind": "Microsoft.LuisRecognizer",
+ "applicationId": "=settings.luis.DynamicLists_test_en-us_lu",
+ "endpoint": "=settings.luis.endpoint",
+ "endpointKey": "=settings.luis.endpointKey",
+ "dynamicLists": "json(\"[{'entity': 'alphaEntity', 'list': [{'canonicalForm': 'a', 'synonyms': ['a', 'aa']}, {'canonicalForm': 'b', 'synonyms': ['b', 'bb']}]}, {'entity': 'numberEntity', 'list': [{'canonicalForm': '1', 'synonyms': ['1', 'one']}, {'canonicalForm': '2', 'synonyms': ['2', 'two']}]}]\")"
+ },
+ "triggers": [
+ {
+ "$kind": "Microsoft.OnIntent",
+ "intent": "intent",
+ "entities": [
+ "alphaEntity"
+ ],
+ "actions": [
+ {
+ "$kind": "Microsoft.SendActivity",
+ "activity": "alphaEntity"
+ }
+ ]
+ },
+ {
+ "$kind": "Microsoft.OnIntent",
+ "intent": "intent",
+ "entities": [
+ "numberEntity"
+ ],
+ "actions": [
+ {
+ "$kind": "Microsoft.SendActivity",
+ "activity": "numberEntity"
+ }
+ ]
+ }
+ ]
+ },
+ "locale": "en-us",
+ "script": [
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "word1"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "alphaEntity"
+ },
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "a"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "alphaEntity"
+ },
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "three"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "numberEntity"
+ },
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "one"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "numberEntity"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.Recognizer.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.Recognizer.dialog
new file mode 100644
index 000000000..5785c715d
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.Recognizer.dialog
@@ -0,0 +1,17 @@
+{
+ "$schema": "../../../../schemas/sdk.schema",
+ "$kind": "Microsoft.RegexRecognizer",
+ "intents": [],
+ "entities": [
+ {
+ "$kind":"Microsoft.RegexEntityRecognizer",
+ "name": "alphaEntity",
+ "pattern": "a"
+ },
+ {
+ "$kind":"Microsoft.RegexEntityRecognizer",
+ "name": "numberEntity",
+ "pattern": "one"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.dialog
new file mode 100644
index 000000000..011e7a48c
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.dialog
@@ -0,0 +1,80 @@
+{
+ "$schema": "../../../../schemas/sdk.schema",
+ "$kind": "Microsoft.Test.Script",
+ "dialog": {
+ "$kind": "Microsoft.AdaptiveDialog",
+ "recognizer": {
+ "$kind": "Microsoft.LuisRecognizer",
+ "applicationId": "=settings.luis.ExternalEntities_test_en-us_lu",
+ "endpoint": "=settings.luis.endpoint",
+ "endpointKey": "=settings.luis.endpointKey",
+ "externalEntityRecognizer": "ExternalEntities.Recognizer",
+ "predictionOptions": {
+ "preferExternalEntities": true
+ }
+ },
+ "triggers": [
+ {
+ "$kind": "Microsoft.OnIntent",
+ "intent": "intent",
+ "entities": [
+ "alphaEntity"
+ ],
+ "actions": [
+ {
+ "$kind": "Microsoft.SendActivity",
+ "activity": "alphaEntity"
+ }
+ ]
+ },
+ {
+ "$kind": "Microsoft.OnIntent",
+ "intent": "intent",
+ "entities": [
+ "numberEntity"
+ ],
+ "actions": [
+ {
+ "$kind": "Microsoft.SendActivity",
+ "activity": "numberEntity"
+ }
+ ]
+ }
+ ]
+ },
+ "locale": "en-us",
+ "script": [
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "word1"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "alphaEntity"
+ },
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "a"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "alphaEntity"
+ },
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "three"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "numberEntity"
+ },
+ {
+ "$kind": "Microsoft.Test.UserSays",
+ "text": "one"
+ },
+ {
+ "$kind": "Microsoft.Test.AssertReply",
+ "text": "numberEntity"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.en-us.lu.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.en-us.lu.dialog
new file mode 100644
index 000000000..0b56bba42
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.en-us.lu.dialog
@@ -0,0 +1,6 @@
+{
+ "$type": "Microsoft.LuisRecognizer",
+ "applicationId": "=settings.luis.ExternalEntities_test_en-us_lu",
+ "endpoint": "=settings.luis.endpoint",
+ "endpointKey": "=settings.luis.endpointKey"
+}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.lu b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.lu
new file mode 100644
index 000000000..283abeda5
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.lu
@@ -0,0 +1,13 @@
+$alphaEntity:simple
+
+$numberEntity:3=
+- three
+
+$numberEntity:4=
+- four
+
+# intent
+- {alphaEntity=word1}
+- {alphaEntity=word2
+- three
+- four
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.lu.dialog b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.lu.dialog
new file mode 100644
index 000000000..d228d290b
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/ExternalEntities.test.lu.dialog
@@ -0,0 +1,7 @@
+{
+ "$type": "Microsoft.MultiLanguageRecognizer",
+ "recognizers": {
+ "en-us": "ExternalEntities.test.en-us.lu",
+ "": "ExternalEntities.test.en-us.lu"
+ }
+}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/LUISBuild.cmd b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/LUISBuild.cmd
new file mode 100644
index 000000000..eabb7ad54
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/LUISBuild.cmd
@@ -0,0 +1,2 @@
+@echo off
+bf luis:build --in . --authoringKey %LUIS_AUTHORING_KEY% --botName LUISRecognizerTests --dialog %1
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/1639354569.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/1639354569.json
new file mode 100644
index 000000000..6a87c6abc
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/1639354569.json
@@ -0,0 +1 @@
+{"query":"three","prediction":{"topIntent":"intent","intents":{"intent":{"score":0.968526}},"entities":{"numberEntity":[["3"]]}}}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/283019056.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/283019056.json
new file mode 100644
index 000000000..3d48a5c60
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/283019056.json
@@ -0,0 +1 @@
+{"query":"a","prediction":{"topIntent":"intent","intents":{"intent":{"score":0.8640835}},"entities":{"alphaEntity":[["a"]]}}}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/2859100238.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/2859100238.json
new file mode 100644
index 000000000..6c29d16d7
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/2859100238.json
@@ -0,0 +1 @@
+{"query":"one","prediction":{"topIntent":"intent","intents":{"intent":{"score":0.8640835}},"entities":{"numberEntity":[["1"]]}}}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/894663559.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/894663559.json
new file mode 100644
index 000000000..e0732fd7e
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/DynamicLists_test_en-us_lu/894663559.json
@@ -0,0 +1 @@
+{"query":"word1","prediction":{"topIntent":"intent","intents":{"intent":{"score":0.8677989}},"entities":{"alphaEntity":[["word1"]]}}}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/1056632245.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/1056632245.json
new file mode 100644
index 000000000..ec07f18a0
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/1056632245.json
@@ -0,0 +1 @@
+{"query":"three","prediction":{"topIntent":"intent","intents":{"intent":{"score":0.9651823}},"entities":{"numberEntity":[["3"]]}}}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/1335032396.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/1335032396.json
new file mode 100644
index 000000000..c3ad18afd
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/1335032396.json
@@ -0,0 +1 @@
+{"query":"a","prediction":{"topIntent":"intent","intents":{"intent":{"score":0.829455853}},"entities":{"alphaEntity":[["a"]]}}}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/1780418299.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/1780418299.json
new file mode 100644
index 000000000..7c4e3c31a
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/1780418299.json
@@ -0,0 +1 @@
+{"query":"word1","prediction":{"topIntent":"intent","intents":{"intent":{"score":0.8492372}},"entities":{"alphaEntity":["word1"]}}}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/4112913714.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/4112913714.json
new file mode 100644
index 000000000..fade6d9f2
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/cachedResponses/ExternalEntities_test_en-us_lu/4112913714.json
@@ -0,0 +1 @@
+{"query":"one","prediction":{"topIntent":"intent","intents":{"intent":{"score":0.829455853}},"entities":{"numberEntity":[["one"]]}}}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/luis.settings.development.westus.json b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/luis.settings.development.westus.json
new file mode 100644
index 000000000..740f5369e
--- /dev/null
+++ b/tests/Microsoft.Bot.Builder.Dialogs.Adaptive.Tests/Tests/LuisRecognizerTests/luis.settings.development.westus.json
@@ -0,0 +1,6 @@
+{
+ "luis": {
+ "DynamicLists_test_en-us_lu": "e9768105-e984-4144-af3c-25ff3a0ffcea",
+ "ExternalEntities_test_en-us_lu": "f09e1e47-2f29-44bf-b4e4-7af2890cd88a"
+ }
+}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.LanguageGeneration.Tests/Microsoft.Bot.Builder.LanguageGeneration.Tests.csproj b/tests/Microsoft.Bot.Builder.LanguageGeneration.Tests/Microsoft.Bot.Builder.LanguageGeneration.Tests.csproj
index 2361038ea..3407f9b9f 100644
--- a/tests/Microsoft.Bot.Builder.LanguageGeneration.Tests/Microsoft.Bot.Builder.LanguageGeneration.Tests.csproj
+++ b/tests/Microsoft.Bot.Builder.LanguageGeneration.Tests/Microsoft.Bot.Builder.LanguageGeneration.Tests.csproj
@@ -217,12 +217,6 @@
-
-
- System
-
-
-
PreserveNewest
diff --git a/tests/Microsoft.Bot.Builder.TestBot.Json/CustomSteps/JavascriptAction.cs b/tests/Microsoft.Bot.Builder.TestBot.Json/CustomSteps/JavascriptAction.cs
index 5e10d299a..be337267d 100644
--- a/tests/Microsoft.Bot.Builder.TestBot.Json/CustomSteps/JavascriptAction.cs
+++ b/tests/Microsoft.Bot.Builder.TestBot.Json/CustomSteps/JavascriptAction.cs
@@ -8,6 +8,7 @@ using System.Threading.Tasks;
using Jint;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Builder.Dialogs.Adaptive;
+using Microsoft.Bot.Expressions.Properties;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
diff --git a/tests/Microsoft.Bot.Builder.TestBot.Json/CustomSteps/Testbot.JavascriptAction.schema b/tests/Microsoft.Bot.Builder.TestBot.Json/CustomSteps/Testbot.JavascriptAction.schema
index e00f39174..f273265aa 100644
--- a/tests/Microsoft.Bot.Builder.TestBot.Json/CustomSteps/Testbot.JavascriptAction.schema
+++ b/tests/Microsoft.Bot.Builder.TestBot.Json/CustomSteps/Testbot.JavascriptAction.schema
@@ -13,7 +13,7 @@
},
"disabled": {
"$role": "expression",
- "type": [ "boolean", "string" ],
+ "type": "boolean",
"title": "Disabled",
"description": "Optional condition which if true will disable this action.",
"examples": [
@@ -27,7 +27,7 @@
},
"options": {
"$role": "expression",
- "type": [ "string", "object" ],
+ "type": "object",
"title": "Options",
"description": "One or more options that are passed to the function as args.",
"additionalProperties": {
diff --git a/tests/Microsoft.Bot.Builder.TestBot.Json/Program.cs b/tests/Microsoft.Bot.Builder.TestBot.Json/Program.cs
index eefd273fa..a74babcd1 100644
--- a/tests/Microsoft.Bot.Builder.TestBot.Json/Program.cs
+++ b/tests/Microsoft.Bot.Builder.TestBot.Json/Program.cs
@@ -2,8 +2,11 @@
// Licensed under the MIT License.
using System;
+using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
+using System.Reflection.Emit;
+using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
@@ -19,28 +22,34 @@ namespace Microsoft.Bot.Builder.TestBot.Json
public static void Help()
{
- Trace.TraceInformation("--region : LUIS Authoring region. Default westus");
+ Trace.TraceInformation("--root : Absolute path to the root directory for declarative resources all *.main.dialog be options. Default current directory");
+ Trace.TraceInformation("--region : LUIS endpoint region. Default westus");
+ Trace.TraceInformation("--environment : LUIS environment settings to use. Default 'devlopment' or user alias.");
Trace.TraceInformation("--help: This help.");
- Trace.TraceInformation("--root: Root directory for declartive resources.");
System.Environment.Exit(-1);
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
- .ConfigureAppConfiguration((hostingContext, config) =>
+ .ConfigureAppConfiguration((hostingContext, config) =>
+ {
+ var luisRegion = Environment.GetEnvironmentVariable("LUIS_AUTHORING_REGION") ?? "westus";
+ var environment = "development";
+ var botRoot = ".";
+ for (var i = 0; i < args.Length; ++i)
{
- var env = hostingContext.HostingEnvironment;
- var luisAuthoringRegion = Environment.GetEnvironmentVariable("LUIS_AUTHORING_REGION") ?? "westus";
- for (var i = 0; i < args.Length; ++i)
+ var arg = args[i];
+
+ // No args has %LAUNCHER_ARGS% as the single argument so ignore it
+ if (!arg.StartsWith("%"))
{
- var arg = args[i];
switch (arg)
{
case "--region":
{
if (++i < args.Length)
{
- luisAuthoringRegion = args[i];
+ luisRegion = args[i];
}
}
@@ -49,36 +58,50 @@ namespace Microsoft.Bot.Builder.TestBot.Json
{
if (++i < args.Length)
{
- env.ContentRootPath = args[i];
+ botRoot = args[i];
}
}
break;
- default:
- Help();
+ case "--environment":
+ {
+ if (++i < args.Length)
+ {
+ environment = args[i];
+ }
+ }
+
break;
+
+ default: Help(); break;
}
}
+ }
- config.AddUserSecrets();
+ var settings = new Dictionary();
+ settings["luis:endpoint"] = $"https://{luisRegion}.api.cognitive.microsoft.com";
+ settings["BotRoot"] = botRoot;
+ config.AddInMemoryCollection(settings);
- // Add general and then user specific luis.settings files to config
- var di = new DirectoryInfo(env.ContentRootPath);
- var generalPattern = $"{env.EnvironmentName}.{luisAuthoringRegion}.json";
- foreach (var file in di.GetFiles($"luis.settings.{generalPattern}", SearchOption.AllDirectories))
- {
- config.AddJsonFile(file.FullName, optional: false, reloadOnChange: true);
- }
+ config.AddUserSecrets();
- var userPattern = $"{Environment.UserName}.{luisAuthoringRegion}.json";
- foreach (var file in di.GetFiles($"luis.settings.{userPattern}", SearchOption.AllDirectories))
- {
- config.AddJsonFile(file.FullName, optional: false, reloadOnChange: true);
- }
- })
- .ConfigureWebHostDefaults(webBuilder =>
+ // Add general and then user specific luis.settings files to config
+ var di = new DirectoryInfo(botRoot);
+ var generalPattern = $"{environment}.{luisRegion}.json";
+ foreach (var file in di.GetFiles($"luis.settings.{generalPattern}", SearchOption.AllDirectories))
{
- webBuilder.UseStartup();
- });
+ config.AddJsonFile(file.FullName, optional: false, reloadOnChange: true);
+ }
+
+ var userPattern = $"{Environment.UserName}.{luisRegion}.json";
+ foreach (var file in di.GetFiles($"luis.settings.{userPattern}", SearchOption.AllDirectories))
+ {
+ config.AddJsonFile(file.FullName, optional: false, reloadOnChange: true);
+ }
+ })
+ .ConfigureWebHostDefaults(webBuilder =>
+ {
+ webBuilder.UseStartup();
+ });
}
}
diff --git a/tests/Microsoft.Bot.Builder.TestBot.Json/Samples/GeneratedForm/luis/sandwich.en-us.lu.dialog b/tests/Microsoft.Bot.Builder.TestBot.Json/Samples/GeneratedForm/luis/sandwich.en-us.lu.dialog
index 2c396ad72..3a5334b3c 100644
--- a/tests/Microsoft.Bot.Builder.TestBot.Json/Samples/GeneratedForm/luis/sandwich.en-us.lu.dialog
+++ b/tests/Microsoft.Bot.Builder.TestBot.Json/Samples/GeneratedForm/luis/sandwich.en-us.lu.dialog
@@ -2,9 +2,9 @@
{
"$schema": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/master/schemas/sdk.schema",
"$kind": "Microsoft.LuisRecognizer",
- "applicationId": "{settings.luis.sandwich_en-us_lu}",
- "endpoint": "{settings.luis.endpoint}",
- "endpointKey": "{settings.luis.endpointKey}",
+ "applicationId": "=settings.luis.sandwich_en-us_lu",
+ "endpoint": "=settings.luis.endpoint",
+ "endpointKey": "=settings.luis.endpointKey",
"predictionOptions": {
"includeInstanceData": true
}
diff --git a/tests/Microsoft.Bot.Builder.TestBot.Json/Samples/ToDoLuisBot/ToDoLuis.en-us.lu.dialog b/tests/Microsoft.Bot.Builder.TestBot.Json/Samples/ToDoLuisBot/ToDoLuis.en-us.lu.dialog
index 935543a11..335f4a564 100644
--- a/tests/Microsoft.Bot.Builder.TestBot.Json/Samples/ToDoLuisBot/ToDoLuis.en-us.lu.dialog
+++ b/tests/Microsoft.Bot.Builder.TestBot.Json/Samples/ToDoLuisBot/ToDoLuis.en-us.lu.dialog
@@ -1,6 +1,6 @@
{
"$kind": "Microsoft.LuisRecognizer",
- "applicationId": "@{settings.luis.ToDoLuis_en-us_lu}",
- "endpoint": "@{settings.luis.endpoint}",
- "endpointKey": "@{settings.luis.endpointKey}"
+ "applicationId": "=settings.luis.ToDoLuis_en-us_lu",
+ "endpoint": "=settings.luis.endpoint",
+ "endpointKey": "=settings.luis.endpointKey"
}
\ No newline at end of file
diff --git a/tests/Microsoft.Bot.Builder.TestBot.Json/Startup.cs b/tests/Microsoft.Bot.Builder.TestBot.Json/Startup.cs
index 473502bf7..35908bbad 100644
--- a/tests/Microsoft.Bot.Builder.TestBot.Json/Startup.cs
+++ b/tests/Microsoft.Bot.Builder.TestBot.Json/Startup.cs
@@ -49,7 +49,7 @@ namespace Microsoft.Bot.Builder.TestBot.Json
// Create the Conversation state. (Used by the Dialog system itself.)
services.AddSingleton();
- var resourceExplorer = new ResourceExplorer().AddFolder(this.HostingEnvironment.ContentRootPath);
+ var resourceExplorer = new ResourceExplorer().AddFolder(this.Configuration.GetValue("BotRoot"));
services.AddSingleton(resourceExplorer);
// Create the bot In this case the ASP Controller is expecting an IBot.
diff --git a/tests/Microsoft.Bot.Builder.TestBot.Json/TestBot.cs b/tests/Microsoft.Bot.Builder.TestBot.Json/TestBot.cs
index 0cf6b8e64..c72faf49f 100644
--- a/tests/Microsoft.Bot.Builder.TestBot.Json/TestBot.cs
+++ b/tests/Microsoft.Bot.Builder.TestBot.Json/TestBot.cs
@@ -7,6 +7,7 @@ using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Reflection.Metadata;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.Filters;
@@ -64,6 +65,7 @@ namespace Microsoft.Bot.Builder.TestBot.Json
Prompt = new ActivityTemplate("What declarative sample do you want to run?"),
Property = "conversation.dialogChoice",
AlwaysPrompt = true,
+ Choices = new ChoiceSet(new List())
};
var handleChoice = new SwitchCondition()
@@ -72,6 +74,7 @@ namespace Microsoft.Bot.Builder.TestBot.Json
Cases = new List()
};
+ Dialog lastDialog = null;
var choices = new ChoiceSet();
foreach (var resource in this.resourceExplorer.GetResources(".dialog").Where(r => r.Id.EndsWith(".main.dialog")))
@@ -81,6 +84,7 @@ namespace Microsoft.Bot.Builder.TestBot.Json
var name = Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(resource.Id));
choices.Add(new Choice(name));
var dialog = DeclarativeTypeLoader.Load