From 4fd30e36c018ffe65d2b8a3bf53b1d7bdc2eff94 Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Wed, 4 Oct 2023 14:14:42 -0700 Subject: [PATCH 01/17] SharePoint ACE Activity Handler --- .../SharePoint/SharePointActivityHandler.cs | 140 ++++++++++++++++++ libraries/Microsoft.Bot.Connector/Channels.cs | 5 + .../Microsoft.Bot.Schema.csproj | 1 + .../SharePoint/AceRequest.cs | 48 ++++++ .../SharePoint/BaseResponse.cs | 41 +++++ .../SharePoint/GetCardViewResponse.cs | 38 +++++ .../GetPropertyPaneConfigurationResponse.cs | 21 +++ .../SharePoint/GetQuickViewResponse.cs | 52 +++++++ 8 files changed, 346 insertions(+) create mode 100644 libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/AceRequest.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/BaseResponse.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs diff --git a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs new file mode 100644 index 0000000000..36ace79c0b --- /dev/null +++ b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs @@ -0,0 +1,140 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Net; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Bot.Connector; +using Microsoft.Bot.Schema; +using Microsoft.Bot.Schema.SharePoint; +using Microsoft.Bot.Schema.Teams; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Builder.SharePoint +{ + /// + /// The SharePointActivityHandler is derived from ActivityHandler. It adds support for + /// the SharePoint specific events and interactions. + /// + public class SharePointActivityHandler : ActivityHandler + { + /// + /// Invoked when an invoke activity is received from the connector. + /// Invoke activities can be used to communicate many different things. + /// + /// A strongly-typed context object for this turn. + /// A cancellation token that can be used by other objects + /// or threads to receive notice of cancellation. + /// A task that represents the work queued to execute. + /// + /// Invoke activities communicate programmatic commands from a client or channel to a bot. + /// The meaning of an invoke activity is defined by the property, + /// which is meaningful within the scope of a channel. + /// + protected override async Task OnInvokeActivityAsync(ITurnContext turnContext, CancellationToken cancellationToken) + { + try + { + if (turnContext.Activity.Name == null && turnContext.Activity.ChannelId == Channels.SharePoint) + { + throw new NotSupportedException(); + } + else + { + switch (turnContext.Activity.Name) + { + case "cardExtension/getCardView": + return CreateInvokeResponse(await OnSharePointTaskGetCardViewAsync(turnContext, SafeCast(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false)); + + case "cardExtension/getQuickView": + return CreateInvokeResponse(await OnSharePointTaskGetQuickViewAsync(turnContext, SafeCast(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false)); + + case "cardExtension/getPropertyPaneConfiguration": + return CreateInvokeResponse(await OnSharePointTaskGetPropertyPaneConfigurationAsync(turnContext, SafeCast(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false)); + + case "cardExtension/setPropertyPaneConfiguration": + await OnSharePointTaskSetPropertyPaneConfigurationAsync(turnContext, SafeCast(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false); + return CreateInvokeResponse(); + } + } + } + catch (InvokeResponseException e) + { + return e.CreateInvokeResponse(); + } + + return await base.OnInvokeActivityAsync(turnContext, cancellationToken).ConfigureAwait(false); + } + + /// + /// Override this in a derived class to provide logic for when a card view is fetched. + /// + /// A strongly-typed context object for this turn. + /// The task module invoke request value payload. + /// A cancellation token that can be used by other objects + /// or threads to receive notice of cancellation. + /// A Card View Response for the request. + protected virtual Task> OnSharePointTaskGetCardViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + { + throw new InvokeResponseException(HttpStatusCode.NotImplemented); + } + + /// + /// Override this in a derived class to provide logic for when a quick view is fetched. + /// + /// A strongly-typed context object for this turn. + /// The task module invoke request value payload. + /// A cancellation token that can be used by other objects + /// or threads to receive notice of cancellation. + /// A Quick View Response for the request. + protected virtual Task> OnSharePointTaskGetQuickViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + { + throw new InvokeResponseException(HttpStatusCode.NotImplemented); + } + + /// + /// Override this in a derived class to provide logic for getting configuration pane properties. + /// + /// A strongly-typed context object for this turn. + /// The task module invoke request value payload. + /// A cancellation token that can be used by other objects + /// or threads to receive notice of cancellation. + /// A Property Pane Configuration Response for the request. + protected virtual Task> OnSharePointTaskGetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + { + throw new InvokeResponseException(HttpStatusCode.NotImplemented); + } + + /// + /// Override this in a derived class to provide logic for setting configuration pane properties. + /// + /// A strongly-typed context object for this turn. + /// The task module invoke request value payload. + /// A cancellation token that can be used by other objects + /// or threads to receive notice of cancellation. + /// An empty response. + protected virtual Task OnSharePointTaskSetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + { + throw new InvokeResponseException(HttpStatusCode.NotImplemented); + } + + /// + /// Safely casts an object to an object of type . + /// + /// The object to be casted. + /// The object casted in the new type. + private static T SafeCast(object value) + { + var obj = value as JObject; + if (obj == null) + { + throw new InvokeResponseException(HttpStatusCode.BadRequest, $"expected type '{value.GetType().Name}'"); + } + + return obj.ToObject(); + } + } +} diff --git a/libraries/Microsoft.Bot.Connector/Channels.cs b/libraries/Microsoft.Bot.Connector/Channels.cs index 274b5da326..5fdf4f8023 100644 --- a/libraries/Microsoft.Bot.Connector/Channels.cs +++ b/libraries/Microsoft.Bot.Connector/Channels.cs @@ -88,6 +88,11 @@ public class Channels /// public const string Msteams = "msteams"; + /// + /// SharePoint channel. + /// + public const string SharePoint = "sharepoint"; + /// /// Skype channel. /// diff --git a/libraries/Microsoft.Bot.Schema/Microsoft.Bot.Schema.csproj b/libraries/Microsoft.Bot.Schema/Microsoft.Bot.Schema.csproj index 391948ee07..4ef13581dc 100644 --- a/libraries/Microsoft.Bot.Schema/Microsoft.Bot.Schema.csproj +++ b/libraries/Microsoft.Bot.Schema/Microsoft.Bot.Schema.csproj @@ -25,6 +25,7 @@ + diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/AceRequest.cs b/libraries/Microsoft.Bot.Schema/SharePoint/AceRequest.cs new file mode 100644 index 0000000000..5e538984c7 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/AceRequest.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// ACE invoke request payload. + /// + public class AceRequest + { + /// + /// Initializes a new instance of the class. + /// + public AceRequest() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// ACE request data. + /// ACE properties data. + public AceRequest(object data = default, object customProperties = default) + { + Data = data; + CustomProperties = customProperties; + } + + /// + /// Gets or sets user ACE request data. + /// + /// The ACE request data. + [JsonProperty(PropertyName = "data")] + public object Data { get; set; } + + /// + /// Gets or sets ACE properties data. Free payload with key-value pairs. + /// + /// ACE Properties object. + [JsonProperty(PropertyName = "customProperties")] + public object CustomProperties { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/BaseResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/BaseResponse.cs new file mode 100644 index 0000000000..ca2188660b --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/BaseResponse.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Base SharePoint Response object. + /// + /// Type for data field. + public class BaseResponse + { + /// + /// Initializes a new instance of the class. + /// + /// Schema version to be used. + public BaseResponse(string schemaVersion) + { + SchemaVersion = schemaVersion; + } + + /// + /// Gets or sets the Schema version of the response. + /// + /// + /// The Schema version of the response. + /// + public string SchemaVersion { get; set; } + + /// + /// Gets or Sets open-ended response Data. + /// + /// This value is the data of the response. + [JsonProperty(PropertyName = "data")] + public T Data { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs new file mode 100644 index 0000000000..8097014c3f --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Microsoft.Bot.Schema.Teams; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint GetCardView response object. + /// + /// Type for data field. + /// Type for ACE data field. + public class GetCardViewResponse : BaseResponse + { + /// + /// Initializes a new instance of the class. + /// + /// Schema version to be used. + public GetCardViewResponse(string schemaVersion) + : base(schemaVersion) + { + } + + /// + /// Gets or sets open-ended AceData for the card view. + /// + /// This value is the ace data of the card view response. + [JsonProperty(PropertyName = "aceData")] + public object AceData { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs new file mode 100644 index 0000000000..44f4dcf533 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs @@ -0,0 +1,21 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint GetQuickView response object. + /// + /// Type for data field. + public class GetPropertyPaneConfigurationResponse : BaseResponse + { + /// + /// Initializes a new instance of the class. + /// + /// Schema version to be used. + public GetPropertyPaneConfigurationResponse(string schemaVersion) + : base(schemaVersion) + { + } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs new file mode 100644 index 0000000000..29a5dddb90 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using AdaptiveCards; +using Microsoft.Bot.Schema.Teams; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint GetQuickView response object. + /// + /// Type for data field. + public class GetQuickViewResponse : BaseResponse + { + /// + /// Initializes a new instance of the class. + /// + /// Schema version to be used. + public GetQuickViewResponse(string schemaVersion) + : base(schemaVersion) + { + } + + /// + /// Gets or Sets data for the quick view template of type . + /// + /// This value is the template of the quick view response. + [JsonProperty(PropertyName = "template")] + public AdaptiveCard Template { get; set; } + + /// + /// Gets or Sets view Id of type . + /// + /// This value is the view Id of the quick view response. + [JsonProperty(PropertyName = "viewId")] + public string ViewId { get; set; } + + /// + /// Gets or Sets stackSize of type . + /// + /// This value is the stack size of the quick view response. + [JsonProperty(PropertyName = "stackSize")] + public int StackSize { get; set; } + } +} From b914244f87c571b2e75e678dc8b5961e9ef21d3c Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Fri, 13 Oct 2023 15:15:07 -0700 Subject: [PATCH 02/17] adding schema - wip --- .../SharePoint/SharePointActivityHandler.cs | 6 +- .../SharePoint/AceData.cs | 84 +++++++++++ .../SharePoint/ActionButton.cs | 38 +++++ .../SharePoint/Actions/Action.cs | 30 ++++ .../SharePoint/Actions/ActionParameters.cs | 100 +++++++++++++ .../SharePoint/BaseResponse.cs | 41 ------ .../SharePoint/CardView/BaseCardComponent.cs | 30 ++++ .../SharePoint/CardView/CardBarComponent.cs | 38 +++++ .../SharePoint/CardView/CardButtonBase.cs | 13 ++ .../SharePoint/CardView/CardComponentName.cs | 48 ++++++ .../SharePoint/CardView/CardImage.cs | 30 ++++ .../SharePoint/CardViewData.cs | 39 +++++ .../SharePoint/GetCardViewResponse.cs | 47 ++++-- .../GetPropertyPaneConfigurationResponse.cs | 48 +++++- .../SharePoint/GetQuickViewResponse.cs | 17 ++- .../IPropertyPaneFieldProperties.cs | 23 +++ .../IPropertyPaneGroupOrConditionalGroup.cs | 23 +++ .../PropertyPaneCheckboxProperties.cs | 48 ++++++ .../PropertyPaneChoiceGroupIconProperties.cs | 34 +++++ .../PropertyPaneChoiceGroupImageSize.cs | 41 ++++++ .../PropertyPaneChoiceGroupOption.cs | 84 +++++++++++ .../PropertyPaneChoiceGroupProperties.cs | 41 ++++++ .../SharePoint/PropertyPaneDropDownOption.cs | 76 ++++++++++ .../PropertyPaneDropDownProperties.cs | 83 +++++++++++ .../SharePoint/PropertyPaneGroup.cs | 55 +++++++ .../SharePoint/PropertyPaneGroupField.cs | 113 ++++++++++++++ .../SharePoint/PropertyPaneLabelProperties.cs | 41 ++++++ .../PropertyPaneLinkPopupWindowProperties.cs | 87 +++++++++++ .../SharePoint/PropertyPaneLinkProperties.cs | 69 +++++++++ .../SharePoint/PropertyPanePage.cs | 48 ++++++ .../SharePoint/PropertyPanePageHeader.cs | 34 +++++ .../PropertyPaneSliderProperties.cs | 83 +++++++++++ .../PropertyPaneTextFieldProperties.cs | 139 ++++++++++++++++++ .../PropertyPaneToggleProperties.cs | 90 ++++++++++++ .../SharePoint/QuickViewData.cs | 41 ++++++ 35 files changed, 1797 insertions(+), 65 deletions(-) create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/ActionButton.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/Action.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs delete mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/BaseResponse.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardBarComponent.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonBase.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardComponentName.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardImage.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/IPropertyPaneFieldProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/IPropertyPaneGroupOrConditionalGroup.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneCheckboxProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupIconProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupImageSize.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownOption.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroup.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroupField.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLabelProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePage.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePageHeader.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/QuickViewData.cs diff --git a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs index 36ace79c0b..70a9acfac3 100644 --- a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs +++ b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs @@ -77,7 +77,7 @@ protected override async Task OnInvokeActivityAsync(ITurnContext /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. /// A Card View Response for the request. - protected virtual Task> OnSharePointTaskGetCardViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + protected virtual Task OnSharePointTaskGetCardViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { throw new InvokeResponseException(HttpStatusCode.NotImplemented); } @@ -90,7 +90,7 @@ protected virtual Task> OnSharePointTaskGetC /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. /// A Quick View Response for the request. - protected virtual Task> OnSharePointTaskGetQuickViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + protected virtual Task OnSharePointTaskGetQuickViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { throw new InvokeResponseException(HttpStatusCode.NotImplemented); } @@ -103,7 +103,7 @@ protected virtual Task> OnSharePointTaskGetQuickVie /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. /// A Property Pane Configuration Response for the request. - protected virtual Task> OnSharePointTaskGetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + protected virtual Task OnSharePointTaskGetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { throw new InvokeResponseException(HttpStatusCode.NotImplemented); } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs b/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs new file mode 100644 index 0000000000..6bdd95773e --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs @@ -0,0 +1,84 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Ace Data object. + /// + public class AceData + { + /// + /// Initializes a new instance of the class. + /// + public AceData() + { + // Do nothing + } + + /// + /// This enum contains the different types of card templates available in the SPFx framework. + /// + public enum AceCardSize + { + /// + /// Small + /// + Small, + + /// + /// Medium + /// + Medium, + + /// + /// Large + /// + Large + } + + /// + /// Gets or Sets the card size of the adaptive card extension of type enum. + /// + /// This value is the size of the adaptive card extension. + [JsonProperty(PropertyName = "cardSize")] + [JsonConverter(typeof(StringEnumConverter))] + public AceCardSize CardSize { get; set; } + + /// + /// Gets or Sets the version of the data of type . + /// + /// This value is the version of the adaptive card extension. + [JsonProperty(PropertyName = "dataVersion")] + public string DataVersion { get; set; } + + /// + /// Gets or Sets the id of type . + /// + /// This value is the ID of the adaptive card extension. + [JsonProperty(PropertyName = "id")] + public string Id { get; set; } + + /// + /// Gets or Sets the title of type . + /// + /// This value is the title of the adaptive card extension. + [JsonProperty(PropertyName = "title")] + public string Title { get; set; } + + /// + /// Gets or Sets the icon property of type . + /// + /// This value is the icon of the adaptive card extension. + [JsonProperty(PropertyName = "iconProperty")] + public string IconProperty { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/ActionButton.cs b/libraries/Microsoft.Bot.Schema/SharePoint/ActionButton.cs new file mode 100644 index 0000000000..5aeed58649 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/ActionButton.cs @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint action button. + /// + public class ActionButton + { + /// + /// Initializes a new instance of the class. + /// + public ActionButton() + { + // Do nothing + } + + /// + /// Gets or Sets the title of type . + /// + /// This value is the title of the action button. + [JsonProperty(PropertyName = "title")] + public string Title { get; set; } + + /// + /// Gets or Sets the action of type . + /// + /// This value is the action of the action button. + [JsonProperty(PropertyName = "action")] + public Action Action { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/Action.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/Action.cs new file mode 100644 index 0000000000..a23ae5d54b --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/Action.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Initializes a new instance of the class. + /// + public class Action + { + /// + /// Gets or Sets the type of type . + /// + /// This value is the type of the action. + [JsonProperty(PropertyName = "type")] + public string Type { get; set; } + + /// + /// Gets or Sets the action parameters of type . + /// + /// This value is the parameters of the action. + [JsonProperty(PropertyName = "parameters")] + public ActionParameters Parameters { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs new file mode 100644 index 0000000000..ef8dbcfc78 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs @@ -0,0 +1,100 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Media type for SelectMediaAction. + /// + [Flags] + public enum MediaTypes + { + /// + /// Image media type. + /// + Image = 1, + + /// + /// Audio media type. + /// + Audio = 4, + + /// + /// Document media type. + /// + Document = 8 + } + + /// + /// SharePoint action button parameters. + /// + public class ActionParameters + { + /// + /// Initializes a new instance of the class. + /// + public ActionParameters() + { + // Do nothing + } + + /// + /// Gets or Sets the view of type . + /// + /// Use this property if you are working with QuickView action type. + /// This value is the view of the action parameter. + [JsonProperty(PropertyName = "view")] + public string View { get; set; } + + /// + /// Gets or sets a flag that indicates whether the target is a Teams deep link. + /// + /// Use this property if you are working with ExternalLink action type. + /// Indicates whether this is a Teams Deep Link. + [JsonProperty(PropertyName = "isTeamsDeepLink")] + public bool? IsTeamsDeepLink { get; set; } + + /// + /// Gets or sets the target URL for the ExternalLink action. + /// + /// Use this property if you are working with ExternalLink action type. + /// The values is the URL. + [JsonProperty(PropertyName = "target")] + public string Target { get; set; } + + /// + /// Gets key-value pair properties that can be defined for Submit and Execute actions. + /// + /// Use this property if you are working with Submit or Execute action type. + /// key-value pairs for Submit or Execute actions. + [JsonExtensionData(ReadData = true, WriteData = true)] + public Dictionary SubmitParameters { get; } = new Dictionary(); + + /// + /// Gets or sets the specific media type that should be selected. + /// + /// Use this property if you are working with VivaAction.SelectMedia action type. + /// The specific media type that should be selected. + public MediaTypes? MediaType { get ; set; } + + /// + /// Gets or sets a flag to specify if multiple files can be selected. + /// + /// Use this property if you are working with VivaAction.SelectMedia action type. + /// Specifies if multiple files can be selected. + public bool? AllowMultipleCapture { get; set; } + + /// + /// Gets or sets maximum file size that can be uplaoded. + /// + /// Use this property if you are working with VivaAction.SelectMedia action type. + /// Max file size. + public int MaxSizePerFile { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/BaseResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/BaseResponse.cs deleted file mode 100644 index ca2188660b..0000000000 --- a/libraries/Microsoft.Bot.Schema/SharePoint/BaseResponse.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Text; -using Newtonsoft.Json; - -namespace Microsoft.Bot.Schema.SharePoint -{ - /// - /// Base SharePoint Response object. - /// - /// Type for data field. - public class BaseResponse - { - /// - /// Initializes a new instance of the class. - /// - /// Schema version to be used. - public BaseResponse(string schemaVersion) - { - SchemaVersion = schemaVersion; - } - - /// - /// Gets or sets the Schema version of the response. - /// - /// - /// The Schema version of the response. - /// - public string SchemaVersion { get; set; } - - /// - /// Gets or Sets open-ended response Data. - /// - /// This value is the data of the response. - [JsonProperty(PropertyName = "data")] - public T Data { get; set; } - } -} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs new file mode 100644 index 0000000000..3a2899a5f5 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Base class for Adaptive Card Extensions card view components. + /// + public class BaseCardComponent + { + /// + /// Gets or sets component name. + /// + /// The value is the unique name of the component type. + [JsonProperty(PropertyName = "componentName")] + public CardComponentName ComponentName { get; protected set; } + + /// + /// Gets or sets optional unique identifier of the component's instance. + /// + /// The value is a unique string identifier of the component. + [JsonProperty(PropertyName = "id")] + public string Id { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardBarComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardBarComponent.cs new file mode 100644 index 0000000000..756461c015 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardBarComponent.cs @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Adaptive Card Extension card bar component. + /// + public class CardBarComponent : BaseCardComponent + { + /// + /// Initializes a new instance of the class. + /// + public CardBarComponent() + { + this.ComponentName = CardComponentName.CardBar; + } + + /// + /// Gets or sets the title to display. + /// + /// Title value to display in the card bar. + [JsonProperty(PropertyName = "title")] + public string Title { get; set; } + + /// + /// Gets or sets the icon to display. + /// + /// Icon to display in the card bar. + [JsonProperty(PropertyName = "icon")] + public CardImage Icon { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonBase.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonBase.cs new file mode 100644 index 0000000000..2885c73fb0 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonBase.cs @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.Bot.Schema.SharePoint.CardView +{ + public class CardButtonBase + { + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardComponentName.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardComponentName.cs new file mode 100644 index 0000000000..0b3b399e02 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardComponentName.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Names of the supported Adaptive Card Extension Card View Components. + /// + [JsonConverter(typeof(StringEnumConverter), /*camelCase*/ true)] + public enum CardComponentName + { + /// + /// Text component. + /// + Text, + + /// + /// Card button component. + /// + CardButton, + + /// + /// Card bar component. + /// + CardBar, + + /// + /// Text input component. + /// + TextInput, + + /// + /// Search box component. + /// + SearchBox, + + /// + /// Search footer component. + /// + SearchFooter + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardImage.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardImage.cs new file mode 100644 index 0000000000..d1d43832a7 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardImage.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Properties for the image rendered in a card view. + /// + public class CardImage + { + /// + /// Gets or sets the URL to display as image or icon name. + /// + /// image URL or icon name. + [JsonProperty(PropertyName = "url")] + public string Image { get; set; } + + /// + /// Gets or sets the alt text for the image. + /// + /// Alt text for the image. + [JsonProperty(PropertyName = "altText")] + public string AltText { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs new file mode 100644 index 0000000000..e23e50839c --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Card View Data object. + /// + public class CardViewData + { + /// + /// Initializes a new instance of the class. + /// + public CardViewData() + { + // Do nothing + } + + /// + /// Gets or Sets the action buttons of type . + /// + /// This value is the action buttons of the card view. + [JsonProperty(PropertyName = "actionButtons")] + public IEnumerable ActionButtons { get; set; } + + /// + /// Gets or Sets the primary text of type . + /// + /// This value is the primary text of the card view. + [JsonProperty(PropertyName = "primaryText")] + public string PrimaryText { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs index 8097014c3f..0d29ab772e 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs @@ -15,24 +15,53 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// SharePoint GetCardView response object. /// - /// Type for data field. - /// Type for ACE data field. - public class GetCardViewResponse : BaseResponse + public class GetCardViewResponse { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// Schema version to be used. - public GetCardViewResponse(string schemaVersion) - : base(schemaVersion) + /// Template type of the card view. + public GetCardViewResponse(CardViewTemplateType templateType) { + this.TemplateType = templateType; } /// - /// Gets or sets open-ended AceData for the card view. + /// This enum contains the different types of card templates available in the SPFx framework. + /// + public enum CardViewTemplateType + { + /// + /// Primary text card view + /// + PrimaryTextCardView, + + /// + /// Image card view + /// + ImageCardView + } + + /// + /// Gets or Sets the template type of the card view of type enum. + /// + /// This value is the template type of the card view response. + [JsonProperty(PropertyName = "templateType")] + [JsonConverter(typeof(StringEnumConverter))] + public CardViewTemplateType TemplateType { get; set; } + + /// + /// Gets or Sets AceData for the card view of type . /// /// This value is the ace data of the card view response. [JsonProperty(PropertyName = "aceData")] - public object AceData { get; set; } + public AceData AceData { get; set; } + + /// + /// Gets or Sets CardViewData of type . + /// + /// This value is the data of the card view response. + [JsonProperty(PropertyName = "data")] + public CardViewData Data { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs index 44f4dcf533..fbb747ac23 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs @@ -1,21 +1,57 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using AdaptiveCards; +using Microsoft.Bot.Schema.Teams; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + namespace Microsoft.Bot.Schema.SharePoint { /// /// SharePoint GetQuickView response object. /// - /// Type for data field. - public class GetPropertyPaneConfigurationResponse : BaseResponse + public class GetPropertyPaneConfigurationResponse { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// Schema version to be used. - public GetPropertyPaneConfigurationResponse(string schemaVersion) - : base(schemaVersion) + public GetPropertyPaneConfigurationResponse() { + // Do nothing } + + /// + /// Gets or Sets the pages of type . + /// + /// This value is the pages of the property pane. + [JsonProperty(PropertyName = "pages")] + public IEnumerable Pages { get; set; } + + /// + /// Gets or Sets the current page of type . + /// + /// This value is the current page of the property pane. + [JsonProperty(PropertyName = "currentPage")] + public int CurrentPage { get; set; } + + /// + /// Gets or Sets the loading indicator delay time of type . + /// + /// This value is the loading indicator delay time of the property pane. + [JsonProperty(PropertyName = "loadingIndicatorDelayTime")] + public int LoadingIndicatorDelayTime { get; set; } + + /// + /// Gets or Sets a value indicating whether the loading indicator should be displayed on top of the property pane or not of type . + /// + /// This value sets whether the loading indicator is shown for the property pane. + [JsonProperty(PropertyName = "showLoadingIndicator")] + public bool ShowLoadingIndicator { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs index 29a5dddb90..e3327dde19 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs @@ -16,18 +16,23 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// SharePoint GetQuickView response object. /// - /// Type for data field. - public class GetQuickViewResponse : BaseResponse + public class GetQuickViewResponse { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// Schema version to be used. - public GetQuickViewResponse(string schemaVersion) - : base(schemaVersion) + public GetQuickViewResponse() { + // Do nothing } + /// + /// Gets or Sets data for the quick view of type . + /// + /// This value is the data of the quick view response. + [JsonProperty(PropertyName = "data")] + public QuickViewData Data { get; set; } + /// /// Gets or Sets data for the quick view template of type . /// diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/IPropertyPaneFieldProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/IPropertyPaneFieldProperties.cs new file mode 100644 index 0000000000..2e894f589f --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/IPropertyPaneFieldProperties.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Interface for property pane field properties. + /// +#pragma warning disable CA1040 // Avoid empty interfaces + public interface IPropertyPaneFieldProperties +#pragma warning restore CA1040 // Avoid empty interfaces + { + // This interface has no common methods. + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/IPropertyPaneGroupOrConditionalGroup.cs b/libraries/Microsoft.Bot.Schema/SharePoint/IPropertyPaneGroupOrConditionalGroup.cs new file mode 100644 index 0000000000..b4b3619d07 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/IPropertyPaneGroupOrConditionalGroup.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Interface for property pane group or conditional group. + /// +#pragma warning disable CA1040 // Avoid empty interfaces + public interface IPropertyPaneGroupOrConditionalGroup +#pragma warning restore CA1040 // Avoid empty interfaces + { + // This interface has no common methods. + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneCheckboxProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneCheckboxProperties.cs new file mode 100644 index 0000000000..19caddb899 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneCheckboxProperties.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneCheckboxProperties : IPropertyPaneFieldProperties + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneCheckboxProperties() + { + // Do nothing + } + + /// + /// Gets or Sets the label to display next to the checkbox of type . + /// + /// This value is the text of the checkbox property. + [JsonProperty(PropertyName = "text")] + public string Text { get; set; } + + /// + /// Gets or Sets a value indicating whether this control is enabled or not of type . + /// + /// This value indicates if the control is disabled. + [JsonProperty(PropertyName = "disabled")] + public bool Disabled { get; set; } + + /// + /// Gets or Sets a value indicating whether the property pane checkbox is checked or not of type . + /// + /// This value indicates if the control is checked. + [JsonProperty(PropertyName = "checked")] + public bool Checked { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupIconProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupIconProperties.cs new file mode 100644 index 0000000000..bac6ef5b98 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupIconProperties.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneChoiceGroupIconProperties + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneChoiceGroupIconProperties() + { + // Do nothing + } + + /// + /// Gets or Sets the name of the icon to use from the Office Fabric icon set of type . + /// + /// This value is the office fabric icon font name of the choice group. + [JsonProperty(PropertyName = "officeFabricIconFontName")] + public string OfficeFabricIconFontName { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupImageSize.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupImageSize.cs new file mode 100644 index 0000000000..8dfd0ed6b6 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupImageSize.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneChoiceGroupImageSize + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneChoiceGroupImageSize() + { + // Do nothing + } + + /// + /// Gets or Sets the width of the image of type . + /// + /// This value is the width of the choice group. + [JsonProperty(PropertyName = "width")] + public int Width { get; set; } + + /// + /// Gets or Sets the height of the image of type . + /// + /// This value is the height of the choice group. + [JsonProperty(PropertyName = "height")] + public int Height { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs new file mode 100644 index 0000000000..3644f97662 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs @@ -0,0 +1,84 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using static Microsoft.Bot.Schema.SharePoint.PropertyPaneDropDownOption; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneChoiceGroupOption + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneChoiceGroupOption() + { + // Do nothing + } + + /// + /// Gets or Sets the aria label of type . + /// + /// This value is the aria label of the choice group. + [JsonProperty(PropertyName = "ariaLabel")] + public string AriaLabel { get; set; } + + /// + /// Gets or Sets a value indicating whether the property pane choice group option is checked or not of type . + /// + /// This value indicates whether the control is checked. + [JsonProperty(PropertyName = "checked")] + public bool Checked { get; set; } + + /// + /// Gets or Sets a value indicating whether this control is enabled or not of type . + /// + /// This value indicates whether the control is disabled. + [JsonProperty(PropertyName = "disabled")] + public bool Disabled { get; set; } + + /// + /// Gets or Sets the Icon component props for choice field of type . + /// + /// This value is the icon properties of the choice group. + [JsonProperty(PropertyName = "iconProps")] + public PropertyPaneChoiceGroupIconProperties IconProps { get; set; } + + /// + /// Gets or Sets the width and height of the image in px for choice field of type . + /// + /// This value is the image size of the choice group. + [JsonProperty(PropertyName = "imageSize")] + public PropertyPaneChoiceGroupImageSize ImageSize { get; set; } + + /// + /// Gets or Sets the src of image for choice field of type . + /// + /// This value is the image source of the choice group. + [JsonProperty(PropertyName = "imageSrc")] + public string ImageSrc { get; set; } + + /// + /// Gets or Sets a key to uniquely identify this option of type . + /// + /// This value is the key of the choice group. + [JsonProperty(PropertyName = "key")] + public string Key { get; set; } + + /// + /// Gets or Sets text to render for this option of type . + /// + /// This value is the text of the choice group. + [JsonProperty(PropertyName = "text")] + public string Text { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupProperties.cs new file mode 100644 index 0000000000..a0b81a9b3b --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupProperties.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneChoiceGroupProperties : IPropertyPaneFieldProperties + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneChoiceGroupProperties() + { + // Do nothing + } + + /// + /// Gets or Sets the label of type . + /// + /// This value is the label of the choice group. + [JsonProperty(PropertyName = "label")] + public string Label { get; set; } + + /// + /// Gets or Sets the collection of options for this choice group of type . + /// + /// This value is the icon properties of the choice group. + [JsonProperty(PropertyName = "options")] + public IEnumerable Options { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownOption.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownOption.cs new file mode 100644 index 0000000000..4c5ce443ef --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownOption.cs @@ -0,0 +1,76 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneDropDownOption + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneDropDownOption() + { + // Do nothing + } + + /// + /// This enum contains the different types of fields. + /// + public enum DropDownOptionType + { + /// + /// Render normal menu item. + /// + Normal = 0, + + /// + /// Render a divider. + /// + Divider = 1, + + /// + /// Render menu item as a header. + /// + Header = 2 + } + + /// + /// Gets or Sets index for this option of type . + /// + /// This value is the index of the drop down. + [JsonProperty(PropertyName = "index")] + public int Index { get; set; } + + /// + /// Gets or Sets a key to uniquely identify this option of type . + /// + /// This value is the key of the drop down. + [JsonProperty(PropertyName = "key")] + public string Key { get; set; } + + /// + /// Gets or Sets text to render for this option of type . + /// + /// This value is the text of the drop down. + [JsonProperty(PropertyName = "text")] + public string Text { get; set; } + + /// + /// Gets or Sets the type of option. If omitted, the default is PropertyPaneDropdownMenuItemType.Normal of type . + /// + /// This value is the type of the drop down. + [JsonProperty(PropertyName = "type")] + public DropDownOptionType Type { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs new file mode 100644 index 0000000000..9f436d52a5 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneDropDownProperties : IPropertyPaneFieldProperties + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneDropDownProperties() + { + // Do nothing + } + + /// + /// Gets or Sets the aria label of type . + /// + /// This value is the aria label of the drop down. + [JsonProperty(PropertyName = "ariaLabel")] + public string AriaLabel { get; set; } + + /// + /// Gets or Sets an element's number or position in the current set of controls. Maps to native aria-posinset attribute. It starts from 1 of type . + /// + /// This value is the aria position in set of the drop down. + [JsonProperty(PropertyName = "ariaPositionInSet")] + public int AriaPositionInSet { get; set; } + + /// + /// Gets or Sets the number of items in the current set of controls. Maps to native aria-setsize attribute of type . + /// + /// This value is the aria set size of the drop down. + [JsonProperty(PropertyName = "ariaSetSize")] + public int AriaSetSize { get; set; } + + /// + /// Gets or Sets the label of type . + /// + /// This value is the label of the drop down. + [JsonProperty(PropertyName = "label")] + public string Label { get; set; } + + /// + /// Gets or Sets a value indicating whether this control is enabled or not of type . + /// + /// This value indicates whether the property is disabled. + [JsonProperty(PropertyName = "disabled")] + public bool Disabled { get; set; } + + /// + /// Gets or Sets the error message of type . + /// + /// This value is the error message of the drop down. + [JsonProperty(PropertyName = "errorMessage")] + public string ErrorMessage { get; set; } + + /// + /// Gets or Sets the key of the initially selected option of type . + /// + /// This value is the selected key of the drop down. + [JsonProperty(PropertyName = "selectedKey")] + public string SelectedKey { get; set; } + + /// + /// Gets or Sets the collection of options for this Dropdown of type . + /// + /// This value is the options of the drop down. + [JsonProperty(PropertyName = "options")] + public IEnumerable Options { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroup.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroup.cs new file mode 100644 index 0000000000..5e8e58c519 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroup.cs @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneGroup : IPropertyPaneGroupOrConditionalGroup + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneGroup() + { + // Do nothing + } + + /// + /// Gets or Sets the group fields of type . + /// + /// This value is the group fields of the property pane group. + [JsonProperty(PropertyName = "groupFields")] + public IEnumerable GroupFields { get; set; } + + /// + /// Gets or Sets the group name of type . + /// + /// This value is the group name of the property pane group. + [JsonProperty(PropertyName = "groupName")] + public string GroupName { get; set; } + + /// + /// Gets or Sets a value indicating whether the PropertyPane group is collapsed or not of type . + /// + /// This value indicates whether the property pane group is collapsed. + [JsonProperty(PropertyName = "isCollapsed")] + public bool IsCollapsed { get; set; } + + /// + /// Gets or Sets a value indicating whether group name should be hidden of type . + /// + /// This value indicates whether the property pane group is hidden. + [JsonProperty(PropertyName = "isGroupNameHidden")] + public bool IsGroupNameHidden { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroupField.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroupField.cs new file mode 100644 index 0000000000..017be2bed3 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroupField.cs @@ -0,0 +1,113 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneGroupField + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneGroupField() + { + // Do nothing + } + + /// + /// This enum contains the different types of fields. + /// + public enum FieldType + { + /// + /// Checkbox field. + /// + CheckBox = 2, + + /// + /// TextField field. + /// + TextField = 3, + + /// + /// Toggle field. + /// + Toggle = 5, + + /// + /// Dropdown field. + /// + Dropdown = 6, + + /// + /// Label field. + /// + Label = 7, + + /// + /// Slider field. + /// + Slider = 8, + + /// + /// ChoiceGroup field. + /// + ChoiceGroup = 10, + + /// + /// Horizontal Rule field. + /// + HorizontalRule = 12, + + /// + /// Link field. + /// + Link = 13 + } + + /// + /// Gets or Sets the type of field enum. + /// + /// This value is the type of the property pane field. + [JsonProperty(PropertyName = "type")] + public FieldType Type { get; set; } + + /// + /// Gets or Sets the properties property of type . + /// + /// This value is the properties of the property pane field. + [JsonProperty(PropertyName = "properties")] + public IPropertyPaneFieldProperties Properties { get; set; } + + /// + /// Gets or Sets a value indicating whether this control should be focused of type . + /// + /// This value indicates whether the property pane field should focus. + [JsonProperty(PropertyName = "shouldFocus")] + public bool ShouldFocus { get; set; } + + /// + /// Gets or Sets the target property of type . + /// + /// This value is the target property of the property pane field. + [JsonProperty(PropertyName = "targetProperty")] + public string TargetProperty { get; set; } + + /// + /// Gets or Sets a value indicating whether group name should be hidden of type . + /// + /// This value indicates whether the property pane field group name is hidden. + [JsonProperty(PropertyName = "isGroupNameHidden")] + public bool IsGroupNameHidden { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLabelProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLabelProperties.cs new file mode 100644 index 0000000000..52061aa706 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLabelProperties.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneLabelProperties : IPropertyPaneFieldProperties + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneLabelProperties() + { + // Do nothing + } + + /// + /// Gets or Sets the display text for the label of type . + /// + /// This value is the text of the property pane label. + [JsonProperty(PropertyName = "text")] + public string Text { get; set; } + + /// + /// Gets or Sets a value indicating whether the associated form field is required or not. of type . + /// + /// This value indicates whether the property pane field is required. + [JsonProperty(PropertyName = "required")] + public bool Required { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs new file mode 100644 index 0000000000..4e26ecb825 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs @@ -0,0 +1,87 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using static Microsoft.Bot.Schema.SharePoint.PropertyPaneGroupField; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneLinkPopupWindowProperties + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneLinkPopupWindowProperties() + { + // Do nothing + } + + /// + /// This enum contains the different types of fields. + /// + public enum PopupWindowPosition + { + /// + /// Center. + /// + Center = 0, + + /// + /// Right Top. + /// + RightTop = 1, + + /// + /// Left Top . + /// + LeftTop = 2, + + /// + /// Right Bottom. + /// + RightBottom = 3, + + /// + /// Left Bottom. + /// + LeftBottom = 4, + } + + /// + /// Gets or Sets the height of the pop up window of type . + /// + /// This value is the height of the property pane popup. + [JsonProperty(PropertyName = "height")] + public int Height { get; set; } + + /// + /// Gets or Sets the position of pop up window enum. + /// + /// This value is the window position of the property pane popup. + [JsonProperty(PropertyName = "positionWindowPosition")] + public PopupWindowPosition PositionWindowPosition { get; set; } + + /// + /// Gets or Sets the title of pop up window of type . + /// + /// This value is the title of the property pane popup. + [JsonProperty(PropertyName = "title")] + public string Title { get; set; } + + /// + /// Gets or Sets the width of the pop up window of type . + /// + /// This value is the width of the property pane popup. + [JsonProperty(PropertyName = "width")] + public int Width { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs new file mode 100644 index 0000000000..d25925efd4 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneLinkProperties : IPropertyPaneFieldProperties + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneLinkProperties() + { + // Do nothing + } + + /// + /// Gets or Sets the aria label of type . + /// + /// This value is the aria label of the property pane link. + [JsonProperty(PropertyName = "ariaLabel")] + public string AriaLabel { get; set; } + + /// + /// Gets or Sets a value indicating whether this control is enabled or not of type . + /// + /// This value indicates whether the property pane link is disabled. + [JsonProperty(PropertyName = "disabled")] + public bool Disabled { get; set; } + + /// + /// Gets or Sets the location to which the link is targeted to of type . + /// + /// This value is the href of the property pane link. + [JsonProperty(PropertyName = "href")] + public string Href { get; set; } + + /// + /// Gets or Sets the props of pop up window. of type . + /// + /// This value is the popup window properties of the property pane link. + [JsonProperty(PropertyName = "popupWindowProps")] + public PropertyPaneLinkPopupWindowProperties PopupWindowProps { get; set; } + + /// + /// Gets or Sets where to display the linked resource of type . + /// + /// This value is the target of the property pane link. + [JsonProperty(PropertyName = "target")] + public string Target { get; set; } + + /// + /// Gets or Sets the display text for the link of type . + /// + /// This value is the text of the property pane link. + [JsonProperty(PropertyName = "text")] + public string Text { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePage.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePage.cs new file mode 100644 index 0000000000..e258efafa1 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePage.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPanePage + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPanePage() + { + // Do nothing + } + + /// + /// Gets or Sets the groups of type . + /// + /// This value is the groups of the property pane page. + [JsonProperty(PropertyName = "groups")] + public IEnumerable Groups { get; set; } + + /// + /// Gets or Sets a value indicating whether the groups on the PropertyPanePage are displayed as accordion or not of type . + /// + /// This value indicates whether the property pane page is displayed as an accordion. + [JsonProperty(PropertyName = "displayGroupsAsAccordion")] + public bool DisplayGroupsAsAccordion { get; set; } + + /// + /// Gets or Sets the header for the property pane of type . + /// + /// This value is the header of the property pane page. + [JsonProperty(PropertyName = "header")] + public PropertyPanePageHeader Header { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePageHeader.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePageHeader.cs new file mode 100644 index 0000000000..f0f8133659 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePageHeader.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPanePageHeader + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPanePageHeader() + { + // Do nothing + } + + /// + /// Gets or Sets the description of type . + /// + /// This value is the description of the property pane page header. + [JsonProperty(PropertyName = "description")] + public string Description { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs new file mode 100644 index 0000000000..92cd75800d --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneSliderProperties : IPropertyPaneFieldProperties + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneSliderProperties() + { + this.Step = 1; + } + + /// + /// Gets or Sets the label of type . + /// + /// This value is the label of the slider. + [JsonProperty(PropertyName = "label")] + public string Label { get; set; } + + /// + /// Gets or Sets the value of type . + /// + /// This value is the value of the slider. + [JsonProperty(PropertyName = "value")] + public string Value { get; set; } + + /// + /// Gets or Sets the aria label of type . + /// + /// This value is the aria label of the slider. + [JsonProperty(PropertyName = "ariaLabel")] + public string AriaLabel { get; set; } + + /// + /// Gets or Sets a value indicating whether this control is enabled or not of type . + /// + /// This value indicates whether the slider is disabled. + [JsonProperty(PropertyName = "disabled")] + public bool Disabled { get; set; } + + /// + /// Gets or Sets the max value of the Slider of type . + /// + /// This value is the max value of the slider. + [JsonProperty(PropertyName = "max")] + public int Max { get; set; } + + /// + /// Gets or Sets the min value of the Slider of type . + /// + /// This value is the min value of the slider. + [JsonProperty(PropertyName = "min")] + public int Min { get; set; } + + /// + /// Gets or Sets a value indicating whether to show the value on the right of the Slider of type . + /// + /// This value indicates whether the value of the slider should be shown. + [JsonProperty(PropertyName = "showValue")] + public bool ShowValue { get; set; } + + /// + /// Gets or Sets the difference between the two adjacent values of the Slider. Defaults to 1. of type . + /// + /// This value is the step amount of the slider. + [JsonProperty(PropertyName = "step")] + public int Step { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs new file mode 100644 index 0000000000..dcd84d1f0e --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs @@ -0,0 +1,139 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneTextFieldProperties : IPropertyPaneFieldProperties + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneTextFieldProperties() + { + // Do nothing + } + + /// + /// Gets or Sets the label of type . + /// + /// This value is the label of the text field. + [JsonProperty(PropertyName = "label")] + public string Label { get; set; } + + /// + /// Gets or Sets the value of type . + /// + /// This value is the value of the text field. + [JsonProperty(PropertyName = "value")] + public string Value { get; set; } + + /// + /// Gets or Sets the aria label of type . + /// + /// This value is the aria label of the text field. + [JsonProperty(PropertyName = "ariaLabel")] + public string AriaLabel { get; set; } + + /// + /// Gets or Sets the amount of time to wait before validating after the users stop typing in ms of type . + /// + /// This value is the deferred validation time of the text field. + [JsonProperty(PropertyName = "deferredValidationTime")] + public int DeferredValidationTime { get; set; } + + /// + /// Gets or Sets the description of type . + /// + /// This value is the description of the text field. + [JsonProperty(PropertyName = "description")] + public string Description { get; set; } + + /// + /// Gets or Sets a value indicating whether this control is enabled or not of type . + /// + /// This value indicates whether the text field is disabled. + [JsonProperty(PropertyName = "disabled")] + public bool Disabled { get; set; } + + /// + /// Gets or Sets the error message of type . + /// + /// This value is the error message of the text field. + [JsonProperty(PropertyName = "errorMessage")] + public string ErrorMessage { get; set; } + + /// + /// Gets or Sets the name used to log PropertyPaneTextField value changes for engagement tracking of type . + /// + /// This value is the log name of the text field. + [JsonProperty(PropertyName = "logName")] + public string LogName { get; set; } + + /// + /// Gets or Sets the maximum number of characters that the PropertyPaneTextField can have of type . + /// + /// This value is the max length of the text field. + [JsonProperty(PropertyName = "maxLength")] + public int MaxLength { get; set; } + + /// + /// Gets or Sets a value indicating whether or not the text field is a multiline text field of type . + /// + /// This value indicates whether the text field is multiline. + [JsonProperty(PropertyName = "multiline")] + public bool Multiline { get; set; } + + /// + /// Gets or Sets the placeholder text to be displayed in the text field of type . + /// + /// This value is the place holder of the text field. + [JsonProperty(PropertyName = "placeholder")] + public string Placeholder { get; set; } + + /// + /// Gets or Sets a value indicating whether or not the multiline text field is resizable of type . + /// + /// This value indicates whether the text field is resiable. + [JsonProperty(PropertyName = "resizable")] + public bool Resizable { get; set; } + + /// + /// Gets or Sets the value that specifies the visible height of a text area(multiline text TextField), in lines.maximum number of characters that the PropertyPaneTextField can have of type . + /// + /// This value is the number of rows of the text field. + [JsonProperty(PropertyName = "rows")] + public int Rows { get; set; } + + /// + /// Gets or Sets a value indicating whether or not the text field is underlined of type . + /// + /// This value indicates whether the text field is underlined. + [JsonProperty(PropertyName = "underlined")] + public bool Underlined { get; set; } + + /// + /// Gets or Sets a value indicating whether to run validation when the PropertyPaneTextField is focused of type . + /// + /// This value indicates whether the text field is validated when gaining focus. + [JsonProperty(PropertyName = "validateOnFocusIn")] + public bool ValidateOnFocusIn { get; set; } + + /// + /// Gets or Sets a value indicating whether to run validation when the PropertyPaneTextField is out of focus or on blur of type . + /// + /// This value indicates whether the text field is validated when losing focus. + [JsonProperty(PropertyName = "validateOnFocusOut")] + public bool ValidateOnFocusOut { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs new file mode 100644 index 0000000000..4ae0f509bf --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs @@ -0,0 +1,90 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class PropertyPaneToggleProperties : IPropertyPaneFieldProperties + { + /// + /// Initializes a new instance of the class. + /// + public PropertyPaneToggleProperties() + { + // Do nothing + } + + /// + /// Gets or Sets the aria label of type . + /// + /// This value is the aria label of the toggle field. + [JsonProperty(PropertyName = "ariaLabel")] + public string AriaLabel { get; set; } + + /// + /// Gets or Sets the label of type . + /// + /// This value is the label of the toggle field. + [JsonProperty(PropertyName = "label")] + public string Label { get; set; } + + /// + /// Gets or Sets a value indicating whether this control is enabled or not of type . + /// + /// This value indicates whether the toggle field is disabled. + [JsonProperty(PropertyName = "disabled")] + public bool Disabled { get; set; } + + /// + /// Gets or Sets a value indicating whether the property pane checkbox is checked or not of type . + /// + /// This value indicates whether the toggle field is checked. + [JsonProperty(PropertyName = "checked")] + public bool Checked { get; set; } + + /// + /// Gets or Sets a key to uniquely identify the field of type . + /// + /// This value is the key of the toggle field. + [JsonProperty(PropertyName = "key")] + public string Key { get; set; } + + /// + /// Gets or Sets text to display when toggle is OFF of type . + /// + /// This value is the label of the toggle field when off. + [JsonProperty(PropertyName = "offText")] + public string OffText { get; set; } + + /// + /// Gets or Sets text to display when toggle is ON of type . + /// + /// This value is the label of the toggle field when on. + [JsonProperty(PropertyName = "onText")] + public string OnText { get; set; } + + /// + /// Gets or Sets text for screen-reader to announce when toggle is OFF of type . + /// + /// This value is the aria label of the toggle field when off. + [JsonProperty(PropertyName = "offAriaLabel")] + public string OffAriaLabel { get; set; } + + /// + /// Gets or Sets text for screen-reader to announce when toggle is ON of type . + /// + /// This value is the aria label of the toggle field when on. + [JsonProperty(PropertyName = "onAriaLabel")] + public string OnAriaLabel { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewData.cs b/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewData.cs new file mode 100644 index 0000000000..e77b074993 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewData.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View Data object. + /// + public class QuickViewData + { + /// + /// Initializes a new instance of the class. + /// + public QuickViewData() + { + // Do nothing + } + + /// + /// Gets or Sets the title of type . + /// + /// This value is the title of the quick view data. + [JsonProperty(PropertyName = "title")] + public string Title { get; set; } + + /// + /// Gets or Sets the description of type . + /// + /// This value is the description of the quick view data. + [JsonProperty(PropertyName = "description")] + public string Description { get; set; } + } +} From 00f96967e88f9ff940e5c10fd9fea4c4f7e858a2 Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Mon, 16 Oct 2023 10:12:03 -0700 Subject: [PATCH 03/17] all components --- .../SharePoint/Actions/ActionParameters.cs | 15 ++++- .../SharePoint/CardView/CardButtonBase.cs | 13 ---- .../CardView/CardButtonComponent.cs | 63 +++++++++++++++++++ .../CardView/CardSearchBoxButton.cs | 30 +++++++++ .../CardView/CardSearchBoxComponent.cs | 45 +++++++++++++ .../CardView/CardSearchFooterComponent.cs | 59 +++++++++++++++++ .../SharePoint/CardView/CardTextComponent.cs | 31 +++++++++ .../CardView/CardTextInputBaseButton.cs | 30 +++++++++ .../CardView/CardTextInputComponent.cs | 57 +++++++++++++++++ .../CardView/CardTextInputIconButton.cs | 23 +++++++ .../CardView/CardTextInputTitleButton.cs | 23 +++++++ .../SharePoint/CardView/ICardButtonBase.cs | 30 +++++++++ 12 files changed, 404 insertions(+), 15 deletions(-) delete mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonBase.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxButton.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxComponent.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextComponent.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputBaseButton.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputComponent.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputIconButton.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputTitleButton.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/ICardButtonBase.cs diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs index ef8dbcfc78..bc9c1d5546 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs @@ -74,20 +74,22 @@ public ActionParameters() /// Use this property if you are working with Submit or Execute action type. /// key-value pairs for Submit or Execute actions. [JsonExtensionData(ReadData = true, WriteData = true)] - public Dictionary SubmitParameters { get; } = new Dictionary(); + public IDictionary SubmitParameters { get; } = new Dictionary(); /// /// Gets or sets the specific media type that should be selected. /// /// Use this property if you are working with VivaAction.SelectMedia action type. /// The specific media type that should be selected. - public MediaTypes? MediaType { get ; set; } + [JsonProperty(PropertyName = "mediaType")] + public MediaTypes? MediaType { get; set; } /// /// Gets or sets a flag to specify if multiple files can be selected. /// /// Use this property if you are working with VivaAction.SelectMedia action type. /// Specifies if multiple files can be selected. + [JsonProperty(PropertyName = "allowMultipleCapture")] public bool? AllowMultipleCapture { get; set; } /// @@ -95,6 +97,15 @@ public ActionParameters() /// /// Use this property if you are working with VivaAction.SelectMedia action type. /// Max file size. + [JsonProperty(PropertyName = "maxSizePerFile")] public int MaxSizePerFile { get; set; } + + /// + /// Gets file formats supported for upload. + /// + /// Use this property if you are working with VivaAction.SelectMedia action type. + /// File formats supported for upload. + [JsonProperty(PropertyName = "supportedFileFormats")] + public IList SupportedFileFormats { get; } = new List(); } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonBase.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonBase.cs deleted file mode 100644 index 2885c73fb0..0000000000 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonBase.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Text; - -namespace Microsoft.Bot.Schema.SharePoint.CardView -{ - public class CardButtonBase - { - } -} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs new file mode 100644 index 0000000000..579b8048be --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Names of the supported Adaptive Card Extension Card View button styles. + /// + [JsonConverter(typeof(StringEnumConverter), /*camelCase*/ true)] + public enum CardButtonStyle + { + /// + /// Default style. + /// + Default, + + /// + /// Positive (primary) style.. + /// + Positive + } + + /// + /// Adaptive Card Extension card button component. + /// + public class CardButtonComponent : BaseCardComponent, ICardButtonBase + { + /// + /// Initializes a new instance of the class. + /// + public CardButtonComponent() + { + this.ComponentName = CardComponentName.CardButton; + } + + /// + /// Gets or sets the button's action. + /// + /// Button's action. + [JsonProperty(PropertyName = "action")] + public Action Action { get; set; } + + /// + /// Gets or sets the text to display. + /// + /// Text value to display in the card button. + [JsonProperty(PropertyName = "title")] + public string Title { get; set; } + + /// + /// Gets or sets the style of the button. + /// + /// Style of the button. + [JsonProperty(PropertyName = "style")] + public CardButtonStyle Style { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxButton.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxButton.cs new file mode 100644 index 0000000000..3f8caaf583 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxButton.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Card Search box button. + /// + public class CardSearchBoxButton : ICardButtonBase + { + /// + /// Gets or sets the button's action. + /// + /// Button's action. + [JsonProperty(PropertyName = "action")] + public Action Action { get; set; } + + /// + /// Gets or sets unique Id of the button. + /// + /// Unique Id of the button. + [JsonProperty(PropertyName = "id")] + public string Id { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxComponent.cs new file mode 100644 index 0000000000..2c58a597e1 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxComponent.cs @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Adaptive Card Extension search box component. + /// + public class CardSearchBoxComponent : BaseCardComponent + { + /// + /// Initializes a new instance of the class. + /// + public CardSearchBoxComponent() + { + this.ComponentName = CardComponentName.SearchBox; + } + + /// + /// Gets or sets the placeholder text to display in the sarch box. + /// + /// Placeholder text to display. + [JsonProperty(PropertyName = "placeholder")] + public string Placeholder { get; set; } + + /// + /// Gets or sets the default text value of the search box. + /// + /// Default value to display in the search box. + [JsonProperty(PropertyName = "defaultValue")] + public string DefaultValue { get; set; } + + /// + /// Gets or sets the search box's button configuration. + /// + /// Searh box's button configuration. + [JsonProperty(PropertyName = "button")] + public CardSearchBoxButton Button { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs new file mode 100644 index 0000000000..6e2f8a3cb1 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Adaptive Card Extension search footer component. + /// + public class CardSearchFooterComponent : BaseCardComponent + { + /// + /// Initializes a new instance of the class. + /// + public CardSearchFooterComponent() + { + this.ComponentName = CardComponentName.SearchFooter; + } + + /// + /// Gets or sets the title to display. + /// + /// Title value to display in the search footer. + [JsonProperty(PropertyName = "title")] + public string Title { get; set; } + + /// + /// Gets or sets url to the image to use, should be a square aspect ratio and big enough to fit in the image area. + /// + /// Image Url to display in the footer. + [JsonProperty(PropertyName = "imageUrl")] + public Uri ImageUrl { get; set; } + + /// + /// Gets or sets the initials to display in the image area when there is no image. + /// + /// Initials to display in the image area when there is no image. + [JsonProperty(PropertyName = "imageInitials")] + public string ImageInitials { get; set; } + + /// + /// Gets or sets the primary text to display. For example, name of the person for people search. + /// + /// Primary text to display. + [JsonProperty(PropertyName = "text")] + public string Text { get; set; } + + /// + /// Gets or sets action to invoke when the footer is selected. + /// + /// Selection action. + [JsonProperty(PropertyName = "onSelection")] + public Action OnSelection { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextComponent.cs new file mode 100644 index 0000000000..5609790123 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextComponent.cs @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Adaptive Card Extension card text component. + /// + public class CardTextComponent : BaseCardComponent + { + /// + /// Initializes a new instance of the class. + /// + public CardTextComponent() + { + this.ComponentName = CardComponentName.Text; + } + + /// + /// Gets or sets the text to display. + /// + /// Text to display. + [JsonProperty(PropertyName = "text")] + public string Text { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputBaseButton.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputBaseButton.cs new file mode 100644 index 0000000000..ed5364087c --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputBaseButton.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Base Card text input button class. + /// + public class CardTextInputBaseButton : ICardButtonBase + { + /// + /// Gets or sets the button's action. + /// + /// Button's action. + [JsonProperty(PropertyName = "action")] + public Action Action { get; set; } + + /// + /// Gets or sets unique Id of the button. + /// + /// Unique Id of the button. + [JsonProperty(PropertyName = "id")] + public string Id { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputComponent.cs new file mode 100644 index 0000000000..6965b1da98 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputComponent.cs @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Adaptive Card Extension text input component. + /// + public class CardTextInputComponent : BaseCardComponent + { + /// + /// Initializes a new instance of the class. + /// + public CardTextInputComponent() + { + this.ComponentName = CardComponentName.TextInput; + } + + /// + /// Gets or sets the placeholder text to display in the text input. + /// + /// Placeholder text to display. + [JsonProperty(PropertyName = "placeholder")] + public string Placeholder { get; set; } + + /// + /// Gets or sets the default text value of the text input. + /// + /// Default value to display in the text input. + [JsonProperty(PropertyName = "defaultValue")] + public string DefaultValue { get; set; } + + /// + /// Gets or sets the text input's button configuration. + /// + /// Text input's button configuration. + [JsonProperty(PropertyName = "button")] + public CardTextInputBaseButton Button { get; set; } + + /// + /// Gets or sets properties for an optional icon, displayed in the left end of the text input. + /// + /// Properties for an optional icon. + public CardImage IconBefore { get; set; } + + /// + /// Gets or sets properties for an optional icon, displayed in the right end of the text input. + /// + /// Properties for an optional icon. + public CardImage IconAfter { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputIconButton.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputIconButton.cs new file mode 100644 index 0000000000..e283c08ca5 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputIconButton.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Card text input button with icon. + /// + public class CardTextInputIconButton : CardTextInputBaseButton + { + /// + /// Gets or sets the icon to display. + /// + /// Icon to display in the button. + [JsonProperty(PropertyName = "icon")] + public CardImage Icon { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputTitleButton.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputTitleButton.cs new file mode 100644 index 0000000000..46c1eed9b4 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputTitleButton.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Card text input button with text. + /// + public class CardTextInputTitleButton : CardTextInputBaseButton + { + /// + /// Gets or sets the text to display. + /// + /// Text value to display in the button. + [JsonProperty(PropertyName = "title")] + public string Title { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/ICardButtonBase.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/ICardButtonBase.cs new file mode 100644 index 0000000000..c3e48f1470 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/ICardButtonBase.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Base properties for the buttons used in Adaptive Card Extensions card view components. + /// + public interface ICardButtonBase + { + /// + /// Gets or sets the button's action. + /// + /// Button's action. + [JsonProperty(PropertyName = "action")] + public Action Action { get; set; } + + /// + /// Gets or sets unique Id of the button. + /// + /// Unique Id of the button. + [JsonProperty(PropertyName = "id")] + public string Id { get; set; } + } +} From 37592c837560275531003a2fec9bf022c3dcada7 Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Mon, 16 Oct 2023 11:13:26 -0700 Subject: [PATCH 04/17] CardViewParameters --- .../CardView/CardButtonComponent.cs | 2 +- .../SharePoint/CardView/CardViewParameters.cs | 58 +++++++++++++++++++ .../SharePoint/CardViewData.cs | 16 ++--- 3 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs index 579b8048be..e30aed914e 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs @@ -21,7 +21,7 @@ public enum CardButtonStyle Default, /// - /// Positive (primary) style.. + /// Positive (primary) style. /// Positive } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs new file mode 100644 index 0000000000..829e38c954 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Adaptive Card Extension Card View Parameters. + /// + public class CardViewParameters + { + /// + /// Gets or sets card view type. + /// + /// Card view type. + [JsonProperty(PropertyName = "cardViewType")] + public string CardViewType { get; set; } + + /// + /// Gets or sets image displayed on the card. + /// + /// Image displayed on the card. + [JsonProperty(PropertyName = "image")] + public CardImage Image { get; set; } + + /// + /// Gets card view title area (card bar) components. + /// + /// Card bar area components. + [JsonProperty(PropertyName = "cardBar")] + public IEnumerable CardBar { get; } = new CardBarComponent[1]; + + /// + /// Gets or sets card view header area components. + /// + /// Card header area components. + [JsonProperty(PropertyName = "header")] + public IEnumerable Header { get; set; } + + /// + /// Gets or sets card view body area components. + /// + /// Card body area components. + [JsonProperty(PropertyName = "body")] + public IEnumerable Body { get; set; } + + /// + /// Gets or sets card footer area components. + /// + /// Card footer area components. + [JsonProperty(PropertyName = "footer")] + public IEnumerable Footer { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs index e23e50839c..cf70670d8f 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs @@ -23,17 +23,17 @@ public CardViewData() } /// - /// Gets or Sets the action buttons of type . + /// Gets or sets the card view configuration. /// - /// This value is the action buttons of the card view. - [JsonProperty(PropertyName = "actionButtons")] - public IEnumerable ActionButtons { get; set; } + /// Card view configuration. + [JsonProperty(PropertyName = "cardViewParameters")] + public CardViewParameters CardViewParameters { get; set; } /// - /// Gets or Sets the primary text of type . + /// Gets or sets action to invoke when the card is selected. /// - /// This value is the primary text of the card view. - [JsonProperty(PropertyName = "primaryText")] - public string PrimaryText { get; set; } + /// Action to invoke. + [JsonProperty(PropertyName = "onCardSelection")] + public Action OnCardSelection { get; set; } } } From ff04905d7a7c743e5e881d09c6db1ec2de5bfb3a Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Mon, 16 Oct 2023 12:07:47 -0700 Subject: [PATCH 05/17] Helper methods for card view parameters --- .../SharePoint/CardView/CardViewParameters.cs | 293 +++++++++++++++++- 1 file changed, 291 insertions(+), 2 deletions(-) diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs index 829e38c954..b5e2fe0df4 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text; using Newtonsoft.Json; @@ -13,6 +14,13 @@ namespace Microsoft.Bot.Schema.SharePoint /// public class CardViewParameters { + /// + /// Initializes a new instance of the class. + /// + protected CardViewParameters() + { + } + /// /// Gets or sets card view type. /// @@ -28,11 +36,13 @@ public class CardViewParameters public CardImage Image { get; set; } /// - /// Gets card view title area (card bar) components. + /// Gets or sets card view title area (card bar) components. /// /// Card bar area components. [JsonProperty(PropertyName = "cardBar")] - public IEnumerable CardBar { get; } = new CardBarComponent[1]; +#pragma warning disable CA2227 + public IList CardBar { get; set; } +#pragma warning restore CA2227 /// /// Gets or sets card view header area components. @@ -54,5 +64,284 @@ public class CardViewParameters /// Card footer area components. [JsonProperty(PropertyName = "footer")] public IEnumerable Footer { get; set; } + + /// + /// Helper method to create a Basic Text Card View. + /// + /// Card bar component. + /// Text component to display as header. + /// Up to two buttons or text input to display as footer. + /// Card view configuration. + /// The Basic Text card view displays the following: + /// - Card bar + /// - One primary text field + /// - Zero or one button in the Medium card size, up to two buttons in Large card size; or text input. + /// + public static CardViewParameters PrimaryTextCardViewParameters( + CardBarComponent cardBar, + CardTextComponent header, + IList footer) + { + // Validate parameters + if (cardBar == null) + { + throw new ArgumentNullException(nameof(cardBar)); + } + + if (header == null) + { + throw new ArgumentNullException(nameof(header)); + } + + ValidateGenericCardViewFooterConfiguration(footer); + + return new CardViewParameters() + { + CardViewType = "text", + CardBar = new List { cardBar }, + Header = new List { header }, + Footer = footer + }; + } + + /// + /// Helper method to create a Primary Text Card View. + /// + /// Card bar component. + /// Text component to display as header. + /// Text component to display as body. + /// Up to two buttons or text input to display as footer. + /// Card view configuration. + /// The Primary Text card view displays the following: + /// - Card bar + /// - One primary text field + /// - One description text field + /// - Zero or one button in the Medium card size, up to two buttons in Large card size; or text input. + /// + public static CardViewParameters PrimaryTextCardViewParameters( + CardBarComponent cardBar, + CardTextComponent header, + CardTextComponent body, + IList footer) + { + // Validate parameters + if (cardBar == null) + { + throw new ArgumentNullException(nameof(cardBar)); + } + + if (header == null) + { + throw new ArgumentNullException(nameof(header)); + } + + if (body == null) + { + throw new ArgumentNullException(nameof(header)); + } + + ValidateGenericCardViewFooterConfiguration(footer); + + return new CardViewParameters() + { + CardViewType = "text", + CardBar = new List { cardBar }, + Header = new List { header }, + Body = new List { body }, + Footer = footer + }; + } + + /// + /// Helper method to create an Image Card View. + /// + /// Card bar component. + /// Text component to display as header. + /// Up to two buttons or text input to display as footer. + /// Image to display. + /// Card view configuration. + /// The Image Card view displays the following: + /// - Card bar + /// - One primary text field + /// - One image + /// - Zero buttons in the Medium card size, up to two buttons in Large card size; or text input. + /// + public static CardViewParameters ImageCardViewParameters( + CardBarComponent cardBar, + CardTextComponent header, + IList footer, + CardImage image) + { + // Validate parameters + if (cardBar == null) + { + throw new ArgumentNullException(nameof(cardBar)); + } + + if (header == null) + { + throw new ArgumentNullException(nameof(header)); + } + + if (image == null) + { + throw new ArgumentNullException(nameof(image)); + } + + ValidateGenericCardViewFooterConfiguration(footer); + + return new CardViewParameters() + { + CardViewType = "text", + CardBar = new List { cardBar }, + Header = new List { header }, + Image = image, + Footer = footer + }; + } + + /// + /// Helper method to create a Text Input Card View. + /// + /// Card bar component. + /// Text component to display as header. + /// Text input component to display as body. + /// Up to two buttons to display as footer. + /// Optional image to display. + /// Card view configuration. + /// /// The Text Input Card view displays the following: + /// - Card bar + /// - One primary text field + /// - Zero or one image + /// - Zero text input in Medium card size if image is presented, one text input in Medium card size if no image is presented, one text input in Large card size + /// - Zero buttons in the Medium card size if image is presented, one button in Medium card size if no image is presented, up to two buttons in Large card size; or text input. + /// + public static CardViewParameters TextInputCardViewParameters( + CardBarComponent cardBar, + CardTextComponent header, + CardTextInputComponent body, + IList footer, + CardImage image) + { + // Validate parameters + if (cardBar == null) + { + throw new ArgumentNullException(nameof(cardBar)); + } + + if (header == null) + { + throw new ArgumentNullException(nameof(header)); + } + + if (body == null) + { + throw new ArgumentNullException(nameof(body)); + } + + if (footer.Count > 2) + { + throw new ArgumentException("Card view footer must contain up to two buttons.", nameof(footer)); + } + + return new CardViewParameters() + { + CardViewType = "textInput", + CardBar = new List { cardBar }, + Header = new List { header }, + Body = new List { body }, + Image = image, + Footer = footer + }; + } + + /// + /// Helper method to create a Search Card View. + /// + /// Card bar component. + /// Text component to display as header. + /// Search box to display as body. + /// Search footer component to display as footer. + /// Card view configuration. + /// /// The Search Card view displays the following: + /// - Card bar + /// - One primary text field + /// - One search box + /// - One search box footer. + /// + public static CardViewParameters SearchCardViewParameters( + CardBarComponent cardBar, + CardTextComponent header, + CardSearchBoxComponent body, + CardSearchFooterComponent footer) + { + // Validate parameters + if (cardBar == null) + { + throw new ArgumentNullException(nameof(cardBar)); + } + + if (header == null) + { + throw new ArgumentNullException(nameof(header)); + } + + if (body == null) + { + throw new ArgumentNullException(nameof(body)); + } + + if (footer == null) + { + throw new ArgumentNullException(nameof(footer)); + } + + return new CardViewParameters() + { + CardViewType = "search", + CardBar = new List { cardBar }, + Header = new List { header }, + Body = new List { body }, + Footer = new List { footer } + }; + } + + private static void ValidateGenericCardViewFooterConfiguration(IList footer) + { + if (footer == null) + { + // footer can be empty + return; + } + + int componentsCount = footer.Count; + + bool hasError; + + if (componentsCount == 0) + { + return; + } + else if (componentsCount > 2) + { + // we don't support more than 2 components in the footer. + hasError = true; + } + else if (componentsCount == 2) + { + // both components should be buttons. + hasError = !(footer[0] is CardButtonComponent) || !(footer[1] is CardButtonComponent); + } + else + { + // single component should be either a button or a text input + hasError = !(footer[0] is CardButtonComponent) || !(footer[0] is CardTextInputComponent); + } + + if (hasError) + { + throw new ArgumentException("Card view footer must contain up to two buttons or text input", nameof(footer)); + } + } } } From eff37becaa4822bd97f877389ca46b8db1f50226 Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Mon, 16 Oct 2023 14:51:30 -0700 Subject: [PATCH 06/17] Handle action and tests --- .../SharePoint/SharePointActivityHandler.cs | 24 +- .../SharePoint/BaseHandleActionResponse.cs | 53 + .../CardViewHandleActionResponse.cs | 30 + .../SharePoint/NoOpHandleActionResponse.cs | 34 + .../QuickViewHandleActionResponse.cs | 30 + .../SharePointActivityHandlerTests.cs | 224 + tests/tests.schema | 11751 ---------------- 7 files changed, 391 insertions(+), 11755 deletions(-) create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/BaseHandleActionResponse.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/CardViewHandleActionResponse.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/NoOpHandleActionResponse.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/QuickViewHandleActionResponse.cs create mode 100644 tests/Microsoft.Bot.Builder.Tests/SharePoint/SharePointActivityHandlerTests.cs delete mode 100644 tests/tests.schema diff --git a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs index 70a9acfac3..a832c3dd1c 100644 --- a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs +++ b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs @@ -58,6 +58,9 @@ protected override async Task OnInvokeActivityAsync(ITurnContext case "cardExtension/setPropertyPaneConfiguration": await OnSharePointTaskSetPropertyPaneConfigurationAsync(turnContext, SafeCast(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false); return CreateInvokeResponse(); + + case "cardExtension/handleAction": + return CreateInvokeResponse(await OnSharePointTaskHandleActionAsync(turnContext, SafeCast(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false)); } } } @@ -73,7 +76,7 @@ protected override async Task OnInvokeActivityAsync(ITurnContext /// Override this in a derived class to provide logic for when a card view is fetched. /// /// A strongly-typed context object for this turn. - /// The task module invoke request value payload. + /// The ACE invoke request value payload. /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. /// A Card View Response for the request. @@ -86,7 +89,7 @@ protected virtual Task OnSharePointTaskGetCardViewAsync(ITu /// Override this in a derived class to provide logic for when a quick view is fetched. /// /// A strongly-typed context object for this turn. - /// The task module invoke request value payload. + /// The ACE invoke request value payload. /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. /// A Quick View Response for the request. @@ -99,7 +102,7 @@ protected virtual Task OnSharePointTaskGetQuickViewAsync(I /// Override this in a derived class to provide logic for getting configuration pane properties. /// /// A strongly-typed context object for this turn. - /// The task module invoke request value payload. + /// The ACE invoke request value payload. /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. /// A Property Pane Configuration Response for the request. @@ -112,7 +115,7 @@ protected virtual Task OnSharePointTaskGet /// Override this in a derived class to provide logic for setting configuration pane properties. /// /// A strongly-typed context object for this turn. - /// The task module invoke request value payload. + /// The ACE invoke request value payload. /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. /// An empty response. @@ -121,6 +124,19 @@ protected virtual Task OnSharePointTaskSetPropertyPaneConfigurationAsync(ITurnCo throw new InvokeResponseException(HttpStatusCode.NotImplemented); } + /// + /// Override this in a derived class to provide logic for handling ACE actions. + /// + /// A strongly-typed context object for this turn. + /// The ACE invoke request value payload. + /// A cancellation token that can be used by other objects + /// or threads to receive notice of cancellation. + /// A view response. + protected virtual Task OnSharePointTaskHandleActionAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + { + throw new InvokeResponseException(HttpStatusCode.NotImplemented); + } + /// /// Safely casts an object to an object of type . /// diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/BaseHandleActionResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/BaseHandleActionResponse.cs new file mode 100644 index 0000000000..1be7543313 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/BaseHandleActionResponse.cs @@ -0,0 +1,53 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Adaptive Card Extension View response type. + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum ViewResponseType + { + /// + /// Render card view. + /// + Card, + + /// + /// Render quick view. + /// + QuickView, + + /// + /// No operation. + /// + NoOp + } + + /// + /// Response returned when handling a client-side action on an Adaptive Card Extension. + /// + public abstract class BaseHandleActionResponse + { + /// + /// Gets the response type. + /// + /// Response type. + [JsonProperty(PropertyName = "responseType")] + public abstract ViewResponseType ResponseType { get; } + + /// + /// Gets or sets render arguments. + /// + /// Render arguments. + [JsonProperty(PropertyName = "renderArguments")] + public object RenderArguments { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardViewHandleActionResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardViewHandleActionResponse.cs new file mode 100644 index 0000000000..634c237273 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardViewHandleActionResponse.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Adaptive Card Extension Client-side action response to render card view. + /// + public class CardViewHandleActionResponse : BaseHandleActionResponse + { + /// + /// Gets the response type. + /// + /// Card. + [JsonProperty(PropertyName = "responseType")] + public override ViewResponseType ResponseType => ViewResponseType.Card; + + /// + /// Gets or sets card view render arguments. + /// + /// Card view render arguments. + [JsonProperty(PropertyName = "renderArguments")] + public new GetCardViewResponse RenderArguments { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/NoOpHandleActionResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/NoOpHandleActionResponse.cs new file mode 100644 index 0000000000..214036414f --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/NoOpHandleActionResponse.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Adaptive Card Extension Client-side action no-op response. + /// + public class NoOpHandleActionResponse : BaseHandleActionResponse + { + /// + /// Gets the response type. + /// + /// Card. + [JsonProperty(PropertyName = "responseType")] + public override ViewResponseType ResponseType => ViewResponseType.NoOp; + + /// + /// Gets or sets card view render arguments. + /// + /// Card view render arguments. + [JsonProperty(PropertyName = "renderArguments")] + public new object RenderArguments + { + get => null; + set { } + } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewHandleActionResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewHandleActionResponse.cs new file mode 100644 index 0000000000..891240a768 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewHandleActionResponse.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Adaptive Card Extension Client-side action response to render quick view. + /// + public class QuickViewHandleActionResponse : BaseHandleActionResponse + { + /// + /// Gets the response type. + /// + /// Card. + [JsonProperty(PropertyName = "responseType")] + public override ViewResponseType ResponseType => ViewResponseType.QuickView; + + /// + /// Gets or sets card view render arguments. + /// + /// Card view render arguments. + [JsonProperty(PropertyName = "renderArguments")] + public new GetQuickViewResponse RenderArguments { get; set; } + } +} diff --git a/tests/Microsoft.Bot.Builder.Tests/SharePoint/SharePointActivityHandlerTests.cs b/tests/Microsoft.Bot.Builder.Tests/SharePoint/SharePointActivityHandlerTests.cs new file mode 100644 index 0000000000..a8e51ac3ca --- /dev/null +++ b/tests/Microsoft.Bot.Builder.Tests/SharePoint/SharePointActivityHandlerTests.cs @@ -0,0 +1,224 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Reflection; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Bot.Builder.Tests; +using Microsoft.Bot.Connector; +using Microsoft.Bot.Connector.Authentication; +using Microsoft.Bot.Schema; +using Microsoft.Bot.Schema.SharePoint; +using Microsoft.Bot.Schema.Teams; +using Microsoft.Rest.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json.Serialization; +using Xunit; + +namespace Microsoft.Bot.Builder.SharePoint.Tests +{ + public class SharePointActivityHandlerTests + { + [Fact] + public async Task TestSharePointGetCardViewAction() + { + // Arrange + var activity = new Activity + { + Type = ActivityTypes.Invoke, + Name = "cardExtension/getCardView", + Value = JObject.FromObject(new object()), + }; + + Activity[] activitiesToSend = null; + void CaptureSend(Activity[] arg) + { + activitiesToSend = arg; + } + + var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); + + // Act + var bot = new TestActivityHandler(); + await ((IBot)bot).OnTurnAsync(turnContext); + + // Assert + Assert.Single(bot.Record); + Assert.Equal("OnSharePointTaskGetCardViewAsync", bot.Record[0]); + Assert.NotNull(activitiesToSend); + Assert.Single(activitiesToSend); + Assert.IsType(activitiesToSend[0].Value); + Assert.Equal(200, ((InvokeResponse)activitiesToSend[0].Value).Status); + } + + [Fact] + public async Task TestSharePointGetQuickViewAction() + { + // Arrange + var activity = new Activity + { + Type = ActivityTypes.Invoke, + Name = "cardExtension/getQuickView", + Value = JObject.FromObject(new object()), + }; + + Activity[] activitiesToSend = null; + void CaptureSend(Activity[] arg) + { + activitiesToSend = arg; + } + + var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); + + // Act + var bot = new TestActivityHandler(); + await ((IBot)bot).OnTurnAsync(turnContext); + + // Assert + Assert.Single(bot.Record); + Assert.Equal("OnSharePointTaskGetQuickViewAsync", bot.Record[0]); + Assert.NotNull(activitiesToSend); + Assert.Single(activitiesToSend); + Assert.IsType(activitiesToSend[0].Value); + Assert.Equal(200, ((InvokeResponse)activitiesToSend[0].Value).Status); + } + + [Fact] + public async Task TestSharePointGetPropertyPaneConfigurationAction() + { + // Arrange + var activity = new Activity + { + Type = ActivityTypes.Invoke, + Name = "cardExtension/getPropertyPaneConfiguration", + Value = JObject.FromObject(new object()), + }; + + Activity[] activitiesToSend = null; + void CaptureSend(Activity[] arg) + { + activitiesToSend = arg; + } + + var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); + + // Act + var bot = new TestActivityHandler(); + await ((IBot)bot).OnTurnAsync(turnContext); + + // Assert + Assert.Single(bot.Record); + Assert.Equal("OnSharePointTaskGetPropertyPaneConfigurationAsync", bot.Record[0]); + Assert.NotNull(activitiesToSend); + Assert.Single(activitiesToSend); + Assert.IsType(activitiesToSend[0].Value); + Assert.Equal(200, ((InvokeResponse)activitiesToSend[0].Value).Status); + } + + [Fact] + public async Task TestSharePointSetPropertyPaneConfigurationAction() + { + // Arrange + var activity = new Activity + { + Type = ActivityTypes.Invoke, + Name = "cardExtension/setPropertyPaneConfiguration", + Value = JObject.FromObject(new object()), + }; + + Activity[] activitiesToSend = null; + void CaptureSend(Activity[] arg) + { + activitiesToSend = arg; + } + + var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); + + // Act + var bot = new TestActivityHandler(); + await ((IBot)bot).OnTurnAsync(turnContext); + + // Assert + Assert.Single(bot.Record); + Assert.Equal("OnSharePointTaskSetPropertyPaneConfigurationAsync", bot.Record[0]); + Assert.NotNull(activitiesToSend); + Assert.Single(activitiesToSend); + Assert.IsType(activitiesToSend[0].Value); + Assert.Equal(200, ((InvokeResponse)activitiesToSend[0].Value).Status); + } + + [Fact] + public async Task TestSharePointHandleActionAction() + { + // Arrange + var activity = new Activity + { + Type = ActivityTypes.Invoke, + Name = "cardExtension/handleAction", + Value = JObject.FromObject(new object()), + }; + + Activity[] activitiesToSend = null; + void CaptureSend(Activity[] arg) + { + activitiesToSend = arg; + } + + var turnContext = new TurnContext(new SimpleAdapter(CaptureSend), activity); + + // Act + var bot = new TestActivityHandler(); + await ((IBot)bot).OnTurnAsync(turnContext); + + // Assert + Assert.Single(bot.Record); + Assert.Equal("OnSharePointTaskHandleActionAsync", bot.Record[0]); + Assert.NotNull(activitiesToSend); + Assert.Single(activitiesToSend); + Assert.IsType(activitiesToSend[0].Value); + Assert.Equal(200, ((InvokeResponse)activitiesToSend[0].Value).Status); + } + + private class TestActivityHandler : SharePointActivityHandler + { + public List Record { get; } = new List(); + + // Invoke + protected override Task OnSharePointTaskGetCardViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + { + Record.Add(MethodBase.GetCurrentMethod().Name); + return Task.FromResult(new GetCardViewResponse(GetCardViewResponse.CardViewTemplateType.PrimaryTextCardView)); + } + + protected override Task OnSharePointTaskGetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + { + Record.Add(MethodBase.GetCurrentMethod().Name); + return Task.FromResult(new GetPropertyPaneConfigurationResponse()); + } + + protected override Task OnSharePointTaskGetQuickViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + { + Record.Add(MethodBase.GetCurrentMethod().Name); + return Task.FromResult(new GetQuickViewResponse()); + } + + protected override Task OnSharePointTaskSetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + { + Record.Add(MethodBase.GetCurrentMethod().Name); + return Task.CompletedTask; + } + + protected override Task OnSharePointTaskHandleActionAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + { + Record.Add(MethodBase.GetCurrentMethod().Name); + return Task.FromResult(new NoOpHandleActionResponse()); + } + } + } +} diff --git a/tests/tests.schema b/tests/tests.schema deleted file mode 100644 index 85383b5cd6..0000000000 --- a/tests/tests.schema +++ /dev/null @@ -1,11751 +0,0 @@ -{ - "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", - "type": "object", - "title": "Component kinds", - "description": "These are all of the kinds that can be created by the loader.", - "oneOf": [ - { - "$ref": "#/definitions/CustomAction.dialog" - }, - { - "$ref": "#/definitions/CustomAction2.dialog" - }, - { - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginSkill" - }, - { - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "$ref": "#/definitions/Microsoft.CancelDialog" - }, - { - "$ref": "#/definitions/Microsoft.ChannelMentionEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.ContinueConversation" - }, - { - "$ref": "#/definitions/Microsoft.ContinueConversationLater" - }, - { - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "$ref": "#/definitions/Microsoft.FacebookAdapter" - }, - { - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "$ref": "#/definitions/Microsoft.GetConversationReference" - }, - { - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "$ref": "#/definitions/Microsoft.OnCommandActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnCommandResultActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "$ref": "#/definitions/Microsoft.OnContinueConversation" - }, - { - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnInstallationUpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "$ref": "#/definitions/Microsoft.OrchestratorRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "$ref": "#/definitions/Microsoft.RegexEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "$ref": "#/definitions/Microsoft.ResourceMultiLanguageGenerator" - }, - { - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "$ref": "#/definitions/Microsoft.SendHandoffActivity" - }, - { - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "$ref": "#/definitions/Microsoft.SlackAdapter" - }, - { - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "$ref": "#/definitions/Microsoft.TelemetryTrackEventAction" - }, - { - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertNoActivity" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertTelemetryContains" - }, - { - "$ref": "#/definitions/Microsoft.Test.CustomEvent" - }, - { - "$ref": "#/definitions/Microsoft.Test.HttpRequestSequenceMock" - }, - { - "$ref": "#/definitions/Microsoft.Test.MemoryAssertions" - }, - { - "$ref": "#/definitions/Microsoft.Test.Script" - }, - { - "$ref": "#/definitions/Microsoft.Test.SetProperties" - }, - { - "$ref": "#/definitions/Microsoft.Test.SettingStringMock" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserTokenBasicMock" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "$ref": "#/definitions/Microsoft.ThrowException" - }, - { - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "$ref": "#/definitions/Microsoft.TwilioAdapter" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.WebexAdapter" - }, - { - "$ref": "#/definitions/Testbot.JavascriptAction" - }, - { - "$ref": "#/definitions/Testbot.Multiply" - } - ], - "definitions": { - "arrayExpression": { - "$role": "expression", - "title": "Array or expression", - "description": "Array or expression to evaluate.", - "oneOf": [ - { - "type": "array", - "title": "Array", - "description": "Array constant." - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "booleanExpression": { - "$role": "expression", - "title": "Boolean or expression", - "description": "Boolean constant or expression to evaluate.", - "oneOf": [ - { - "type": "boolean", - "title": "Boolean", - "description": "Boolean constant.", - "default": false, - "examples": [ - false - ] - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=user.isVip" - ] - } - ] - }, - "component": { - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "condition": { - "$role": "expression", - "title": "Boolean condition", - "description": "Boolean constant or expression to evaluate.", - "oneOf": [ - { - "$ref": "#/definitions/expression" - }, - { - "type": "boolean", - "title": "Boolean", - "description": "Boolean value.", - "default": true, - "examples": [ - false - ] - } - ] - }, - "CustomAction.dialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Custom Action", - "description": "My Custom Action.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "age": { - "$ref": "#/definitions/numberExpression", - "title": "Age", - "description": "The age.", - "examples": [ - 20, - "=$foo" - ] - }, - "name": { - "$ref": "#/definitions/stringExpression", - "title": "Name", - "description": "The name." - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "$name" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "CustomAction.dialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "CustomAction2.dialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Custom Action", - "description": "My Custom Action.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "age": { - "$ref": "#/definitions/numberExpression", - "title": "Age", - "description": "The age.", - "examples": [ - 20, - "=$foo" - ] - }, - "name": { - "$ref": "#/definitions/stringExpression", - "title": "Name", - "description": "The name." - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "$name" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "CustomAction2.dialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "equalsExpression": { - "$role": "expression", - "type": "string", - "title": "Expression", - "description": "Expression starting with =.", - "pattern": "^=.*\\S.*", - "examples": [ - "=user.name" - ] - }, - "expression": { - "$role": "expression", - "type": "string", - "title": "Expression", - "description": "Expression to evaluate.", - "pattern": "^.*\\S.*", - "examples": [ - "user.age > 13" - ] - }, - "integerExpression": { - "$role": "expression", - "title": "Integer or expression", - "description": "Integer constant or expression to evaluate.", - "oneOf": [ - { - "type": "integer", - "title": "Integer", - "description": "Integer constant.", - "default": 0, - "examples": [ - 15 - ] - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=user.age" - ] - } - ] - }, - "Microsoft.ActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft activity template", - "type": "object", - "required": [ - "template", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to use to create the activity", - "type": "string" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ActivityTemplate" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "pattern": "^(?!(=)).*", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "$ref": "#/definitions/booleanExpression", - "title": "Auto end dialog", - "description": "If set to true the dialog will automatically end when there are no further actions. If set to false, remember to manually end the dialog using EndDialog action.", - "default": true - }, - "defaultResultProperty": { - "type": "string", - "title": "Default result property", - "description": "Value that will be passed back to the parent dialog.", - "default": "dialog.result" - }, - "dialogs": { - "type": "array", - "title": "Dialogs", - "description": "Dialogs added to DialogSet.", - "items": { - "$kind": "Microsoft.IDialog", - "title": "Dialog", - "description": "Dialog to add to DialogSet.", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "recognizer": { - "$kind": "Microsoft.IRecognizer", - "title": "Recognizer", - "description": "Input recognizer that interprets user input into intent and entities.", - "$ref": "#/definitions/Microsoft.IRecognizer" - }, - "generator": { - "$kind": "Microsoft.ILanguageGenerator", - "title": "Language generator", - "description": "Language generator that generates bot responses.", - "$ref": "#/definitions/Microsoft.ILanguageGenerator" - }, - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "title": "Selector", - "description": "Policy to determine which trigger is executed. Defaults to a 'best match' selector (optional).", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "triggers": { - "type": "array", - "description": "List of triggers defined for this dialog.", - "title": "Triggers", - "items": { - "$kind": "Microsoft.ITrigger", - "title": "Event triggers", - "description": "Event triggers for handling events.", - "$ref": "#/definitions/Microsoft.ITrigger" - } - }, - "schema": { - "title": "Schema", - "description": "Schema to fill in.", - "anyOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "type": "string", - "title": "Reference to JSON schema", - "description": "Reference to JSON schema .dialog file." - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AdaptiveDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AgeEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Age entity recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AgeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Ask": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.SendActivity)" - ], - "title": "Send activity to ask a question", - "description": "This is an action which sends an activity to the user when a response is expected", - "type": "object", - "$policies": { - "interactive": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "expectedProperties": { - "$ref": "#/definitions/arrayExpression", - "title": "Expected properties", - "description": "Properties expected from the user.", - "examples": [ - [ - "age", - "name" - ] - ], - "items": { - "type": "string", - "title": "Name", - "description": "Name of the property" - } - }, - "defaultOperation": { - "$ref": "#/definitions/stringExpression", - "title": "Default operation", - "description": "Sets the default operation that will be used when no operation is recognized in the response to this Ask.", - "examples": [ - "Add()", - "Remove()" - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Ask" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AttachmentInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Attachment input dialog", - "description": "Collect information - Ask for a file or image.", - "$policies": { - "interactive": true - }, - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "defaultValue": { - "$role": "expression", - "title": "Default value", - "description": "'Property' will be set to the object or the result of this expression when max turn count is exceeded.", - "oneOf": [ - { - "$ref": "#/definitions/botframework.json/definitions/Attachment", - "title": "Object", - "description": "Attachment object." - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "value": { - "$role": "expression", - "title": "Value", - "description": "'Property' will be set to the object or the result of this expression unless it evaluates to null.", - "oneOf": [ - { - "$ref": "#/definitions/botframework.json/definitions/Attachment", - "title": "Object", - "description": "Attachment object." - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "outputFormat": { - "$role": "expression", - "title": "Output format", - "description": "Attachment output format.", - "oneOf": [ - { - "type": "string", - "title": "Standard format", - "description": "Standard output formats.", - "enum": [ - "all", - "first" - ], - "default": "first" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "default": false, - "examples": [ - false, - "=user.isVip" - ] - }, - "prompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Initial prompt", - "description": "Message to send to collect information.", - "examples": [ - "What is your birth date?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "unrecognizedPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Unrecognized prompt", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "invalidPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression.", - "examples": [ - "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "defaultValueResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "maxTurnCount": { - "$ref": "#/definitions/integerExpression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "minimum": 0, - "maximum": 2147483647, - "examples": [ - 3, - "=settings.xyz" - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ] - } - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "dialog.${user.name}", - "=f(x)" - ] - }, - "alwaysPrompt": { - "$ref": "#/definitions/booleanExpression", - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false, - "=$val" - ] - }, - "allowInterruptions": { - "$ref": "#/definitions/booleanExpression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": true, - "examples": [ - true, - "=user.xyz" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AttachmentInput" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.BeginDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a dialog", - "description": "Begin another dialog.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "dialog": { - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "pattern": "^(?!(=)).*", - "title": "Dialog", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ], - "title": "Dialog name", - "description": "Name of the dialog to call." - }, - "options": { - "$ref": "#/definitions/objectExpression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "examples": [ - { - "arg1": "=expression" - } - ], - "additionalProperties": { - "type": "string", - "title": "Options", - "description": "Options for dialog." - } - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "default": true - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.BeginDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.BeginSkill": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a skill", - "description": "Begin a remote skill.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the skill dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=f(x)" - ] - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity processed", - "description": "When set to false, the skill will be started using the activity in the current turn context instead of the activity in the Activity property.", - "default": true, - "examples": [ - true, - "=f(x)" - ] - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - }, - "botId": { - "$ref": "#/definitions/stringExpression", - "title": "Skill host bot ID", - "description": "The Microsoft App ID that will be calling the skill.", - "default": "=settings.MicrosoftAppId" - }, - "skillHostEndpoint": { - "$ref": "#/definitions/stringExpression", - "title": "Skill host", - "description": "The callback Url for the skill host.", - "default": "=settings.skillHostEndpoint", - "examples": [ - "https://mybot.contoso.com/api/skills/" - ] - }, - "connectionName": { - "$ref": "#/definitions/stringExpression", - "title": "OAuth connection name (SSO)", - "description": "The OAuth Connection Name, that would be used to perform Single SignOn with a skill.", - "default": "=settings.connectionName" - }, - "skillAppId": { - "$ref": "#/definitions/stringExpression", - "title": "Skill App Id", - "description": "The Microsoft App ID for the skill." - }, - "skillEndpoint": { - "$ref": "#/definitions/stringExpression", - "title": "Skill endpoint ", - "description": "The /api/messages endpoint for the skill.", - "examples": [ - "https://myskill.contoso.com/api/messages/" - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "The activity to send to the skill.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "allowInterruptions": { - "$ref": "#/definitions/booleanExpression", - "title": "Allow interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the skill.", - "default": true, - "examples": [ - true, - "=user.xyz" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.BeginSkill" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.BreakLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Break loop", - "description": "Stop executing this loop", - "type": "object", - "required": [ - "$kind" - ], - "$policies": { - "lastAction": true - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.BreakLoop" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CancelAllDialogs": { - "$role": "implements(Microsoft.IDialog)", - "title": "Cancel all dialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "type": "object", - "$policies": { - "lastAction": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity processed", - "description": "When set to false, the caller dialog is told it should process the current activity.", - "default": true - }, - "eventName": { - "$ref": "#/definitions/stringExpression", - "title": "Event name", - "description": "Name of the event to emit." - }, - "eventValue": { - "$ref": "#/definitions/valueExpression", - "title": "Event value", - "description": "Value to emit with the event (optional).", - "additionalProperties": true - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CancelAllDialogs" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CancelDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Cancel all dialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "type": "object", - "$policies": { - "lastAction": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity processed", - "description": "When set to false, the caller dialog is told it should process the current activity.", - "default": true - }, - "eventName": { - "$ref": "#/definitions/stringExpression", - "title": "Event name", - "description": "Name of the event to emit." - }, - "eventValue": { - "$ref": "#/definitions/valueExpression", - "title": "Event value", - "description": "Value to emit with the event (optional).", - "additionalProperties": true - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CancelDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ChannelMentionEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)" - ], - "title": "Channel mention entity recognizer", - "description": "Promotes mention entities passed by a channel via the activity.entities into recognizer result.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ChannelMentionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ChoiceInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "$policies": { - "interactive": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "defaultValue": { - "$ref": "#/definitions/stringExpression", - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "hello world", - "Hello ${user.name}", - "=concat(user.firstname, user.lastName)" - ] - }, - "value": { - "$ref": "#/definitions/stringExpression", - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "hello world", - "Hello ${user.name}", - "=concat(user.firstname, user.lastName)" - ] - }, - "outputFormat": { - "$role": "expression", - "title": "Output format", - "description": "Sets the desired choice output format (either value or index into choices).", - "oneOf": [ - { - "type": "string", - "title": "Standard", - "description": "Standard output format.", - "enum": [ - "value", - "index" - ], - "default": "value" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "choices": { - "$role": "expression", - "title": "Array of choices", - "description": "Choices to choose from.", - "oneOf": [ - { - "type": "array", - "title": "Simple choices", - "description": "Simple choices to choose from.", - "items": [ - { - "type": "string", - "title": "Simple choice", - "description": "One choice for choice input." - } - ] - }, - { - "type": "array", - "title": "Structured choices", - "description": "Choices that allow full control.", - "items": [ - { - "type": "object", - "title": "Structured choice", - "description": "Structured choice to choose from.", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "$ref": "#/definitions/botframework.json/definitions/CardAction", - "title": "Action", - "description": "Card action for the choice." - }, - "synonyms": { - "type": "array", - "title": "Synonyms", - "description": "List of synonyms to recognize in addition to the value (optional).", - "items": { - "type": "string", - "title": "Synonym", - "description": "Synonym for value." - } - } - } - } - ] - }, - { - "$ref": "#/definitions/stringExpression" - } - ] - }, - "defaultLocale": { - "$ref": "#/definitions/stringExpression", - "title": "Default locale", - "description": "The default locale to use to parse confirmation choices if there is not one passed by the caller.", - "default": "en-us", - "examples": [ - "en-us" - ] - }, - "style": { - "$role": "expression", - "title": "List style", - "description": "Sets the ListStyle to control how choices are rendered.", - "oneOf": [ - { - "type": "string", - "title": "List style", - "description": "Standard list style.", - "enum": [ - "none", - "auto", - "inline", - "list", - "suggestedAction", - "heroCard" - ], - "default": "auto" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "choiceOptions": { - "title": "Choice options", - "description": "Sets the choice options used for controlling how choices are combined.", - "oneOf": [ - { - "type": "object", - "title": "Object", - "description": "Choice options 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 there 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' list style will be prefixed with the index of the choice.", - "default": true - } - } - }, - { - "$ref": "#/definitions/stringExpression" - } - ] - }, - "recognizerOptions": { - "title": "Recognizer options", - "description": "Sets how to recognize choices in the response", - "oneOf": [ - { - "type": "object", - "title": "Object", - "description": "Options for recognizer.", - "properties": { - "noValue": { - "type": "boolean", - "title": "No value", - "description": "If true, the choices value field will NOT be search over", - "default": false - }, - "noAction": { - "type": "boolean", - "title": "No action", - "description": "If true, the choices action.title field will NOT be searched over", - "default": false - }, - "recognizeNumbers": { - "type": "boolean", - "title": "Recognize numbers", - "description": "If true, the number recognizer will be used to recognize an index response (1,2,3...) to the prompt.", - "default": true - }, - "recognizeOrdinals": { - "type": "boolean", - "title": "Recognize ordinals", - "description": "If true, the ordinal recognizer will be used to recognize ordinal response (first/second/...) to the prompt.", - "default": true - } - } - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "default": false, - "examples": [ - false, - "=user.isVip" - ] - }, - "prompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Initial prompt", - "description": "Message to send to collect information.", - "examples": [ - "What is your birth date?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "unrecognizedPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Unrecognized prompt", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "invalidPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression.", - "examples": [ - "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "defaultValueResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "maxTurnCount": { - "$ref": "#/definitions/integerExpression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "minimum": 0, - "maximum": 2147483647, - "examples": [ - 3, - "=settings.xyz" - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ] - } - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "dialog.${user.name}", - "=f(x)" - ] - }, - "alwaysPrompt": { - "$ref": "#/definitions/booleanExpression", - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false, - "=$val" - ] - }, - "allowInterruptions": { - "$ref": "#/definitions/booleanExpression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": true, - "examples": [ - true, - "=user.xyz" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ChoiceInput" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ConditionalSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Conditional trigger selector", - "description": "Use a rule selector based on a condition", - "type": "object", - "required": [ - "condition", - "ifTrue", - "ifFalse", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Expression to evaluate" - }, - "ifTrue": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "ifFalse": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ConditionalSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ConfirmationEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Confirmation entity recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ConfirmationEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ConfirmInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Confirm input dialog", - "description": "Collect information - Ask for confirmation (yes or no).", - "type": "object", - "$policies": { - "interactive": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "outputFormat": { - "$ref": "#/definitions/valueExpression", - "title": "Output format", - "description": "Optional expression to use to format the output.", - "examples": [ - "=concat('confirmation:', this.value)" - ] - }, - "defaultLocale": { - "$ref": "#/definitions/stringExpression", - "title": "Default locale", - "description": "The Default locale or an expression which provides the default locale to use as default if not found in the activity.", - "default": "en-us", - "examples": [ - "en-us" - ] - }, - "style": { - "$role": "expression", - "title": "List style", - "description": "Sets the ListStyle to control how choices are rendered.", - "oneOf": [ - { - "type": "string", - "title": "Standard style", - "description": "Standard style for rendering choices.", - "enum": [ - "none", - "auto", - "inline", - "list", - "suggestedAction", - "heroCard" - ], - "default": "auto" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "choiceOptions": { - "title": "Choice options", - "description": "Choice Options or expression which provides Choice Options to control display choices to the user.", - "oneOf": [ - { - "type": "object", - "title": "Choice options", - "description": "Choice options.", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Text to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Text to be inserted between the choices when their are only 2 choices", - "default": " or " - }, - "inlineOrMore": { - "type": "string", - "title": "Inline or more", - "description": "Text to be 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 - } - } - }, - { - "$ref": "#/definitions/stringExpression" - } - ] - }, - "defaultValue": { - "$ref": "#/definitions/booleanExpression", - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "value": { - "$ref": "#/definitions/booleanExpression", - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - true, - "=user.isVip" - ] - }, - "confirmChoices": { - "$role": "expression", - "title": "Array of choice objects", - "description": "Array of simple or structured choices.", - "oneOf": [ - { - "type": "array", - "title": "Simple choices", - "description": "Simple choices to confirm from.", - "items": [ - { - "type": "string", - "title": "Simple choice", - "description": "Simple choice to confirm." - } - ] - }, - { - "type": "array", - "title": "Structured choices", - "description": "Structured choices for confirmations.", - "items": [ - { - "type": "object", - "title": "Choice", - "description": "Choice to confirm.", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "$ref": "#/definitions/botframework.json/definitions/CardAction", - "title": "Action", - "description": "Card action for the choice." - }, - "synonyms": { - "type": "array", - "title": "Synonyms", - "description": "List of synonyms to recognize in addition to the value (optional).", - "items": { - "type": "string", - "title": "Synonym", - "description": "Synonym for choice." - } - } - } - } - ] - }, - { - "$ref": "#/definitions/stringExpression" - } - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "default": false, - "examples": [ - false, - "=user.isVip" - ] - }, - "prompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Initial prompt", - "description": "Message to send to collect information.", - "examples": [ - "What is your birth date?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "unrecognizedPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Unrecognized prompt", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "invalidPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression.", - "examples": [ - "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "defaultValueResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "maxTurnCount": { - "$ref": "#/definitions/integerExpression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "minimum": 0, - "maximum": 2147483647, - "examples": [ - 3, - "=settings.xyz" - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ] - } - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "dialog.${user.name}", - "=f(x)" - ] - }, - "alwaysPrompt": { - "$ref": "#/definitions/booleanExpression", - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false, - "=$val" - ] - }, - "allowInterruptions": { - "$ref": "#/definitions/booleanExpression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": true, - "examples": [ - true, - "=user.xyz" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ConfirmInput" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ContinueConversation": { - "$role": "implements(Microsoft.IDialog)", - "title": "Continue conversation (Queue)", - "description": "Continue a specific conversation (via StorageQueue implementation).", - "type": "object", - "required": [ - "conversationReference", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "conversationReference": { - "$ref": "#/definitions/objectExpression", - "title": "Conversation Reference", - "description": "A conversation reference. (NOTE: Minimum required values or channelId, conversation).", - "examples": [ - { - "channelId": "skype", - "serviceUrl": "http://smba.skype.com", - "conversation": { - "id": "11111" - }, - "bot": { - "id": "22222" - }, - "user": { - "id": "33333" - }, - "locale": "en-us" - } - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Value to send in the activity.value." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ContinueConversation" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ContinueConversationLater": { - "$role": "implements(Microsoft.IDialog)", - "title": "Continue conversation later (Queue)", - "description": "Continue conversation at later time (via StorageQueue implementation).", - "type": "object", - "required": [ - "date", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "date": { - "$ref": "#/definitions/stringExpression", - "title": "Date", - "description": "Date in the future as a ISO string when the conversation should continue.", - "examples": [ - "=addHours(utcNow(), 1)" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Value to send in the activity.value." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ContinueConversationLater" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ContinueLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Continue loop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "type": "object", - "required": [ - "$kind" - ], - "$policies": { - "lastAction": true - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ContinueLoop" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Cross-trained recognizer set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CrossTrainedRecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Currency entity recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CurrencyEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Date and time entity recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DateTimeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "defaultLocale": { - "$ref": "#/definitions/stringExpression", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "$policies": { - "interactive": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "defaultValue": { - "$ref": "#/definitions/stringExpression", - "format": "date-time", - "title": "Default date", - "description": "'Property' will be set to the value or the result of the expression when max turn count is exceeded.", - "examples": [ - "=user.birthday" - ] - }, - "value": { - "$ref": "#/definitions/stringExpression", - "format": "date-time", - "title": "Value", - "description": "'Property' will be set to the value or the result of the expression unless it evaluates to null.", - "examples": [ - "=user.birthday" - ] - }, - "outputFormat": { - "$ref": "#/definitions/expression", - "title": "Output format", - "description": "Expression to use for formatting the output.", - "examples": [ - "=this.value[0].Value" - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "default": false, - "examples": [ - false, - "=user.isVip" - ] - }, - "prompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Initial prompt", - "description": "Message to send to collect information.", - "examples": [ - "What is your birth date?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "unrecognizedPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Unrecognized prompt", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "invalidPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression.", - "examples": [ - "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "defaultValueResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "maxTurnCount": { - "$ref": "#/definitions/integerExpression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "minimum": 0, - "maximum": 2147483647, - "examples": [ - 3, - "=settings.xyz" - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ] - } - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "dialog.${user.name}", - "=f(x)" - ] - }, - "alwaysPrompt": { - "$ref": "#/definitions/booleanExpression", - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false, - "=$val" - ] - }, - "allowInterruptions": { - "$ref": "#/definitions/booleanExpression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": true, - "examples": [ - true, - "=user.xyz" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DateTimeInput" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DebugBreak": { - "$role": "implements(Microsoft.IDialog)", - "title": "Debugger break", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DebugBreak" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "required": [ - "activityId", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=turn.lastresult.id" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Properties", - "description": "Delete multiple properties and any value it holds.", - "type": "object", - "required": [ - "properties", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete property", - "description": "Delete a property and any value it holds.", - "type": "object", - "required": [ - "property", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Dimension entity recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DimensionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions", - "description": "Edit the current list of actions.", - "type": "object", - "required": [ - "changeType", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "oneOf": [ - { - "type": "string", - "title": "Standard change", - "description": "Standard change types.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EditActions" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "required": [ - "itemsProperty", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to the array in memory.", - "oneOf": [ - { - "type": "string", - "title": "Change type", - "description": "Standard change type.", - "enum": [ - "push", - "pop", - "take", - "remove", - "clear" - ] - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "itemsProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Items property", - "description": "Property that holds the array to update." - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Result property", - "description": "Property to store the result of this action." - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "milk", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EditArray" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EmailEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Email entity recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EmailEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "required": [ - "eventName", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "eventName": { - "$role": "expression", - "title": "Event name", - "description": "Name of the event to emit.", - "oneOf": [ - { - "type": "string", - "title": "Built-in event", - "description": "Standard event type.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - { - "type": "string", - "title": "Custom event", - "description": "Custom event type", - "pattern": "^(?!(beginDialog$|resumeDialog$|repromptDialog$|cancelDialog$|endDialog$|activityReceived$|recognizedIntent$|unknownIntent$|actionsStarted$|actionsSaved$|actionsEnded$|actionsResumed))(\\S){1}.*" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "eventValue": { - "$ref": "#/definitions/valueExpression", - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$ref": "#/definitions/booleanExpression", - "title": "Bubble event", - "description": "If true this event is passed on to the parent dialogs." - }, - "handledProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Handled Property", - "description": "Property to store whether the event was handled or not.", - "default": "turn.eventHandled", - "examples": [ - "turn.eventHandled" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EmitEvent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EndDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "End dialog", - "description": "End this dialog.", - "type": "object", - "$policies": { - "lastAction": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndTurn" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.FacebookAdapter": { - "$role": "implements(Microsoft.IAdapter)", - "title": "Facebook connection", - "description": "Connects a bot to Facebook.", - "type": "object", - "required": [ - "FacebookVerifyToken", - "FacebookAppSecret", - "FacebookAccessToken", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "FacebookVerifyToken": { - "type": "string", - "title": "Verification token", - "description": "The verify token obtained from Facebook portal while setting up the application." - }, - "FacebookAppSecret": { - "type": "string", - "title": "App secret", - "description": "The app secret obtained from Facebook portal while setting up the application." - }, - "FacebookAccessToken": { - "type": "string", - "title": "Access token", - "description": "The access token obtained from Facebook portal while setting up the application." - }, - "route": { - "type": "string", - "title": "route", - "description": "Optional route where the adapter is exposed.", - "default": "facebook" - }, - "type": { - "type": "string", - "title": "type", - "description": "Adapter full type name.", - "default": "Microsoft.Bot.Builder.Adapters.Facebook.FacebookAdapter" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.FacebookAdapter" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First trigger selector", - "description": "Selector for first true rule", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.FirstSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "required": [ - "itemsProperty", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "itemsProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "index": { - "$ref": "#/definitions/stringExpression", - "title": "Index property", - "description": "Property that holds the index of the item (must be unique within the dialog scope).", - "default": "dialog.foreach.index", - "examples": [ - "dialog.myForEach.myIndex" - ] - }, - "value": { - "$ref": "#/definitions/stringExpression", - "title": "Value property", - "description": "Property that holds the value of the item (must be unique within the dialog scope).", - "default": "dialog.foreach.value", - "examples": [ - "dialog.myForEach.myValue" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to execute for each item. Use '$foreach.value' to access the value of each item. Use '$foreach.index' to access the index of each item.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Foreach" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ForeachPage": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each page", - "description": "Execute actions on each page (collection of items) in an array.", - "type": "object", - "required": [ - "itemsProperty", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "itemsProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to execute for each page. Use '$foreach.page' to access each page.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "pageIndex": { - "$ref": "#/definitions/stringExpression", - "title": "Index property", - "description": "Property that holds the index of the page.", - "default": "dialog.foreach.pageindex" - }, - "page": { - "$ref": "#/definitions/stringExpression", - "title": "Page property", - "description": "Property that holds the value of the page.", - "default": "dialog.foreach.page" - }, - "pageSize": { - "$ref": "#/definitions/integerExpression", - "title": "Page size", - "description": "Number of items in each page.", - "default": 10 - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ForeachPage" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get activity members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "Activity Id", - "description": "Activity ID or expression to an activityId to use to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "turn.lastresult.id" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GetActivityMembers" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GetConversationMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get conversation members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GetConversationMembers" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GetConversationReference": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get ConversationReference", - "description": "Gets the ConversationReference from current context and stores it in property so it can be used to with ContinueConversation action.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GetConversationReference" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to action", - "description": "Go to an an action by id.", - "type": "object", - "required": [ - "actionId", - "$kind" - ], - "$policies": { - "lastAction": true - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "actionId": { - "$ref": "#/definitions/stringExpression", - "title": "Action Id", - "description": "Action Id to execute next" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GotoAction" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GuidEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Guid entity recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GuidEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Hashtag entity recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.HashtagEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "required": [ - "url", - "method", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$ref": "#/definitions/stringExpression", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$ref": "#/definitions/valueExpression", - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Result property", - "description": "A property to store the result of this action. The result can include any of the 4 properties from the HTTP response: statusCode, reasonPhrase, content, and headers. If the content is JSON it will be a deserialized object. The values can be accessed via .content for example.", - "default": "turn.results", - "examples": [ - "dialog.contosodata" - ] - }, - "contentType": { - "$ref": "#/definitions/stringExpression", - "title": "Content type", - "description": "Content media type for the body.", - "examples": [ - "application/json", - "text/plain" - ] - }, - "headers": { - "type": "object", - "title": "Headers", - "description": "One or more headers to include in the request (supports data binding).", - "additionalProperties": { - "$ref": "#/definitions/stringExpression" - } - }, - "responseType": { - "$ref": "#/definitions/stringExpression", - "title": "Response type", - "description": "Defines the type of HTTP response. Automatically calls the 'Send a response' action if set to 'Activity' or 'Activities'.", - "oneOf": [ - { - "type": "string", - "title": "Standard response", - "description": "Standard response type.", - "enum": [ - "none", - "json", - "activity", - "activities", - "binary" - ], - "default": "json" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.HttpRequest" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.IActivityTemplate": { - "title": "Microsoft ActivityTemplates", - "description": "Components which are ActivityTemplate, which is string template, an activity, or a implementation of ActivityTemplate", - "$role": "interface", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "$ref": "#/definitions/botframework.json/definitions/Activity", - "required": [ - "type" - ] - }, - { - "type": "string" - } - ] - }, - "Microsoft.IAdapter": { - "$role": "interface", - "title": "Bot adapter", - "description": "Component that enables connecting bots to chat clients and applications.", - "type": "object", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.FacebookAdapter" - }, - { - "$ref": "#/definitions/Microsoft.SlackAdapter" - }, - { - "$ref": "#/definitions/Microsoft.TwilioAdapter" - }, - { - "$ref": "#/definitions/Microsoft.WebexAdapter" - }, - { - "type": "string", - "title": "Reference to Microsoft.IAdapter", - "description": "Reference to Microsoft.IAdapter .dialog file." - } - ], - "properties": { - "route": { - "type": "string", - "title": "Adapter http route", - "description": "Route where to expose the adapter." - }, - "type": { - "type": "string", - "title": "Adapter type name", - "description": "Adapter type name" - } - } - }, - "Microsoft.IDialog": { - "title": "Microsoft dialogs", - "description": "Components which derive from Dialog", - "$role": "interface", - "oneOf": [ - { - "$ref": "#/definitions/CustomAction.dialog" - }, - { - "$ref": "#/definitions/CustomAction2.dialog" - }, - { - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginSkill" - }, - { - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "$ref": "#/definitions/Microsoft.CancelDialog" - }, - { - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.ContinueConversation" - }, - { - "$ref": "#/definitions/Microsoft.ContinueConversationLater" - }, - { - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "$ref": "#/definitions/Microsoft.GetConversationReference" - }, - { - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "$ref": "#/definitions/Microsoft.SendHandoffActivity" - }, - { - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "$ref": "#/definitions/Microsoft.TelemetryTrackEventAction" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "$ref": "#/definitions/Microsoft.ThrowException" - }, - { - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "$ref": "#/definitions/Testbot.JavascriptAction" - }, - { - "$ref": "#/definitions/Testbot.Multiply" - }, - { - "type": "string", - "pattern": "^(?!(=)).*" - } - ] - }, - "Microsoft.IEntityRecognizer": { - "$role": "interface", - "title": "Entity recognizers", - "description": "Components which derive from EntityRecognizer.", - "type": "object", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.RegexEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - }, - { - "type": "string", - "title": "Reference to Microsoft.IEntityRecognizer", - "description": "Reference to Microsoft.IEntityRecognizer .dialog file." - } - ] - }, - "Microsoft.IfCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "If condition", - "description": "Two-way branch the conversation flow based on a condition.", - "type": "object", - "required": [ - "condition", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Expression to evaluate.", - "examples": [ - "user.age > 3" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to execute if condition is true.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "elseActions": { - "type": "array", - "title": "Else", - "description": "Actions to execute if condition is false.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.IfCondition" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ILanguageGenerator": { - "title": "Microsoft LanguageGenerator", - "description": "Components which dervie from the LanguageGenerator class", - "$role": "interface", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.ResourceMultiLanguageGenerator" - }, - { - "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" - }, - { - "type": "string" - } - ] - }, - "Microsoft.InputDialog": { - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "default": false, - "examples": [ - false, - "=user.isVip" - ] - }, - "prompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Initial prompt", - "description": "Message to send to collect information.", - "examples": [ - "What is your birth date?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "unrecognizedPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Unrecognized prompt", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "invalidPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression.", - "examples": [ - "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "defaultValueResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "maxTurnCount": { - "$ref": "#/definitions/integerExpression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "minimum": 0, - "maximum": 2147483647, - "examples": [ - 3, - "=settings.xyz" - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ] - } - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "dialog.${user.name}", - "=f(x)" - ] - }, - "alwaysPrompt": { - "$ref": "#/definitions/booleanExpression", - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false, - "=$val" - ] - }, - "allowInterruptions": { - "$ref": "#/definitions/booleanExpression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": true, - "examples": [ - true, - "=user.xyz" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.InputDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.IpEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "IP entity recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.IpEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.IRecognizer": { - "title": "Microsoft recognizer", - "description": "Components which derive from Recognizer class", - "$role": "interface", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.ChannelMentionEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.OrchestratorRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "$ref": "#/definitions/Microsoft.RegexEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - }, - { - "type": "string" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Components which derive from TextTemplate class", - "$role": "interface", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "type": "string" - } - ] - }, - "Microsoft.ITrigger": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "$ref": "#/definitions/Microsoft.OnCommandActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnCommandResultActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "$ref": "#/definitions/Microsoft.OnContinueConversation" - }, - { - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnInstallationUpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITrigger", - "description": "Reference to Microsoft.ITrigger .dialog file." - } - ] - }, - "Microsoft.ITriggerSelector": { - "$role": "interface", - "title": "Selectors", - "description": "Components which derive from TriggerSelector class.", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerSelector", - "description": "Reference to Microsoft.ITriggerSelector .dialog file." - } - ] - }, - "Microsoft.LanguagePolicy": { - "title": "Language policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": { - "type": "array", - "title": "Per-locale policy", - "description": "Language policy per locale.", - "items": { - "type": "string", - "title": "Locale", - "description": "Locale like en-us." - } - }, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.LanguagePolicy" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LogAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Log to console", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "type": "object", - "required": [ - "text", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "text": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Text", - "description": "Information to log.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "label": { - "$ref": "#/definitions/stringExpression", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "traceActivity": { - "$ref": "#/definitions/booleanExpression", - "title": "Send trace activity", - "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator)." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.LogAction" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LuisRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "LUIS Recognizer", - "description": "LUIS recognizer.", - "type": "object", - "required": [ - "applicationId", - "endpoint", - "endpointKey", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "applicationId": { - "$ref": "#/definitions/stringExpression", - "title": "LUIS application id", - "description": "Application ID for your model from the LUIS service." - }, - "version": { - "$ref": "#/definitions/stringExpression", - "title": "LUIS version", - "description": "Optional version to target. If null then predictionOptions.Slot is used." - }, - "endpoint": { - "$ref": "#/definitions/stringExpression", - "title": "LUIS endpoint", - "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com." - }, - "endpointKey": { - "$ref": "#/definitions/stringExpression", - "title": "LUIS prediction key", - "description": "LUIS prediction key used to call endpoint." - }, - "externalEntityRecognizer": { - "$kind": "Microsoft.IRecognizer", - "title": "External entity recognizer", - "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.", - "$ref": "#/definitions/Microsoft.IRecognizer" - }, - "dynamicLists": { - "$ref": "#/definitions/arrayExpression", - "title": "Dynamic lists", - "description": "Runtime defined entity lists.", - "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", - "title": "List entry", - "description": "Canonical form and synonynms.", - "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": { - "title": "Synonym", - "description": "Synonym for canonical form.", - "type": "string" - } - } - } - } - } - } - } - }, - "predictionOptions": { - "type": "object", - "title": "Prediction options", - "description": "Options to control LUIS prediction behavior.", - "properties": { - "includeAllIntents": { - "$ref": "#/definitions/booleanExpression", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "$ref": "#/definitions/booleanExpression", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "$ref": "#/definitions/booleanExpression", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "$ref": "#/definitions/booleanExpression", - "title": "Prefer external entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "$ref": "#/definitions/stringExpression", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.LuisRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MentionEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Mentions entity recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MentionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most specific trigger selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MostSpecificSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "languagePolicy": { - "$kind": "Microsoft.LanguagePolicy", - "type": "object", - "title": "Language policy", - "description": "Defines fall back languages to try per user input language.", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - "recognizers": { - "type": "object", - "title": "Recognizers", - "description": "Map of language -> Recognizer", - "additionalProperties": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MultiLanguageRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Number entity recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "$policies": { - "interactive": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "defaultValue": { - "$ref": "#/definitions/numberExpression", - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - 13, - "=user.age" - ] - }, - "value": { - "$ref": "#/definitions/numberExpression", - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - 13, - "=user.age" - ] - }, - "outputFormat": { - "$ref": "#/definitions/expression", - "title": "Output format", - "description": "Expression to format the number output.", - "examples": [ - "=this.value", - "=int(this.text)" - ] - }, - "defaultLocale": { - "$ref": "#/definitions/stringExpression", - "title": "Default locale", - "description": "Default locale to use if there is no locale available..", - "default": "en-us" - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "default": false, - "examples": [ - false, - "=user.isVip" - ] - }, - "prompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Initial prompt", - "description": "Message to send to collect information.", - "examples": [ - "What is your birth date?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "unrecognizedPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Unrecognized prompt", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "invalidPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression.", - "examples": [ - "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "defaultValueResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "maxTurnCount": { - "$ref": "#/definitions/integerExpression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "minimum": 0, - "maximum": 2147483647, - "examples": [ - 3, - "=settings.xyz" - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ] - } - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "dialog.${user.name}", - "=f(x)" - ] - }, - "alwaysPrompt": { - "$ref": "#/definitions/booleanExpression", - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false, - "=$val" - ] - }, - "allowInterruptions": { - "$ref": "#/definitions/booleanExpression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": true, - "examples": [ - true, - "=user.xyz" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberInput" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberRangeEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Number range entity recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberRangeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information before each request.", - "type": "object", - "required": [ - "connectionName", - "$kind" - ], - "$policies": { - "interactive": true - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "connectionName": { - "$ref": "#/definitions/stringExpression", - "title": "Connection name", - "description": "The connection name configured in Azure Web App Bot OAuth settings.", - "examples": [ - "msgraphOAuthConnection" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "text": { - "$ref": "#/definitions/stringExpression", - "title": "Text", - "description": "Text shown in the OAuth signin card.", - "examples": [ - "Please sign in. ", - "=concat(x,y,z)" - ] - }, - "title": { - "$ref": "#/definitions/stringExpression", - "title": "Title", - "description": "Title shown in the OAuth signin card.", - "examples": [ - "Login" - ] - }, - "timeout": { - "$ref": "#/definitions/integerExpression", - "title": "Timeout", - "description": "Time out setting for the OAuth signin card.", - "default": 900000 - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Token property", - "description": "Property to store the OAuth token result. WARNING: Changing this location is not recommended as you should call OAuthInput immediately before each use of the token.", - "default": "turn.token", - "examples": [ - "turn.token" - ] - }, - "invalidPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Invalid prompt", - "description": "Message to send if user response is invalid.", - "examples": [ - "Sorry, the login info you provided is not valid." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "defaultValueResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Login failed." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "maxTurnCount": { - "$ref": "#/definitions/integerExpression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "defaultValue": { - "$ref": "#/definitions/expression", - "title": "Default value", - "description": "Expression to examine on each turn of the conversation as possible value to the property.", - "examples": [ - "@token" - ] - }, - "allowInterruptions": { - "$ref": "#/definitions/booleanExpression", - "title": "Allow interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": true, - "examples": [ - true, - "=f(x)" - ] - }, - "alwaysPrompt": { - "$ref": "#/definitions/booleanExpression", - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OAuthInput" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On activity", - "description": "Actions to perform on receipt of a generic activity.", - "type": "object", - "required": [ - "type", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "type": { - "type": "string", - "title": "Activity type", - "description": "The Activity.Type to match" - }, - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnAssignEntity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On entity assignment", - "description": "Actions to apply an operation on a property and value.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "operation": { - "type": "string", - "title": "Operation", - "description": "Operation filter on event." - }, - "property": { - "type": "string", - "title": "Property", - "description": "Property filter on event." - }, - "value": { - "type": "string", - "title": "Value", - "description": "Value filter on event." - }, - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnAssignEntity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnBeginDialog": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On begin dialog", - "description": "Actions to perform when this dialog begins.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnBeginDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnCancelDialog": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnCancelDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnChooseEntity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On choose entity", - "description": "Actions to be performed when value is ambiguous for operator and property.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "operation": { - "type": "string", - "title": "Operation", - "description": "Operation filter on event." - }, - "property": { - "type": "string", - "title": "Property", - "description": "Property filter on event." - }, - "value": { - "type": "string", - "title": "Ambiguous value", - "description": "Ambiguous value filter on event." - }, - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnChooseEntity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnChooseIntent": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On ambiguous intent", - "description": "Actions to perform on when an intent is ambiguous.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "intents": { - "type": "array", - "title": "Intents", - "description": "Intents that must be in the ChooseIntent result for this condition to trigger.", - "items": { - "title": "Intent", - "description": "Intent name to trigger on.", - "type": "string" - } - }, - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnChooseIntent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnChooseProperty": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On choose property", - "description": "Actions to take when there are multiple possible mappings of entities to properties and operations.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnChooseProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnCommandActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On Command activity", - "description": "Actions to perform on receipt of an activity with type 'Command'. Overrides Intent trigger.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnCommandActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnCommandResultActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On Command Result activity", - "description": "Actions to perform on receipt of an activity with type 'CommandResult'. Overrides Intent trigger.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnCommandResultActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnCondition": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On condition", - "description": "Actions to perform when specified condition is true.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnCondition" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnContinueConversation": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On continue conversation", - "description": "Actions to perform when a conversation is started up again from a ContinueConversationLater action.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnContinueConversation" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnConversationUpdateActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On ConversationUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnConversationUpdateActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnDialogEvent": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On dialog event", - "description": "Actions to perform when a specific dialog event occurs.", - "type": "object", - "required": [ - "event", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "event": { - "type": "string", - "title": "Dialog event name", - "description": "Name of dialog event." - }, - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnDialogEvent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnEndOfActions": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On end of actions", - "description": "Actions to take when there are no more actions in the current dialog.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnEndOfActions" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnEndOfConversationActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On EndOfConversation activity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "type": "object", - "required": [ - "$kind" - ], - "$policies": { - "nonInteractive": true - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnEndOfConversationActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnError": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On error", - "description": "Action to perform when an 'Error' dialog event occurs.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnError" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnEventActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On Event activity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnEventActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnHandoffActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On Handoff activity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnHandoffActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnInstallationUpdateActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On InstallationUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'InstallationUpdate'.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnInstallationUpdateActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnIntent": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On intent recognition", - "description": "Actions to perform when specified intent is recognized.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "intent": { - "type": "string", - "title": "Intent", - "description": "Name of intent." - }, - "entities": { - "type": "array", - "title": "Entities", - "description": "Required entities.", - "items": { - "type": "string", - "title": "Entity", - "description": "Entity that must be present." - } - }, - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnIntent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnInvokeActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On Invoke activity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnInvokeActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnMessageActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On Message activity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnMessageActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnMessageDeleteActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On MessageDelete activity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnMessageDeleteActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnMessageReactionActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On MessageReaction activity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnMessageReactionActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnMessageUpdateActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On MessageUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnMessageUpdateActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnQnAMatch": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On QnAMaker match", - "description": "Actions to perform on when an match from QnAMaker is found.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnQnAMatch" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnRepromptDialog": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On RepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnRepromptDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnTypingActivity": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On Typing activity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnTypingActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnUnknownIntent": { - "$role": [ - "implements(Microsoft.ITrigger)", - "extends(Microsoft.OnCondition)" - ], - "title": "On unknown intent", - "description": "Action to perform when user input is unrecognized or if none of the 'on intent recognition' triggers match recognized intent.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "$ref": "#/definitions/numberExpression", - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "$ref": "#/definitions/booleanExpression", - "title": "Run Once", - "description": "True if rule should run once per unique conditions", - "examples": [ - true, - "=f(x)" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnUnknownIntent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OrchestratorRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Orchestrator recognizer", - "description": "Orchestrator recognizer.", - "type": "object", - "required": [ - "modelFolder", - "snapshotFile", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "modelFolder": { - "$ref": "#/definitions/stringExpression", - "title": "Base Model", - "description": "Base model folder path.", - "default": "=settings.orchestrator.modelFolder" - }, - "snapshotFile": { - "$ref": "#/definitions/stringExpression", - "title": "Snapshot File", - "description": "Snapshot file.", - "default": "=settings.orchestrator.snapshotFile" - }, - "externalEntityRecognizer": { - "$kind": "Microsoft.IRecognizer", - "title": "External entity recognizer", - "description": "Entities recognized by this recognizer will be merged with Orchestrator results.", - "$ref": "#/definitions/Microsoft.IRecognizer" - }, - "disambiguationScoreThreshold": { - "$ref": "#/definitions/numberExpression", - "title": "Threshold", - "description": "Recognizer returns ChooseIntent (disambiguation) if other intents are classified within this score of the top scoring intent.", - "default": 0.05, - "examples": [ - "=true", - "=turn.scoreThreshold", - "=settings.orchestrator.disambigScoreThreshold" - ] - }, - "detectAmbiguousIntents": { - "$ref": "#/definitions/booleanExpression", - "title": "Detect ambiguous intents", - "description": "If true, recognizer will look for ambiguous intents (intents with close recognition scores from top scoring intent).", - "default": false, - "examples": [ - "=true", - "=turn.detectAmbiguousIntents", - "=settings.orchestrator.detectAmbiguousIntents" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OrchestratorRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Ordinal entity recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OrdinalEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Percentage entity recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PercentageEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Phone number entity recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PhoneNumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$ref": "#/definitions/stringExpression", - "title": "Endpoint key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$ref": "#/definitions/stringExpression", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "noAnswer": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Fallback answer", - "description": "Default answer to return when none found in KB.", - "default": "Sorry, I did not find an answer.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "threshold": { - "$ref": "#/definitions/numberExpression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "default": 0.3 - }, - "activeLearningCardTitle": { - "$ref": "#/definitions/stringExpression", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$ref": "#/definitions/stringExpression", - "title": "Card no match text", - "description": "Text for no match option.", - "default": "None of the above." - }, - "cardNoMatchResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Card no match response", - "description": "Custom response when no match option was selected.", - "default": "Thanks for the feedback.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "strictFilters": { - "$ref": "#/definitions/arrayExpression", - "title": "Strict filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "type": "object", - "title": "Metadata filter", - "description": "Metadata filter.", - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of filter property.", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "description": "Value to filter on.", - "maximum": 100 - } - } - } - }, - "top": { - "$ref": "#/definitions/numberExpression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "default": 3 - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "$ref": "#/definitions/stringExpression", - "title": "Ranker type", - "description": "Type of Ranker.", - "oneOf": [ - { - "title": "Standard ranker", - "description": "Standard ranker types.", - "enum": [ - "default", - "questionOnly", - "autoSuggestQuestion" - ], - "default": "default" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "strictFiltersJoinOperator": { - "$ref": "#/definitions/stringExpression", - "title": "StrictFiltersJoinOperator", - "description": "Join operator for Strict Filters.", - "oneOf": [ - { - "title": "Join operator", - "description": "Value of Join Operator to be used as conjunction with Strict Filter values.", - "enum": [ - "AND", - "OR" - ], - "default": "AND" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "QnAMaker recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "Knowledge base Id of your QnA Maker knowledge base.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$ref": "#/definitions/stringExpression", - "title": "Endpoint key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$ref": "#/definitions/stringExpression", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "threshold": { - "$ref": "#/definitions/numberExpression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "default": 0.3 - }, - "strictFilters": { - "$ref": "#/definitions/arrayExpression", - "title": "Strict filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "type": "object", - "title": "Metadata filters", - "description": "Metadata filters to use when querying QnA Maker KB.", - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name to filter on.", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "description": "Value to restrict filter.", - "maximum": 100 - } - } - } - }, - "top": { - "$ref": "#/definitions/numberExpression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "default": 3 - }, - "isTest": { - "$ref": "#/definitions/booleanExpression", - "title": "Use test environment", - "description": "True, if pointing to Test environment, else false.", - "examples": [ - true, - "=f(x)" - ] - }, - "rankerType": { - "title": "Ranker type", - "description": "Type of Ranker.", - "oneOf": [ - { - "type": "string", - "title": "Ranker type", - "description": "Type of Ranker.", - "enum": [ - "default", - "questionOnly", - "autoSuggestQuestion" - ], - "default": "default" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "strictFiltersJoinOperator": { - "$ref": "#/definitions/stringExpression", - "title": "StrictFiltersJoinOperator", - "description": "Join operator for Strict Filters.", - "oneOf": [ - { - "title": "Join operator", - "description": "Value of Join Operator to be used as onjuction with Strict Filter values.", - "enum": [ - "AND", - "OR" - ], - "default": "AND" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "includeDialogNameInMetadata": { - "$ref": "#/definitions/booleanExpression", - "title": "Include dialog name", - "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true", - "default": true, - "examples": [ - true, - "=f(x)" - ] - }, - "metadata": { - "$ref": "#/definitions/arrayExpression", - "title": "Metadata filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "type": "object", - "title": "Metadata filter", - "description": "Metadata filter to use when calling the QnA Maker KB.", - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of value to test." - }, - "value": { - "type": "string", - "title": "Value", - "description": "Value to filter against." - } - } - } - }, - "context": { - "$ref": "#/definitions/objectExpression", - "title": "QnA request context", - "description": "Context to use for ranking." - }, - "qnaId": { - "$ref": "#/definitions/integerExpression", - "title": "QnA Id", - "description": "A number or expression which is the QnAId to paass to QnAMaker API." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "seed": { - "type": "integer", - "title": "Random seed", - "description": "Random seed to start random number generation." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RandomSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Recognizer set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Regex entity recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "required": [ - "name", - "pattern", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "intents": { - "type": "array", - "title": "RegEx patterns to intents", - "description": "Collection of patterns to match for an intent.", - "items": { - "type": "object", - "title": "Pattern", - "description": "Intent and regex pattern.", - "properties": { - "intent": { - "type": "string", - "title": "Intent", - "description": "The intent name." - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "The regular expression pattern." - } - } - } - }, - "entities": { - "type": "array", - "title": "Entity recognizers", - "description": "Collection of entity recognizers to use.", - "items": { - "$kind": "Microsoft.IEntityRecognizer", - "$ref": "#/definitions/Microsoft.IEntityRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "$policies": { - "lastAction": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "allowLoop": { - "$ref": "#/definitions/booleanExpression", - "title": "AllowLoop", - "description": "Optional condition which if true will allow loop of the repeated dialog.", - "examples": [ - "user.age > 3" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "options": { - "$ref": "#/definitions/objectExpression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "type": "string", - "title": "Options", - "description": "Options for repeating dialog." - } - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "default": true - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RepeatDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ReplaceDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Replace dialog", - "description": "Replace current dialog with another dialog.", - "$policies": { - "lastAction": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "dialog": { - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "pattern": "^(?!(=)).*", - "title": "Dialog", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=settings.dialogId" - ] - } - ], - "title": "Dialog name", - "description": "Name of the dialog to call." - }, - "options": { - "$ref": "#/definitions/objectExpression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "type": "string", - "title": "Options", - "description": "Options for replacing dialog." - } - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "default": true - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ReplaceDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ResourceMultiLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Resource multi-language generator", - "description": "MultiLanguage Generator which is bound to resource by resource Id.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "resourceId": { - "type": "string", - "title": "Resource Id", - "description": "Resource which is the root language generator. Other generaters with the same name and language suffix will be loaded into this generator and used based on the Language Policy.", - "default": "dialog.result" - }, - "languagePolicy": { - "type": "object", - "title": "Language policy", - "description": "Set alternate language policy for this generator. If not set, the global language policy will be used." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ResourceMultiLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SendActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SendHandoffActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send a handoff activity", - "description": "Sends a handoff activity to trigger a handoff request.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "context": { - "$ref": "#/definitions/objectExpression", - "title": "Context", - "description": "Context to send with the handoff request" - }, - "transcript": { - "$ref": "#/definitions/objectExpression", - "title": "transcript", - "description": "Transcript to send with the handoff request" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SendHandoffActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SetProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set one or more property values.", - "type": "object", - "required": [ - "assignments", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "title": "Assignment", - "description": "Property assignment.", - "properties": { - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "required": [ - "property", - "value", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign out user", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$ref": "#/definitions/stringExpression", - "title": "UserId", - "description": "Expression to an user to signout. Default is user.id.", - "default": "=user.id" - }, - "connectionName": { - "$ref": "#/definitions/stringExpression", - "title": "Connection name", - "description": "Connection name that was used with OAuthInput to log a user in." - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SignOutUser" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SlackAdapter": { - "$role": "implements(Microsoft.IAdapter)", - "title": "Slack connection", - "description": "Connects a bot to Slack.", - "type": "object", - "required": [ - "SlackVerificationToken", - "SlackBotToken", - "SlackClientSigningSecret", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "SlackVerificationToken": { - "type": "string", - "title": "Verification token", - "description": "Verification token obtained from the Slack set-up steps." - }, - "SlackBotToken": { - "type": "string", - "title": "Bot token", - "description": "Bot token obtained from the Slack set-up steps." - }, - "SlackClientSigningSecret": { - "type": "string", - "title": "Client signing secret", - "description": "Client signing secret obtained from the Slack set-up steps." - }, - "route": { - "type": "string", - "title": "Route", - "description": "Optional route where the adapter is exposed.", - "default": "slack" - }, - "type": { - "type": "string", - "title": "type", - "description": "Adapter full type name.", - "default": "Microsoft.Bot.Builder.Adapters.Slack.SlackAdapter" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SlackAdapter" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.StaticActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft static activity template", - "description": "This allows you to define a static Activity object", - "type": "object", - "required": [ - "activity", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "activity": { - "$ref": "#/definitions/botframework.json/definitions/Activity", - "title": "Activity", - "description": "A static Activity to used.", - "required": [ - "type" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.StaticActivityTemplate" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SwitchCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Switch condition", - "description": "Execute different actions based on the value of a property.", - "type": "object", - "required": [ - "condition", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$ref": "#/definitions/stringExpression", - "title": "Condition", - "description": "Property to evaluate.", - "examples": [ - "user.favColor" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "cases": { - "type": "array", - "title": "Cases", - "description": "Actions for each possible condition.", - "items": { - "type": "object", - "title": "Case", - "description": "Case and actions.", - "required": [ - "value" - ], - "properties": { - "value": { - "type": [ - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "The value to compare the condition with.", - "examples": [ - "red", - "true", - "13" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - } - } - } - }, - "default": { - "type": "array", - "title": "Default", - "description": "Actions to execute if none of the cases meet the condition.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SwitchCondition" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TelemetryTrackEventAction": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Telemetry - track event", - "description": "Track a custom event using the registered Telemetry Client.", - "required": [ - "url", - "method", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "eventName": { - "$ref": "#/definitions/stringExpression", - "title": "Event name", - "description": "The name of the event to track.", - "examples": [ - "MyEventStarted", - "MyEventCompleted" - ] - }, - "properties": { - "type": "object", - "title": "Properties", - "description": "One or more properties to attach to the event being tracked.", - "additionalProperties": { - "$ref": "#/definitions/stringExpression" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TelemetryTrackEventAction" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TemperatureEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Temperature recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemperatureEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TemplateEngineLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Template multi-language generator", - "description": "Template Generator which allows only inline evaluation of templates.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemplateEngineLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.AssertCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Assert Condition", - "description": "Assert condition is true.", - "type": "object", - "required": [ - "condition", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Expression to evalute", - "examples": [ - "user.age > 10" - ] - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of what the condition is testing" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertCondition" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.AssertNoActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply Activity", - "description": "Asserts that there is no activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "description": { - "type": "string", - "title": "Description", - "description": "The description of the assertion" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertNoActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.AssertReply": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert reply", - "description": "Asserts that a reply text is valid.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "text": { - "type": "string", - "title": "Reply text", - "description": "Expected reply text" - }, - "exact": { - "type": "boolean", - "title": "Exact match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to validate activity", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$ref": "#/definitions/condition", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ] - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReply" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.AssertReplyActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert reply activity", - "description": "Asserts that a reply activity is valid.", - "type": "object", - "required": [ - "assertions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$ref": "#/definitions/condition", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ] - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.AssertReplyOneOf": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert activity text matches at least one", - "description": "Asserts that a reply text is one of multiple optional responses.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "text": { - "type": "array", - "title": "Replies", - "description": "Expected replies (one of which must match).", - "items": { - "type": "string", - "title": "Expected reply", - "description": "Expected reply." - } - }, - "exact": { - "type": "boolean", - "title": "Exact match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to validate activity", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$ref": "#/definitions/condition", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ] - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyOneOf" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.AssertTelemetryContains": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert telemetry contains", - "description": "Checks whether telemetry log contsain specific events.", - "type": "object", - "required": [ - "events", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "events": { - "type": "array", - "title": "Events name should be included in telemetry log", - "description": "A string array contains event names.", - "items": { - "type": "string" - } - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of which events should be included" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertTelemetryContains" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.CustomEvent": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "User event", - "description": "Sends event to the bot from the user.", - "type": "object", - "required": [ - "name", - "value", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "name": { - "type": "string", - "title": "Event name", - "description": "Event name to send to the bot." - }, - "value": { - "type": "object", - "title": "Event value", - "description": "Event value to send to the bot." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.CustomEvent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.HttpRequestSequenceMock": { - "$role": "implements(Microsoft.Test.IHttpRequestMock)", - "title": "HTTP request sequence mock", - "description": "Mock HttpRequest in sequence order.", - "type": "object", - "required": [ - "url", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to match. If null, match to any method.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "type": "string", - "title": "Url", - "description": "URL to match. Absolute or relative, may contain * wildcards.", - "examples": [ - "https://contoso.com" - ] - }, - "matchType": { - "type": "string", - "title": "Body match type", - "description": "The match type for body.", - "enum": [ - "Exact", - "Partial" - ], - "examples": [ - "Exact", - "Partial" - ], - "default": "Partial" - }, - "body": { - "type": "string", - "title": "Body", - "description": "The body to match against request's body.", - "examples": [ - "content" - ] - }, - "responses": { - "type": "array", - "title": "Responses", - "description": "Sequence of responses to reply. The last one will be repeated.", - "items": { - "type": "object", - "title": "HttpResponseMock", - "description": "Mocked http response.", - "properties": { - "statusCode": { - "title": "Status code", - "description": "The status code. Default is OK(200).", - "oneOf": [ - { - "type": "string", - "title": "String status code", - "description": "Use string as status code.", - "enum": [ - "Continue", - "SwitchingProtocols", - "OK", - "Created", - "Accepted", - "NonAuthoritativeInformation", - "NoContent", - "ResetContent", - "PartialContent", - "Ambiguous", - "MultipleChoices", - "Moved", - "MovedPermanently", - "Found", - "Redirect", - "RedirectMethod", - "SeeOther", - "NotModified", - "UseProxy", - "Unused", - "RedirectKeepVerb", - "TemporaryRedirect", - "BadRequest", - "Unauthorized", - "PaymentRequired", - "Forbidden", - "NotFound", - "MethodNotAllowed", - "NotAcceptable", - "ProxyAuthenticationRequired", - "RequestTimeout", - "Conflict", - "Gone", - "LengthRequired", - "PreconditionFailed", - "RequestEntityTooLarge", - "RequestUriTooLong", - "UnsupportedMediaType", - "RequestedRangeNotSatisfiable", - "ExpectationFailed", - "UpgradeRequired", - "InternalServerError", - "NotImplemented", - "BadGateway", - "ServiceUnavailable", - "GatewayTimeout", - "HttpVersionNotSupported" - ], - "examples": [ - "OK" - ] - }, - { - "type": "number", - "title": "Number status code", - "description": "Use number as status code.", - "examples": [ - 200 - ] - } - ], - "default": "OK" - }, - "reasonPhrase": { - "type": "string", - "title": "Reason phrase", - "description": "The reason phrase.", - "examples": [ - "Server is stolen." - ] - }, - "contentType": { - "type": "string", - "title": "ContentType", - "description": "Content type of response.", - "enum": [ - "String", - "ByteArray", - "GZipString" - ], - "examples": [ - "String" - ], - "default": "String" - }, - "content": { - "title": "Content", - "description": "Content of response.", - "oneOf": [ - { - "type": "string", - "title": "String content", - "description": "Use string as content.", - "examples": [ - "string response" - ] - }, - { - "type": "object", - "title": "Object content", - "description": "Use object as content. It will be serialized to string.", - "examples": [ - { - "data": "object response" - } - ] - } - ] - } - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.HttpRequestSequenceMock" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.IHttpRequestMock": { - "title": "HTTP request mock", - "description": "Components which derive from HttpRequestMock class", - "$role": "interface", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.Test.HttpRequestSequenceMock" - }, - { - "type": "string", - "title": "Reference to Microsoft.Test.IHttpRequestMock", - "description": "Reference to Microsoft.Test.IHttpRequestMock .dialog file." - } - ] - }, - "Microsoft.Test.IPropertyMock": { - "title": "Property mock", - "description": "Components which derive from PropertyMock class", - "$role": "interface" - }, - "Microsoft.Test.ISettingMock": { - "title": "Microsoft Test ISettingMock", - "description": "Components which derive from SettingMock class", - "$role": "interface", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.Test.SettingStringMock" - }, - { - "type": "string", - "title": "Reference to Microsoft.Test.ISettingMock", - "description": "Reference to Microsoft.Test.ISettingMock .dialog file." - } - ] - }, - "Microsoft.Test.ITestAction": { - "title": "Test action", - "description": "Components which derive from TestAction class", - "$role": "interface", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.Test.AssertNoActivity" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "$ref": "#/definitions/Microsoft.Test.AssertTelemetryContains" - }, - { - "$ref": "#/definitions/Microsoft.Test.CustomEvent" - }, - { - "$ref": "#/definitions/Microsoft.Test.MemoryAssertions" - }, - { - "$ref": "#/definitions/Microsoft.Test.SetProperties" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "type": "string", - "title": "Reference to Microsoft.Test.ITestAction", - "description": "Reference to Microsoft.Test.ITestAction .dialog file." - } - ] - }, - "Microsoft.Test.IUserTokenMock": { - "title": "User token mock", - "description": "Components which derive from UserTokenMock class", - "$role": "interface", - "oneOf": [ - { - "$ref": "#/definitions/Microsoft.Test.UserTokenBasicMock" - }, - { - "type": "string", - "title": "Reference to Microsoft.Test.IUserTokenMock", - "description": "Reference to Microsoft.Test.IUserTokenMock .dialog file." - } - ] - }, - "Microsoft.Test.MemoryAssertions": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Memory assertions", - "description": "Run assertions against current memory.", - "type": "object", - "required": [ - "assertions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "assertions": { - "type": "array", - "title": "Assertions against memory", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$ref": "#/definitions/condition", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ] - } - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.MemoryAssertions" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.Script": { - "$role": [], - "title": "Test script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "type": "object", - "required": [ - "dialog", - "script", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "dialog": { - "$kind": "Microsoft.IDialog", - "title": "Dialog", - "description": "The root dialog to execute the test script against.", - "$ref": "#/definitions/Microsoft.IDialog" - }, - "languagePolicy": { - "type": "object", - "title": "Language policy", - "description": "Defines fall back languages to try per user input language." - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of the test script" - }, - "httpRequestMocks": { - "type": "array", - "title": "Http request mocks", - "description": "Mock data for Microsoft.HttpRequest.", - "items": { - "$kind": "Microsoft.Test.IHttpRequestMock", - "$ref": "#/definitions/Microsoft.Test.IHttpRequestMock" - } - }, - "userTokenMocks": { - "type": "array", - "title": "User token mocks", - "description": "Mock data for Microsoft.OAuthInput.", - "items": { - "$kind": "Microsoft.Test.IUserTokenMock", - "$ref": "#/definitions/Microsoft.Test.IUserTokenMock" - } - }, - "settingMocks": { - "type": "array", - "title": "Setting Mocks", - "description": "Mock data for setting.", - "items": { - "$kind": "Microsoft.Test.ISettingMock", - "$ref": "#/definitions/Microsoft.Test.ISettingMock" - } - }, - "script": { - "type": "array", - "title": "Test actions", - "description": "Sequence of test actions to execute.", - "items": { - "$kind": "Microsoft.Test.ITestAction", - "$ref": "#/definitions/Microsoft.Test.ITestAction" - } - }, - "locale": { - "type": "string", - "title": "Locale", - "description": "Set the locale for the user utterances in the script.", - "default": "en-us" - }, - "enableTrace": { - "type": "boolean", - "title": "Enable trace activity", - "description": "Enable trace activities in the unit test (default is false)", - "default": false - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.Script" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.SetProperties": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Set properties", - "description": "Set one or more property values.", - "type": "object", - "required": [ - "assignments", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "title": "Assignment", - "description": "Property assignment.", - "properties": { - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.SetProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.SettingStringMock": { - "$role": "implements(Microsoft.Test.ISettingMock)", - "title": "Mock Settings", - "description": "Mock one or more settings with string value.", - "type": "object", - "required": [ - "assignments", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Setting assignments as settings.property=value pairs. Assign the settings in sequence.", - "items": { - "type": "object", - "title": "Setting String Assignment", - "description": "Setting String Assignment (used in SettingStringMock).", - "properties": { - "property": { - "type": "string", - "title": "Property", - "description": "A property path without settings.", - "examples": [ - "connectionName" - ] - }, - "value": { - "type": "string", - "title": "Value", - "description": "Value string.", - "examples": [ - "Graph" - ] - } - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.SettingStringMock" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.UserActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send activity", - "description": "Sends activity to the bot.", - "type": "object", - "required": [ - "activity", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "activity": { - "type": "object", - "title": "Activity", - "description": "Activity to send to bot.", - "additionalProperties": true - }, - "user": { - "type": "string", - "title": "User name", - "description": "The activity.from.id and activity.from.name will be this if specified." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.UserConversationUpdate": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send ConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "membersAdded": { - "type": "array", - "title": "Members added", - "description": "Names of the members to add", - "items": { - "type": "string", - "title": "Name", - "description": "Name of member to add." - } - }, - "membersRemoved": { - "type": "array", - "title": "Members removed", - "description": "Names of the members to remove", - "items": { - "type": "string", - "title": "Name", - "description": "Name of member to remove." - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserConversationUpdate" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.UserDelay": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Delay execution", - "description": "Delays text script for time period.", - "type": "object", - "required": [ - "timespan", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "timespan": { - "type": "number", - "title": "Timespan", - "description": "The amount of time in milliseconds to delay the execution of the test script" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserDelay" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.UserSays": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "User text", - "description": "Sends text to the bot from the user.", - "type": "object", - "required": [ - "text", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "text": { - "type": "string", - "title": "Text", - "description": "Text to send to the bot." - }, - "user": { - "type": "string", - "title": "User name", - "description": "The activity.from.id and activity.from.name will be this if specified." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserSays" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.UserTokenBasicMock": { - "$role": "implements(Microsoft.Test.IUserTokenMock)", - "title": "User token mock", - "description": "Mock Basic UserToken", - "type": "object", - "required": [ - "connectionName", - "token", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "connectionName": { - "type": "string", - "title": "Connection name", - "description": "The connection name.", - "examples": [ - "graph" - ] - }, - "channelId": { - "type": "string", - "title": "Channel Id", - "description": "The channel ID. If empty, same as adapter.Conversation.ChannelId.", - "examples": [ - "test" - ] - }, - "userId": { - "type": "string", - "title": "User Id", - "description": "The user ID. If empty, same as adapter.Conversation.User.Id.", - "examples": [ - "user1" - ] - }, - "token": { - "type": "string", - "title": "Token", - "description": "The token to store.", - "examples": [ - "token" - ] - }, - "magicCode": { - "type": "string", - "title": "Magic code", - "description": "The optional magic code to associate with this token.", - "examples": [ - "000000" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserTokenBasicMock" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Test.UserTyping": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send typing", - "description": "Sends typing activity to the bot.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "user": { - "type": "string", - "title": "User name", - "description": "The activity.from.id and activity.from.name will be this if specified." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserTyping" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TextInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "$policies": { - "interactive": true - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "defaultValue": { - "$ref": "#/definitions/stringExpression", - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "hello world", - "Hello ${user.name}", - "=concat(user.firstname, user.lastName)" - ] - }, - "value": { - "$ref": "#/definitions/stringExpression", - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "hello world", - "Hello ${user.name}", - "=concat(user.firstname, user.lastName)" - ] - }, - "outputFormat": { - "$ref": "#/definitions/stringExpression", - "title": "Output format", - "description": "Expression to format the output.", - "examples": [ - "=toUpper(this.value)", - "${toUpper(this.value)}" - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "default": false, - "examples": [ - false, - "=user.isVip" - ] - }, - "prompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Initial prompt", - "description": "Message to send to collect information.", - "examples": [ - "What is your birth date?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "unrecognizedPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Unrecognized prompt", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "invalidPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression.", - "examples": [ - "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "defaultValueResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "maxTurnCount": { - "$ref": "#/definitions/integerExpression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "minimum": 0, - "maximum": 2147483647, - "examples": [ - 3, - "=settings.xyz" - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "$ref": "#/definitions/condition", - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ] - } - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "dialog.${user.name}", - "=f(x)" - ] - }, - "alwaysPrompt": { - "$ref": "#/definitions/booleanExpression", - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false, - "=$val" - ] - }, - "allowInterruptions": { - "$ref": "#/definitions/booleanExpression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": true, - "examples": [ - true, - "=user.xyz" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TextInput" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TextTemplate": { - "$role": "implements(Microsoft.ITextTemplate)", - "title": "Microsoft TextTemplate", - "description": "Use LG Templates to create text", - "type": "object", - "required": [ - "template", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to evaluate to create the text.", - "type": "string" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TextTemplate" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ThrowException": { - "$role": "implements(Microsoft.IDialog)", - "title": "Throw an exception", - "description": "Throw an exception. Capture this exception with OnError trigger.", - "type": "object", - "required": [ - "errorValue", - "$kind" - ], - "$policies": { - "lastAction": true - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "errorValue": { - "$ref": "#/definitions/valueExpression", - "title": "Error value", - "description": "Error value to throw." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ThrowException" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TraceActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send a TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "name": { - "$ref": "#/definitions/stringExpression", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$ref": "#/definitions/stringExpression", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$ref": "#/definitions/stringExpression", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Property that holds the value to send as trace activity." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TraceActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True trigger selector", - "description": "Selector for all true events", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TrueSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TwilioAdapter": { - "$role": "implements(Microsoft.IAdapter)", - "title": "Twilio connection", - "description": "Connects a bot to Twilio.", - "type": "object", - "required": [ - "TwilioNumber", - "TwilioAccountSid", - "TwilioAuthToken", - "TwilioValidationUrl", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "TwilioNumber": { - "type": "string", - "title": "Number key", - "description": "Number key obtained from Twilio set-up." - }, - "TwilioAccountSid": { - "type": "string", - "title": "Account SID key", - "description": "Account SID obtained from Twilio set-up." - }, - "TwilioAuthToken": { - "type": "string", - "title": "Authentication token", - "description": "Authentication token obtained from Twilio set-up." - }, - "TwilioValidationUrl": { - "type": "string", - "title": "Validation url", - "description": "Validation url obtained from Twilio set-up." - }, - "route": { - "type": "string", - "title": "Route", - "description": "Optional route where the adapter is exposed.", - "default": "twilio" - }, - "type": { - "type": "string", - "title": "type", - "description": "Adapter full type name.", - "default": "Microsoft.Bot.Builder.Adapters.Twilio.TwilioAdapter" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TwilioAdapter" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Update an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "Activity Id", - "description": "An string expression with the activity id to update.", - "examples": [ - "=turn.lastresult.id" - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.UpdateActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.UrlEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Url recognizer", - "description": "Recognizer which recognizes urls.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.UrlEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.WebexAdapter": { - "$role": "implements(Microsoft.IAdapter)", - "title": "Webex connection", - "description": "Connects a bot to Webex.", - "type": "object", - "required": [ - "WebexAccessToken", - "WebexPublicAddress", - "WebexSecret", - "WebexWebhookName", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "WebexAccessToken": { - "type": "string", - "title": "Access token", - "description": "Access token obtained during Webex set-up." - }, - "WebexPublicAddress": { - "type": "string", - "title": "Public address", - "description": "Public address obtained during Webex set-up." - }, - "WebexSecret": { - "type": "string", - "title": "Secret", - "description": "Secret obtained during Webex set-up." - }, - "WebexWebhookName": { - "type": "string", - "title": "Webhook name", - "description": "Webhook name obtained during Webex set-up." - }, - "route": { - "type": "string", - "title": "Route", - "description": "Optional route where the adapter is exposed.", - "default": "webex" - }, - "type": { - "type": "string", - "title": "type", - "description": "Adapter full type name.", - "default": "Microsoft.Bot.Builder.Adapters.Webex.WebexAdapter" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.WebexAdapter" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "numberExpression": { - "$role": "expression", - "title": "Number or expression", - "description": "Number constant or expression to evaluate.", - "oneOf": [ - { - "type": "number", - "title": "Number", - "description": "Number constant.", - "default": 0, - "examples": [ - 15.5 - ] - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=dialog.quantity" - ] - } - ] - }, - "objectExpression": { - "$role": "expression", - "title": "Object or expression", - "description": "Object or expression to evaluate.", - "oneOf": [ - { - "type": "object", - "title": "Object", - "description": "Object constant." - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "role": { - "title": "$role", - "description": "Defines the role played in the dialog schema from [expression|interface|implements($kind)|extends($kind)].", - "type": "string", - "pattern": "^((expression)|(interface)|(implements\\([a-zA-Z][a-zA-Z0-9.]*\\))|(extends\\([a-zA-Z][a-zA-Z0-9.]*\\)))$" - }, - "root": { - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "root" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "stringExpression": { - "$role": "expression", - "title": "String or expression", - "description": "Interpolated string or expression to evaluate.", - "oneOf": [ - { - "type": "string", - "title": "String", - "description": "Interpolated string", - "pattern": "^(?!(=)).*", - "examples": [ - "Hello ${user.name}" - ] - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=concat('x','y','z')" - ] - } - ] - }, - "test": { - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "test" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Testbot.JavascriptAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Javascript Action", - "description": "This gives you the ability to execute javascript to manipulate memory", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=f(x)" - ] - }, - "script": { - "type": "string", - "title": "Script", - "description": "name of the script file, or javascript function with function: doAction(memory, args) => result" - }, - "options": { - "$ref": "#/definitions/objectExpression", - "title": "Options", - "description": "One or more options that are passed to the function as args.", - "additionalProperties": { - "type": "string", - "title": "Options", - "description": "Options for action." - } - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to store any value returned by the javascript function.", - "examples": [ - "dialog.userName" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Testbot.JavascriptAction" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Testbot.Multiply": { - "$role": "implements(Microsoft.IDialog)", - "title": "Multiply", - "description": "This will return the result of arg1*arg2", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "arg1": { - "$ref": "#/definitions/numberExpression", - "title": "Arg1", - "description": "Value from callers memory to use as arg 1" - }, - "arg2": { - "$ref": "#/definitions/numberExpression", - "title": "Arg2", - "description": "Value from callers memory to use as arg 2" - }, - "result": { - "$ref": "#/definitions/stringExpression", - "title": "Result", - "description": "Property to store the result in" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Testbot.Multiply" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "valueExpression": { - "$role": "expression", - "title": "Any or expression", - "description": "Any constant or expression to evaluate.", - "oneOf": [ - { - "type": "object", - "title": "Object", - "description": "Object constant." - }, - { - "type": "array", - "title": "Array", - "description": "Array constant." - }, - { - "type": "string", - "title": "String", - "description": "Interpolated string.", - "pattern": "^(?!(=)).*", - "examples": [ - "Hello ${user.name}" - ] - }, - { - "type": "boolean", - "title": "Boolean", - "description": "Boolean constant", - "examples": [ - false - ] - }, - { - "type": "number", - "title": "Number", - "description": "Number constant.", - "examples": [ - 15.5 - ] - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=..." - ] - } - ] - }, - "schema": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/definitions/schema" - } - }, - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "type": "integer", - "minimum": 0, - "default": 0 - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "uniqueItems": true, - "default": [], - "items": { - "type": "string" - } - } - }, - "type": [ - "object", - "boolean" - ], - "default": true, - "properties": { - "$schema": { - "type": "string", - "format": "uri" - }, - "$ref": { - "type": "string", - "format": "uri-reference" - }, - "$comment": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": true, - "readOnly": { - "type": "boolean", - "default": false - }, - "writeOnly": { - "type": "boolean", - "default": false - }, - "examples": { - "type": "array", - "items": true - }, - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { - "$ref": "#/definitions/schema/definitions/nonNegativeInteger" - }, - "minLength": { - "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" - }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { - "$ref": "#/definitions/schema" - }, - "items": { - "anyOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "$ref": "#/definitions/schema/definitions/schemaArray" - } - ], - "default": true - }, - "maxItems": { - "$ref": "#/definitions/schema/definitions/nonNegativeInteger" - }, - "minItems": { - "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" - }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "contains": { - "$ref": "#/definitions/schema" - }, - "maxProperties": { - "$ref": "#/definitions/schema/definitions/nonNegativeInteger" - }, - "minProperties": { - "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" - }, - "required": { - "$ref": "#/definitions/schema/definitions/stringArray" - }, - "additionalProperties": { - "$ref": "#/definitions/schema" - }, - "definitions": { - "type": "object", - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/schema" - } - }, - "properties": { - "type": "object", - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/schema" - } - }, - "patternProperties": { - "type": "object", - "propertyNames": { - "format": "regex" - }, - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/schema" - } - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "$ref": "#/definitions/schema/definitions/stringArray" - } - ] - } - }, - "propertyNames": { - "$ref": "#/definitions/schema" - }, - "const": true, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": true - }, - "type": { - "anyOf": [ - { - "$ref": "#/definitions/schema/definitions/simpleTypes" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/schema/definitions/simpleTypes" - }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { - "type": "string" - }, - "contentMediaType": { - "type": "string" - }, - "contentEncoding": { - "type": "string" - }, - "if": { - "$ref": "#/definitions/schema" - }, - "then": { - "$ref": "#/definitions/schema" - }, - "else": { - "$ref": "#/definitions/schema" - }, - "allOf": { - "$ref": "#/definitions/schema/definitions/schemaArray" - }, - "anyOf": { - "$ref": "#/definitions/schema/definitions/schemaArray" - }, - "oneOf": { - "$ref": "#/definitions/schema/definitions/schemaArray" - }, - "not": { - "$ref": "#/definitions/schema" - } - } - }, - "botframework.json": { - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "ChannelAccount": { - "description": "Channel account information needed to route a message", - "title": "ChannelAccount", - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", - "type": "string", - "title": "id" - }, - "name": { - "description": "Display friendly name", - "type": "string", - "title": "name" - }, - "aadObjectId": { - "description": "This account's object ID within Azure Active Directory (AAD)", - "type": "string", - "title": "aadObjectId" - }, - "role": { - "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", - "type": "string", - "title": "role" - } - } - }, - "ConversationAccount": { - "description": "Channel account information for a conversation", - "title": "ConversationAccount", - "type": "object", - "required": [ - "conversationType", - "id", - "isGroup", - "name" - ], - "properties": { - "isGroup": { - "description": "Indicates whether the conversation contains more than two participants at the time the\nactivity was generated", - "type": "boolean", - "title": "isGroup" - }, - "conversationType": { - "description": "Indicates the type of the conversation in channels that distinguish between conversation types", - "type": "string", - "title": "conversationType" - }, - "id": { - "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", - "type": "string", - "title": "id" - }, - "name": { - "description": "Display friendly name", - "type": "string", - "title": "name" - }, - "aadObjectId": { - "description": "This account's object ID within Azure Active Directory (AAD)", - "type": "string", - "title": "aadObjectId" - }, - "role": { - "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", - "enum": [ - "bot", - "user" - ], - "type": "string", - "title": "role" - } - } - }, - "MessageReaction": { - "description": "Message reaction object", - "title": "MessageReaction", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "Message reaction type. Possible values include: 'like', 'plusOne'", - "type": "string", - "title": "type" - } - } - }, - "CardAction": { - "description": "A clickable action", - "title": "CardAction", - "type": "object", - "required": [ - "title", - "type", - "value" - ], - "properties": { - "type": { - "description": "The type of action implemented by this button. Possible values include: 'openUrl', 'imBack',\n'postBack', 'playAudio', 'playVideo', 'showImage', 'downloadFile', 'signin', 'call',\n'payment', 'messageBack'", - "type": "string", - "title": "type" - }, - "title": { - "description": "Text description which appears on the button", - "type": "string", - "title": "title" - }, - "image": { - "description": "Image URL which will appear on the button, next to text label", - "type": "string", - "title": "image" - }, - "text": { - "description": "Text for this action", - "type": "string", - "title": "text" - }, - "displayText": { - "description": "(Optional) text to display in the chat feed if the button is clicked", - "type": "string", - "title": "displayText" - }, - "value": { - "description": "Supplementary parameter for action. Content of this property depends on the ActionType", - "title": "value" - }, - "channelData": { - "description": "Channel-specific data associated with this action", - "title": "channelData" - } - } - }, - "SuggestedActions": { - "description": "SuggestedActions that can be performed", - "title": "SuggestedActions", - "type": "object", - "required": [ - "actions", - "to" - ], - "properties": { - "to": { - "description": "Ids of the recipients that the actions should be shown to. These Ids are relative to the\nchannelId and a subset of all recipients of the activity", - "type": "array", - "title": "to", - "items": { - "title": "Id", - "description": "Id of recipient.", - "type": "string" - } - }, - "actions": { - "description": "Actions that can be shown to the user", - "type": "array", - "title": "actions", - "items": { - "$ref": "#/definitions/botframework.json/definitions/CardAction" - } - } - } - }, - "Attachment": { - "description": "An attachment within an activity", - "title": "Attachment", - "type": "object", - "required": [ - "contentType" - ], - "properties": { - "contentType": { - "description": "mimetype/Contenttype for the file", - "type": "string", - "title": "contentType" - }, - "contentUrl": { - "description": "Content Url", - "type": "string", - "title": "contentUrl" - }, - "content": { - "type": "object", - "description": "Embedded content", - "title": "content" - }, - "name": { - "description": "(OPTIONAL) The name of the attachment", - "type": "string", - "title": "name" - }, - "thumbnailUrl": { - "description": "(OPTIONAL) Thumbnail associated with attachment", - "type": "string", - "title": "thumbnailUrl" - } - } - }, - "Entity": { - "description": "Metadata object pertaining to an activity", - "title": "Entity", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "Type of this entity (RFC 3987 IRI)", - "type": "string", - "title": "type" - } - } - }, - "ConversationReference": { - "description": "An object relating to a particular point in a conversation", - "title": "ConversationReference", - "type": "object", - "required": [ - "bot", - "channelId", - "conversation", - "serviceUrl" - ], - "properties": { - "activityId": { - "description": "(Optional) ID of the activity to refer to", - "type": "string", - "title": "activityId" - }, - "user": { - "description": "(Optional) User participating in this conversation", - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "title": "user" - }, - "bot": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "description": "Bot participating in this conversation", - "title": "bot" - }, - "conversation": { - "$ref": "#/definitions/botframework.json/definitions/ConversationAccount", - "description": "Conversation reference", - "title": "conversation" - }, - "channelId": { - "description": "Channel ID", - "type": "string", - "title": "channelId" - }, - "serviceUrl": { - "description": "Service endpoint where operations concerning the referenced conversation may be performed", - "type": "string", - "title": "serviceUrl" - } - } - }, - "TextHighlight": { - "description": "Refers to a substring of content within another field", - "title": "TextHighlight", - "type": "object", - "required": [ - "occurrence", - "text" - ], - "properties": { - "text": { - "description": "Defines the snippet of text to highlight", - "type": "string", - "title": "text" - }, - "occurrence": { - "description": "Occurrence of the text field within the referenced text, if multiple exist.", - "type": "number", - "title": "occurrence" - } - } - }, - "SemanticAction": { - "description": "Represents a reference to a programmatic action", - "title": "SemanticAction", - "type": "object", - "required": [ - "entities", - "id" - ], - "properties": { - "id": { - "description": "ID of this action", - "type": "string", - "title": "id" - }, - "entities": { - "description": "Entities associated with this action", - "type": "object", - "title": "entities", - "additionalProperties": { - "$ref": "#/definitions/botframework.json/definitions/Entity" - } - } - } - }, - "Activity": { - "description": "An Activity is the basic communication type for the Bot Framework 3.0 protocol.", - "title": "Activity", - "type": "object", - "properties": { - "type": { - "description": "Contains the activity type. Possible values include: 'message', 'contactRelationUpdate',\n'conversationUpdate', 'typing', 'endOfConversation', 'event', 'invoke', 'deleteUserData',\n'messageUpdate', 'messageDelete', 'installationUpdate', 'messageReaction', 'suggestion',\n'trace', 'handoff'", - "type": "string", - "title": "type" - }, - "id": { - "description": "Contains an ID that uniquely identifies the activity on the channel.", - "type": "string", - "title": "id" - }, - "timestamp": { - "description": "Contains the date and time that the message was sent, in UTC, expressed in ISO-8601 format.", - "type": "string", - "format": "date-time", - "title": "timestamp" - }, - "localTimestamp": { - "description": "Contains the date and time that the message was sent, in local time, expressed in ISO-8601\nformat.\nFor example, 2016-09-23T13:07:49.4714686-07:00.", - "type": "string", - "format": "date-time", - "title": "localTimestamp" - }, - "localTimezone": { - "description": "Contains the name of the timezone in which the message, in local time, expressed in IANA Time\nZone database format.\nFor example, America/Los_Angeles.", - "type": "string", - "title": "localTimezone" - }, - "serviceUrl": { - "description": "Contains the URL that specifies the channel's service endpoint. Set by the channel.", - "type": "string", - "title": "serviceUrl" - }, - "channelId": { - "description": "Contains an ID that uniquely identifies the channel. Set by the channel.", - "type": "string", - "title": "channelId" - }, - "from": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "description": "Identifies the sender of the message.", - "title": "from" - }, - "conversation": { - "$ref": "#/definitions/botframework.json/definitions/ConversationAccount", - "description": "Identifies the conversation to which the activity belongs.", - "title": "conversation" - }, - "recipient": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "description": "Identifies the recipient of the message.", - "title": "recipient" - }, - "textFormat": { - "description": "Format of text fields Default:markdown. Possible values include: 'markdown', 'plain', 'xml'", - "type": "string", - "title": "textFormat" - }, - "attachmentLayout": { - "description": "The layout hint for multiple attachments. Default: list. Possible values include: 'list',\n'carousel'", - "type": "string", - "title": "attachmentLayout" - }, - "membersAdded": { - "description": "The collection of members added to the conversation.", - "type": "array", - "title": "membersAdded", - "items": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount" - } - }, - "membersRemoved": { - "description": "The collection of members removed from the conversation.", - "type": "array", - "title": "membersRemoved", - "items": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount" - } - }, - "reactionsAdded": { - "description": "The collection of reactions added to the conversation.", - "type": "array", - "title": "reactionsAdded", - "items": { - "$ref": "#/definitions/botframework.json/definitions/MessageReaction" - } - }, - "reactionsRemoved": { - "description": "The collection of reactions removed from the conversation.", - "type": "array", - "title": "reactionsRemoved", - "items": { - "$ref": "#/definitions/botframework.json/definitions/MessageReaction" - } - }, - "topicName": { - "description": "The updated topic name of the conversation.", - "type": "string", - "title": "topicName" - }, - "historyDisclosed": { - "description": "Indicates whether the prior history of the channel is disclosed.", - "type": "boolean", - "title": "historyDisclosed" - }, - "locale": { - "description": "A locale name for the contents of the text field.\nThe locale name is a combination of an ISO 639 two- or three-letter culture code associated\nwith a language\nand an ISO 3166 two-letter subculture code associated with a country or region.\nThe locale name can also correspond to a valid BCP-47 language tag.", - "type": "string", - "title": "locale" - }, - "text": { - "description": "The text content of the message.", - "type": "string", - "title": "text" - }, - "speak": { - "description": "The text to speak.", - "type": "string", - "title": "speak" - }, - "inputHint": { - "description": "Indicates whether your bot is accepting,\nexpecting, or ignoring user input after the message is delivered to the client. Possible\nvalues include: 'acceptingInput', 'ignoringInput', 'expectingInput'", - "type": "string", - "title": "inputHint" - }, - "summary": { - "description": "The text to display if the channel cannot render cards.", - "type": "string", - "title": "summary" - }, - "suggestedActions": { - "description": "The suggested actions for the activity.", - "$ref": "#/definitions/botframework.json/definitions/SuggestedActions", - "title": "suggestedActions" - }, - "attachments": { - "description": "Attachments", - "type": "array", - "title": "attachments", - "items": { - "$ref": "#/definitions/botframework.json/definitions/Attachment" - } - }, - "entities": { - "description": "Represents the entities that were mentioned in the message.", - "type": "array", - "title": "entities", - "items": { - "$ref": "#/definitions/botframework.json/definitions/Entity" - } - }, - "channelData": { - "description": "Contains channel-specific content.", - "title": "channelData" - }, - "action": { - "description": "Indicates whether the recipient of a contactRelationUpdate was added or removed from the\nsender's contact list.", - "type": "string", - "title": "action" - }, - "replyToId": { - "description": "Contains the ID of the message to which this message is a reply.", - "type": "string", - "title": "replyToId" - }, - "label": { - "description": "A descriptive label for the activity.", - "type": "string", - "title": "label" - }, - "valueType": { - "description": "The type of the activity's value object.", - "type": "string", - "title": "valueType" - }, - "value": { - "description": "A value that is associated with the activity.", - "title": "value" - }, - "name": { - "description": "The name of the operation associated with an invoke or event activity.", - "type": "string", - "title": "name" - }, - "relatesTo": { - "description": "A reference to another conversation or activity.", - "$ref": "#/definitions/botframework.json/definitions/ConversationReference", - "title": "relatesTo" - }, - "code": { - "description": "The a code for endOfConversation activities that indicates why the conversation ended.\nPossible values include: 'unknown', 'completedSuccessfully', 'userCancelled', 'botTimedOut',\n'botIssuedInvalidMessage', 'channelFailed'", - "type": "string", - "title": "code" - }, - "expiration": { - "description": "The time at which the activity should be considered to be \"expired\" and should not be\npresented to the recipient.", - "type": "string", - "format": "date-time", - "title": "expiration" - }, - "importance": { - "description": "The importance of the activity. Possible values include: 'low', 'normal', 'high'", - "type": "string", - "title": "importance" - }, - "deliveryMode": { - "description": "A delivery hint to signal to the recipient alternate delivery paths for the activity.\nThe default delivery mode is \"default\". Possible values include: 'normal', 'notification'", - "type": "string", - "title": "deliveryMode" - }, - "listenFor": { - "description": "List of phrases and references that speech and language priming systems should listen for", - "type": "array", - "title": "listenFor", - "items": { - "type": "string", - "title": "Phrase", - "description": "Phrase to listen for." - } - }, - "textHighlights": { - "description": "The collection of text fragments to highlight when the activity contains a ReplyToId value.", - "type": "array", - "title": "textHighlights", - "items": { - "$ref": "#/definitions/botframework.json/definitions/TextHighlight" - } - }, - "semanticAction": { - "$ref": "#/definitions/botframework.json/definitions/SemanticAction", - "description": "An optional programmatic action accompanying this request", - "title": "semanticAction" - } - } - } - } - } - } -} From 01525f6c4a72be12ed64388f932fca6773f7fcd1 Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Mon, 16 Oct 2023 15:59:54 -0700 Subject: [PATCH 07/17] sync with the changes from local copy --- .../SharePoint/SharePointActivityHandler.cs | 19 +++-- .../SharePoint/AceData.cs | 20 +++-- .../SharePoint/Actions/Action.cs | 30 -------- .../ConfirmationDialog.cs} | 19 ++--- .../SharePoint/Actions/ExecuteAction.cs | 46 ++++++++++++ .../SharePoint/Actions/ExternalLinkAction.cs | 41 +++++++++++ .../Actions/ExternalLinkActionParameters.cs | 38 ++++++++++ .../SharePoint/Actions/FocusParameters.cs | 66 +++++++++++++++++ .../SharePoint/Actions/GetLocationAction.cs | 41 +++++++++++ .../Actions/GetLocationActionParameters.cs | 31 ++++++++ .../SharePoint/Actions/IAction.cs | 19 +++++ .../Actions/ICardActionParameters.cs | 19 +++++ .../Actions/IOnCardSelectionAction.cs | 19 +++++ .../SharePoint/Actions/Location.cs | 54 ++++++++++++++ .../SharePoint/Actions/QuickViewAction.cs | 40 ++++++++++ .../Actions/QuickViewActionParameters.cs | 31 ++++++++ .../SharePoint/Actions/SelectMediaAction.cs | 41 +++++++++++ .../Actions/SelectMediaActionParameters.cs | 73 +++++++++++++++++++ .../SharePoint/Actions/ShowLocationAction.cs | 42 +++++++++++ .../Actions/ShowLocationActionParameters.cs | 31 ++++++++ .../SharePoint/Actions/SubmitAction.cs | 45 ++++++++++++ .../CardView/CardButtonComponent.cs | 2 +- .../CardView/CardSearchBoxButton.cs | 2 +- .../CardView/CardSearchFooterComponent.cs | 2 +- .../CardView/CardTextInputBaseButton.cs | 2 +- .../SharePoint/CardView/ICardButtonBase.cs | 2 +- .../CardViewHandleActionResponse.cs | 2 +- .../{CardViewData.cs => CardViewResponse.cs} | 22 +++++- .../SharePoint/GetCardViewResponse.cs | 67 ----------------- .../GetPropertyPaneConfigurationResponse.cs | 2 +- .../PropertyPaneCheckboxProperties.cs | 2 +- .../PropertyPaneChoiceGroupIconProperties.cs | 2 +- .../PropertyPaneChoiceGroupImageSize.cs | 2 +- .../PropertyPaneChoiceGroupOption.cs | 2 +- .../PropertyPaneChoiceGroupProperties.cs | 2 +- .../SharePoint/PropertyPaneDropDownOption.cs | 2 +- .../PropertyPaneDropDownProperties.cs | 2 +- .../SharePoint/PropertyPaneGroup.cs | 2 +- .../SharePoint/PropertyPaneGroupField.cs | 9 +-- .../SharePoint/PropertyPaneLabelProperties.cs | 2 +- .../PropertyPaneLinkPopupWindowProperties.cs | 2 +- .../SharePoint/PropertyPaneLinkProperties.cs | 2 +- .../SharePoint/PropertyPanePage.cs | 2 +- .../SharePoint/PropertyPanePageHeader.cs | 2 +- .../PropertyPaneSliderProperties.cs | 2 +- .../PropertyPaneTextFieldProperties.cs | 2 +- .../PropertyPaneToggleProperties.cs | 2 +- .../QuickViewHandleActionResponse.cs | 2 +- ...ckViewResponse.cs => QuickViewResponse.cs} | 32 +++++--- .../SharePointActivityHandlerTests.cs | 12 +-- 50 files changed, 788 insertions(+), 167 deletions(-) delete mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/Action.cs rename libraries/Microsoft.Bot.Schema/SharePoint/{ActionButton.cs => Actions/ConfirmationDialog.cs} (54%) create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExecuteAction.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkAction.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkActionParameters.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/FocusParameters.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationAction.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationActionParameters.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/IAction.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/ICardActionParameters.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/IOnCardSelectionAction.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/Location.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewAction.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewActionParameters.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaAction.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaActionParameters.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationAction.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationActionParameters.cs create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/SubmitAction.cs rename libraries/Microsoft.Bot.Schema/SharePoint/{CardViewData.cs => CardViewResponse.cs} (57%) delete mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs rename libraries/Microsoft.Bot.Schema/SharePoint/{GetQuickViewResponse.cs => QuickViewResponse.cs} (54%) diff --git a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs index a832c3dd1c..c65ff13549 100644 --- a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs +++ b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs @@ -56,8 +56,9 @@ protected override async Task OnInvokeActivityAsync(ITurnContext return CreateInvokeResponse(await OnSharePointTaskGetPropertyPaneConfigurationAsync(turnContext, SafeCast(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false)); case "cardExtension/setPropertyPaneConfiguration": - await OnSharePointTaskSetPropertyPaneConfigurationAsync(turnContext, SafeCast(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false); - return CreateInvokeResponse(); + BaseHandleActionResponse setPropPaneConfigResponse = await OnSharePointTaskSetPropertyPaneConfigurationAsync(turnContext, SafeCast(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false); + ValidateSetPropertyPaneConfigurationResponse(setPropPaneConfigResponse); + return CreateInvokeResponse(setPropPaneConfigResponse); case "cardExtension/handleAction": return CreateInvokeResponse(await OnSharePointTaskHandleActionAsync(turnContext, SafeCast(turnContext.Activity.Value), cancellationToken).ConfigureAwait(false)); @@ -80,7 +81,7 @@ protected override async Task OnInvokeActivityAsync(ITurnContext /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. /// A Card View Response for the request. - protected virtual Task OnSharePointTaskGetCardViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + protected virtual Task OnSharePointTaskGetCardViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { throw new InvokeResponseException(HttpStatusCode.NotImplemented); } @@ -93,7 +94,7 @@ protected virtual Task OnSharePointTaskGetCardViewAsync(ITu /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. /// A Quick View Response for the request. - protected virtual Task OnSharePointTaskGetQuickViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + protected virtual Task OnSharePointTaskGetQuickViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { throw new InvokeResponseException(HttpStatusCode.NotImplemented); } @@ -119,7 +120,7 @@ protected virtual Task OnSharePointTaskGet /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. /// An empty response. - protected virtual Task OnSharePointTaskSetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + protected virtual Task OnSharePointTaskSetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { throw new InvokeResponseException(HttpStatusCode.NotImplemented); } @@ -152,5 +153,13 @@ private static T SafeCast(object value) return obj.ToObject(); } + + private void ValidateSetPropertyPaneConfigurationResponse(BaseHandleActionResponse response) + { + if (response is QuickViewHandleActionResponse) + { + throw new InvokeResponseException(HttpStatusCode.InternalServerError, "Response for SetPropertyPaneConfiguration action can't be of QuickView type."); + } + } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs b/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs index 6bdd95773e..da121f987c 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs @@ -29,11 +29,6 @@ public AceData() /// public enum AceCardSize { - /// - /// Small - /// - Small, - /// /// Medium /// @@ -74,11 +69,26 @@ public enum AceCardSize [JsonProperty(PropertyName = "title")] public string Title { get; set; } + /// + /// Gets or Sets the description of type . + /// + /// This value is the description of the adaptive card extension. + [JsonProperty(PropertyName = "description")] + public string Description { get; set; } + /// /// Gets or Sets the icon property of type . /// /// This value is the icon of the adaptive card extension. [JsonProperty(PropertyName = "iconProperty")] public string IconProperty { get; set; } + + /// + /// Gets or Sets the property bag of type . + /// + /// This value is the property bag of the adaptive card extension. + [JsonProperty(PropertyName = "properties")] +#pragma warning disable CA2227 + public JObject Properties { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/Action.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/Action.cs deleted file mode 100644 index a23ae5d54b..0000000000 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/Action.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Text; -using Newtonsoft.Json; - -namespace Microsoft.Bot.Schema.SharePoint -{ - /// - /// Initializes a new instance of the class. - /// - public class Action - { - /// - /// Gets or Sets the type of type . - /// - /// This value is the type of the action. - [JsonProperty(PropertyName = "type")] - public string Type { get; set; } - - /// - /// Gets or Sets the action parameters of type . - /// - /// This value is the parameters of the action. - [JsonProperty(PropertyName = "parameters")] - public ActionParameters Parameters { get; set; } - } -} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/ActionButton.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ConfirmationDialog.cs similarity index 54% rename from libraries/Microsoft.Bot.Schema/SharePoint/ActionButton.cs rename to libraries/Microsoft.Bot.Schema/SharePoint/Actions/ConfirmationDialog.cs index 5aeed58649..ed311ffcae 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/ActionButton.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ConfirmationDialog.cs @@ -2,6 +2,7 @@ // Licensed under the MIT License. using System; +using System.Collections; using System.Collections.Generic; using System.Text; using Newtonsoft.Json; @@ -9,14 +10,14 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint action button. + /// SharePoint Confirmation Dialog object. /// - public class ActionButton + public class ConfirmationDialog { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - public ActionButton() + public ConfirmationDialog() { // Do nothing } @@ -24,15 +25,15 @@ public ActionButton() /// /// Gets or Sets the title of type . /// - /// This value is the title of the action button. + /// This value is the title to display. [JsonProperty(PropertyName = "title")] public string Title { get; set; } /// - /// Gets or Sets the action of type . + /// Gets or Sets the message of type . /// - /// This value is the action of the action button. - [JsonProperty(PropertyName = "action")] - public Action Action { get; set; } + /// This value is the message to display. + [JsonProperty(PropertyName = "message")] + public string Message { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExecuteAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExecuteAction.cs new file mode 100644 index 0000000000..73f941bf58 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExecuteAction.cs @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Action.Execute. + /// + public class ExecuteAction : IAction + { +#pragma warning disable CA1823 // Avoid unused private fields +#pragma warning disable CS0414 // The field 'ExecuteAction.type' is assigned but its value is never used + [JsonProperty(PropertyName = "type")] + private string type = "Execute"; +#pragma warning restore CS0414 // The field 'ExecuteAction.type' is assigned but its value is never used +#pragma warning restore CA1823 // Avoid unused private fields + + /// + /// Initializes a new instance of the class. + /// + public ExecuteAction() + { + // Do nothing + } + + /// + /// Gets or Sets the action parameters of type . + /// + /// This value is the parameters of the action. + [JsonProperty(PropertyName = "parameters")] + #pragma warning disable CA2227 + public Dictionary Parameters { get; set; } + + /// + /// Gets or Sets the verb associated with this action of type . + /// + /// This value is the verb associated with the action. + [JsonProperty(PropertyName = "verb")] + public string Verb { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkAction.cs new file mode 100644 index 0000000000..b8118327ac --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkAction.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint external link action. + /// + public class ExternalLinkAction : IAction, IOnCardSelectionAction + { +#pragma warning disable CA1823 // Avoid unused private fields +#pragma warning disable CS0414 // The field 'ExternalLinkAction.type' is assigned but its value is never used + [JsonProperty(PropertyName = "type")] + private string type = "ExternalLink"; +#pragma warning restore CS0414 // The field 'ExternalLinkAction.type' is assigned but its value is never used +#pragma warning restore CA1823 // Avoid unused private fields + + /// + /// Initializes a new instance of the class. + /// + public ExternalLinkAction() + { + // Do nothing + } + + /// + /// Gets or Sets the action parameters of type . + /// + /// This value is the parameters of the action. + [JsonProperty(PropertyName = "parameters")] + public ExternalLinkActionParameters Parameters { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkActionParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkActionParameters.cs new file mode 100644 index 0000000000..a0b0851aa8 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkActionParameters.cs @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint parameters for an External Link action. + /// + public class ExternalLinkActionParameters + { + /// + /// Initializes a new instance of the class. + /// + public ExternalLinkActionParameters() + { + // Do nothing + } + + /// + /// Gets or Sets a value indicating whether this is a teams deep link property of type . + /// + /// This value indicates whether this is a Teams Deep Link. + [JsonProperty(PropertyName = "isTeamsDeepLink")] + public bool IsTeamsDeepLink { get; set; } + + /// + /// Gets or Sets the target of type . + /// + /// This value is external link to navigate to. + [JsonProperty(PropertyName = "target")] + public string Target { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/FocusParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/FocusParameters.cs new file mode 100644 index 0000000000..847c14ddeb --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/FocusParameters.cs @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint focus parameters. + /// + public class FocusParameters + { + /// + /// Initializes a new instance of the class. + /// + public FocusParameters() + { + // Do nothing + } + + /// + /// This enum contains the different types of aria live options available in the SPFx framework. + /// + public enum AriaLiveOption + { + /// + /// Polite + /// + [EnumMember(Value = "polite")] + Polite, + + /// + /// Assertive + /// + [EnumMember(Value = "assertive")] + Assertive, + + /// + /// Off + /// + [EnumMember(Value = "off")] + Off + } + + /// + /// Gets or Sets the focus target of type . + /// + /// This value is the focus target. + [JsonProperty(PropertyName = "focusTarget")] + public string FocusTarget { get; set; } + + /// + /// Gets or Sets the aria live property of type . + /// + /// This value sets the accessibility reading of the contents within the focus target. + [JsonProperty(PropertyName = "ariaLive")] + [JsonConverter(typeof(StringEnumConverter))] + public AriaLiveOption AriaLive { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationAction.cs new file mode 100644 index 0000000000..c0c3a39a7f --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationAction.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint get location action. + /// + public class GetLocationAction : IAction, IOnCardSelectionAction + { +#pragma warning disable CA1823 // Avoid unused private fields +#pragma warning disable CS0414 // The field 'GetLocationAction.type' is assigned but its value is never used + [JsonProperty(PropertyName = "type")] + private string type = "VivaAction.GetLocation"; +#pragma warning restore CS0414 // The field 'GetLocationAction.type' is assigned but its value is never used +#pragma warning restore CA1823 // Avoid unused private fields + + /// + /// Initializes a new instance of the class. + /// + public GetLocationAction() + { + // Do nothing + } + + /// + /// Gets or Sets the action parameters of type . + /// + /// This value is the parameters of the action. + [JsonProperty(PropertyName = "parameters")] + public GetLocationActionParameters Parameters { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationActionParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationActionParameters.cs new file mode 100644 index 0000000000..5519eeafc2 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationActionParameters.cs @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint parameters for a Get Location action. + /// + public class GetLocationActionParameters + { + /// + /// Initializes a new instance of the class. + /// + public GetLocationActionParameters() + { + // Do nothing + } + + /// + /// Gets or Sets a value indicating whether the location on the map can be chosen of type . + /// + /// This value indicates whether a location on the map can be chosen. + [JsonProperty(PropertyName = "ChooseLocationOnMap")] + public bool ChooseLocationOnMap { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/IAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/IAction.cs new file mode 100644 index 0000000000..c0bec1ae34 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/IAction.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Interface for actions. + /// +#pragma warning disable CA1040 // Avoid empty interfaces + public interface IAction +#pragma warning restore CA1040 // Avoid empty interfaces + { + // This interface has no common methods. + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ICardActionParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ICardActionParameters.cs new file mode 100644 index 0000000000..d19327323f --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ICardActionParameters.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Interface for card action parameters. + /// +#pragma warning disable CA1040 // Avoid empty interfaces + public interface ICardActionParameters +#pragma warning restore CA1040 // Avoid empty interfaces + { + // This interface has no common methods. + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/IOnCardSelectionAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/IOnCardSelectionAction.cs new file mode 100644 index 0000000000..4ff488cee3 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/IOnCardSelectionAction.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Interface for action upon card selection. + /// +#pragma warning disable CA1040 // Avoid empty interfaces + public interface IOnCardSelectionAction +#pragma warning restore CA1040 // Avoid empty interfaces + { + // This interface has no common methods. + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/Location.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/Location.cs new file mode 100644 index 0000000000..2f84cbd654 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/Location.cs @@ -0,0 +1,54 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using System.Xml.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Sharepoint Location object. + /// + public class Location + { + /// + /// Initializes a new instance of the class. + /// + public Location() + { + // Do nothing + } + + /// + /// Gets or Sets latitutde of the location of type . + /// + /// This value is the latitude of the location. + [JsonProperty(PropertyName = "latitude")] + public int Latitude { get; set; } + + /// + /// Gets or Sets longitude of the location of type . + /// + /// This value is the longitude of the location. + [JsonProperty(PropertyName = "longitude")] + public int Longitude { get; set; } + + /// + /// Gets or Sets timestamp of the location of type . + /// + /// This value is the timestamp of the location. + [JsonProperty(PropertyName = "timestamp")] + public int Timestamp { get; set; } + + /// + /// Gets or Sets accuracy of the location of type . + /// + /// This value is the accuracy of the location. + [JsonProperty(PropertyName = "accuracy")] + public int Accuracy { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewAction.cs new file mode 100644 index 0000000000..15a3833bf6 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewAction.cs @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint Quick View action. + /// + public class QuickViewAction : IAction, IOnCardSelectionAction + { +#pragma warning disable CA1823 // Avoid unused private fields +#pragma warning disable CS0414 // The field 'QuickViewAction.type' is assigned but its value is never used + [JsonProperty(PropertyName = "type")] + private string type = "QuickView"; +#pragma warning restore CS0414 // The field 'QuickViewAction.type' is assigned but its value is never used +#pragma warning restore CA1823 // Avoid unused private fields + /// + /// Initializes a new instance of the class. + /// + public QuickViewAction() + { + // Do nothing + } + + /// + /// Gets or Sets the action parameters of type . + /// + /// This value is the parameters of the action. + [JsonProperty(PropertyName = "parameters")] + public QuickViewActionParameters Parameters { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewActionParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewActionParameters.cs new file mode 100644 index 0000000000..507685e31a --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewActionParameters.cs @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint parameters for an quick view action. + /// + public class QuickViewActionParameters + { + /// + /// Initializes a new instance of the class. + /// + public QuickViewActionParameters() + { + // Do nothing + } + + /// + /// Gets or Sets the quick view id to be opened as part of the action of type . + /// + /// This value is quick view id to open. + [JsonProperty(PropertyName = "view")] + public string View { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaAction.cs new file mode 100644 index 0000000000..f1915a92ad --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaAction.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint select media action. + /// + public class SelectMediaAction : IAction, IOnCardSelectionAction + { +#pragma warning disable CA1823 // Avoid unused private fields +#pragma warning disable CS0414 // The field 'SelectMediaAction.type' is assigned but its value is never used + [JsonProperty(PropertyName = "type")] + private string type = "VivaAction.SelectMedia"; +#pragma warning restore CS0414 // The field 'SelectMediaAction.type' is assigned but its value is never used +#pragma warning restore CA1823 // Avoid unused private fields + + /// + /// Initializes a new instance of the class. + /// + public SelectMediaAction() + { + // Do nothing + } + + /// + /// Gets or Sets the action parameters of type . + /// + /// This value is the parameters of the action. + [JsonProperty(PropertyName = "parameters")] + public SelectMediaActionParameters Parameters { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaActionParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaActionParameters.cs new file mode 100644 index 0000000000..cb62ec013c --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaActionParameters.cs @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint parameters for a select media action. + /// + public class SelectMediaActionParameters + { + /// + /// Initializes a new instance of the class. + /// + public SelectMediaActionParameters() + { + // Do nothing + } + + /// + /// This enum contains the different types of media that can be selected. + /// + public enum MediaTypeOption + { + /// + /// Image + /// + Image = 1, + + /// + /// Audio + /// + Audio = 4, + + /// + /// Document + /// + Document = 8 + } + + /// + /// Gets or Sets type of media to be selected of type . + /// + /// This value is the type of media to be selected. + [JsonProperty(PropertyName = "mediaType")] + public MediaTypeOption MediaType { get; set; } + + /// + /// Gets or sets a value indicating whether the allow multiple capture property is enabled of type . + /// + /// This value indicates whether multiple files can be selected. + [JsonProperty(PropertyName = "allowMultipleCapture")] + public bool AllowMultipleCapture { get; set; } + + /// + /// Gets or Sets the max size per file selected of type . + /// + /// This value is the max size per file selected. + [JsonProperty(PropertyName = "maxSizePerFile")] + public int MaxSizePerFile { get; set; } + + /// + /// Gets or Sets the supported file formats of select media action of type . + /// + /// This value is the supported file formats of select media action. + [JsonProperty(PropertyName = "supportedFileFormats")] + public IEnumerable SupportedFileFormats { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationAction.cs new file mode 100644 index 0000000000..080d98231b --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationAction.cs @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint show location action. + /// + public class ShowLocationAction : IAction, IOnCardSelectionAction + { +#pragma warning disable CA1823 // Avoid unused private fields +#pragma warning disable CA1823 // Avoid unused private fields +#pragma warning disable CS0414 // The field 'ShowLocationAction.type' is assigned but its value is never used + [JsonProperty(PropertyName = "type")] + private string type = "VivaAction.ShowLocation"; +#pragma warning restore CS0414 // The field 'ShowLocationAction.type' is assigned but its value is never used +#pragma warning restore CA1823 // Avoid unused private fields +#pragma warning restore CA1823 // Avoid unused private fields + /// + /// Initializes a new instance of the class. + /// + public ShowLocationAction() + { + // Do nothing + } + + /// + /// Gets or Sets the action parameters of type . + /// + /// This value is the parameters of the action. + [JsonProperty(PropertyName = "parameters")] + public ShowLocationActionParameters Parameters { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationActionParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationActionParameters.cs new file mode 100644 index 0000000000..cf695d43e0 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationActionParameters.cs @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// SharePoint parameters for a show location action. + /// + public class ShowLocationActionParameters + { + /// + /// Initializes a new instance of the class. + /// + public ShowLocationActionParameters() + { + // Do nothing + } + + /// + /// Gets or Sets the location coordinates of type . + /// + /// This value is the location to be shown. + [JsonProperty(PropertyName = "locationCoordinates")] + public Location LocationCoordinates { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SubmitAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SubmitAction.cs new file mode 100644 index 0000000000..4e34a35852 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SubmitAction.cs @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Action.Submit. + /// + public class SubmitAction : IAction + { +#pragma warning disable CA1823 // Avoid unused private fields +#pragma warning disable CS0414 // The field 'SubmitAction.type' is assigned but its value is never used + [JsonProperty(PropertyName = "type")] + private string type = "Submit"; +#pragma warning restore CS0414 // The field 'SubmitAction.type' is assigned but its value is never used +#pragma warning restore CA1823 // Avoid unused private fields + /// + /// Initializes a new instance of the class. + /// + public SubmitAction() + { + // Do nothing + } + + /// + /// Gets or Sets the action parameters of type . + /// + /// This value is the parameters of the action. + [JsonProperty(PropertyName = "parameters")] + #pragma warning disable CA2227 + public Dictionary Parameters { get; set; } + + /// + /// Gets or Sets confirmation dialog associated with this action of type . + /// + /// This value is the confirmation dialog associated with this action. + [JsonProperty(PropertyName = "confirmationDialog")] + public ConfirmationDialog ConfirmationDialog { get; set; } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs index e30aed914e..7c4d32a983 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs @@ -44,7 +44,7 @@ public CardButtonComponent() /// /// Button's action. [JsonProperty(PropertyName = "action")] - public Action Action { get; set; } + public IAction Action { get; set; } /// /// Gets or sets the text to display. diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxButton.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxButton.cs index 3f8caaf583..1fa53a5a1e 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxButton.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxButton.cs @@ -18,7 +18,7 @@ public class CardSearchBoxButton : ICardButtonBase /// /// Button's action. [JsonProperty(PropertyName = "action")] - public Action Action { get; set; } + public IAction Action { get; set; } /// /// Gets or sets unique Id of the button. diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs index 6e2f8a3cb1..a084bf9b8b 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs @@ -54,6 +54,6 @@ public CardSearchFooterComponent() /// /// Selection action. [JsonProperty(PropertyName = "onSelection")] - public Action OnSelection { get; set; } + public IAction OnSelection { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputBaseButton.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputBaseButton.cs index ed5364087c..0511e72b19 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputBaseButton.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputBaseButton.cs @@ -18,7 +18,7 @@ public class CardTextInputBaseButton : ICardButtonBase /// /// Button's action. [JsonProperty(PropertyName = "action")] - public Action Action { get; set; } + public IAction Action { get; set; } /// /// Gets or sets unique Id of the button. diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/ICardButtonBase.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/ICardButtonBase.cs index c3e48f1470..9cb8f88f0c 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/ICardButtonBase.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/ICardButtonBase.cs @@ -18,7 +18,7 @@ public interface ICardButtonBase /// /// Button's action. [JsonProperty(PropertyName = "action")] - public Action Action { get; set; } + public IAction Action { get; set; } /// /// Gets or sets unique Id of the button. diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardViewHandleActionResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardViewHandleActionResponse.cs index 634c237273..aa4558cbb1 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardViewHandleActionResponse.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardViewHandleActionResponse.cs @@ -25,6 +25,6 @@ public class CardViewHandleActionResponse : BaseHandleActionResponse /// /// Card view render arguments. [JsonProperty(PropertyName = "renderArguments")] - public new GetCardViewResponse RenderArguments { get; set; } + public new CardViewResponse RenderArguments { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardViewResponse.cs similarity index 57% rename from libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs rename to libraries/Microsoft.Bot.Schema/SharePoint/CardViewResponse.cs index cf70670d8f..4a1907bf62 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardViewData.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardViewResponse.cs @@ -12,16 +12,23 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// SharePoint Card View Data object. /// - public class CardViewData + public class CardViewResponse { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - public CardViewData() + public CardViewResponse() { // Do nothing } + /// + /// Gets or Sets AceData for the card view of type . + /// + /// This value is the ace data of the card view response. + [JsonProperty(PropertyName = "aceData")] + public AceData AceData { get; set; } + /// /// Gets or sets the card view configuration. /// @@ -34,6 +41,13 @@ public CardViewData() /// /// Action to invoke. [JsonProperty(PropertyName = "onCardSelection")] - public Action OnCardSelection { get; set; } + public IOnCardSelectionAction OnCardSelection { get; set; } + + /// + /// Gets or Sets the view Id of type . + /// + /// This value is the view id of the card view. + [JsonProperty(PropertyName = "viewId")] + public string ViewId { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs deleted file mode 100644 index 0d29ab772e..0000000000 --- a/libraries/Microsoft.Bot.Schema/SharePoint/GetCardViewResponse.cs +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Runtime.Serialization; -using System.Text; -using Microsoft.Bot.Schema.Teams; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using Newtonsoft.Json.Linq; - -namespace Microsoft.Bot.Schema.SharePoint -{ - /// - /// SharePoint GetCardView response object. - /// - public class GetCardViewResponse - { - /// - /// Initializes a new instance of the class. - /// - /// Template type of the card view. - public GetCardViewResponse(CardViewTemplateType templateType) - { - this.TemplateType = templateType; - } - - /// - /// This enum contains the different types of card templates available in the SPFx framework. - /// - public enum CardViewTemplateType - { - /// - /// Primary text card view - /// - PrimaryTextCardView, - - /// - /// Image card view - /// - ImageCardView - } - - /// - /// Gets or Sets the template type of the card view of type enum. - /// - /// This value is the template type of the card view response. - [JsonProperty(PropertyName = "templateType")] - [JsonConverter(typeof(StringEnumConverter))] - public CardViewTemplateType TemplateType { get; set; } - - /// - /// Gets or Sets AceData for the card view of type . - /// - /// This value is the ace data of the card view response. - [JsonProperty(PropertyName = "aceData")] - public AceData AceData { get; set; } - - /// - /// Gets or Sets CardViewData of type . - /// - /// This value is the data of the card view response. - [JsonProperty(PropertyName = "data")] - public CardViewData Data { get; set; } - } -} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs index fbb747ac23..3a76f020c7 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/GetPropertyPaneConfigurationResponse.cs @@ -14,7 +14,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint GetQuickView response object. + /// SharePoint GetPropertyPaneConfiguration response object. /// public class GetPropertyPaneConfigurationResponse { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneCheckboxProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneCheckboxProperties.cs index 19caddb899..d394f06304 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneCheckboxProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneCheckboxProperties.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane checkbox properties object. /// public class PropertyPaneCheckboxProperties : IPropertyPaneFieldProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupIconProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupIconProperties.cs index bac6ef5b98..c8f4522c86 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupIconProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupIconProperties.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane choice group icon properties object. /// public class PropertyPaneChoiceGroupIconProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupImageSize.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupImageSize.cs index 8dfd0ed6b6..2dcc4cca8a 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupImageSize.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupImageSize.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane choice group image size object. /// public class PropertyPaneChoiceGroupImageSize { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs index 3644f97662..764a39d959 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs @@ -13,7 +13,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane choice group option object. /// public class PropertyPaneChoiceGroupOption { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupProperties.cs index a0b81a9b3b..77d433a7a4 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupProperties.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane choice group properties object. /// public class PropertyPaneChoiceGroupProperties : IPropertyPaneFieldProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownOption.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownOption.cs index 4c5ce443ef..60440e7fac 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownOption.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownOption.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane drop down option object. /// public class PropertyPaneDropDownOption { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs index 9f436d52a5..7c69b395c4 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane drop down properties object. /// public class PropertyPaneDropDownProperties : IPropertyPaneFieldProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroup.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroup.cs index 5e8e58c519..f59f10c4b6 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroup.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroup.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane group object. /// public class PropertyPaneGroup : IPropertyPaneGroupOrConditionalGroup { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroupField.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroupField.cs index 017be2bed3..b05e5eb98a 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroupField.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneGroupField.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane group field object. /// public class PropertyPaneGroupField { @@ -102,12 +102,5 @@ public enum FieldType /// This value is the target property of the property pane field. [JsonProperty(PropertyName = "targetProperty")] public string TargetProperty { get; set; } - - /// - /// Gets or Sets a value indicating whether group name should be hidden of type . - /// - /// This value indicates whether the property pane field group name is hidden. - [JsonProperty(PropertyName = "isGroupNameHidden")] - public bool IsGroupNameHidden { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLabelProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLabelProperties.cs index 52061aa706..b27aa7159b 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLabelProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLabelProperties.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane label properties object. /// public class PropertyPaneLabelProperties : IPropertyPaneFieldProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs index 4e26ecb825..79f4318749 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs @@ -13,7 +13,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane link pop up window properties object. /// public class PropertyPaneLinkPopupWindowProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs index d25925efd4..f65b6d0fbc 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane link properties object. /// public class PropertyPaneLinkProperties : IPropertyPaneFieldProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePage.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePage.cs index e258efafa1..1a9ae76a43 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePage.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePage.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane page object. /// public class PropertyPanePage { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePageHeader.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePageHeader.cs index f0f8133659..45b7086d34 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePageHeader.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPanePageHeader.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane page header object. /// public class PropertyPanePageHeader { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs index 92cd75800d..5deb7d2c05 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane slider properties object. /// public class PropertyPaneSliderProperties : IPropertyPaneFieldProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs index dcd84d1f0e..d843501e4f 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane text field properties object. /// public class PropertyPaneTextFieldProperties : IPropertyPaneFieldProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs index 4ae0f509bf..ef25244582 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs @@ -12,7 +12,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint Quick View Data object. + /// SharePoint property pane toggle properties object. /// public class PropertyPaneToggleProperties : IPropertyPaneFieldProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewHandleActionResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewHandleActionResponse.cs index 891240a768..dd89c9ce13 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewHandleActionResponse.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewHandleActionResponse.cs @@ -25,6 +25,6 @@ public class QuickViewHandleActionResponse : BaseHandleActionResponse /// /// Card view render arguments. [JsonProperty(PropertyName = "renderArguments")] - public new GetQuickViewResponse RenderArguments { get; set; } + public new QuickViewResponse RenderArguments { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs b/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewResponse.cs similarity index 54% rename from libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs rename to libraries/Microsoft.Bot.Schema/SharePoint/QuickViewResponse.cs index e3327dde19..27e1ce417d 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/GetQuickViewResponse.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/QuickViewResponse.cs @@ -16,22 +16,22 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// SharePoint GetQuickView response object. /// - public class GetQuickViewResponse + public class QuickViewResponse { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - public GetQuickViewResponse() + public QuickViewResponse() { // Do nothing } /// - /// Gets or Sets data for the quick view of type . + /// Gets or Sets data for the quick view. /// /// This value is the data of the quick view response. [JsonProperty(PropertyName = "data")] - public QuickViewData Data { get; set; } + public object Data { get; set; } /// /// Gets or Sets data for the quick view template of type . @@ -48,10 +48,24 @@ public GetQuickViewResponse() public string ViewId { get; set; } /// - /// Gets or Sets stackSize of type . + /// Gets or Sets title of type . /// - /// This value is the stack size of the quick view response. - [JsonProperty(PropertyName = "stackSize")] - public int StackSize { get; set; } + /// This value is the title of the quick view response. + [JsonProperty(PropertyName = "title")] + public string Title { get; set; } + + /// + /// Gets or Sets the external link parameters of type . + /// + /// This value is the external link parameters of the quick view response. + [JsonProperty(PropertyName = "externalLink")] + public ExternalLinkActionParameters ExternalLink { get; set; } + + /// + /// Gets or Sets focus parameters of type . + /// + /// This value is the focus parameters of the quick view response. + [JsonProperty(PropertyName = "focusParameters")] + public FocusParameters FocusParameters { get; set; } } } diff --git a/tests/Microsoft.Bot.Builder.Tests/SharePoint/SharePointActivityHandlerTests.cs b/tests/Microsoft.Bot.Builder.Tests/SharePoint/SharePointActivityHandlerTests.cs index a8e51ac3ca..58c0f27c27 100644 --- a/tests/Microsoft.Bot.Builder.Tests/SharePoint/SharePointActivityHandlerTests.cs +++ b/tests/Microsoft.Bot.Builder.Tests/SharePoint/SharePointActivityHandlerTests.cs @@ -190,10 +190,10 @@ private class TestActivityHandler : SharePointActivityHandler public List Record { get; } = new List(); // Invoke - protected override Task OnSharePointTaskGetCardViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + protected override Task OnSharePointTaskGetCardViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { Record.Add(MethodBase.GetCurrentMethod().Name); - return Task.FromResult(new GetCardViewResponse(GetCardViewResponse.CardViewTemplateType.PrimaryTextCardView)); + return Task.FromResult(new CardViewResponse()); } protected override Task OnSharePointTaskGetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) @@ -202,16 +202,16 @@ protected override Task OnSharePointTaskGe return Task.FromResult(new GetPropertyPaneConfigurationResponse()); } - protected override Task OnSharePointTaskGetQuickViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + protected override Task OnSharePointTaskGetQuickViewAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { Record.Add(MethodBase.GetCurrentMethod().Name); - return Task.FromResult(new GetQuickViewResponse()); + return Task.FromResult(new QuickViewResponse()); } - protected override Task OnSharePointTaskSetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) + protected override Task OnSharePointTaskSetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { Record.Add(MethodBase.GetCurrentMethod().Name); - return Task.CompletedTask; + return Task.FromResult(new NoOpHandleActionResponse()); } protected override Task OnSharePointTaskHandleActionAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) From ba15e39b7bd2dfea4e2cbf3405f921ea0397686e Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Mon, 16 Oct 2023 16:05:00 -0700 Subject: [PATCH 08/17] extra comment --- .../SharePoint/SharePointActivityHandler.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs index c65ff13549..0e262d2679 100644 --- a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs +++ b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs @@ -119,7 +119,8 @@ protected virtual Task OnSharePointTaskGet /// The ACE invoke request value payload. /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. - /// An empty response. + /// Card view or no-op action response. + /// The handler will fail with 500 status code if the response is of type . protected virtual Task OnSharePointTaskSetPropertyPaneConfigurationAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { throw new InvokeResponseException(HttpStatusCode.NotImplemented); From 8b31fc3a69d3dd290f71ed297d3921ec4cf0ccac Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Wed, 18 Oct 2023 10:37:11 -0700 Subject: [PATCH 09/17] properties instead of customProperties, sign in card view --- .../SharePoint/AceData.cs | 2 +- .../SharePoint/AceRequest.cs | 10 ++-- .../SharePoint/CardView/CardViewParameters.cs | 46 +++++++++++++++++++ 3 files changed, 52 insertions(+), 6 deletions(-) diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs b/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs index da121f987c..bbe23e73ab 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs @@ -84,7 +84,7 @@ public enum AceCardSize public string IconProperty { get; set; } /// - /// Gets or Sets the property bag of type . + /// Gets or Sets the property bag of type . /// /// This value is the property bag of the adaptive card extension. [JsonProperty(PropertyName = "properties")] diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/AceRequest.cs b/libraries/Microsoft.Bot.Schema/SharePoint/AceRequest.cs index 5e538984c7..75230f5c90 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/AceRequest.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/AceRequest.cs @@ -24,11 +24,11 @@ public AceRequest() /// Initializes a new instance of the class. /// /// ACE request data. - /// ACE properties data. - public AceRequest(object data = default, object customProperties = default) + /// ACE properties data. + public AceRequest(object data = default, object properties = default) { Data = data; - CustomProperties = customProperties; + Properties = properties; } /// @@ -42,7 +42,7 @@ public AceRequest(object data = default, object customProperties = default) /// Gets or sets ACE properties data. Free payload with key-value pairs. /// /// ACE Properties object. - [JsonProperty(PropertyName = "customProperties")] - public object CustomProperties { get; set; } + [JsonProperty(PropertyName = "properties")] + public object Properties { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs index b5e2fe0df4..0056a9e86c 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs @@ -306,6 +306,52 @@ public static CardViewParameters SearchCardViewParameters( }; } + /// + /// Helper method to create a Sign In Card View. + /// + /// Card bar component. + /// Text component to display as header. + /// Text component to display as body. + /// Sign in button. + /// Card view configuration. + /// Only Title property of the Sign in button is used. + public static CardViewParameters SignInCardViewParameters( + CardBarComponent cardBar, + CardTextComponent header, + CardTextComponent body, + CardButtonComponent footer) + { + // Validate parameters + if (cardBar == null) + { + throw new ArgumentNullException(nameof(cardBar)); + } + + if (header == null) + { + throw new ArgumentNullException(nameof(header)); + } + + if (body == null) + { + throw new ArgumentNullException(nameof(body)); + } + + if (footer == null) + { + throw new ArgumentNullException(nameof(footer)); + } + + return new CardViewParameters() + { + CardViewType = "signIn", + CardBar = new List { cardBar }, + Header = new List { header }, + Body = new List { body }, + Footer = new List { footer } + }; + } + private static void ValidateGenericCardViewFooterConfiguration(IList footer) { if (footer == null) From 0e46dbddf24a68a6ae36081a09af7996c3dcb527 Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Wed, 18 Oct 2023 15:56:20 -0700 Subject: [PATCH 10/17] latest changes --- .../SharePoint/CardView/CardViewParameters.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs index 0056a9e86c..79bd5651db 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs @@ -77,7 +77,7 @@ protected CardViewParameters() /// - One primary text field /// - Zero or one button in the Medium card size, up to two buttons in Large card size; or text input. /// - public static CardViewParameters PrimaryTextCardViewParameters( + public static CardViewParameters BasicCardViewParameters( CardBarComponent cardBar, CardTextComponent header, IList footer) @@ -312,9 +312,8 @@ public static CardViewParameters SearchCardViewParameters( /// Card bar component. /// Text component to display as header. /// Text component to display as body. - /// Sign in button. + /// Complete Sign in button. /// Card view configuration. - /// Only Title property of the Sign in button is used. public static CardViewParameters SignInCardViewParameters( CardBarComponent cardBar, CardTextComponent header, From e4466a4fd2416014b103c1865874925ad111a92d Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Fri, 20 Oct 2023 08:22:11 -0700 Subject: [PATCH 11/17] correct working implementation --- .../Actions/GetLocationActionParameters.cs | 2 +- .../SharePoint/CardView/BaseCardComponent.cs | 28 ++++++++++++++++++- .../SharePoint/CardView/CardBarComponent.cs | 3 +- .../CardView/CardButtonComponent.cs | 2 +- .../CardView/CardSearchBoxComponent.cs | 3 +- .../CardView/CardSearchFooterComponent.cs | 4 ++- .../SharePoint/CardView/CardTextComponent.cs | 3 +- .../CardView/CardTextInputComponent.cs | 5 +++- .../SharePoint/CardView/CardViewParameters.cs | 2 +- 9 files changed, 43 insertions(+), 9 deletions(-) diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationActionParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationActionParameters.cs index 5519eeafc2..76193688c5 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationActionParameters.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationActionParameters.cs @@ -25,7 +25,7 @@ public GetLocationActionParameters() /// Gets or Sets a value indicating whether the location on the map can be chosen of type . /// /// This value indicates whether a location on the map can be chosen. - [JsonProperty(PropertyName = "ChooseLocationOnMap")] + [JsonProperty(PropertyName = "chooseLocationOnMap")] public bool ChooseLocationOnMap { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs index 3a2899a5f5..cb8bf5c6da 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Text; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; namespace Microsoft.Bot.Schema.SharePoint { @@ -13,12 +14,37 @@ namespace Microsoft.Bot.Schema.SharePoint /// public class BaseCardComponent { + /// + /// Component name. + /// + private CardComponentName _cardComponentName; + + /// + /// Initializes a new instance of the class. + /// + /// Component name. + public BaseCardComponent(CardComponentName cardComponentName) + { + _cardComponentName = cardComponentName; + } + /// /// Gets or sets component name. /// /// The value is the unique name of the component type. [JsonProperty(PropertyName = "componentName")] - public CardComponentName ComponentName { get; protected set; } + public CardComponentName ComponentName + { + get + { + return _cardComponentName; + } + + set + { + // empty set block is needed as we don't want to set the value but need a public setter to make Newtonsoft serialization work properly. + } + } /// /// Gets or sets optional unique identifier of the component's instance. diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardBarComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardBarComponent.cs index 756461c015..4cc5d2254b 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardBarComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardBarComponent.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Text; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; namespace Microsoft.Bot.Schema.SharePoint { @@ -17,8 +18,8 @@ public class CardBarComponent : BaseCardComponent /// Initializes a new instance of the class. /// public CardBarComponent() + : base(CardComponentName.CardBar) { - this.ComponentName = CardComponentName.CardBar; } /// diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs index 7c4d32a983..c4f4e78311 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardButtonComponent.cs @@ -35,8 +35,8 @@ public class CardButtonComponent : BaseCardComponent, ICardButtonBase /// Initializes a new instance of the class. /// public CardButtonComponent() + : base(CardComponentName.CardButton) { - this.ComponentName = CardComponentName.CardButton; } /// diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxComponent.cs index 2c58a597e1..c8963b4685 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchBoxComponent.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Text; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; namespace Microsoft.Bot.Schema.SharePoint { @@ -17,8 +18,8 @@ public class CardSearchBoxComponent : BaseCardComponent /// Initializes a new instance of the class. /// public CardSearchBoxComponent() + : base(CardComponentName.SearchBox) { - this.ComponentName = CardComponentName.SearchBox; } /// diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs index a084bf9b8b..04b673b560 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardSearchFooterComponent.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Text; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; namespace Microsoft.Bot.Schema.SharePoint { @@ -17,8 +18,9 @@ public class CardSearchFooterComponent : BaseCardComponent /// Initializes a new instance of the class. /// public CardSearchFooterComponent() + : base(CardComponentName.SearchFooter) { - this.ComponentName = CardComponentName.SearchFooter; + // this.ComponentName = CardComponentName.SearchFooter; } /// diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextComponent.cs index 5609790123..29544f10e2 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextComponent.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Text; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; namespace Microsoft.Bot.Schema.SharePoint { @@ -17,8 +18,8 @@ public class CardTextComponent : BaseCardComponent /// Initializes a new instance of the class. /// public CardTextComponent() + : base(CardComponentName.Text) { - this.ComponentName = CardComponentName.Text; } /// diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputComponent.cs index 6965b1da98..7c78146405 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardTextInputComponent.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Text; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; namespace Microsoft.Bot.Schema.SharePoint { @@ -17,8 +18,8 @@ public class CardTextInputComponent : BaseCardComponent /// Initializes a new instance of the class. /// public CardTextInputComponent() + : base(CardComponentName.TextInput) { - this.ComponentName = CardComponentName.TextInput; } /// @@ -46,12 +47,14 @@ public CardTextInputComponent() /// Gets or sets properties for an optional icon, displayed in the left end of the text input. /// /// Properties for an optional icon. + [JsonProperty(PropertyName = "iconBefore")] public CardImage IconBefore { get; set; } /// /// Gets or sets properties for an optional icon, displayed in the right end of the text input. /// /// Properties for an optional icon. + [JsonProperty(PropertyName = "iconAfter")] public CardImage IconAfter { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs index 79bd5651db..a29b51cc0e 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/CardViewParameters.cs @@ -380,7 +380,7 @@ private static void ValidateGenericCardViewFooterConfiguration(IList Date: Fri, 20 Oct 2023 08:25:32 -0700 Subject: [PATCH 12/17] remove SharePoint channel --- .../SharePoint/SharePointActivityHandler.cs | 2 +- libraries/Microsoft.Bot.Connector/Channels.cs | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs index 0e262d2679..e5f29bbd80 100644 --- a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs +++ b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs @@ -38,7 +38,7 @@ protected override async Task OnInvokeActivityAsync(ITurnContext { try { - if (turnContext.Activity.Name == null && turnContext.Activity.ChannelId == Channels.SharePoint) + if (turnContext.Activity.Name == null) { throw new NotSupportedException(); } diff --git a/libraries/Microsoft.Bot.Connector/Channels.cs b/libraries/Microsoft.Bot.Connector/Channels.cs index 5fdf4f8023..274b5da326 100644 --- a/libraries/Microsoft.Bot.Connector/Channels.cs +++ b/libraries/Microsoft.Bot.Connector/Channels.cs @@ -88,11 +88,6 @@ public class Channels /// public const string Msteams = "msteams"; - /// - /// SharePoint channel. - /// - public const string SharePoint = "sharepoint"; - /// /// Skype channel. /// From 5d1dfe2600435d555f938971a966337c16c470f2 Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Tue, 24 Oct 2023 12:19:43 -0700 Subject: [PATCH 13/17] updated API and comments --- .../SharePoint/Actions/ActionParameters.cs | 111 ------------------ .../PropertyPaneChoiceGroupOption.cs | 2 +- .../PropertyPaneDropDownProperties.cs | 4 +- .../PropertyPaneLinkPopupWindowProperties.cs | 2 +- .../SharePoint/PropertyPaneLinkProperties.cs | 4 +- .../PropertyPaneSliderProperties.cs | 2 +- .../PropertyPaneTextFieldProperties.cs | 23 +--- .../PropertyPaneToggleProperties.cs | 2 +- 8 files changed, 9 insertions(+), 141 deletions(-) delete mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs deleted file mode 100644 index bc9c1d5546..0000000000 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ActionParameters.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Text; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace Microsoft.Bot.Schema.SharePoint -{ - /// - /// Media type for SelectMediaAction. - /// - [Flags] - public enum MediaTypes - { - /// - /// Image media type. - /// - Image = 1, - - /// - /// Audio media type. - /// - Audio = 4, - - /// - /// Document media type. - /// - Document = 8 - } - - /// - /// SharePoint action button parameters. - /// - public class ActionParameters - { - /// - /// Initializes a new instance of the class. - /// - public ActionParameters() - { - // Do nothing - } - - /// - /// Gets or Sets the view of type . - /// - /// Use this property if you are working with QuickView action type. - /// This value is the view of the action parameter. - [JsonProperty(PropertyName = "view")] - public string View { get; set; } - - /// - /// Gets or sets a flag that indicates whether the target is a Teams deep link. - /// - /// Use this property if you are working with ExternalLink action type. - /// Indicates whether this is a Teams Deep Link. - [JsonProperty(PropertyName = "isTeamsDeepLink")] - public bool? IsTeamsDeepLink { get; set; } - - /// - /// Gets or sets the target URL for the ExternalLink action. - /// - /// Use this property if you are working with ExternalLink action type. - /// The values is the URL. - [JsonProperty(PropertyName = "target")] - public string Target { get; set; } - - /// - /// Gets key-value pair properties that can be defined for Submit and Execute actions. - /// - /// Use this property if you are working with Submit or Execute action type. - /// key-value pairs for Submit or Execute actions. - [JsonExtensionData(ReadData = true, WriteData = true)] - public IDictionary SubmitParameters { get; } = new Dictionary(); - - /// - /// Gets or sets the specific media type that should be selected. - /// - /// Use this property if you are working with VivaAction.SelectMedia action type. - /// The specific media type that should be selected. - [JsonProperty(PropertyName = "mediaType")] - public MediaTypes? MediaType { get; set; } - - /// - /// Gets or sets a flag to specify if multiple files can be selected. - /// - /// Use this property if you are working with VivaAction.SelectMedia action type. - /// Specifies if multiple files can be selected. - [JsonProperty(PropertyName = "allowMultipleCapture")] - public bool? AllowMultipleCapture { get; set; } - - /// - /// Gets or sets maximum file size that can be uplaoded. - /// - /// Use this property if you are working with VivaAction.SelectMedia action type. - /// Max file size. - [JsonProperty(PropertyName = "maxSizePerFile")] - public int MaxSizePerFile { get; set; } - - /// - /// Gets file formats supported for upload. - /// - /// Use this property if you are working with VivaAction.SelectMedia action type. - /// File formats supported for upload. - [JsonProperty(PropertyName = "supportedFileFormats")] - public IList SupportedFileFormats { get; } = new List(); - } -} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs index 764a39d959..547723654f 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneChoiceGroupOption.cs @@ -26,7 +26,7 @@ public PropertyPaneChoiceGroupOption() } /// - /// Gets or Sets the aria label of type . + /// Gets or Sets optional ariaLabel flag. Text for screen-reader to announce regardless of toggle state. Of type . /// /// This value is the aria label of the choice group. [JsonProperty(PropertyName = "ariaLabel")] diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs index 7c69b395c4..08f0d92ee4 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneDropDownProperties.cs @@ -25,14 +25,14 @@ public PropertyPaneDropDownProperties() } /// - /// Gets or Sets the aria label of type . + /// Gets or Sets optional ariaLabel flag. Text for screen-reader to announce regardless of toggle state. Of type . /// /// This value is the aria label of the drop down. [JsonProperty(PropertyName = "ariaLabel")] public string AriaLabel { get; set; } /// - /// Gets or Sets an element's number or position in the current set of controls. Maps to native aria-posinset attribute. It starts from 1 of type . + /// Gets or Sets an element's number or position in the current set of controls. Maps to native aria-positionset attribute. It starts from 1 of type . /// /// This value is the aria position in set of the drop down. [JsonProperty(PropertyName = "ariaPositionInSet")] diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs index 79f4318749..9e364592be 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkPopupWindowProperties.cs @@ -13,7 +13,7 @@ namespace Microsoft.Bot.Schema.SharePoint { /// - /// SharePoint property pane link pop up window properties object. + /// SharePoint property pane link popup window properties object. /// public class PropertyPaneLinkPopupWindowProperties { diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs index f65b6d0fbc..6927373c4c 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneLinkProperties.cs @@ -25,7 +25,7 @@ public PropertyPaneLinkProperties() } /// - /// Gets or Sets the aria label of type . + /// Gets or Sets optional ariaLabel flag. Text for screen-reader to announce regardless of toggle state. Of type . /// /// This value is the aria label of the property pane link. [JsonProperty(PropertyName = "ariaLabel")] @@ -46,7 +46,7 @@ public PropertyPaneLinkProperties() public string Href { get; set; } /// - /// Gets or Sets the props of pop up window. of type . + /// Gets or Sets the props of popup window. of type . /// /// This value is the popup window properties of the property pane link. [JsonProperty(PropertyName = "popupWindowProps")] diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs index 5deb7d2c05..5a993949b2 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneSliderProperties.cs @@ -39,7 +39,7 @@ public PropertyPaneSliderProperties() public string Value { get; set; } /// - /// Gets or Sets the aria label of type . + /// Gets or Sets optional ariaLabel flag. Text for screen-reader to announce regardless of toggle state. Of type . /// /// This value is the aria label of the slider. [JsonProperty(PropertyName = "ariaLabel")] diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs index d843501e4f..984217cae2 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneTextFieldProperties.cs @@ -39,19 +39,12 @@ public PropertyPaneTextFieldProperties() public string Value { get; set; } /// - /// Gets or Sets the aria label of type . + /// Gets or Sets optional ariaLabel flag. Text for screen-reader to announce regardless of toggle state. Of type . /// /// This value is the aria label of the text field. [JsonProperty(PropertyName = "ariaLabel")] public string AriaLabel { get; set; } - /// - /// Gets or Sets the amount of time to wait before validating after the users stop typing in ms of type . - /// - /// This value is the deferred validation time of the text field. - [JsonProperty(PropertyName = "deferredValidationTime")] - public int DeferredValidationTime { get; set; } - /// /// Gets or Sets the description of type . /// @@ -121,19 +114,5 @@ public PropertyPaneTextFieldProperties() /// This value indicates whether the text field is underlined. [JsonProperty(PropertyName = "underlined")] public bool Underlined { get; set; } - - /// - /// Gets or Sets a value indicating whether to run validation when the PropertyPaneTextField is focused of type . - /// - /// This value indicates whether the text field is validated when gaining focus. - [JsonProperty(PropertyName = "validateOnFocusIn")] - public bool ValidateOnFocusIn { get; set; } - - /// - /// Gets or Sets a value indicating whether to run validation when the PropertyPaneTextField is out of focus or on blur of type . - /// - /// This value indicates whether the text field is validated when losing focus. - [JsonProperty(PropertyName = "validateOnFocusOut")] - public bool ValidateOnFocusOut { get; set; } } } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs index ef25244582..d69f34521e 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/PropertyPaneToggleProperties.cs @@ -25,7 +25,7 @@ public PropertyPaneToggleProperties() } /// - /// Gets or Sets the aria label of type . + /// Gets or Sets optional ariaLabel flag. Text for screen-reader to announce regardless of toggle state. Of type . /// /// This value is the aria label of the toggle field. [JsonProperty(PropertyName = "ariaLabel")] From 786a14b34122913ac5ed56ec59ebfbd8e78a3efb Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Wed, 25 Oct 2023 07:05:01 -0700 Subject: [PATCH 14/17] move action type to base class --- .../SharePoint/Actions/BaseAction.cs | 28 +++++++++++++++++++ .../SharePoint/Actions/ExecuteAction.cs | 12 ++------ .../SharePoint/Actions/ExternalLinkAction.cs | 10 ++----- .../SharePoint/Actions/GetLocationAction.cs | 10 ++----- .../SharePoint/Actions/QuickViewAction.cs | 9 ++---- .../SharePoint/Actions/SelectMediaAction.cs | 10 ++----- .../SharePoint/Actions/ShowLocationAction.cs | 11 ++------ .../SharePoint/Actions/SubmitAction.cs | 9 ++---- .../SharePoint/CardView/BaseCardComponent.cs | 25 +++-------------- 9 files changed, 47 insertions(+), 77 deletions(-) create mode 100644 libraries/Microsoft.Bot.Schema/SharePoint/Actions/BaseAction.cs diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/BaseAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/BaseAction.cs new file mode 100644 index 0000000000..eff1ad9b19 --- /dev/null +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/BaseAction.cs @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Text; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Schema.SharePoint +{ + /// + /// Base Action. + /// + public class BaseAction + { + [JsonProperty(PropertyName = "type")] + private readonly string type; + + /// + /// Initializes a new instance of the class. + /// + /// Type of the action. + protected BaseAction(string actionType) + { + this.type = actionType; + } + } +} diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExecuteAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExecuteAction.cs index 73f941bf58..664f53b4a9 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExecuteAction.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExecuteAction.cs @@ -11,19 +11,13 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// Action.Execute. /// - public class ExecuteAction : IAction + public class ExecuteAction : BaseAction, IAction { -#pragma warning disable CA1823 // Avoid unused private fields -#pragma warning disable CS0414 // The field 'ExecuteAction.type' is assigned but its value is never used - [JsonProperty(PropertyName = "type")] - private string type = "Execute"; -#pragma warning restore CS0414 // The field 'ExecuteAction.type' is assigned but its value is never used -#pragma warning restore CA1823 // Avoid unused private fields - /// /// Initializes a new instance of the class. /// - public ExecuteAction() + public ExecuteAction() + : base("Execute") { // Do nothing } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkAction.cs index b8118327ac..85feea0325 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkAction.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ExternalLinkAction.cs @@ -14,19 +14,13 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// SharePoint external link action. /// - public class ExternalLinkAction : IAction, IOnCardSelectionAction + public class ExternalLinkAction : BaseAction, IAction, IOnCardSelectionAction { -#pragma warning disable CA1823 // Avoid unused private fields -#pragma warning disable CS0414 // The field 'ExternalLinkAction.type' is assigned but its value is never used - [JsonProperty(PropertyName = "type")] - private string type = "ExternalLink"; -#pragma warning restore CS0414 // The field 'ExternalLinkAction.type' is assigned but its value is never used -#pragma warning restore CA1823 // Avoid unused private fields - /// /// Initializes a new instance of the class. /// public ExternalLinkAction() + : base("ExternalLink") { // Do nothing } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationAction.cs index c0c3a39a7f..5eb12f2d35 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationAction.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/GetLocationAction.cs @@ -14,19 +14,13 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// SharePoint get location action. /// - public class GetLocationAction : IAction, IOnCardSelectionAction + public class GetLocationAction : BaseAction, IAction, IOnCardSelectionAction { -#pragma warning disable CA1823 // Avoid unused private fields -#pragma warning disable CS0414 // The field 'GetLocationAction.type' is assigned but its value is never used - [JsonProperty(PropertyName = "type")] - private string type = "VivaAction.GetLocation"; -#pragma warning restore CS0414 // The field 'GetLocationAction.type' is assigned but its value is never used -#pragma warning restore CA1823 // Avoid unused private fields - /// /// Initializes a new instance of the class. /// public GetLocationAction() + : base("VivaAction.GetLocation") { // Do nothing } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewAction.cs index 15a3833bf6..38a4b4f5c5 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewAction.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/QuickViewAction.cs @@ -14,18 +14,13 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// SharePoint Quick View action. /// - public class QuickViewAction : IAction, IOnCardSelectionAction + public class QuickViewAction : BaseAction, IAction, IOnCardSelectionAction { -#pragma warning disable CA1823 // Avoid unused private fields -#pragma warning disable CS0414 // The field 'QuickViewAction.type' is assigned but its value is never used - [JsonProperty(PropertyName = "type")] - private string type = "QuickView"; -#pragma warning restore CS0414 // The field 'QuickViewAction.type' is assigned but its value is never used -#pragma warning restore CA1823 // Avoid unused private fields /// /// Initializes a new instance of the class. /// public QuickViewAction() + : base("QuickView") { // Do nothing } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaAction.cs index f1915a92ad..dc45e971ec 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaAction.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SelectMediaAction.cs @@ -14,19 +14,13 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// SharePoint select media action. /// - public class SelectMediaAction : IAction, IOnCardSelectionAction + public class SelectMediaAction : BaseAction, IAction, IOnCardSelectionAction { -#pragma warning disable CA1823 // Avoid unused private fields -#pragma warning disable CS0414 // The field 'SelectMediaAction.type' is assigned but its value is never used - [JsonProperty(PropertyName = "type")] - private string type = "VivaAction.SelectMedia"; -#pragma warning restore CS0414 // The field 'SelectMediaAction.type' is assigned but its value is never used -#pragma warning restore CA1823 // Avoid unused private fields - /// /// Initializes a new instance of the class. /// public SelectMediaAction() + : base("VivaAction.SelectMedia") { // Do nothing } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationAction.cs index 080d98231b..72b6d9afc6 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationAction.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/ShowLocationAction.cs @@ -14,20 +14,13 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// SharePoint show location action. /// - public class ShowLocationAction : IAction, IOnCardSelectionAction + public class ShowLocationAction : BaseAction, IAction, IOnCardSelectionAction { -#pragma warning disable CA1823 // Avoid unused private fields -#pragma warning disable CA1823 // Avoid unused private fields -#pragma warning disable CS0414 // The field 'ShowLocationAction.type' is assigned but its value is never used - [JsonProperty(PropertyName = "type")] - private string type = "VivaAction.ShowLocation"; -#pragma warning restore CS0414 // The field 'ShowLocationAction.type' is assigned but its value is never used -#pragma warning restore CA1823 // Avoid unused private fields -#pragma warning restore CA1823 // Avoid unused private fields /// /// Initializes a new instance of the class. /// public ShowLocationAction() + : base("VivaAction.ShowLocation") { // Do nothing } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SubmitAction.cs b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SubmitAction.cs index 4e34a35852..bbd34cc78d 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SubmitAction.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/Actions/SubmitAction.cs @@ -11,18 +11,13 @@ namespace Microsoft.Bot.Schema.SharePoint /// /// Action.Submit. /// - public class SubmitAction : IAction + public class SubmitAction : BaseAction, IAction { -#pragma warning disable CA1823 // Avoid unused private fields -#pragma warning disable CS0414 // The field 'SubmitAction.type' is assigned but its value is never used - [JsonProperty(PropertyName = "type")] - private string type = "Submit"; -#pragma warning restore CS0414 // The field 'SubmitAction.type' is assigned but its value is never used -#pragma warning restore CA1823 // Avoid unused private fields /// /// Initializes a new instance of the class. /// public SubmitAction() + : base("Submit") { // Do nothing } diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs index cb8bf5c6da..2f71901d2a 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/CardView/BaseCardComponent.cs @@ -17,33 +17,16 @@ public class BaseCardComponent /// /// Component name. /// - private CardComponentName _cardComponentName; + [JsonProperty(PropertyName = "componentName")] + private readonly CardComponentName cardComponentName; /// /// Initializes a new instance of the class. /// /// Component name. - public BaseCardComponent(CardComponentName cardComponentName) - { - _cardComponentName = cardComponentName; - } - - /// - /// Gets or sets component name. - /// - /// The value is the unique name of the component type. - [JsonProperty(PropertyName = "componentName")] - public CardComponentName ComponentName + protected BaseCardComponent(CardComponentName cardComponentName) { - get - { - return _cardComponentName; - } - - set - { - // empty set block is needed as we don't want to set the value but need a public setter to make Newtonsoft serialization work properly. - } + this.cardComponentName = cardComponentName; } /// From 50218ce19a1ec8a0aa93c0946991f139ca60d253 Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Mon, 30 Oct 2023 10:03:15 -0700 Subject: [PATCH 15/17] updated comments --- libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs b/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs index bbe23e73ab..b5640c8951 100644 --- a/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs +++ b/libraries/Microsoft.Bot.Schema/SharePoint/AceData.cs @@ -52,11 +52,12 @@ public enum AceCardSize /// Gets or Sets the version of the data of type . /// /// This value is the version of the adaptive card extension. + /// Although there is no restriction on the format of this property, it is recommended to use semantic versioning. [JsonProperty(PropertyName = "dataVersion")] public string DataVersion { get; set; } /// - /// Gets or Sets the id of type . + /// Gets or Sets the unique id (Guid) of type . /// /// This value is the ID of the adaptive card extension. [JsonProperty(PropertyName = "id")] From 66f0fd53cf4e6b1755dc4a388c19c1be424787d8 Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Tue, 31 Oct 2023 14:14:05 -0700 Subject: [PATCH 16/17] comment update --- .../SharePoint/SharePointActivityHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs index e5f29bbd80..e3e9b98a21 100644 --- a/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs +++ b/libraries/Microsoft.Bot.Builder/SharePoint/SharePointActivityHandler.cs @@ -133,7 +133,7 @@ protected virtual Task OnSharePointTaskSetPropertyPane /// The ACE invoke request value payload. /// A cancellation token that can be used by other objects /// or threads to receive notice of cancellation. - /// A view response. + /// A handle action response. protected virtual Task OnSharePointTaskHandleActionAsync(ITurnContext turnContext, AceRequest aceRequest, CancellationToken cancellationToken) { throw new InvokeResponseException(HttpStatusCode.NotImplemented); From c682736e12f9cb133a19e34145196414984648c7 Mon Sep 17 00:00:00 2001 From: Alex Terentiev Date: Wed, 1 Nov 2023 08:25:55 -0700 Subject: [PATCH 17/17] getting tests schema back --- tests/tests.schema | 11751 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 11751 insertions(+) create mode 100644 tests/tests.schema diff --git a/tests/tests.schema b/tests/tests.schema new file mode 100644 index 0000000000..85383b5cd6 --- /dev/null +++ b/tests/tests.schema @@ -0,0 +1,11751 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", + "type": "object", + "title": "Component kinds", + "description": "These are all of the kinds that can be created by the loader.", + "oneOf": [ + { + "$ref": "#/definitions/CustomAction.dialog" + }, + { + "$ref": "#/definitions/CustomAction2.dialog" + }, + { + "$ref": "#/definitions/Microsoft.ActivityTemplate" + }, + { + "$ref": "#/definitions/Microsoft.AdaptiveDialog" + }, + { + "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.Ask" + }, + { + "$ref": "#/definitions/Microsoft.AttachmentInput" + }, + { + "$ref": "#/definitions/Microsoft.BeginDialog" + }, + { + "$ref": "#/definitions/Microsoft.BeginSkill" + }, + { + "$ref": "#/definitions/Microsoft.BreakLoop" + }, + { + "$ref": "#/definitions/Microsoft.CancelAllDialogs" + }, + { + "$ref": "#/definitions/Microsoft.CancelDialog" + }, + { + "$ref": "#/definitions/Microsoft.ChannelMentionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.ChoiceInput" + }, + { + "$ref": "#/definitions/Microsoft.ConditionalSelector" + }, + { + "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.ConfirmInput" + }, + { + "$ref": "#/definitions/Microsoft.ContinueConversation" + }, + { + "$ref": "#/definitions/Microsoft.ContinueConversationLater" + }, + { + "$ref": "#/definitions/Microsoft.ContinueLoop" + }, + { + "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" + }, + { + "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.DateTimeInput" + }, + { + "$ref": "#/definitions/Microsoft.DebugBreak" + }, + { + "$ref": "#/definitions/Microsoft.DeleteActivity" + }, + { + "$ref": "#/definitions/Microsoft.DeleteProperties" + }, + { + "$ref": "#/definitions/Microsoft.DeleteProperty" + }, + { + "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.EditActions" + }, + { + "$ref": "#/definitions/Microsoft.EditArray" + }, + { + "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.EmitEvent" + }, + { + "$ref": "#/definitions/Microsoft.EndDialog" + }, + { + "$ref": "#/definitions/Microsoft.EndTurn" + }, + { + "$ref": "#/definitions/Microsoft.FacebookAdapter" + }, + { + "$ref": "#/definitions/Microsoft.FirstSelector" + }, + { + "$ref": "#/definitions/Microsoft.Foreach" + }, + { + "$ref": "#/definitions/Microsoft.ForeachPage" + }, + { + "$ref": "#/definitions/Microsoft.GetActivityMembers" + }, + { + "$ref": "#/definitions/Microsoft.GetConversationMembers" + }, + { + "$ref": "#/definitions/Microsoft.GetConversationReference" + }, + { + "$ref": "#/definitions/Microsoft.GotoAction" + }, + { + "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.HttpRequest" + }, + { + "$ref": "#/definitions/Microsoft.IfCondition" + }, + { + "$ref": "#/definitions/Microsoft.IpEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.LogAction" + }, + { + "$ref": "#/definitions/Microsoft.LuisRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.MostSpecificSelector" + }, + { + "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.NumberInput" + }, + { + "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.OAuthInput" + }, + { + "$ref": "#/definitions/Microsoft.OnActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnAssignEntity" + }, + { + "$ref": "#/definitions/Microsoft.OnBeginDialog" + }, + { + "$ref": "#/definitions/Microsoft.OnCancelDialog" + }, + { + "$ref": "#/definitions/Microsoft.OnChooseEntity" + }, + { + "$ref": "#/definitions/Microsoft.OnChooseIntent" + }, + { + "$ref": "#/definitions/Microsoft.OnChooseProperty" + }, + { + "$ref": "#/definitions/Microsoft.OnCommandActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnCommandResultActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnCondition" + }, + { + "$ref": "#/definitions/Microsoft.OnContinueConversation" + }, + { + "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnDialogEvent" + }, + { + "$ref": "#/definitions/Microsoft.OnEndOfActions" + }, + { + "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnError" + }, + { + "$ref": "#/definitions/Microsoft.OnEventActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnHandoffActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnInstallationUpdateActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnIntent" + }, + { + "$ref": "#/definitions/Microsoft.OnInvokeActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnMessageActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnQnAMatch" + }, + { + "$ref": "#/definitions/Microsoft.OnRepromptDialog" + }, + { + "$ref": "#/definitions/Microsoft.OnTypingActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnUnknownIntent" + }, + { + "$ref": "#/definitions/Microsoft.OrchestratorRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.QnAMakerDialog" + }, + { + "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.RandomSelector" + }, + { + "$ref": "#/definitions/Microsoft.RecognizerSet" + }, + { + "$ref": "#/definitions/Microsoft.RegexEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.RegexRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.RepeatDialog" + }, + { + "$ref": "#/definitions/Microsoft.ReplaceDialog" + }, + { + "$ref": "#/definitions/Microsoft.ResourceMultiLanguageGenerator" + }, + { + "$ref": "#/definitions/Microsoft.SendActivity" + }, + { + "$ref": "#/definitions/Microsoft.SendHandoffActivity" + }, + { + "$ref": "#/definitions/Microsoft.SetProperties" + }, + { + "$ref": "#/definitions/Microsoft.SetProperty" + }, + { + "$ref": "#/definitions/Microsoft.SignOutUser" + }, + { + "$ref": "#/definitions/Microsoft.SlackAdapter" + }, + { + "$ref": "#/definitions/Microsoft.StaticActivityTemplate" + }, + { + "$ref": "#/definitions/Microsoft.SwitchCondition" + }, + { + "$ref": "#/definitions/Microsoft.TelemetryTrackEventAction" + }, + { + "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertCondition" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertNoActivity" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertReply" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertTelemetryContains" + }, + { + "$ref": "#/definitions/Microsoft.Test.CustomEvent" + }, + { + "$ref": "#/definitions/Microsoft.Test.HttpRequestSequenceMock" + }, + { + "$ref": "#/definitions/Microsoft.Test.MemoryAssertions" + }, + { + "$ref": "#/definitions/Microsoft.Test.Script" + }, + { + "$ref": "#/definitions/Microsoft.Test.SetProperties" + }, + { + "$ref": "#/definitions/Microsoft.Test.SettingStringMock" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserActivity" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserDelay" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserSays" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserTokenBasicMock" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserTyping" + }, + { + "$ref": "#/definitions/Microsoft.TextInput" + }, + { + "$ref": "#/definitions/Microsoft.TextTemplate" + }, + { + "$ref": "#/definitions/Microsoft.ThrowException" + }, + { + "$ref": "#/definitions/Microsoft.TraceActivity" + }, + { + "$ref": "#/definitions/Microsoft.TrueSelector" + }, + { + "$ref": "#/definitions/Microsoft.TwilioAdapter" + }, + { + "$ref": "#/definitions/Microsoft.UpdateActivity" + }, + { + "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.WebexAdapter" + }, + { + "$ref": "#/definitions/Testbot.JavascriptAction" + }, + { + "$ref": "#/definitions/Testbot.Multiply" + } + ], + "definitions": { + "arrayExpression": { + "$role": "expression", + "title": "Array or expression", + "description": "Array or expression to evaluate.", + "oneOf": [ + { + "type": "array", + "title": "Array", + "description": "Array constant." + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "booleanExpression": { + "$role": "expression", + "title": "Boolean or expression", + "description": "Boolean constant or expression to evaluate.", + "oneOf": [ + { + "type": "boolean", + "title": "Boolean", + "description": "Boolean constant.", + "default": false, + "examples": [ + false + ] + }, + { + "$ref": "#/definitions/equalsExpression", + "examples": [ + "=user.isVip" + ] + } + ] + }, + "component": { + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "condition": { + "$role": "expression", + "title": "Boolean condition", + "description": "Boolean constant or expression to evaluate.", + "oneOf": [ + { + "$ref": "#/definitions/expression" + }, + { + "type": "boolean", + "title": "Boolean", + "description": "Boolean value.", + "default": true, + "examples": [ + false + ] + } + ] + }, + "CustomAction.dialog": { + "$role": "implements(Microsoft.IDialog)", + "title": "Custom Action", + "description": "My Custom Action.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "age": { + "$ref": "#/definitions/numberExpression", + "title": "Age", + "description": "The age.", + "examples": [ + 20, + "=$foo" + ] + }, + "name": { + "$ref": "#/definitions/stringExpression", + "title": "Name", + "description": "The name." + }, + "resultProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store any value returned by the dialog that is called.", + "examples": [ + "$name" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "CustomAction.dialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "CustomAction2.dialog": { + "$role": "implements(Microsoft.IDialog)", + "title": "Custom Action", + "description": "My Custom Action.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "age": { + "$ref": "#/definitions/numberExpression", + "title": "Age", + "description": "The age.", + "examples": [ + 20, + "=$foo" + ] + }, + "name": { + "$ref": "#/definitions/stringExpression", + "title": "Name", + "description": "The name." + }, + "resultProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store any value returned by the dialog that is called.", + "examples": [ + "$name" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "CustomAction2.dialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "equalsExpression": { + "$role": "expression", + "type": "string", + "title": "Expression", + "description": "Expression starting with =.", + "pattern": "^=.*\\S.*", + "examples": [ + "=user.name" + ] + }, + "expression": { + "$role": "expression", + "type": "string", + "title": "Expression", + "description": "Expression to evaluate.", + "pattern": "^.*\\S.*", + "examples": [ + "user.age > 13" + ] + }, + "integerExpression": { + "$role": "expression", + "title": "Integer or expression", + "description": "Integer constant or expression to evaluate.", + "oneOf": [ + { + "type": "integer", + "title": "Integer", + "description": "Integer constant.", + "default": 0, + "examples": [ + 15 + ] + }, + { + "$ref": "#/definitions/equalsExpression", + "examples": [ + "=user.age" + ] + } + ] + }, + "Microsoft.ActivityTemplate": { + "$role": "implements(Microsoft.IActivityTemplate)", + "title": "Microsoft activity template", + "type": "object", + "required": [ + "template", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "template": { + "title": "Template", + "description": "Language Generator template to use to create the activity", + "type": "string" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ActivityTemplate" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.AdaptiveDialog": { + "$role": "implements(Microsoft.IDialog)", + "title": "Adaptive dialog", + "description": "Flexible, data driven dialog that can adapt to the conversation.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "pattern": "^(?!(=)).*", + "title": "Id", + "description": "Optional dialog ID." + }, + "autoEndDialog": { + "$ref": "#/definitions/booleanExpression", + "title": "Auto end dialog", + "description": "If set to true the dialog will automatically end when there are no further actions. If set to false, remember to manually end the dialog using EndDialog action.", + "default": true + }, + "defaultResultProperty": { + "type": "string", + "title": "Default result property", + "description": "Value that will be passed back to the parent dialog.", + "default": "dialog.result" + }, + "dialogs": { + "type": "array", + "title": "Dialogs", + "description": "Dialogs added to DialogSet.", + "items": { + "$kind": "Microsoft.IDialog", + "title": "Dialog", + "description": "Dialog to add to DialogSet.", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "recognizer": { + "$kind": "Microsoft.IRecognizer", + "title": "Recognizer", + "description": "Input recognizer that interprets user input into intent and entities.", + "$ref": "#/definitions/Microsoft.IRecognizer" + }, + "generator": { + "$kind": "Microsoft.ILanguageGenerator", + "title": "Language generator", + "description": "Language generator that generates bot responses.", + "$ref": "#/definitions/Microsoft.ILanguageGenerator" + }, + "selector": { + "$kind": "Microsoft.ITriggerSelector", + "title": "Selector", + "description": "Policy to determine which trigger is executed. Defaults to a 'best match' selector (optional).", + "$ref": "#/definitions/Microsoft.ITriggerSelector" + }, + "triggers": { + "type": "array", + "description": "List of triggers defined for this dialog.", + "title": "Triggers", + "items": { + "$kind": "Microsoft.ITrigger", + "title": "Event triggers", + "description": "Event triggers for handling events.", + "$ref": "#/definitions/Microsoft.ITrigger" + } + }, + "schema": { + "title": "Schema", + "description": "Schema to fill in.", + "anyOf": [ + { + "$ref": "#/definitions/schema" + }, + { + "type": "string", + "title": "Reference to JSON schema", + "description": "Reference to JSON schema .dialog file." + } + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.AdaptiveDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.AgeEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Age entity recognizer", + "description": "Recognizer which recognizes age.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.AgeEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Ask": { + "$role": [ + "implements(Microsoft.IDialog)", + "extends(Microsoft.SendActivity)" + ], + "title": "Send activity to ask a question", + "description": "This is an action which sends an activity to the user when a response is expected", + "type": "object", + "$policies": { + "interactive": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "expectedProperties": { + "$ref": "#/definitions/arrayExpression", + "title": "Expected properties", + "description": "Properties expected from the user.", + "examples": [ + [ + "age", + "name" + ] + ], + "items": { + "type": "string", + "title": "Name", + "description": "Name of the property" + } + }, + "defaultOperation": { + "$ref": "#/definitions/stringExpression", + "title": "Default operation", + "description": "Sets the default operation that will be used when no operation is recognized in the response to this Ask.", + "examples": [ + "Add()", + "Remove()" + ] + }, + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "activity": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Activity", + "description": "Activity to send.", + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Ask" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.AttachmentInput": { + "$role": [ + "implements(Microsoft.IDialog)", + "extends(Microsoft.InputDialog)" + ], + "title": "Attachment input dialog", + "description": "Collect information - Ask for a file or image.", + "$policies": { + "interactive": true + }, + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "defaultValue": { + "$role": "expression", + "title": "Default value", + "description": "'Property' will be set to the object or the result of this expression when max turn count is exceeded.", + "oneOf": [ + { + "$ref": "#/definitions/botframework.json/definitions/Attachment", + "title": "Object", + "description": "Attachment object." + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "value": { + "$role": "expression", + "title": "Value", + "description": "'Property' will be set to the object or the result of this expression unless it evaluates to null.", + "oneOf": [ + { + "$ref": "#/definitions/botframework.json/definitions/Attachment", + "title": "Object", + "description": "Attachment object." + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "outputFormat": { + "$role": "expression", + "title": "Output format", + "description": "Attachment output format.", + "oneOf": [ + { + "type": "string", + "title": "Standard format", + "description": "Standard output formats.", + "enum": [ + "all", + "first" + ], + "default": "first" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "default": false, + "examples": [ + false, + "=user.isVip" + ] + }, + "prompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Initial prompt", + "description": "Message to send to collect information.", + "examples": [ + "What is your birth date?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "unrecognizedPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Unrecognized prompt", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "invalidPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Invalid prompt", + "description": "Message to send when the user input does not meet any validation expression.", + "examples": [ + "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "defaultValueResponse": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "maxTurnCount": { + "$ref": "#/definitions/integerExpression", + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information.", + "default": 3, + "minimum": 0, + "maximum": 2147483647, + "examples": [ + 3, + "=settings.xyz" + ] + }, + "validations": { + "type": "array", + "title": "Validation expressions", + "description": "Expression to validate user input.", + "items": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Expression which needs to met for the input to be considered valid", + "examples": [ + "int(this.value) > 1 && int(this.value) <= 150", + "count(this.value) < 300" + ] + } + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", + "examples": [ + "$birthday", + "dialog.${user.name}", + "=f(x)" + ] + }, + "alwaysPrompt": { + "$ref": "#/definitions/booleanExpression", + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty.", + "default": false, + "examples": [ + false, + "=$val" + ] + }, + "allowInterruptions": { + "$ref": "#/definitions/booleanExpression", + "title": "Allow Interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", + "default": true, + "examples": [ + true, + "=user.xyz" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.AttachmentInput" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.BeginDialog": { + "$role": "implements(Microsoft.IDialog)", + "title": "Begin a dialog", + "description": "Begin another dialog.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "dialog": { + "oneOf": [ + { + "$kind": "Microsoft.IDialog", + "pattern": "^(?!(=)).*", + "title": "Dialog", + "$ref": "#/definitions/Microsoft.IDialog" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ], + "title": "Dialog name", + "description": "Name of the dialog to call." + }, + "options": { + "$ref": "#/definitions/objectExpression", + "title": "Options", + "description": "One or more options that are passed to the dialog that is called.", + "examples": [ + { + "arg1": "=expression" + } + ], + "additionalProperties": { + "type": "string", + "title": "Options", + "description": "Options for dialog." + } + }, + "activityProcessed": { + "$ref": "#/definitions/booleanExpression", + "title": "Activity processed", + "description": "When set to false, the dialog that is called can process the current activity.", + "default": true + }, + "resultProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store any value returned by the dialog that is called.", + "examples": [ + "dialog.userName" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.BeginDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.BeginSkill": { + "$role": "implements(Microsoft.IDialog)", + "title": "Begin a skill", + "description": "Begin a remote skill.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the skill dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=f(x)" + ] + }, + "activityProcessed": { + "$ref": "#/definitions/booleanExpression", + "title": "Activity processed", + "description": "When set to false, the skill will be started using the activity in the current turn context instead of the activity in the Activity property.", + "default": true, + "examples": [ + true, + "=f(x)" + ] + }, + "resultProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store any value returned by the dialog that is called.", + "examples": [ + "dialog.userName" + ] + }, + "botId": { + "$ref": "#/definitions/stringExpression", + "title": "Skill host bot ID", + "description": "The Microsoft App ID that will be calling the skill.", + "default": "=settings.MicrosoftAppId" + }, + "skillHostEndpoint": { + "$ref": "#/definitions/stringExpression", + "title": "Skill host", + "description": "The callback Url for the skill host.", + "default": "=settings.skillHostEndpoint", + "examples": [ + "https://mybot.contoso.com/api/skills/" + ] + }, + "connectionName": { + "$ref": "#/definitions/stringExpression", + "title": "OAuth connection name (SSO)", + "description": "The OAuth Connection Name, that would be used to perform Single SignOn with a skill.", + "default": "=settings.connectionName" + }, + "skillAppId": { + "$ref": "#/definitions/stringExpression", + "title": "Skill App Id", + "description": "The Microsoft App ID for the skill." + }, + "skillEndpoint": { + "$ref": "#/definitions/stringExpression", + "title": "Skill endpoint ", + "description": "The /api/messages endpoint for the skill.", + "examples": [ + "https://myskill.contoso.com/api/messages/" + ] + }, + "activity": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Activity", + "description": "The activity to send to the skill.", + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "allowInterruptions": { + "$ref": "#/definitions/booleanExpression", + "title": "Allow interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the skill.", + "default": true, + "examples": [ + true, + "=user.xyz" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.BeginSkill" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.BreakLoop": { + "$role": "implements(Microsoft.IDialog)", + "title": "Break loop", + "description": "Stop executing this loop", + "type": "object", + "required": [ + "$kind" + ], + "$policies": { + "lastAction": true + }, + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.BreakLoop" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.CancelAllDialogs": { + "$role": "implements(Microsoft.IDialog)", + "title": "Cancel all dialogs", + "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", + "type": "object", + "$policies": { + "lastAction": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "activityProcessed": { + "$ref": "#/definitions/booleanExpression", + "title": "Activity processed", + "description": "When set to false, the caller dialog is told it should process the current activity.", + "default": true + }, + "eventName": { + "$ref": "#/definitions/stringExpression", + "title": "Event name", + "description": "Name of the event to emit." + }, + "eventValue": { + "$ref": "#/definitions/valueExpression", + "title": "Event value", + "description": "Value to emit with the event (optional).", + "additionalProperties": true + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.CancelAllDialogs" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.CancelDialog": { + "$role": "implements(Microsoft.IDialog)", + "title": "Cancel all dialogs", + "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", + "type": "object", + "$policies": { + "lastAction": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "activityProcessed": { + "$ref": "#/definitions/booleanExpression", + "title": "Activity processed", + "description": "When set to false, the caller dialog is told it should process the current activity.", + "default": true + }, + "eventName": { + "$ref": "#/definitions/stringExpression", + "title": "Event name", + "description": "Name of the event to emit." + }, + "eventValue": { + "$ref": "#/definitions/valueExpression", + "title": "Event value", + "description": "Value to emit with the event (optional).", + "additionalProperties": true + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.CancelDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ChannelMentionEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)" + ], + "title": "Channel mention entity recognizer", + "description": "Promotes mention entities passed by a channel via the activity.entities into recognizer result.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ChannelMentionEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ChoiceInput": { + "$role": [ + "implements(Microsoft.IDialog)", + "extends(Microsoft.InputDialog)" + ], + "title": "Choice input dialog", + "description": "Collect information - Pick from a list of choices", + "type": "object", + "$policies": { + "interactive": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "defaultValue": { + "$ref": "#/definitions/stringExpression", + "title": "Default value", + "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", + "examples": [ + "hello world", + "Hello ${user.name}", + "=concat(user.firstname, user.lastName)" + ] + }, + "value": { + "$ref": "#/definitions/stringExpression", + "title": "Value", + "description": "'Property' will be set to the value of this expression unless it evaluates to null.", + "examples": [ + "hello world", + "Hello ${user.name}", + "=concat(user.firstname, user.lastName)" + ] + }, + "outputFormat": { + "$role": "expression", + "title": "Output format", + "description": "Sets the desired choice output format (either value or index into choices).", + "oneOf": [ + { + "type": "string", + "title": "Standard", + "description": "Standard output format.", + "enum": [ + "value", + "index" + ], + "default": "value" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "choices": { + "$role": "expression", + "title": "Array of choices", + "description": "Choices to choose from.", + "oneOf": [ + { + "type": "array", + "title": "Simple choices", + "description": "Simple choices to choose from.", + "items": [ + { + "type": "string", + "title": "Simple choice", + "description": "One choice for choice input." + } + ] + }, + { + "type": "array", + "title": "Structured choices", + "description": "Choices that allow full control.", + "items": [ + { + "type": "object", + "title": "Structured choice", + "description": "Structured choice to choose from.", + "properties": { + "value": { + "type": "string", + "title": "Value", + "description": "Value to return when this choice is selected." + }, + "action": { + "$ref": "#/definitions/botframework.json/definitions/CardAction", + "title": "Action", + "description": "Card action for the choice." + }, + "synonyms": { + "type": "array", + "title": "Synonyms", + "description": "List of synonyms to recognize in addition to the value (optional).", + "items": { + "type": "string", + "title": "Synonym", + "description": "Synonym for value." + } + } + } + } + ] + }, + { + "$ref": "#/definitions/stringExpression" + } + ] + }, + "defaultLocale": { + "$ref": "#/definitions/stringExpression", + "title": "Default locale", + "description": "The default locale to use to parse confirmation choices if there is not one passed by the caller.", + "default": "en-us", + "examples": [ + "en-us" + ] + }, + "style": { + "$role": "expression", + "title": "List style", + "description": "Sets the ListStyle to control how choices are rendered.", + "oneOf": [ + { + "type": "string", + "title": "List style", + "description": "Standard list style.", + "enum": [ + "none", + "auto", + "inline", + "list", + "suggestedAction", + "heroCard" + ], + "default": "auto" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "choiceOptions": { + "title": "Choice options", + "description": "Sets the choice options used for controlling how choices are combined.", + "oneOf": [ + { + "type": "object", + "title": "Object", + "description": "Choice options 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 there 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' list style will be prefixed with the index of the choice.", + "default": true + } + } + }, + { + "$ref": "#/definitions/stringExpression" + } + ] + }, + "recognizerOptions": { + "title": "Recognizer options", + "description": "Sets how to recognize choices in the response", + "oneOf": [ + { + "type": "object", + "title": "Object", + "description": "Options for recognizer.", + "properties": { + "noValue": { + "type": "boolean", + "title": "No value", + "description": "If true, the choices value field will NOT be search over", + "default": false + }, + "noAction": { + "type": "boolean", + "title": "No action", + "description": "If true, the choices action.title field will NOT be searched over", + "default": false + }, + "recognizeNumbers": { + "type": "boolean", + "title": "Recognize numbers", + "description": "If true, the number recognizer will be used to recognize an index response (1,2,3...) to the prompt.", + "default": true + }, + "recognizeOrdinals": { + "type": "boolean", + "title": "Recognize ordinals", + "description": "If true, the ordinal recognizer will be used to recognize ordinal response (first/second/...) to the prompt.", + "default": true + } + } + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "default": false, + "examples": [ + false, + "=user.isVip" + ] + }, + "prompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Initial prompt", + "description": "Message to send to collect information.", + "examples": [ + "What is your birth date?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "unrecognizedPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Unrecognized prompt", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "invalidPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Invalid prompt", + "description": "Message to send when the user input does not meet any validation expression.", + "examples": [ + "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "defaultValueResponse": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "maxTurnCount": { + "$ref": "#/definitions/integerExpression", + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information.", + "default": 3, + "minimum": 0, + "maximum": 2147483647, + "examples": [ + 3, + "=settings.xyz" + ] + }, + "validations": { + "type": "array", + "title": "Validation expressions", + "description": "Expression to validate user input.", + "items": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Expression which needs to met for the input to be considered valid", + "examples": [ + "int(this.value) > 1 && int(this.value) <= 150", + "count(this.value) < 300" + ] + } + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", + "examples": [ + "$birthday", + "dialog.${user.name}", + "=f(x)" + ] + }, + "alwaysPrompt": { + "$ref": "#/definitions/booleanExpression", + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty.", + "default": false, + "examples": [ + false, + "=$val" + ] + }, + "allowInterruptions": { + "$ref": "#/definitions/booleanExpression", + "title": "Allow Interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", + "default": true, + "examples": [ + true, + "=user.xyz" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ChoiceInput" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ConditionalSelector": { + "$role": "implements(Microsoft.ITriggerSelector)", + "title": "Conditional trigger selector", + "description": "Use a rule selector based on a condition", + "type": "object", + "required": [ + "condition", + "ifTrue", + "ifFalse", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Expression to evaluate" + }, + "ifTrue": { + "$kind": "Microsoft.ITriggerSelector", + "$ref": "#/definitions/Microsoft.ITriggerSelector" + }, + "ifFalse": { + "$kind": "Microsoft.ITriggerSelector", + "$ref": "#/definitions/Microsoft.ITriggerSelector" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ConditionalSelector" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ConfirmationEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Confirmation entity recognizer", + "description": "Recognizer which recognizes confirmation choices (yes/no).", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ConfirmationEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ConfirmInput": { + "$role": [ + "implements(Microsoft.IDialog)", + "extends(Microsoft.InputDialog)" + ], + "title": "Confirm input dialog", + "description": "Collect information - Ask for confirmation (yes or no).", + "type": "object", + "$policies": { + "interactive": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "outputFormat": { + "$ref": "#/definitions/valueExpression", + "title": "Output format", + "description": "Optional expression to use to format the output.", + "examples": [ + "=concat('confirmation:', this.value)" + ] + }, + "defaultLocale": { + "$ref": "#/definitions/stringExpression", + "title": "Default locale", + "description": "The Default locale or an expression which provides the default locale to use as default if not found in the activity.", + "default": "en-us", + "examples": [ + "en-us" + ] + }, + "style": { + "$role": "expression", + "title": "List style", + "description": "Sets the ListStyle to control how choices are rendered.", + "oneOf": [ + { + "type": "string", + "title": "Standard style", + "description": "Standard style for rendering choices.", + "enum": [ + "none", + "auto", + "inline", + "list", + "suggestedAction", + "heroCard" + ], + "default": "auto" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "choiceOptions": { + "title": "Choice options", + "description": "Choice Options or expression which provides Choice Options to control display choices to the user.", + "oneOf": [ + { + "type": "object", + "title": "Choice options", + "description": "Choice options.", + "properties": { + "inlineSeparator": { + "type": "string", + "title": "Inline separator", + "description": "Text to separate individual choices when there are more than 2 choices", + "default": ", " + }, + "inlineOr": { + "type": "string", + "title": "Inline or", + "description": "Text to be inserted between the choices when their are only 2 choices", + "default": " or " + }, + "inlineOrMore": { + "type": "string", + "title": "Inline or more", + "description": "Text to be 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 + } + } + }, + { + "$ref": "#/definitions/stringExpression" + } + ] + }, + "defaultValue": { + "$ref": "#/definitions/booleanExpression", + "title": "Default value", + "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", + "examples": [ + true, + "=user.age > 3" + ] + }, + "value": { + "$ref": "#/definitions/booleanExpression", + "title": "Value", + "description": "'Property' will be set to the value of this expression unless it evaluates to null.", + "examples": [ + true, + "=user.isVip" + ] + }, + "confirmChoices": { + "$role": "expression", + "title": "Array of choice objects", + "description": "Array of simple or structured choices.", + "oneOf": [ + { + "type": "array", + "title": "Simple choices", + "description": "Simple choices to confirm from.", + "items": [ + { + "type": "string", + "title": "Simple choice", + "description": "Simple choice to confirm." + } + ] + }, + { + "type": "array", + "title": "Structured choices", + "description": "Structured choices for confirmations.", + "items": [ + { + "type": "object", + "title": "Choice", + "description": "Choice to confirm.", + "properties": { + "value": { + "type": "string", + "title": "Value", + "description": "Value to return when this choice is selected." + }, + "action": { + "$ref": "#/definitions/botframework.json/definitions/CardAction", + "title": "Action", + "description": "Card action for the choice." + }, + "synonyms": { + "type": "array", + "title": "Synonyms", + "description": "List of synonyms to recognize in addition to the value (optional).", + "items": { + "type": "string", + "title": "Synonym", + "description": "Synonym for choice." + } + } + } + } + ] + }, + { + "$ref": "#/definitions/stringExpression" + } + ] + }, + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "default": false, + "examples": [ + false, + "=user.isVip" + ] + }, + "prompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Initial prompt", + "description": "Message to send to collect information.", + "examples": [ + "What is your birth date?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "unrecognizedPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Unrecognized prompt", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "invalidPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Invalid prompt", + "description": "Message to send when the user input does not meet any validation expression.", + "examples": [ + "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "defaultValueResponse": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "maxTurnCount": { + "$ref": "#/definitions/integerExpression", + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information.", + "default": 3, + "minimum": 0, + "maximum": 2147483647, + "examples": [ + 3, + "=settings.xyz" + ] + }, + "validations": { + "type": "array", + "title": "Validation expressions", + "description": "Expression to validate user input.", + "items": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Expression which needs to met for the input to be considered valid", + "examples": [ + "int(this.value) > 1 && int(this.value) <= 150", + "count(this.value) < 300" + ] + } + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", + "examples": [ + "$birthday", + "dialog.${user.name}", + "=f(x)" + ] + }, + "alwaysPrompt": { + "$ref": "#/definitions/booleanExpression", + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty.", + "default": false, + "examples": [ + false, + "=$val" + ] + }, + "allowInterruptions": { + "$ref": "#/definitions/booleanExpression", + "title": "Allow Interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", + "default": true, + "examples": [ + true, + "=user.xyz" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ConfirmInput" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ContinueConversation": { + "$role": "implements(Microsoft.IDialog)", + "title": "Continue conversation (Queue)", + "description": "Continue a specific conversation (via StorageQueue implementation).", + "type": "object", + "required": [ + "conversationReference", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "conversationReference": { + "$ref": "#/definitions/objectExpression", + "title": "Conversation Reference", + "description": "A conversation reference. (NOTE: Minimum required values or channelId, conversation).", + "examples": [ + { + "channelId": "skype", + "serviceUrl": "http://smba.skype.com", + "conversation": { + "id": "11111" + }, + "bot": { + "id": "22222" + }, + "user": { + "id": "33333" + }, + "locale": "en-us" + } + ] + }, + "value": { + "$ref": "#/definitions/valueExpression", + "title": "Value", + "description": "Value to send in the activity.value." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ContinueConversation" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ContinueConversationLater": { + "$role": "implements(Microsoft.IDialog)", + "title": "Continue conversation later (Queue)", + "description": "Continue conversation at later time (via StorageQueue implementation).", + "type": "object", + "required": [ + "date", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "date": { + "$ref": "#/definitions/stringExpression", + "title": "Date", + "description": "Date in the future as a ISO string when the conversation should continue.", + "examples": [ + "=addHours(utcNow(), 1)" + ] + }, + "value": { + "$ref": "#/definitions/valueExpression", + "title": "Value", + "description": "Value to send in the activity.value." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ContinueConversationLater" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ContinueLoop": { + "$role": "implements(Microsoft.IDialog)", + "title": "Continue loop", + "description": "Stop executing this template and continue with the next iteration of the loop.", + "type": "object", + "required": [ + "$kind" + ], + "$policies": { + "lastAction": true + }, + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ContinueLoop" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.CrossTrainedRecognizerSet": { + "$role": "implements(Microsoft.IRecognizer)", + "title": "Cross-trained recognizer set", + "description": "Recognizer for selecting between cross trained recognizers.", + "type": "object", + "required": [ + "recognizers", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional unique id using with RecognizerSet." + }, + "recognizers": { + "type": "array", + "title": "Recognizers", + "description": "List of Recognizers defined for this set.", + "items": { + "$kind": "Microsoft.IRecognizer", + "$ref": "#/definitions/Microsoft.IRecognizer" + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.CrossTrainedRecognizerSet" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.CurrencyEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Currency entity recognizer", + "description": "Recognizer which recognizes currency.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.CurrencyEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.DateTimeEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Date and time entity recognizer", + "description": "Recognizer which recognizes dates and time fragments.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.DateTimeEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.DateTimeInput": { + "$role": [ + "implements(Microsoft.IDialog)", + "extends(Microsoft.InputDialog)" + ], + "title": "Date/time input dialog", + "description": "Collect information - Ask for date and/ or time", + "type": "object", + "defaultLocale": { + "$ref": "#/definitions/stringExpression", + "title": "Default locale", + "description": "Default locale.", + "default": "en-us" + }, + "$policies": { + "interactive": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "defaultValue": { + "$ref": "#/definitions/stringExpression", + "format": "date-time", + "title": "Default date", + "description": "'Property' will be set to the value or the result of the expression when max turn count is exceeded.", + "examples": [ + "=user.birthday" + ] + }, + "value": { + "$ref": "#/definitions/stringExpression", + "format": "date-time", + "title": "Value", + "description": "'Property' will be set to the value or the result of the expression unless it evaluates to null.", + "examples": [ + "=user.birthday" + ] + }, + "outputFormat": { + "$ref": "#/definitions/expression", + "title": "Output format", + "description": "Expression to use for formatting the output.", + "examples": [ + "=this.value[0].Value" + ] + }, + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "default": false, + "examples": [ + false, + "=user.isVip" + ] + }, + "prompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Initial prompt", + "description": "Message to send to collect information.", + "examples": [ + "What is your birth date?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "unrecognizedPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Unrecognized prompt", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "invalidPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Invalid prompt", + "description": "Message to send when the user input does not meet any validation expression.", + "examples": [ + "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "defaultValueResponse": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "maxTurnCount": { + "$ref": "#/definitions/integerExpression", + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information.", + "default": 3, + "minimum": 0, + "maximum": 2147483647, + "examples": [ + 3, + "=settings.xyz" + ] + }, + "validations": { + "type": "array", + "title": "Validation expressions", + "description": "Expression to validate user input.", + "items": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Expression which needs to met for the input to be considered valid", + "examples": [ + "int(this.value) > 1 && int(this.value) <= 150", + "count(this.value) < 300" + ] + } + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", + "examples": [ + "$birthday", + "dialog.${user.name}", + "=f(x)" + ] + }, + "alwaysPrompt": { + "$ref": "#/definitions/booleanExpression", + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty.", + "default": false, + "examples": [ + false, + "=$val" + ] + }, + "allowInterruptions": { + "$ref": "#/definitions/booleanExpression", + "title": "Allow Interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", + "default": true, + "examples": [ + true, + "=user.xyz" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.DateTimeInput" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.DebugBreak": { + "$role": "implements(Microsoft.IDialog)", + "title": "Debugger break", + "description": "If debugger is attached, stop the execution at this point in the conversation.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.DebugBreak" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.DeleteActivity": { + "$role": "implements(Microsoft.IDialog)", + "title": "Delete Activity", + "description": "Delete an activity that was previously sent.", + "type": "object", + "required": [ + "activityId", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "activityId": { + "$ref": "#/definitions/stringExpression", + "title": "ActivityId", + "description": "expression to an activityId to delete", + "examples": [ + "=turn.lastresult.id" + ] + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.DeleteActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.DeleteProperties": { + "$role": "implements(Microsoft.IDialog)", + "title": "Delete Properties", + "description": "Delete multiple properties and any value it holds.", + "type": "object", + "required": [ + "properties", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "properties": { + "type": "array", + "title": "Properties", + "description": "Properties to delete.", + "items": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to delete." + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.DeleteProperties" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.DeleteProperty": { + "$role": "implements(Microsoft.IDialog)", + "title": "Delete property", + "description": "Delete a property and any value it holds.", + "type": "object", + "required": [ + "property", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to delete." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.DeleteProperty" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.DimensionEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Dimension entity recognizer", + "description": "Recognizer which recognizes dimension.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.DimensionEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.EditActions": { + "$role": "implements(Microsoft.IDialog)", + "title": "Edit actions", + "description": "Edit the current list of actions.", + "type": "object", + "required": [ + "changeType", + "actions", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "changeType": { + "title": "Type of change", + "description": "Type of change to apply to the current actions.", + "oneOf": [ + { + "type": "string", + "title": "Standard change", + "description": "Standard change types.", + "enum": [ + "insertActions", + "insertActionsBeforeTags", + "appendActions", + "endSequence", + "replaceSequence" + ] + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Actions to apply.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.EditActions" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.EditArray": { + "$role": "implements(Microsoft.IDialog)", + "title": "Edit array", + "description": "Modify an array in memory", + "type": "object", + "required": [ + "itemsProperty", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "changeType": { + "title": "Type of change", + "description": "Type of change to the array in memory.", + "oneOf": [ + { + "type": "string", + "title": "Change type", + "description": "Standard change type.", + "enum": [ + "push", + "pop", + "take", + "remove", + "clear" + ] + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "itemsProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Items property", + "description": "Property that holds the array to update." + }, + "resultProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Result property", + "description": "Property to store the result of this action." + }, + "value": { + "$ref": "#/definitions/valueExpression", + "title": "Value", + "description": "New value or expression.", + "examples": [ + "milk", + "=dialog.favColor", + "=dialog.favColor == 'red'" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.EditArray" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.EmailEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Email entity recognizer", + "description": "Recognizer which recognizes email.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.EmailEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.EmitEvent": { + "$role": "implements(Microsoft.IDialog)", + "title": "Emit a custom event", + "description": "Emit an event. Capture this event with a trigger.", + "type": "object", + "required": [ + "eventName", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "eventName": { + "$role": "expression", + "title": "Event name", + "description": "Name of the event to emit.", + "oneOf": [ + { + "type": "string", + "title": "Built-in event", + "description": "Standard event type.", + "enum": [ + "beginDialog", + "resumeDialog", + "repromptDialog", + "cancelDialog", + "endDialog", + "activityReceived", + "recognizedIntent", + "unknownIntent", + "actionsStarted", + "actionsSaved", + "actionsEnded", + "actionsResumed" + ] + }, + { + "type": "string", + "title": "Custom event", + "description": "Custom event type", + "pattern": "^(?!(beginDialog$|resumeDialog$|repromptDialog$|cancelDialog$|endDialog$|activityReceived$|recognizedIntent$|unknownIntent$|actionsStarted$|actionsSaved$|actionsEnded$|actionsResumed))(\\S){1}.*" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "eventValue": { + "$ref": "#/definitions/valueExpression", + "title": "Event value", + "description": "Value to emit with the event (optional)." + }, + "bubbleEvent": { + "$ref": "#/definitions/booleanExpression", + "title": "Bubble event", + "description": "If true this event is passed on to the parent dialogs." + }, + "handledProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Handled Property", + "description": "Property to store whether the event was handled or not.", + "default": "turn.eventHandled", + "examples": [ + "turn.eventHandled" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.EmitEvent" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.EndDialog": { + "$role": "implements(Microsoft.IDialog)", + "title": "End dialog", + "description": "End this dialog.", + "type": "object", + "$policies": { + "lastAction": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "value": { + "$ref": "#/definitions/valueExpression", + "title": "Value", + "description": "Result value returned to the parent dialog.", + "examples": [ + "=dialog.userName", + "='tomato'" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.EndDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.EndTurn": { + "$role": "implements(Microsoft.IDialog)", + "title": "End turn", + "description": "End the current turn without ending the dialog.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.EndTurn" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.FacebookAdapter": { + "$role": "implements(Microsoft.IAdapter)", + "title": "Facebook connection", + "description": "Connects a bot to Facebook.", + "type": "object", + "required": [ + "FacebookVerifyToken", + "FacebookAppSecret", + "FacebookAccessToken", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "FacebookVerifyToken": { + "type": "string", + "title": "Verification token", + "description": "The verify token obtained from Facebook portal while setting up the application." + }, + "FacebookAppSecret": { + "type": "string", + "title": "App secret", + "description": "The app secret obtained from Facebook portal while setting up the application." + }, + "FacebookAccessToken": { + "type": "string", + "title": "Access token", + "description": "The access token obtained from Facebook portal while setting up the application." + }, + "route": { + "type": "string", + "title": "route", + "description": "Optional route where the adapter is exposed.", + "default": "facebook" + }, + "type": { + "type": "string", + "title": "type", + "description": "Adapter full type name.", + "default": "Microsoft.Bot.Builder.Adapters.Facebook.FacebookAdapter" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.FacebookAdapter" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.FirstSelector": { + "$role": "implements(Microsoft.ITriggerSelector)", + "title": "First trigger selector", + "description": "Selector for first true rule", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.FirstSelector" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Foreach": { + "$role": "implements(Microsoft.IDialog)", + "title": "For each item", + "description": "Execute actions on each item in an a collection.", + "type": "object", + "required": [ + "itemsProperty", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "itemsProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Items property", + "description": "Property that holds the array.", + "examples": [ + "user.todoList" + ] + }, + "index": { + "$ref": "#/definitions/stringExpression", + "title": "Index property", + "description": "Property that holds the index of the item (must be unique within the dialog scope).", + "default": "dialog.foreach.index", + "examples": [ + "dialog.myForEach.myIndex" + ] + }, + "value": { + "$ref": "#/definitions/stringExpression", + "title": "Value property", + "description": "Property that holds the value of the item (must be unique within the dialog scope).", + "default": "dialog.foreach.value", + "examples": [ + "dialog.myForEach.myValue" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Actions to execute for each item. Use '$foreach.value' to access the value of each item. Use '$foreach.index' to access the index of each item.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Foreach" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ForeachPage": { + "$role": "implements(Microsoft.IDialog)", + "title": "For each page", + "description": "Execute actions on each page (collection of items) in an array.", + "type": "object", + "required": [ + "itemsProperty", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "itemsProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Items property", + "description": "Property that holds the array.", + "examples": [ + "user.todoList" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Actions to execute for each page. Use '$foreach.page' to access each page.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "pageIndex": { + "$ref": "#/definitions/stringExpression", + "title": "Index property", + "description": "Property that holds the index of the page.", + "default": "dialog.foreach.pageindex" + }, + "page": { + "$ref": "#/definitions/stringExpression", + "title": "Page property", + "description": "Property that holds the value of the page.", + "default": "dialog.foreach.page" + }, + "pageSize": { + "$ref": "#/definitions/integerExpression", + "title": "Page size", + "description": "Number of items in each page.", + "default": 10 + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ForeachPage" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.GetActivityMembers": { + "$role": "implements(Microsoft.IDialog)", + "title": "Get activity members", + "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property (named location to store information).", + "examples": [ + "user.age" + ] + }, + "activityId": { + "$ref": "#/definitions/stringExpression", + "title": "Activity Id", + "description": "Activity ID or expression to an activityId to use to get the members. If none is defined then the current activity id will be used.", + "examples": [ + "turn.lastresult.id" + ] + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.GetActivityMembers" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.GetConversationMembers": { + "$role": "implements(Microsoft.IDialog)", + "title": "Get conversation members", + "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property (named location to store information).", + "examples": [ + "user.age" + ] + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.GetConversationMembers" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.GetConversationReference": { + "$role": "implements(Microsoft.IDialog)", + "title": "Get ConversationReference", + "description": "Gets the ConversationReference from current context and stores it in property so it can be used to with ContinueConversation action.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property (named location to store information).", + "examples": [ + "user.age" + ] + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.GetConversationReference" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.GotoAction": { + "$role": "implements(Microsoft.IDialog)", + "title": "Go to action", + "description": "Go to an an action by id.", + "type": "object", + "required": [ + "actionId", + "$kind" + ], + "$policies": { + "lastAction": true + }, + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "actionId": { + "$ref": "#/definitions/stringExpression", + "title": "Action Id", + "description": "Action Id to execute next" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.GotoAction" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.GuidEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Guid entity recognizer", + "description": "Recognizer which recognizes guids.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.GuidEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.HashtagEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Hashtag entity recognizer", + "description": "Recognizer which recognizes Hashtags.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.HashtagEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.HttpRequest": { + "$role": "implements(Microsoft.IDialog)", + "type": "object", + "title": "HTTP request", + "description": "Make a HTTP request.", + "required": [ + "url", + "method", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "method": { + "type": "string", + "title": "HTTP method", + "description": "HTTP method to use.", + "enum": [ + "GET", + "POST", + "PATCH", + "PUT", + "DELETE" + ], + "examples": [ + "GET", + "POST" + ] + }, + "url": { + "$ref": "#/definitions/stringExpression", + "title": "Url", + "description": "URL to call (supports data binding).", + "examples": [ + "https://contoso.com" + ] + }, + "body": { + "$ref": "#/definitions/valueExpression", + "title": "Body", + "description": "Body to include in the HTTP call (supports data binding).", + "additionalProperties": true + }, + "resultProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Result property", + "description": "A property to store the result of this action. The result can include any of the 4 properties from the HTTP response: statusCode, reasonPhrase, content, and headers. If the content is JSON it will be a deserialized object. The values can be accessed via .content for example.", + "default": "turn.results", + "examples": [ + "dialog.contosodata" + ] + }, + "contentType": { + "$ref": "#/definitions/stringExpression", + "title": "Content type", + "description": "Content media type for the body.", + "examples": [ + "application/json", + "text/plain" + ] + }, + "headers": { + "type": "object", + "title": "Headers", + "description": "One or more headers to include in the request (supports data binding).", + "additionalProperties": { + "$ref": "#/definitions/stringExpression" + } + }, + "responseType": { + "$ref": "#/definitions/stringExpression", + "title": "Response type", + "description": "Defines the type of HTTP response. Automatically calls the 'Send a response' action if set to 'Activity' or 'Activities'.", + "oneOf": [ + { + "type": "string", + "title": "Standard response", + "description": "Standard response type.", + "enum": [ + "none", + "json", + "activity", + "activities", + "binary" + ], + "default": "json" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.HttpRequest" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.IActivityTemplate": { + "title": "Microsoft ActivityTemplates", + "description": "Components which are ActivityTemplate, which is string template, an activity, or a implementation of ActivityTemplate", + "$role": "interface", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.ActivityTemplate" + }, + { + "$ref": "#/definitions/Microsoft.StaticActivityTemplate" + }, + { + "$ref": "#/definitions/botframework.json/definitions/Activity", + "required": [ + "type" + ] + }, + { + "type": "string" + } + ] + }, + "Microsoft.IAdapter": { + "$role": "interface", + "title": "Bot adapter", + "description": "Component that enables connecting bots to chat clients and applications.", + "type": "object", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.FacebookAdapter" + }, + { + "$ref": "#/definitions/Microsoft.SlackAdapter" + }, + { + "$ref": "#/definitions/Microsoft.TwilioAdapter" + }, + { + "$ref": "#/definitions/Microsoft.WebexAdapter" + }, + { + "type": "string", + "title": "Reference to Microsoft.IAdapter", + "description": "Reference to Microsoft.IAdapter .dialog file." + } + ], + "properties": { + "route": { + "type": "string", + "title": "Adapter http route", + "description": "Route where to expose the adapter." + }, + "type": { + "type": "string", + "title": "Adapter type name", + "description": "Adapter type name" + } + } + }, + "Microsoft.IDialog": { + "title": "Microsoft dialogs", + "description": "Components which derive from Dialog", + "$role": "interface", + "oneOf": [ + { + "$ref": "#/definitions/CustomAction.dialog" + }, + { + "$ref": "#/definitions/CustomAction2.dialog" + }, + { + "$ref": "#/definitions/Microsoft.AdaptiveDialog" + }, + { + "$ref": "#/definitions/Microsoft.Ask" + }, + { + "$ref": "#/definitions/Microsoft.AttachmentInput" + }, + { + "$ref": "#/definitions/Microsoft.BeginDialog" + }, + { + "$ref": "#/definitions/Microsoft.BeginSkill" + }, + { + "$ref": "#/definitions/Microsoft.BreakLoop" + }, + { + "$ref": "#/definitions/Microsoft.CancelAllDialogs" + }, + { + "$ref": "#/definitions/Microsoft.CancelDialog" + }, + { + "$ref": "#/definitions/Microsoft.ChoiceInput" + }, + { + "$ref": "#/definitions/Microsoft.ConfirmInput" + }, + { + "$ref": "#/definitions/Microsoft.ContinueConversation" + }, + { + "$ref": "#/definitions/Microsoft.ContinueConversationLater" + }, + { + "$ref": "#/definitions/Microsoft.ContinueLoop" + }, + { + "$ref": "#/definitions/Microsoft.DateTimeInput" + }, + { + "$ref": "#/definitions/Microsoft.DebugBreak" + }, + { + "$ref": "#/definitions/Microsoft.DeleteActivity" + }, + { + "$ref": "#/definitions/Microsoft.DeleteProperties" + }, + { + "$ref": "#/definitions/Microsoft.DeleteProperty" + }, + { + "$ref": "#/definitions/Microsoft.EditActions" + }, + { + "$ref": "#/definitions/Microsoft.EditArray" + }, + { + "$ref": "#/definitions/Microsoft.EmitEvent" + }, + { + "$ref": "#/definitions/Microsoft.EndDialog" + }, + { + "$ref": "#/definitions/Microsoft.EndTurn" + }, + { + "$ref": "#/definitions/Microsoft.Foreach" + }, + { + "$ref": "#/definitions/Microsoft.ForeachPage" + }, + { + "$ref": "#/definitions/Microsoft.GetActivityMembers" + }, + { + "$ref": "#/definitions/Microsoft.GetConversationMembers" + }, + { + "$ref": "#/definitions/Microsoft.GetConversationReference" + }, + { + "$ref": "#/definitions/Microsoft.GotoAction" + }, + { + "$ref": "#/definitions/Microsoft.HttpRequest" + }, + { + "$ref": "#/definitions/Microsoft.IfCondition" + }, + { + "$ref": "#/definitions/Microsoft.LogAction" + }, + { + "$ref": "#/definitions/Microsoft.NumberInput" + }, + { + "$ref": "#/definitions/Microsoft.OAuthInput" + }, + { + "$ref": "#/definitions/Microsoft.QnAMakerDialog" + }, + { + "$ref": "#/definitions/Microsoft.RepeatDialog" + }, + { + "$ref": "#/definitions/Microsoft.ReplaceDialog" + }, + { + "$ref": "#/definitions/Microsoft.SendActivity" + }, + { + "$ref": "#/definitions/Microsoft.SendHandoffActivity" + }, + { + "$ref": "#/definitions/Microsoft.SetProperties" + }, + { + "$ref": "#/definitions/Microsoft.SetProperty" + }, + { + "$ref": "#/definitions/Microsoft.SignOutUser" + }, + { + "$ref": "#/definitions/Microsoft.SwitchCondition" + }, + { + "$ref": "#/definitions/Microsoft.TelemetryTrackEventAction" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertCondition" + }, + { + "$ref": "#/definitions/Microsoft.TextInput" + }, + { + "$ref": "#/definitions/Microsoft.ThrowException" + }, + { + "$ref": "#/definitions/Microsoft.TraceActivity" + }, + { + "$ref": "#/definitions/Microsoft.UpdateActivity" + }, + { + "$ref": "#/definitions/Testbot.JavascriptAction" + }, + { + "$ref": "#/definitions/Testbot.Multiply" + }, + { + "type": "string", + "pattern": "^(?!(=)).*" + } + ] + }, + "Microsoft.IEntityRecognizer": { + "$role": "interface", + "title": "Entity recognizers", + "description": "Components which derive from EntityRecognizer.", + "type": "object", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.IpEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.RegexEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" + }, + { + "type": "string", + "title": "Reference to Microsoft.IEntityRecognizer", + "description": "Reference to Microsoft.IEntityRecognizer .dialog file." + } + ] + }, + "Microsoft.IfCondition": { + "$role": "implements(Microsoft.IDialog)", + "title": "If condition", + "description": "Two-way branch the conversation flow based on a condition.", + "type": "object", + "required": [ + "condition", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Expression to evaluate.", + "examples": [ + "user.age > 3" + ] + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=user.age > 3" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Actions to execute if condition is true.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "elseActions": { + "type": "array", + "title": "Else", + "description": "Actions to execute if condition is false.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.IfCondition" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ILanguageGenerator": { + "title": "Microsoft LanguageGenerator", + "description": "Components which dervie from the LanguageGenerator class", + "$role": "interface", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.ResourceMultiLanguageGenerator" + }, + { + "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" + }, + { + "type": "string" + } + ] + }, + "Microsoft.InputDialog": { + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "default": false, + "examples": [ + false, + "=user.isVip" + ] + }, + "prompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Initial prompt", + "description": "Message to send to collect information.", + "examples": [ + "What is your birth date?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "unrecognizedPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Unrecognized prompt", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "invalidPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Invalid prompt", + "description": "Message to send when the user input does not meet any validation expression.", + "examples": [ + "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "defaultValueResponse": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "maxTurnCount": { + "$ref": "#/definitions/integerExpression", + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information.", + "default": 3, + "minimum": 0, + "maximum": 2147483647, + "examples": [ + 3, + "=settings.xyz" + ] + }, + "validations": { + "type": "array", + "title": "Validation expressions", + "description": "Expression to validate user input.", + "items": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Expression which needs to met for the input to be considered valid", + "examples": [ + "int(this.value) > 1 && int(this.value) <= 150", + "count(this.value) < 300" + ] + } + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", + "examples": [ + "$birthday", + "dialog.${user.name}", + "=f(x)" + ] + }, + "alwaysPrompt": { + "$ref": "#/definitions/booleanExpression", + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty.", + "default": false, + "examples": [ + false, + "=$val" + ] + }, + "allowInterruptions": { + "$ref": "#/definitions/booleanExpression", + "title": "Allow Interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", + "default": true, + "examples": [ + true, + "=user.xyz" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.InputDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.IpEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "IP entity recognizer", + "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.IpEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.IRecognizer": { + "title": "Microsoft recognizer", + "description": "Components which derive from Recognizer class", + "$role": "interface", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.ChannelMentionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" + }, + { + "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.IpEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.LuisRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.OrchestratorRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.RecognizerSet" + }, + { + "$ref": "#/definitions/Microsoft.RegexEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.RegexRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" + }, + { + "type": "string" + } + ] + }, + "Microsoft.ITextTemplate": { + "title": "Microsoft TextTemplate", + "description": "Components which derive from TextTemplate class", + "$role": "interface", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.TextTemplate" + }, + { + "type": "string" + } + ] + }, + "Microsoft.ITrigger": { + "$role": "interface", + "title": "Microsoft Triggers", + "description": "Components which derive from OnCondition class.", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.OnActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnAssignEntity" + }, + { + "$ref": "#/definitions/Microsoft.OnBeginDialog" + }, + { + "$ref": "#/definitions/Microsoft.OnCancelDialog" + }, + { + "$ref": "#/definitions/Microsoft.OnChooseEntity" + }, + { + "$ref": "#/definitions/Microsoft.OnChooseIntent" + }, + { + "$ref": "#/definitions/Microsoft.OnChooseProperty" + }, + { + "$ref": "#/definitions/Microsoft.OnCommandActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnCommandResultActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnCondition" + }, + { + "$ref": "#/definitions/Microsoft.OnContinueConversation" + }, + { + "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnDialogEvent" + }, + { + "$ref": "#/definitions/Microsoft.OnEndOfActions" + }, + { + "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnError" + }, + { + "$ref": "#/definitions/Microsoft.OnEventActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnHandoffActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnInstallationUpdateActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnIntent" + }, + { + "$ref": "#/definitions/Microsoft.OnInvokeActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnMessageActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnQnAMatch" + }, + { + "$ref": "#/definitions/Microsoft.OnRepromptDialog" + }, + { + "$ref": "#/definitions/Microsoft.OnTypingActivity" + }, + { + "$ref": "#/definitions/Microsoft.OnUnknownIntent" + }, + { + "type": "string", + "title": "Reference to Microsoft.ITrigger", + "description": "Reference to Microsoft.ITrigger .dialog file." + } + ] + }, + "Microsoft.ITriggerSelector": { + "$role": "interface", + "title": "Selectors", + "description": "Components which derive from TriggerSelector class.", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.ConditionalSelector" + }, + { + "$ref": "#/definitions/Microsoft.FirstSelector" + }, + { + "$ref": "#/definitions/Microsoft.MostSpecificSelector" + }, + { + "$ref": "#/definitions/Microsoft.RandomSelector" + }, + { + "$ref": "#/definitions/Microsoft.TrueSelector" + }, + { + "type": "string", + "title": "Reference to Microsoft.ITriggerSelector", + "description": "Reference to Microsoft.ITriggerSelector .dialog file." + } + ] + }, + "Microsoft.LanguagePolicy": { + "title": "Language policy", + "description": "This represents a policy map for locales lookups to use for language", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": { + "type": "array", + "title": "Per-locale policy", + "description": "Language policy per locale.", + "items": { + "type": "string", + "title": "Locale", + "description": "Locale like en-us." + } + }, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.LanguagePolicy" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.LogAction": { + "$role": "implements(Microsoft.IDialog)", + "title": "Log to console", + "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", + "type": "object", + "required": [ + "text", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=user.age > 3" + ] + }, + "text": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Text", + "description": "Information to log.", + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "label": { + "$ref": "#/definitions/stringExpression", + "title": "Label", + "description": "Label for the trace activity (used to identify it in a list of trace activities.)" + }, + "traceActivity": { + "$ref": "#/definitions/booleanExpression", + "title": "Send trace activity", + "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator)." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.LogAction" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.LuisRecognizer": { + "$role": "implements(Microsoft.IRecognizer)", + "title": "LUIS Recognizer", + "description": "LUIS recognizer.", + "type": "object", + "required": [ + "applicationId", + "endpoint", + "endpointKey", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." + }, + "applicationId": { + "$ref": "#/definitions/stringExpression", + "title": "LUIS application id", + "description": "Application ID for your model from the LUIS service." + }, + "version": { + "$ref": "#/definitions/stringExpression", + "title": "LUIS version", + "description": "Optional version to target. If null then predictionOptions.Slot is used." + }, + "endpoint": { + "$ref": "#/definitions/stringExpression", + "title": "LUIS endpoint", + "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com." + }, + "endpointKey": { + "$ref": "#/definitions/stringExpression", + "title": "LUIS prediction key", + "description": "LUIS prediction key used to call endpoint." + }, + "externalEntityRecognizer": { + "$kind": "Microsoft.IRecognizer", + "title": "External entity recognizer", + "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.", + "$ref": "#/definitions/Microsoft.IRecognizer" + }, + "dynamicLists": { + "$ref": "#/definitions/arrayExpression", + "title": "Dynamic lists", + "description": "Runtime defined entity lists.", + "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", + "title": "List entry", + "description": "Canonical form and synonynms.", + "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": { + "title": "Synonym", + "description": "Synonym for canonical form.", + "type": "string" + } + } + } + } + } + } + } + }, + "predictionOptions": { + "type": "object", + "title": "Prediction options", + "description": "Options to control LUIS prediction behavior.", + "properties": { + "includeAllIntents": { + "$ref": "#/definitions/booleanExpression", + "title": "Include all intents", + "description": "True for all intents, false for only top intent." + }, + "includeInstanceData": { + "$ref": "#/definitions/booleanExpression", + "title": "Include $instance", + "description": "True to include $instance metadata in the LUIS response." + }, + "log": { + "$ref": "#/definitions/booleanExpression", + "title": "Log utterances", + "description": "True to log utterances on LUIS service." + }, + "preferExternalEntities": { + "$ref": "#/definitions/booleanExpression", + "title": "Prefer external entities", + "description": "True to prefer external entities to those generated by LUIS models." + }, + "slot": { + "$ref": "#/definitions/stringExpression", + "title": "Slot", + "description": "Slot to use for talking to LUIS service like production or staging." + } + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.LuisRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.MentionEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Mentions entity recognizer", + "description": "Recognizer which recognizes @Mentions", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.MentionEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.MostSpecificSelector": { + "$role": "implements(Microsoft.ITriggerSelector)", + "title": "Most specific trigger selector", + "description": "Select most specific true events with optional additional selector", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "selector": { + "$kind": "Microsoft.ITriggerSelector", + "$ref": "#/definitions/Microsoft.ITriggerSelector" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.MostSpecificSelector" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.MultiLanguageRecognizer": { + "$role": "implements(Microsoft.IRecognizer)", + "title": "Multi-language recognizer", + "description": "Configure one recognizer per language and the specify the language fallback policy.", + "type": "object", + "required": [ + "recognizers", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." + }, + "languagePolicy": { + "$kind": "Microsoft.LanguagePolicy", + "type": "object", + "title": "Language policy", + "description": "Defines fall back languages to try per user input language.", + "$ref": "#/definitions/Microsoft.LanguagePolicy" + }, + "recognizers": { + "type": "object", + "title": "Recognizers", + "description": "Map of language -> Recognizer", + "additionalProperties": { + "$kind": "Microsoft.IRecognizer", + "$ref": "#/definitions/Microsoft.IRecognizer" + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.MultiLanguageRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.NumberEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Number entity recognizer", + "description": "Recognizer which recognizes numbers.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.NumberEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.NumberInput": { + "$role": [ + "implements(Microsoft.IDialog)", + "extends(Microsoft.InputDialog)" + ], + "title": "Number input dialog", + "description": "Collect information - Ask for a number.", + "type": "object", + "$policies": { + "interactive": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "defaultValue": { + "$ref": "#/definitions/numberExpression", + "title": "Default value", + "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", + "examples": [ + 13, + "=user.age" + ] + }, + "value": { + "$ref": "#/definitions/numberExpression", + "title": "Value", + "description": "'Property' will be set to the value of this expression unless it evaluates to null.", + "examples": [ + 13, + "=user.age" + ] + }, + "outputFormat": { + "$ref": "#/definitions/expression", + "title": "Output format", + "description": "Expression to format the number output.", + "examples": [ + "=this.value", + "=int(this.text)" + ] + }, + "defaultLocale": { + "$ref": "#/definitions/stringExpression", + "title": "Default locale", + "description": "Default locale to use if there is no locale available..", + "default": "en-us" + }, + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "default": false, + "examples": [ + false, + "=user.isVip" + ] + }, + "prompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Initial prompt", + "description": "Message to send to collect information.", + "examples": [ + "What is your birth date?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "unrecognizedPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Unrecognized prompt", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "invalidPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Invalid prompt", + "description": "Message to send when the user input does not meet any validation expression.", + "examples": [ + "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "defaultValueResponse": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "maxTurnCount": { + "$ref": "#/definitions/integerExpression", + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information.", + "default": 3, + "minimum": 0, + "maximum": 2147483647, + "examples": [ + 3, + "=settings.xyz" + ] + }, + "validations": { + "type": "array", + "title": "Validation expressions", + "description": "Expression to validate user input.", + "items": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Expression which needs to met for the input to be considered valid", + "examples": [ + "int(this.value) > 1 && int(this.value) <= 150", + "count(this.value) < 300" + ] + } + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", + "examples": [ + "$birthday", + "dialog.${user.name}", + "=f(x)" + ] + }, + "alwaysPrompt": { + "$ref": "#/definitions/booleanExpression", + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty.", + "default": false, + "examples": [ + false, + "=$val" + ] + }, + "allowInterruptions": { + "$ref": "#/definitions/booleanExpression", + "title": "Allow Interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", + "default": true, + "examples": [ + true, + "=user.xyz" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.NumberInput" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.NumberRangeEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Number range entity recognizer", + "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.NumberRangeEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OAuthInput": { + "$role": "implements(Microsoft.IDialog)", + "title": "OAuthInput Dialog", + "description": "Collect login information before each request.", + "type": "object", + "required": [ + "connectionName", + "$kind" + ], + "$policies": { + "interactive": true + }, + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "connectionName": { + "$ref": "#/definitions/stringExpression", + "title": "Connection name", + "description": "The connection name configured in Azure Web App Bot OAuth settings.", + "examples": [ + "msgraphOAuthConnection" + ] + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=user.age > 3" + ] + }, + "text": { + "$ref": "#/definitions/stringExpression", + "title": "Text", + "description": "Text shown in the OAuth signin card.", + "examples": [ + "Please sign in. ", + "=concat(x,y,z)" + ] + }, + "title": { + "$ref": "#/definitions/stringExpression", + "title": "Title", + "description": "Title shown in the OAuth signin card.", + "examples": [ + "Login" + ] + }, + "timeout": { + "$ref": "#/definitions/integerExpression", + "title": "Timeout", + "description": "Time out setting for the OAuth signin card.", + "default": 900000 + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Token property", + "description": "Property to store the OAuth token result. WARNING: Changing this location is not recommended as you should call OAuthInput immediately before each use of the token.", + "default": "turn.token", + "examples": [ + "turn.token" + ] + }, + "invalidPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Invalid prompt", + "description": "Message to send if user response is invalid.", + "examples": [ + "Sorry, the login info you provided is not valid." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "defaultValueResponse": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Login failed." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "maxTurnCount": { + "$ref": "#/definitions/integerExpression", + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information.", + "default": 3, + "examples": [ + 3 + ] + }, + "defaultValue": { + "$ref": "#/definitions/expression", + "title": "Default value", + "description": "Expression to examine on each turn of the conversation as possible value to the property.", + "examples": [ + "@token" + ] + }, + "allowInterruptions": { + "$ref": "#/definitions/booleanExpression", + "title": "Allow interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", + "default": true, + "examples": [ + true, + "=f(x)" + ] + }, + "alwaysPrompt": { + "$ref": "#/definitions/booleanExpression", + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty.", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OAuthInput" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On activity", + "description": "Actions to perform on receipt of a generic activity.", + "type": "object", + "required": [ + "type", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "type": { + "type": "string", + "title": "Activity type", + "description": "The Activity.Type to match" + }, + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnAssignEntity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On entity assignment", + "description": "Actions to apply an operation on a property and value.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "operation": { + "type": "string", + "title": "Operation", + "description": "Operation filter on event." + }, + "property": { + "type": "string", + "title": "Property", + "description": "Property filter on event." + }, + "value": { + "type": "string", + "title": "Value", + "description": "Value filter on event." + }, + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnAssignEntity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnBeginDialog": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On begin dialog", + "description": "Actions to perform when this dialog begins.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnBeginDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnCancelDialog": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On cancel dialog", + "description": "Actions to perform on cancel dialog event.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnCancelDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnChooseEntity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On choose entity", + "description": "Actions to be performed when value is ambiguous for operator and property.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "operation": { + "type": "string", + "title": "Operation", + "description": "Operation filter on event." + }, + "property": { + "type": "string", + "title": "Property", + "description": "Property filter on event." + }, + "value": { + "type": "string", + "title": "Ambiguous value", + "description": "Ambiguous value filter on event." + }, + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnChooseEntity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnChooseIntent": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On ambiguous intent", + "description": "Actions to perform on when an intent is ambiguous.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "intents": { + "type": "array", + "title": "Intents", + "description": "Intents that must be in the ChooseIntent result for this condition to trigger.", + "items": { + "title": "Intent", + "description": "Intent name to trigger on.", + "type": "string" + } + }, + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnChooseIntent" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnChooseProperty": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On choose property", + "description": "Actions to take when there are multiple possible mappings of entities to properties and operations.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnChooseProperty" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnCommandActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On Command activity", + "description": "Actions to perform on receipt of an activity with type 'Command'. Overrides Intent trigger.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnCommandActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnCommandResultActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On Command Result activity", + "description": "Actions to perform on receipt of an activity with type 'CommandResult'. Overrides Intent trigger.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnCommandResultActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnCondition": { + "$role": "implements(Microsoft.ITrigger)", + "title": "On condition", + "description": "Actions to perform when specified condition is true.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnCondition" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnContinueConversation": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On continue conversation", + "description": "Actions to perform when a conversation is started up again from a ContinueConversationLater action.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnContinueConversation" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnConversationUpdateActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On ConversationUpdate activity", + "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnConversationUpdateActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnDialogEvent": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On dialog event", + "description": "Actions to perform when a specific dialog event occurs.", + "type": "object", + "required": [ + "event", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "event": { + "type": "string", + "title": "Dialog event name", + "description": "Name of dialog event." + }, + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnDialogEvent" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnEndOfActions": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On end of actions", + "description": "Actions to take when there are no more actions in the current dialog.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnEndOfActions" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnEndOfConversationActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On EndOfConversation activity", + "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", + "type": "object", + "required": [ + "$kind" + ], + "$policies": { + "nonInteractive": true + }, + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnEndOfConversationActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnError": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On error", + "description": "Action to perform when an 'Error' dialog event occurs.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnError" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnEventActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On Event activity", + "description": "Actions to perform on receipt of an activity with type 'Event'.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnEventActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnHandoffActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On Handoff activity", + "description": "Actions to perform on receipt of an activity with type 'HandOff'.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnHandoffActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnInstallationUpdateActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On InstallationUpdate activity", + "description": "Actions to perform on receipt of an activity with type 'InstallationUpdate'.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnInstallationUpdateActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnIntent": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On intent recognition", + "description": "Actions to perform when specified intent is recognized.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "intent": { + "type": "string", + "title": "Intent", + "description": "Name of intent." + }, + "entities": { + "type": "array", + "title": "Entities", + "description": "Required entities.", + "items": { + "type": "string", + "title": "Entity", + "description": "Entity that must be present." + } + }, + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnIntent" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnInvokeActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On Invoke activity", + "description": "Actions to perform on receipt of an activity with type 'Invoke'.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnInvokeActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnMessageActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On Message activity", + "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnMessageActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnMessageDeleteActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On MessageDelete activity", + "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnMessageDeleteActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnMessageReactionActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On MessageReaction activity", + "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnMessageReactionActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnMessageUpdateActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On MessageUpdate activity", + "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnMessageUpdateActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnQnAMatch": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On QnAMaker match", + "description": "Actions to perform on when an match from QnAMaker is found.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnQnAMatch" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnRepromptDialog": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On RepromptDialog", + "description": "Actions to perform when 'RepromptDialog' event occurs.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnRepromptDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnTypingActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On Typing activity", + "description": "Actions to perform on receipt of an activity with type 'Typing'.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnTypingActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OnUnknownIntent": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On unknown intent", + "description": "Action to perform when user input is unrecognized or if none of the 'on intent recognition' triggers match recognized intent.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/numberExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnUnknownIntent" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OrchestratorRecognizer": { + "$role": "implements(Microsoft.IRecognizer)", + "title": "Orchestrator recognizer", + "description": "Orchestrator recognizer.", + "type": "object", + "required": [ + "modelFolder", + "snapshotFile", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional unique id using with RecognizerSet." + }, + "modelFolder": { + "$ref": "#/definitions/stringExpression", + "title": "Base Model", + "description": "Base model folder path.", + "default": "=settings.orchestrator.modelFolder" + }, + "snapshotFile": { + "$ref": "#/definitions/stringExpression", + "title": "Snapshot File", + "description": "Snapshot file.", + "default": "=settings.orchestrator.snapshotFile" + }, + "externalEntityRecognizer": { + "$kind": "Microsoft.IRecognizer", + "title": "External entity recognizer", + "description": "Entities recognized by this recognizer will be merged with Orchestrator results.", + "$ref": "#/definitions/Microsoft.IRecognizer" + }, + "disambiguationScoreThreshold": { + "$ref": "#/definitions/numberExpression", + "title": "Threshold", + "description": "Recognizer returns ChooseIntent (disambiguation) if other intents are classified within this score of the top scoring intent.", + "default": 0.05, + "examples": [ + "=true", + "=turn.scoreThreshold", + "=settings.orchestrator.disambigScoreThreshold" + ] + }, + "detectAmbiguousIntents": { + "$ref": "#/definitions/booleanExpression", + "title": "Detect ambiguous intents", + "description": "If true, recognizer will look for ambiguous intents (intents with close recognition scores from top scoring intent).", + "default": false, + "examples": [ + "=true", + "=turn.detectAmbiguousIntents", + "=settings.orchestrator.detectAmbiguousIntents" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OrchestratorRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OrdinalEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Ordinal entity recognizer", + "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OrdinalEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.PercentageEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Percentage entity recognizer", + "description": "Recognizer which recognizes percentages.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.PercentageEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.PhoneNumberEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Phone number entity recognizer", + "description": "Recognizer which recognizes phone numbers.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.PhoneNumberEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.QnAMakerDialog": { + "$role": "implements(Microsoft.IDialog)", + "title": "QnAMaker dialog", + "description": "Dialog which uses QnAMAker knowledge base to answer questions.", + "type": "object", + "required": [ + "knowledgeBaseId", + "endpointKey", + "hostname", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "knowledgeBaseId": { + "$ref": "#/definitions/stringExpression", + "title": "KnowledgeBase Id", + "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", + "default": "=settings.qna.knowledgebaseid" + }, + "endpointKey": { + "$ref": "#/definitions/stringExpression", + "title": "Endpoint key", + "description": "Endpoint key for the QnA Maker KB.", + "default": "=settings.qna.endpointkey" + }, + "hostname": { + "$ref": "#/definitions/stringExpression", + "title": "Hostname", + "description": "Hostname for your QnA Maker service.", + "default": "=settings.qna.hostname", + "examples": [ + "https://yourserver.azurewebsites.net/qnamaker" + ] + }, + "noAnswer": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Fallback answer", + "description": "Default answer to return when none found in KB.", + "default": "Sorry, I did not find an answer.", + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "threshold": { + "$ref": "#/definitions/numberExpression", + "title": "Threshold", + "description": "Threshold score to filter results.", + "default": 0.3 + }, + "activeLearningCardTitle": { + "$ref": "#/definitions/stringExpression", + "title": "Active learning card title", + "description": "Title for active learning suggestions card.", + "default": "Did you mean:" + }, + "cardNoMatchText": { + "$ref": "#/definitions/stringExpression", + "title": "Card no match text", + "description": "Text for no match option.", + "default": "None of the above." + }, + "cardNoMatchResponse": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Card no match response", + "description": "Custom response when no match option was selected.", + "default": "Thanks for the feedback.", + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "strictFilters": { + "$ref": "#/definitions/arrayExpression", + "title": "Strict filters", + "description": "Metadata filters to use when calling the QnA Maker KB.", + "items": { + "type": "object", + "title": "Metadata filter", + "description": "Metadata filter.", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of filter property.", + "maximum": 100 + }, + "value": { + "type": "string", + "title": "Value", + "description": "Value to filter on.", + "maximum": 100 + } + } + } + }, + "top": { + "$ref": "#/definitions/numberExpression", + "title": "Top", + "description": "The number of answers you want to retrieve.", + "default": 3 + }, + "isTest": { + "type": "boolean", + "title": "IsTest", + "description": "True, if pointing to Test environment, else false.", + "default": false + }, + "rankerType": { + "$ref": "#/definitions/stringExpression", + "title": "Ranker type", + "description": "Type of Ranker.", + "oneOf": [ + { + "title": "Standard ranker", + "description": "Standard ranker types.", + "enum": [ + "default", + "questionOnly", + "autoSuggestQuestion" + ], + "default": "default" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "strictFiltersJoinOperator": { + "$ref": "#/definitions/stringExpression", + "title": "StrictFiltersJoinOperator", + "description": "Join operator for Strict Filters.", + "oneOf": [ + { + "title": "Join operator", + "description": "Value of Join Operator to be used as conjunction with Strict Filter values.", + "enum": [ + "AND", + "OR" + ], + "default": "AND" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.QnAMakerDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.QnAMakerRecognizer": { + "$role": "implements(Microsoft.IRecognizer)", + "title": "QnAMaker recognizer", + "description": "Recognizer for generating QnAMatch intents from a KB.", + "type": "object", + "required": [ + "knowledgeBaseId", + "endpointKey", + "hostname", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional unique id using with RecognizerSet." + }, + "knowledgeBaseId": { + "$ref": "#/definitions/stringExpression", + "title": "KnowledgeBase Id", + "description": "Knowledge base Id of your QnA Maker knowledge base.", + "default": "=settings.qna.knowledgebaseid" + }, + "endpointKey": { + "$ref": "#/definitions/stringExpression", + "title": "Endpoint key", + "description": "Endpoint key for the QnA Maker KB.", + "default": "=settings.qna.endpointkey" + }, + "hostname": { + "$ref": "#/definitions/stringExpression", + "title": "Hostname", + "description": "Hostname for your QnA Maker service.", + "default": "=settings.qna.hostname", + "examples": [ + "https://yourserver.azurewebsites.net/qnamaker" + ] + }, + "threshold": { + "$ref": "#/definitions/numberExpression", + "title": "Threshold", + "description": "Threshold score to filter results.", + "default": 0.3 + }, + "strictFilters": { + "$ref": "#/definitions/arrayExpression", + "title": "Strict filters", + "description": "Metadata filters to use when calling the QnA Maker KB.", + "items": { + "type": "object", + "title": "Metadata filters", + "description": "Metadata filters to use when querying QnA Maker KB.", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name to filter on.", + "maximum": 100 + }, + "value": { + "type": "string", + "title": "Value", + "description": "Value to restrict filter.", + "maximum": 100 + } + } + } + }, + "top": { + "$ref": "#/definitions/numberExpression", + "title": "Top", + "description": "The number of answers you want to retrieve.", + "default": 3 + }, + "isTest": { + "$ref": "#/definitions/booleanExpression", + "title": "Use test environment", + "description": "True, if pointing to Test environment, else false.", + "examples": [ + true, + "=f(x)" + ] + }, + "rankerType": { + "title": "Ranker type", + "description": "Type of Ranker.", + "oneOf": [ + { + "type": "string", + "title": "Ranker type", + "description": "Type of Ranker.", + "enum": [ + "default", + "questionOnly", + "autoSuggestQuestion" + ], + "default": "default" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "strictFiltersJoinOperator": { + "$ref": "#/definitions/stringExpression", + "title": "StrictFiltersJoinOperator", + "description": "Join operator for Strict Filters.", + "oneOf": [ + { + "title": "Join operator", + "description": "Value of Join Operator to be used as onjuction with Strict Filter values.", + "enum": [ + "AND", + "OR" + ], + "default": "AND" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "includeDialogNameInMetadata": { + "$ref": "#/definitions/booleanExpression", + "title": "Include dialog name", + "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true", + "default": true, + "examples": [ + true, + "=f(x)" + ] + }, + "metadata": { + "$ref": "#/definitions/arrayExpression", + "title": "Metadata filters", + "description": "Metadata filters to use when calling the QnA Maker KB.", + "items": { + "type": "object", + "title": "Metadata filter", + "description": "Metadata filter to use when calling the QnA Maker KB.", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of value to test." + }, + "value": { + "type": "string", + "title": "Value", + "description": "Value to filter against." + } + } + } + }, + "context": { + "$ref": "#/definitions/objectExpression", + "title": "QnA request context", + "description": "Context to use for ranking." + }, + "qnaId": { + "$ref": "#/definitions/integerExpression", + "title": "QnA Id", + "description": "A number or expression which is the QnAId to paass to QnAMaker API." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.QnAMakerRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.RandomSelector": { + "$role": "implements(Microsoft.ITriggerSelector)", + "title": "Random rule selector", + "description": "Select most specific true rule.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "seed": { + "type": "integer", + "title": "Random seed", + "description": "Random seed to start random number generation." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.RandomSelector" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.RecognizerSet": { + "$role": "implements(Microsoft.IRecognizer)", + "title": "Recognizer set", + "description": "Creates the union of the intents and entities of the recognizers in the set.", + "type": "object", + "required": [ + "recognizers", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." + }, + "recognizers": { + "type": "array", + "title": "Recognizers", + "description": "List of Recognizers defined for this set.", + "items": { + "$kind": "Microsoft.IRecognizer", + "$ref": "#/definitions/Microsoft.IRecognizer" + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.RecognizerSet" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.RegexEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Regex entity recognizer", + "description": "Recognizer which recognizes patterns of input based on regex.", + "type": "object", + "required": [ + "name", + "pattern", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of the entity" + }, + "pattern": { + "type": "string", + "title": "Pattern", + "description": "Pattern expressed as regular expression." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.RegexEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.RegexRecognizer": { + "$role": "implements(Microsoft.IRecognizer)", + "title": "Regex recognizer", + "description": "Use regular expressions to recognize intents and entities from user input.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." + }, + "intents": { + "type": "array", + "title": "RegEx patterns to intents", + "description": "Collection of patterns to match for an intent.", + "items": { + "type": "object", + "title": "Pattern", + "description": "Intent and regex pattern.", + "properties": { + "intent": { + "type": "string", + "title": "Intent", + "description": "The intent name." + }, + "pattern": { + "type": "string", + "title": "Pattern", + "description": "The regular expression pattern." + } + } + } + }, + "entities": { + "type": "array", + "title": "Entity recognizers", + "description": "Collection of entity recognizers to use.", + "items": { + "$kind": "Microsoft.IEntityRecognizer", + "$ref": "#/definitions/Microsoft.IEntityRecognizer" + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.RegexRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.RepeatDialog": { + "$role": "implements(Microsoft.IDialog)", + "type": "object", + "title": "Repeat dialog", + "description": "Repeat current dialog.", + "$policies": { + "lastAction": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "allowLoop": { + "$ref": "#/definitions/booleanExpression", + "title": "AllowLoop", + "description": "Optional condition which if true will allow loop of the repeated dialog.", + "examples": [ + "user.age > 3" + ] + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "options": { + "$ref": "#/definitions/objectExpression", + "title": "Options", + "description": "One or more options that are passed to the dialog that is called.", + "additionalProperties": { + "type": "string", + "title": "Options", + "description": "Options for repeating dialog." + } + }, + "activityProcessed": { + "$ref": "#/definitions/booleanExpression", + "title": "Activity processed", + "description": "When set to false, the dialog that is called can process the current activity.", + "default": true + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.RepeatDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ReplaceDialog": { + "$role": "implements(Microsoft.IDialog)", + "type": "object", + "title": "Replace dialog", + "description": "Replace current dialog with another dialog.", + "$policies": { + "lastAction": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "dialog": { + "oneOf": [ + { + "$kind": "Microsoft.IDialog", + "pattern": "^(?!(=)).*", + "title": "Dialog", + "$ref": "#/definitions/Microsoft.IDialog" + }, + { + "$ref": "#/definitions/equalsExpression", + "examples": [ + "=settings.dialogId" + ] + } + ], + "title": "Dialog name", + "description": "Name of the dialog to call." + }, + "options": { + "$ref": "#/definitions/objectExpression", + "title": "Options", + "description": "One or more options that are passed to the dialog that is called.", + "additionalProperties": { + "type": "string", + "title": "Options", + "description": "Options for replacing dialog." + } + }, + "activityProcessed": { + "$ref": "#/definitions/booleanExpression", + "title": "Activity processed", + "description": "When set to false, the dialog that is called can process the current activity.", + "default": true + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ReplaceDialog" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ResourceMultiLanguageGenerator": { + "$role": "implements(Microsoft.ILanguageGenerator)", + "title": "Resource multi-language generator", + "description": "MultiLanguage Generator which is bound to resource by resource Id.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional generator ID." + }, + "resourceId": { + "type": "string", + "title": "Resource Id", + "description": "Resource which is the root language generator. Other generaters with the same name and language suffix will be loaded into this generator and used based on the Language Policy.", + "default": "dialog.result" + }, + "languagePolicy": { + "type": "object", + "title": "Language policy", + "description": "Set alternate language policy for this generator. If not set, the global language policy will be used." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ResourceMultiLanguageGenerator" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.SendActivity": { + "$role": "implements(Microsoft.IDialog)", + "title": "Send an activity", + "description": "Respond with an activity.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "activity": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Activity", + "description": "Activity to send.", + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.SendActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.SendHandoffActivity": { + "$role": "implements(Microsoft.IDialog)", + "title": "Send a handoff activity", + "description": "Sends a handoff activity to trigger a handoff request.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "context": { + "$ref": "#/definitions/objectExpression", + "title": "Context", + "description": "Context to send with the handoff request" + }, + "transcript": { + "$ref": "#/definitions/objectExpression", + "title": "transcript", + "description": "Transcript to send with the handoff request" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.SendHandoffActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.SetProperties": { + "$role": "implements(Microsoft.IDialog)", + "title": "Set property", + "description": "Set one or more property values.", + "type": "object", + "required": [ + "assignments", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=user.age > 3" + ] + }, + "assignments": { + "type": "array", + "title": "Assignments", + "description": "Property value assignments to set.", + "items": { + "type": "object", + "title": "Assignment", + "description": "Property assignment.", + "properties": { + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property (named location to store information).", + "examples": [ + "user.age" + ] + }, + "value": { + "$ref": "#/definitions/valueExpression", + "title": "Value", + "description": "New value or expression.", + "examples": [ + "='milk'", + "=dialog.favColor", + "=dialog.favColor == 'red'" + ] + } + } + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.SetProperties" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.SetProperty": { + "$role": "implements(Microsoft.IDialog)", + "title": "Set property", + "description": "Set property to a value.", + "type": "object", + "required": [ + "property", + "value", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=user.age > 3" + ] + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property (named location to store information).", + "examples": [ + "user.age" + ] + }, + "value": { + "$ref": "#/definitions/valueExpression", + "title": "Value", + "description": "New value or expression.", + "examples": [ + "='milk'", + "=dialog.favColor", + "=dialog.favColor == 'red'" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.SetProperty" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.SignOutUser": { + "$role": "implements(Microsoft.IDialog)", + "title": "Sign out user", + "description": "Sign a user out that was logged in previously using OAuthInput.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "userId": { + "$ref": "#/definitions/stringExpression", + "title": "UserId", + "description": "Expression to an user to signout. Default is user.id.", + "default": "=user.id" + }, + "connectionName": { + "$ref": "#/definitions/stringExpression", + "title": "Connection name", + "description": "Connection name that was used with OAuthInput to log a user in." + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=user.age > 3" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.SignOutUser" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.SlackAdapter": { + "$role": "implements(Microsoft.IAdapter)", + "title": "Slack connection", + "description": "Connects a bot to Slack.", + "type": "object", + "required": [ + "SlackVerificationToken", + "SlackBotToken", + "SlackClientSigningSecret", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "SlackVerificationToken": { + "type": "string", + "title": "Verification token", + "description": "Verification token obtained from the Slack set-up steps." + }, + "SlackBotToken": { + "type": "string", + "title": "Bot token", + "description": "Bot token obtained from the Slack set-up steps." + }, + "SlackClientSigningSecret": { + "type": "string", + "title": "Client signing secret", + "description": "Client signing secret obtained from the Slack set-up steps." + }, + "route": { + "type": "string", + "title": "Route", + "description": "Optional route where the adapter is exposed.", + "default": "slack" + }, + "type": { + "type": "string", + "title": "type", + "description": "Adapter full type name.", + "default": "Microsoft.Bot.Builder.Adapters.Slack.SlackAdapter" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.SlackAdapter" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.StaticActivityTemplate": { + "$role": "implements(Microsoft.IActivityTemplate)", + "title": "Microsoft static activity template", + "description": "This allows you to define a static Activity object", + "type": "object", + "required": [ + "activity", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "activity": { + "$ref": "#/definitions/botframework.json/definitions/Activity", + "title": "Activity", + "description": "A static Activity to used.", + "required": [ + "type" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.StaticActivityTemplate" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.SwitchCondition": { + "$role": "implements(Microsoft.IDialog)", + "title": "Switch condition", + "description": "Execute different actions based on the value of a property.", + "type": "object", + "required": [ + "condition", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "condition": { + "$ref": "#/definitions/stringExpression", + "title": "Condition", + "description": "Property to evaluate.", + "examples": [ + "user.favColor" + ] + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=user.age > 3" + ] + }, + "cases": { + "type": "array", + "title": "Cases", + "description": "Actions for each possible condition.", + "items": { + "type": "object", + "title": "Case", + "description": "Case and actions.", + "required": [ + "value" + ], + "properties": { + "value": { + "type": [ + "number", + "integer", + "boolean", + "string" + ], + "title": "Value", + "description": "The value to compare the condition with.", + "examples": [ + "red", + "true", + "13" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + } + } + } + }, + "default": { + "type": "array", + "title": "Default", + "description": "Actions to execute if none of the cases meet the condition.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.SwitchCondition" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TelemetryTrackEventAction": { + "$role": "implements(Microsoft.IDialog)", + "type": "object", + "title": "Telemetry - track event", + "description": "Track a custom event using the registered Telemetry Client.", + "required": [ + "url", + "method", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "eventName": { + "$ref": "#/definitions/stringExpression", + "title": "Event name", + "description": "The name of the event to track.", + "examples": [ + "MyEventStarted", + "MyEventCompleted" + ] + }, + "properties": { + "type": "object", + "title": "Properties", + "description": "One or more properties to attach to the event being tracked.", + "additionalProperties": { + "$ref": "#/definitions/stringExpression" + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.TelemetryTrackEventAction" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TemperatureEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Temperature recognizer", + "description": "Recognizer which recognizes temperatures.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.TemperatureEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TemplateEngineLanguageGenerator": { + "$role": "implements(Microsoft.ILanguageGenerator)", + "title": "Template multi-language generator", + "description": "Template Generator which allows only inline evaluation of templates.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional generator ID." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.TemplateEngineLanguageGenerator" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.AssertCondition": { + "$role": "implements(Microsoft.IDialog)", + "title": "Assert Condition", + "description": "Assert condition is true.", + "type": "object", + "required": [ + "condition", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Expression to evalute", + "examples": [ + "user.age > 10" + ] + }, + "description": { + "type": "string", + "title": "Description", + "description": "Description of what the condition is testing" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.AssertCondition" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.AssertNoActivity": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Assert Reply Activity", + "description": "Asserts that there is no activity.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "description": { + "type": "string", + "title": "Description", + "description": "The description of the assertion" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.AssertNoActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.AssertReply": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Assert reply", + "description": "Asserts that a reply text is valid.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "text": { + "type": "string", + "title": "Reply text", + "description": "Expected reply text" + }, + "exact": { + "type": "boolean", + "title": "Exact match", + "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" + }, + "description": { + "type": "string", + "title": "Description", + "description": "The description of what the assertion is testing" + }, + "timeout": { + "type": "number", + "title": "Timeout", + "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" + }, + "assertions": { + "type": "array", + "title": "Assertions to validate activity", + "description": "Sequence of expressions which must evaluate to true.", + "items": { + "$ref": "#/definitions/condition", + "title": "Assertion", + "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", + "examples": [ + "user.vip == true" + ] + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.AssertReply" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.AssertReplyActivity": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Assert reply activity", + "description": "Asserts that a reply activity is valid.", + "type": "object", + "required": [ + "assertions", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "description": { + "type": "string", + "title": "Description", + "description": "The description of what the assertion is testing" + }, + "timeout": { + "type": "number", + "title": "Timeout", + "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" + }, + "assertions": { + "type": "array", + "title": "Assertions to validate Activity that is sent by the dialog", + "description": "Sequence of expressions which must evaluate to true.", + "items": { + "$ref": "#/definitions/condition", + "title": "Assertion", + "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", + "examples": [ + "user.vip == true" + ] + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.AssertReplyActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.AssertReplyOneOf": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Assert activity text matches at least one", + "description": "Asserts that a reply text is one of multiple optional responses.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "text": { + "type": "array", + "title": "Replies", + "description": "Expected replies (one of which must match).", + "items": { + "type": "string", + "title": "Expected reply", + "description": "Expected reply." + } + }, + "exact": { + "type": "boolean", + "title": "Exact match", + "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" + }, + "description": { + "type": "string", + "title": "Description", + "description": "The description of what the assertion is testing" + }, + "timeout": { + "type": "number", + "title": "Timeout", + "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" + }, + "assertions": { + "type": "array", + "title": "Assertions to validate activity", + "description": "Sequence of expressions which must evaluate to true.", + "items": { + "$ref": "#/definitions/condition", + "title": "Assertion", + "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", + "examples": [ + "user.vip == true" + ] + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.AssertReplyOneOf" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.AssertTelemetryContains": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Assert telemetry contains", + "description": "Checks whether telemetry log contsain specific events.", + "type": "object", + "required": [ + "events", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "events": { + "type": "array", + "title": "Events name should be included in telemetry log", + "description": "A string array contains event names.", + "items": { + "type": "string" + } + }, + "description": { + "type": "string", + "title": "Description", + "description": "The description of which events should be included" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.AssertTelemetryContains" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.CustomEvent": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "User event", + "description": "Sends event to the bot from the user.", + "type": "object", + "required": [ + "name", + "value", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "name": { + "type": "string", + "title": "Event name", + "description": "Event name to send to the bot." + }, + "value": { + "type": "object", + "title": "Event value", + "description": "Event value to send to the bot." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.CustomEvent" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.HttpRequestSequenceMock": { + "$role": "implements(Microsoft.Test.IHttpRequestMock)", + "title": "HTTP request sequence mock", + "description": "Mock HttpRequest in sequence order.", + "type": "object", + "required": [ + "url", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "method": { + "type": "string", + "title": "HTTP method", + "description": "HTTP method to match. If null, match to any method.", + "enum": [ + "GET", + "POST", + "PATCH", + "PUT", + "DELETE" + ], + "examples": [ + "GET", + "POST" + ] + }, + "url": { + "type": "string", + "title": "Url", + "description": "URL to match. Absolute or relative, may contain * wildcards.", + "examples": [ + "https://contoso.com" + ] + }, + "matchType": { + "type": "string", + "title": "Body match type", + "description": "The match type for body.", + "enum": [ + "Exact", + "Partial" + ], + "examples": [ + "Exact", + "Partial" + ], + "default": "Partial" + }, + "body": { + "type": "string", + "title": "Body", + "description": "The body to match against request's body.", + "examples": [ + "content" + ] + }, + "responses": { + "type": "array", + "title": "Responses", + "description": "Sequence of responses to reply. The last one will be repeated.", + "items": { + "type": "object", + "title": "HttpResponseMock", + "description": "Mocked http response.", + "properties": { + "statusCode": { + "title": "Status code", + "description": "The status code. Default is OK(200).", + "oneOf": [ + { + "type": "string", + "title": "String status code", + "description": "Use string as status code.", + "enum": [ + "Continue", + "SwitchingProtocols", + "OK", + "Created", + "Accepted", + "NonAuthoritativeInformation", + "NoContent", + "ResetContent", + "PartialContent", + "Ambiguous", + "MultipleChoices", + "Moved", + "MovedPermanently", + "Found", + "Redirect", + "RedirectMethod", + "SeeOther", + "NotModified", + "UseProxy", + "Unused", + "RedirectKeepVerb", + "TemporaryRedirect", + "BadRequest", + "Unauthorized", + "PaymentRequired", + "Forbidden", + "NotFound", + "MethodNotAllowed", + "NotAcceptable", + "ProxyAuthenticationRequired", + "RequestTimeout", + "Conflict", + "Gone", + "LengthRequired", + "PreconditionFailed", + "RequestEntityTooLarge", + "RequestUriTooLong", + "UnsupportedMediaType", + "RequestedRangeNotSatisfiable", + "ExpectationFailed", + "UpgradeRequired", + "InternalServerError", + "NotImplemented", + "BadGateway", + "ServiceUnavailable", + "GatewayTimeout", + "HttpVersionNotSupported" + ], + "examples": [ + "OK" + ] + }, + { + "type": "number", + "title": "Number status code", + "description": "Use number as status code.", + "examples": [ + 200 + ] + } + ], + "default": "OK" + }, + "reasonPhrase": { + "type": "string", + "title": "Reason phrase", + "description": "The reason phrase.", + "examples": [ + "Server is stolen." + ] + }, + "contentType": { + "type": "string", + "title": "ContentType", + "description": "Content type of response.", + "enum": [ + "String", + "ByteArray", + "GZipString" + ], + "examples": [ + "String" + ], + "default": "String" + }, + "content": { + "title": "Content", + "description": "Content of response.", + "oneOf": [ + { + "type": "string", + "title": "String content", + "description": "Use string as content.", + "examples": [ + "string response" + ] + }, + { + "type": "object", + "title": "Object content", + "description": "Use object as content. It will be serialized to string.", + "examples": [ + { + "data": "object response" + } + ] + } + ] + } + } + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.HttpRequestSequenceMock" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.IHttpRequestMock": { + "title": "HTTP request mock", + "description": "Components which derive from HttpRequestMock class", + "$role": "interface", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.Test.HttpRequestSequenceMock" + }, + { + "type": "string", + "title": "Reference to Microsoft.Test.IHttpRequestMock", + "description": "Reference to Microsoft.Test.IHttpRequestMock .dialog file." + } + ] + }, + "Microsoft.Test.IPropertyMock": { + "title": "Property mock", + "description": "Components which derive from PropertyMock class", + "$role": "interface" + }, + "Microsoft.Test.ISettingMock": { + "title": "Microsoft Test ISettingMock", + "description": "Components which derive from SettingMock class", + "$role": "interface", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.Test.SettingStringMock" + }, + { + "type": "string", + "title": "Reference to Microsoft.Test.ISettingMock", + "description": "Reference to Microsoft.Test.ISettingMock .dialog file." + } + ] + }, + "Microsoft.Test.ITestAction": { + "title": "Test action", + "description": "Components which derive from TestAction class", + "$role": "interface", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.Test.AssertNoActivity" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertReply" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" + }, + { + "$ref": "#/definitions/Microsoft.Test.AssertTelemetryContains" + }, + { + "$ref": "#/definitions/Microsoft.Test.CustomEvent" + }, + { + "$ref": "#/definitions/Microsoft.Test.MemoryAssertions" + }, + { + "$ref": "#/definitions/Microsoft.Test.SetProperties" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserActivity" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserDelay" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserSays" + }, + { + "$ref": "#/definitions/Microsoft.Test.UserTyping" + }, + { + "type": "string", + "title": "Reference to Microsoft.Test.ITestAction", + "description": "Reference to Microsoft.Test.ITestAction .dialog file." + } + ] + }, + "Microsoft.Test.IUserTokenMock": { + "title": "User token mock", + "description": "Components which derive from UserTokenMock class", + "$role": "interface", + "oneOf": [ + { + "$ref": "#/definitions/Microsoft.Test.UserTokenBasicMock" + }, + { + "type": "string", + "title": "Reference to Microsoft.Test.IUserTokenMock", + "description": "Reference to Microsoft.Test.IUserTokenMock .dialog file." + } + ] + }, + "Microsoft.Test.MemoryAssertions": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Memory assertions", + "description": "Run assertions against current memory.", + "type": "object", + "required": [ + "assertions", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "assertions": { + "type": "array", + "title": "Assertions against memory", + "description": "Sequence of expressions which must evaluate to true.", + "items": { + "$ref": "#/definitions/condition", + "title": "Assertion", + "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", + "examples": [ + "user.vip == true" + ] + } + }, + "description": { + "type": "string", + "title": "Description", + "description": "The description of what the assertion is testing" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.MemoryAssertions" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.Script": { + "$role": [], + "title": "Test script", + "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", + "type": "object", + "required": [ + "dialog", + "script", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "dialog": { + "$kind": "Microsoft.IDialog", + "title": "Dialog", + "description": "The root dialog to execute the test script against.", + "$ref": "#/definitions/Microsoft.IDialog" + }, + "languagePolicy": { + "type": "object", + "title": "Language policy", + "description": "Defines fall back languages to try per user input language." + }, + "description": { + "type": "string", + "title": "Description", + "description": "Description of the test script" + }, + "httpRequestMocks": { + "type": "array", + "title": "Http request mocks", + "description": "Mock data for Microsoft.HttpRequest.", + "items": { + "$kind": "Microsoft.Test.IHttpRequestMock", + "$ref": "#/definitions/Microsoft.Test.IHttpRequestMock" + } + }, + "userTokenMocks": { + "type": "array", + "title": "User token mocks", + "description": "Mock data for Microsoft.OAuthInput.", + "items": { + "$kind": "Microsoft.Test.IUserTokenMock", + "$ref": "#/definitions/Microsoft.Test.IUserTokenMock" + } + }, + "settingMocks": { + "type": "array", + "title": "Setting Mocks", + "description": "Mock data for setting.", + "items": { + "$kind": "Microsoft.Test.ISettingMock", + "$ref": "#/definitions/Microsoft.Test.ISettingMock" + } + }, + "script": { + "type": "array", + "title": "Test actions", + "description": "Sequence of test actions to execute.", + "items": { + "$kind": "Microsoft.Test.ITestAction", + "$ref": "#/definitions/Microsoft.Test.ITestAction" + } + }, + "locale": { + "type": "string", + "title": "Locale", + "description": "Set the locale for the user utterances in the script.", + "default": "en-us" + }, + "enableTrace": { + "type": "boolean", + "title": "Enable trace activity", + "description": "Enable trace activities in the unit test (default is false)", + "default": false + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.Script" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.SetProperties": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Set properties", + "description": "Set one or more property values.", + "type": "object", + "required": [ + "assignments", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "assignments": { + "type": "array", + "title": "Assignments", + "description": "Property value assignments to set.", + "items": { + "type": "object", + "title": "Assignment", + "description": "Property assignment.", + "properties": { + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property (named location to store information).", + "examples": [ + "user.age" + ] + }, + "value": { + "$ref": "#/definitions/valueExpression", + "title": "Value", + "description": "New value or expression.", + "examples": [ + "='milk'", + "=dialog.favColor", + "=dialog.favColor == 'red'" + ] + } + } + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.SetProperties" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.SettingStringMock": { + "$role": "implements(Microsoft.Test.ISettingMock)", + "title": "Mock Settings", + "description": "Mock one or more settings with string value.", + "type": "object", + "required": [ + "assignments", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "assignments": { + "type": "array", + "title": "Assignments", + "description": "Setting assignments as settings.property=value pairs. Assign the settings in sequence.", + "items": { + "type": "object", + "title": "Setting String Assignment", + "description": "Setting String Assignment (used in SettingStringMock).", + "properties": { + "property": { + "type": "string", + "title": "Property", + "description": "A property path without settings.", + "examples": [ + "connectionName" + ] + }, + "value": { + "type": "string", + "title": "Value", + "description": "Value string.", + "examples": [ + "Graph" + ] + } + } + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.SettingStringMock" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.UserActivity": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Send activity", + "description": "Sends activity to the bot.", + "type": "object", + "required": [ + "activity", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "activity": { + "type": "object", + "title": "Activity", + "description": "Activity to send to bot.", + "additionalProperties": true + }, + "user": { + "type": "string", + "title": "User name", + "description": "The activity.from.id and activity.from.name will be this if specified." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.UserActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.UserConversationUpdate": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Send ConversationUpdate", + "description": "Sends ConversationUpdate activity to the bot.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "membersAdded": { + "type": "array", + "title": "Members added", + "description": "Names of the members to add", + "items": { + "type": "string", + "title": "Name", + "description": "Name of member to add." + } + }, + "membersRemoved": { + "type": "array", + "title": "Members removed", + "description": "Names of the members to remove", + "items": { + "type": "string", + "title": "Name", + "description": "Name of member to remove." + } + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.UserConversationUpdate" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.UserDelay": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Delay execution", + "description": "Delays text script for time period.", + "type": "object", + "required": [ + "timespan", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "timespan": { + "type": "number", + "title": "Timespan", + "description": "The amount of time in milliseconds to delay the execution of the test script" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.UserDelay" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.UserSays": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "User text", + "description": "Sends text to the bot from the user.", + "type": "object", + "required": [ + "text", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "text": { + "type": "string", + "title": "Text", + "description": "Text to send to the bot." + }, + "user": { + "type": "string", + "title": "User name", + "description": "The activity.from.id and activity.from.name will be this if specified." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.UserSays" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.UserTokenBasicMock": { + "$role": "implements(Microsoft.Test.IUserTokenMock)", + "title": "User token mock", + "description": "Mock Basic UserToken", + "type": "object", + "required": [ + "connectionName", + "token", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "connectionName": { + "type": "string", + "title": "Connection name", + "description": "The connection name.", + "examples": [ + "graph" + ] + }, + "channelId": { + "type": "string", + "title": "Channel Id", + "description": "The channel ID. If empty, same as adapter.Conversation.ChannelId.", + "examples": [ + "test" + ] + }, + "userId": { + "type": "string", + "title": "User Id", + "description": "The user ID. If empty, same as adapter.Conversation.User.Id.", + "examples": [ + "user1" + ] + }, + "token": { + "type": "string", + "title": "Token", + "description": "The token to store.", + "examples": [ + "token" + ] + }, + "magicCode": { + "type": "string", + "title": "Magic code", + "description": "The optional magic code to associate with this token.", + "examples": [ + "000000" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.UserTokenBasicMock" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.Test.UserTyping": { + "$role": "implements(Microsoft.Test.ITestAction)", + "title": "Send typing", + "description": "Sends typing activity to the bot.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "user": { + "type": "string", + "title": "User name", + "description": "The activity.from.id and activity.from.name will be this if specified." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.Test.UserTyping" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TextInput": { + "$role": [ + "implements(Microsoft.IDialog)", + "extends(Microsoft.InputDialog)" + ], + "type": "object", + "title": "Text input dialog", + "description": "Collection information - Ask for a word or sentence.", + "$policies": { + "interactive": true + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "defaultValue": { + "$ref": "#/definitions/stringExpression", + "title": "Default value", + "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", + "examples": [ + "hello world", + "Hello ${user.name}", + "=concat(user.firstname, user.lastName)" + ] + }, + "value": { + "$ref": "#/definitions/stringExpression", + "title": "Value", + "description": "'Property' will be set to the value of this expression unless it evaluates to null.", + "examples": [ + "hello world", + "Hello ${user.name}", + "=concat(user.firstname, user.lastName)" + ] + }, + "outputFormat": { + "$ref": "#/definitions/stringExpression", + "title": "Output format", + "description": "Expression to format the output.", + "examples": [ + "=toUpper(this.value)", + "${toUpper(this.value)}" + ] + }, + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "default": false, + "examples": [ + false, + "=user.isVip" + ] + }, + "prompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Initial prompt", + "description": "Message to send to collect information.", + "examples": [ + "What is your birth date?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "unrecognizedPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Unrecognized prompt", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "invalidPrompt": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Invalid prompt", + "description": "Message to send when the user input does not meet any validation expression.", + "examples": [ + "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "defaultValueResponse": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", + "examples": [ + "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." + ], + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "maxTurnCount": { + "$ref": "#/definitions/integerExpression", + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information.", + "default": 3, + "minimum": 0, + "maximum": 2147483647, + "examples": [ + 3, + "=settings.xyz" + ] + }, + "validations": { + "type": "array", + "title": "Validation expressions", + "description": "Expression to validate user input.", + "items": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Expression which needs to met for the input to be considered valid", + "examples": [ + "int(this.value) > 1 && int(this.value) <= 150", + "count(this.value) < 300" + ] + } + }, + "property": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", + "examples": [ + "$birthday", + "dialog.${user.name}", + "=f(x)" + ] + }, + "alwaysPrompt": { + "$ref": "#/definitions/booleanExpression", + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty.", + "default": false, + "examples": [ + false, + "=$val" + ] + }, + "allowInterruptions": { + "$ref": "#/definitions/booleanExpression", + "title": "Allow Interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", + "default": true, + "examples": [ + true, + "=user.xyz" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.TextInput" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TextTemplate": { + "$role": "implements(Microsoft.ITextTemplate)", + "title": "Microsoft TextTemplate", + "description": "Use LG Templates to create text", + "type": "object", + "required": [ + "template", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "template": { + "title": "Template", + "description": "Language Generator template to evaluate to create the text.", + "type": "string" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.TextTemplate" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ThrowException": { + "$role": "implements(Microsoft.IDialog)", + "title": "Throw an exception", + "description": "Throw an exception. Capture this exception with OnError trigger.", + "type": "object", + "required": [ + "errorValue", + "$kind" + ], + "$policies": { + "lastAction": true + }, + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "errorValue": { + "$ref": "#/definitions/valueExpression", + "title": "Error value", + "description": "Error value to throw." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ThrowException" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TraceActivity": { + "$role": "implements(Microsoft.IDialog)", + "title": "Send a TraceActivity", + "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=user.age > 3" + ] + }, + "name": { + "$ref": "#/definitions/stringExpression", + "title": "Name", + "description": "Name of the trace activity" + }, + "label": { + "$ref": "#/definitions/stringExpression", + "title": "Label", + "description": "Label for the trace activity (used to identify it in a list of trace activities.)" + }, + "valueType": { + "$ref": "#/definitions/stringExpression", + "title": "Value type", + "description": "Type of value" + }, + "value": { + "$ref": "#/definitions/valueExpression", + "title": "Value", + "description": "Property that holds the value to send as trace activity." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.TraceActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TrueSelector": { + "$role": "implements(Microsoft.ITriggerSelector)", + "title": "True trigger selector", + "description": "Selector for all true events", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.TrueSelector" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TwilioAdapter": { + "$role": "implements(Microsoft.IAdapter)", + "title": "Twilio connection", + "description": "Connects a bot to Twilio.", + "type": "object", + "required": [ + "TwilioNumber", + "TwilioAccountSid", + "TwilioAuthToken", + "TwilioValidationUrl", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "TwilioNumber": { + "type": "string", + "title": "Number key", + "description": "Number key obtained from Twilio set-up." + }, + "TwilioAccountSid": { + "type": "string", + "title": "Account SID key", + "description": "Account SID obtained from Twilio set-up." + }, + "TwilioAuthToken": { + "type": "string", + "title": "Authentication token", + "description": "Authentication token obtained from Twilio set-up." + }, + "TwilioValidationUrl": { + "type": "string", + "title": "Validation url", + "description": "Validation url obtained from Twilio set-up." + }, + "route": { + "type": "string", + "title": "Route", + "description": "Optional route where the adapter is exposed.", + "default": "twilio" + }, + "type": { + "type": "string", + "title": "type", + "description": "Adapter full type name.", + "default": "Microsoft.Bot.Builder.Adapters.Twilio.TwilioAdapter" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.TwilioAdapter" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.UpdateActivity": { + "$role": "implements(Microsoft.IDialog)", + "title": "Update an activity", + "description": "Respond with an activity.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=user.age > 3" + ] + }, + "activityId": { + "$ref": "#/definitions/stringExpression", + "title": "Activity Id", + "description": "An string expression with the activity id to update.", + "examples": [ + "=turn.lastresult.id" + ] + }, + "activity": { + "$kind": "Microsoft.IActivityTemplate", + "title": "Activity", + "description": "Activity to send.", + "$ref": "#/definitions/Microsoft.IActivityTemplate" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.UpdateActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.UrlEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Url recognizer", + "description": "Recognizer which recognizes urls.", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.UrlEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.WebexAdapter": { + "$role": "implements(Microsoft.IAdapter)", + "title": "Webex connection", + "description": "Connects a bot to Webex.", + "type": "object", + "required": [ + "WebexAccessToken", + "WebexPublicAddress", + "WebexSecret", + "WebexWebhookName", + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "WebexAccessToken": { + "type": "string", + "title": "Access token", + "description": "Access token obtained during Webex set-up." + }, + "WebexPublicAddress": { + "type": "string", + "title": "Public address", + "description": "Public address obtained during Webex set-up." + }, + "WebexSecret": { + "type": "string", + "title": "Secret", + "description": "Secret obtained during Webex set-up." + }, + "WebexWebhookName": { + "type": "string", + "title": "Webhook name", + "description": "Webhook name obtained during Webex set-up." + }, + "route": { + "type": "string", + "title": "Route", + "description": "Optional route where the adapter is exposed.", + "default": "webex" + }, + "type": { + "type": "string", + "title": "type", + "description": "Adapter full type name.", + "default": "Microsoft.Bot.Builder.Adapters.Webex.WebexAdapter" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.WebexAdapter" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "numberExpression": { + "$role": "expression", + "title": "Number or expression", + "description": "Number constant or expression to evaluate.", + "oneOf": [ + { + "type": "number", + "title": "Number", + "description": "Number constant.", + "default": 0, + "examples": [ + 15.5 + ] + }, + { + "$ref": "#/definitions/equalsExpression", + "examples": [ + "=dialog.quantity" + ] + } + ] + }, + "objectExpression": { + "$role": "expression", + "title": "Object or expression", + "description": "Object or expression to evaluate.", + "oneOf": [ + { + "type": "object", + "title": "Object", + "description": "Object constant." + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "role": { + "title": "$role", + "description": "Defines the role played in the dialog schema from [expression|interface|implements($kind)|extends($kind)].", + "type": "string", + "pattern": "^((expression)|(interface)|(implements\\([a-zA-Z][a-zA-Z0-9.]*\\))|(extends\\([a-zA-Z][a-zA-Z0-9.]*\\)))$" + }, + "root": { + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "root" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "stringExpression": { + "$role": "expression", + "title": "String or expression", + "description": "Interpolated string or expression to evaluate.", + "oneOf": [ + { + "type": "string", + "title": "String", + "description": "Interpolated string", + "pattern": "^(?!(=)).*", + "examples": [ + "Hello ${user.name}" + ] + }, + { + "$ref": "#/definitions/equalsExpression", + "examples": [ + "=concat('x','y','z')" + ] + } + ] + }, + "test": { + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "test" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Testbot.JavascriptAction": { + "$role": "implements(Microsoft.IDialog)", + "title": "Javascript Action", + "description": "This gives you the ability to execute javascript to manipulate memory", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + true, + "=f(x)" + ] + }, + "script": { + "type": "string", + "title": "Script", + "description": "name of the script file, or javascript function with function: doAction(memory, args) => result" + }, + "options": { + "$ref": "#/definitions/objectExpression", + "title": "Options", + "description": "One or more options that are passed to the function as args.", + "additionalProperties": { + "type": "string", + "title": "Options", + "description": "Options for action." + } + }, + "resultProperty": { + "$ref": "#/definitions/stringExpression", + "title": "Property", + "description": "Property to store any value returned by the javascript function.", + "examples": [ + "dialog.userName" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Testbot.JavascriptAction" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Testbot.Multiply": { + "$role": "implements(Microsoft.IDialog)", + "title": "Multiply", + "description": "This will return the result of arg1*arg2", + "type": "object", + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "arg1": { + "$ref": "#/definitions/numberExpression", + "title": "Arg1", + "description": "Value from callers memory to use as arg 1" + }, + "arg2": { + "$ref": "#/definitions/numberExpression", + "title": "Arg2", + "description": "Value from callers memory to use as arg 2" + }, + "result": { + "$ref": "#/definitions/stringExpression", + "title": "Result", + "description": "Property to store the result in" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Testbot.Multiply" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "valueExpression": { + "$role": "expression", + "title": "Any or expression", + "description": "Any constant or expression to evaluate.", + "oneOf": [ + { + "type": "object", + "title": "Object", + "description": "Object constant." + }, + { + "type": "array", + "title": "Array", + "description": "Array constant." + }, + { + "type": "string", + "title": "String", + "description": "Interpolated string.", + "pattern": "^(?!(=)).*", + "examples": [ + "Hello ${user.name}" + ] + }, + { + "type": "boolean", + "title": "Boolean", + "description": "Boolean constant", + "examples": [ + false + ] + }, + { + "type": "number", + "title": "Number", + "description": "Number constant.", + "examples": [ + 15.5 + ] + }, + { + "$ref": "#/definitions/equalsExpression", + "examples": [ + "=..." + ] + } + ] + }, + "schema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Core schema meta-schema", + "definitions": { + "schemaArray": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/schema" + } + }, + "nonNegativeInteger": { + "type": "integer", + "minimum": 0 + }, + "nonNegativeIntegerDefault0": { + "type": "integer", + "minimum": 0, + "default": 0 + }, + "simpleTypes": { + "enum": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string" + ] + }, + "stringArray": { + "type": "array", + "uniqueItems": true, + "default": [], + "items": { + "type": "string" + } + } + }, + "type": [ + "object", + "boolean" + ], + "default": true, + "properties": { + "$schema": { + "type": "string", + "format": "uri" + }, + "$ref": { + "type": "string", + "format": "uri-reference" + }, + "$comment": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "default": true, + "readOnly": { + "type": "boolean", + "default": false + }, + "writeOnly": { + "type": "boolean", + "default": false + }, + "examples": { + "type": "array", + "items": true + }, + "multipleOf": { + "type": "number", + "exclusiveMinimum": 0 + }, + "maximum": { + "type": "number" + }, + "exclusiveMaximum": { + "type": "number" + }, + "minimum": { + "type": "number" + }, + "exclusiveMinimum": { + "type": "number" + }, + "maxLength": { + "$ref": "#/definitions/schema/definitions/nonNegativeInteger" + }, + "minLength": { + "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" + }, + "pattern": { + "type": "string", + "format": "regex" + }, + "additionalItems": { + "$ref": "#/definitions/schema" + }, + "items": { + "anyOf": [ + { + "$ref": "#/definitions/schema" + }, + { + "$ref": "#/definitions/schema/definitions/schemaArray" + } + ], + "default": true + }, + "maxItems": { + "$ref": "#/definitions/schema/definitions/nonNegativeInteger" + }, + "minItems": { + "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" + }, + "uniqueItems": { + "type": "boolean", + "default": false + }, + "contains": { + "$ref": "#/definitions/schema" + }, + "maxProperties": { + "$ref": "#/definitions/schema/definitions/nonNegativeInteger" + }, + "minProperties": { + "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" + }, + "required": { + "$ref": "#/definitions/schema/definitions/stringArray" + }, + "additionalProperties": { + "$ref": "#/definitions/schema" + }, + "definitions": { + "type": "object", + "default": {}, + "additionalProperties": { + "$ref": "#/definitions/schema" + } + }, + "properties": { + "type": "object", + "default": {}, + "additionalProperties": { + "$ref": "#/definitions/schema" + } + }, + "patternProperties": { + "type": "object", + "propertyNames": { + "format": "regex" + }, + "default": {}, + "additionalProperties": { + "$ref": "#/definitions/schema" + } + }, + "dependencies": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/schema" + }, + { + "$ref": "#/definitions/schema/definitions/stringArray" + } + ] + } + }, + "propertyNames": { + "$ref": "#/definitions/schema" + }, + "const": true, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": true + }, + "type": { + "anyOf": [ + { + "$ref": "#/definitions/schema/definitions/simpleTypes" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/schema/definitions/simpleTypes" + }, + "minItems": 1, + "uniqueItems": true + } + ] + }, + "format": { + "type": "string" + }, + "contentMediaType": { + "type": "string" + }, + "contentEncoding": { + "type": "string" + }, + "if": { + "$ref": "#/definitions/schema" + }, + "then": { + "$ref": "#/definitions/schema" + }, + "else": { + "$ref": "#/definitions/schema" + }, + "allOf": { + "$ref": "#/definitions/schema/definitions/schemaArray" + }, + "anyOf": { + "$ref": "#/definitions/schema/definitions/schemaArray" + }, + "oneOf": { + "$ref": "#/definitions/schema/definitions/schemaArray" + }, + "not": { + "$ref": "#/definitions/schema" + } + } + }, + "botframework.json": { + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "ChannelAccount": { + "description": "Channel account information needed to route a message", + "title": "ChannelAccount", + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", + "type": "string", + "title": "id" + }, + "name": { + "description": "Display friendly name", + "type": "string", + "title": "name" + }, + "aadObjectId": { + "description": "This account's object ID within Azure Active Directory (AAD)", + "type": "string", + "title": "aadObjectId" + }, + "role": { + "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", + "type": "string", + "title": "role" + } + } + }, + "ConversationAccount": { + "description": "Channel account information for a conversation", + "title": "ConversationAccount", + "type": "object", + "required": [ + "conversationType", + "id", + "isGroup", + "name" + ], + "properties": { + "isGroup": { + "description": "Indicates whether the conversation contains more than two participants at the time the\nactivity was generated", + "type": "boolean", + "title": "isGroup" + }, + "conversationType": { + "description": "Indicates the type of the conversation in channels that distinguish between conversation types", + "type": "string", + "title": "conversationType" + }, + "id": { + "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", + "type": "string", + "title": "id" + }, + "name": { + "description": "Display friendly name", + "type": "string", + "title": "name" + }, + "aadObjectId": { + "description": "This account's object ID within Azure Active Directory (AAD)", + "type": "string", + "title": "aadObjectId" + }, + "role": { + "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", + "enum": [ + "bot", + "user" + ], + "type": "string", + "title": "role" + } + } + }, + "MessageReaction": { + "description": "Message reaction object", + "title": "MessageReaction", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "Message reaction type. Possible values include: 'like', 'plusOne'", + "type": "string", + "title": "type" + } + } + }, + "CardAction": { + "description": "A clickable action", + "title": "CardAction", + "type": "object", + "required": [ + "title", + "type", + "value" + ], + "properties": { + "type": { + "description": "The type of action implemented by this button. Possible values include: 'openUrl', 'imBack',\n'postBack', 'playAudio', 'playVideo', 'showImage', 'downloadFile', 'signin', 'call',\n'payment', 'messageBack'", + "type": "string", + "title": "type" + }, + "title": { + "description": "Text description which appears on the button", + "type": "string", + "title": "title" + }, + "image": { + "description": "Image URL which will appear on the button, next to text label", + "type": "string", + "title": "image" + }, + "text": { + "description": "Text for this action", + "type": "string", + "title": "text" + }, + "displayText": { + "description": "(Optional) text to display in the chat feed if the button is clicked", + "type": "string", + "title": "displayText" + }, + "value": { + "description": "Supplementary parameter for action. Content of this property depends on the ActionType", + "title": "value" + }, + "channelData": { + "description": "Channel-specific data associated with this action", + "title": "channelData" + } + } + }, + "SuggestedActions": { + "description": "SuggestedActions that can be performed", + "title": "SuggestedActions", + "type": "object", + "required": [ + "actions", + "to" + ], + "properties": { + "to": { + "description": "Ids of the recipients that the actions should be shown to. These Ids are relative to the\nchannelId and a subset of all recipients of the activity", + "type": "array", + "title": "to", + "items": { + "title": "Id", + "description": "Id of recipient.", + "type": "string" + } + }, + "actions": { + "description": "Actions that can be shown to the user", + "type": "array", + "title": "actions", + "items": { + "$ref": "#/definitions/botframework.json/definitions/CardAction" + } + } + } + }, + "Attachment": { + "description": "An attachment within an activity", + "title": "Attachment", + "type": "object", + "required": [ + "contentType" + ], + "properties": { + "contentType": { + "description": "mimetype/Contenttype for the file", + "type": "string", + "title": "contentType" + }, + "contentUrl": { + "description": "Content Url", + "type": "string", + "title": "contentUrl" + }, + "content": { + "type": "object", + "description": "Embedded content", + "title": "content" + }, + "name": { + "description": "(OPTIONAL) The name of the attachment", + "type": "string", + "title": "name" + }, + "thumbnailUrl": { + "description": "(OPTIONAL) Thumbnail associated with attachment", + "type": "string", + "title": "thumbnailUrl" + } + } + }, + "Entity": { + "description": "Metadata object pertaining to an activity", + "title": "Entity", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "Type of this entity (RFC 3987 IRI)", + "type": "string", + "title": "type" + } + } + }, + "ConversationReference": { + "description": "An object relating to a particular point in a conversation", + "title": "ConversationReference", + "type": "object", + "required": [ + "bot", + "channelId", + "conversation", + "serviceUrl" + ], + "properties": { + "activityId": { + "description": "(Optional) ID of the activity to refer to", + "type": "string", + "title": "activityId" + }, + "user": { + "description": "(Optional) User participating in this conversation", + "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", + "title": "user" + }, + "bot": { + "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", + "description": "Bot participating in this conversation", + "title": "bot" + }, + "conversation": { + "$ref": "#/definitions/botframework.json/definitions/ConversationAccount", + "description": "Conversation reference", + "title": "conversation" + }, + "channelId": { + "description": "Channel ID", + "type": "string", + "title": "channelId" + }, + "serviceUrl": { + "description": "Service endpoint where operations concerning the referenced conversation may be performed", + "type": "string", + "title": "serviceUrl" + } + } + }, + "TextHighlight": { + "description": "Refers to a substring of content within another field", + "title": "TextHighlight", + "type": "object", + "required": [ + "occurrence", + "text" + ], + "properties": { + "text": { + "description": "Defines the snippet of text to highlight", + "type": "string", + "title": "text" + }, + "occurrence": { + "description": "Occurrence of the text field within the referenced text, if multiple exist.", + "type": "number", + "title": "occurrence" + } + } + }, + "SemanticAction": { + "description": "Represents a reference to a programmatic action", + "title": "SemanticAction", + "type": "object", + "required": [ + "entities", + "id" + ], + "properties": { + "id": { + "description": "ID of this action", + "type": "string", + "title": "id" + }, + "entities": { + "description": "Entities associated with this action", + "type": "object", + "title": "entities", + "additionalProperties": { + "$ref": "#/definitions/botframework.json/definitions/Entity" + } + } + } + }, + "Activity": { + "description": "An Activity is the basic communication type for the Bot Framework 3.0 protocol.", + "title": "Activity", + "type": "object", + "properties": { + "type": { + "description": "Contains the activity type. Possible values include: 'message', 'contactRelationUpdate',\n'conversationUpdate', 'typing', 'endOfConversation', 'event', 'invoke', 'deleteUserData',\n'messageUpdate', 'messageDelete', 'installationUpdate', 'messageReaction', 'suggestion',\n'trace', 'handoff'", + "type": "string", + "title": "type" + }, + "id": { + "description": "Contains an ID that uniquely identifies the activity on the channel.", + "type": "string", + "title": "id" + }, + "timestamp": { + "description": "Contains the date and time that the message was sent, in UTC, expressed in ISO-8601 format.", + "type": "string", + "format": "date-time", + "title": "timestamp" + }, + "localTimestamp": { + "description": "Contains the date and time that the message was sent, in local time, expressed in ISO-8601\nformat.\nFor example, 2016-09-23T13:07:49.4714686-07:00.", + "type": "string", + "format": "date-time", + "title": "localTimestamp" + }, + "localTimezone": { + "description": "Contains the name of the timezone in which the message, in local time, expressed in IANA Time\nZone database format.\nFor example, America/Los_Angeles.", + "type": "string", + "title": "localTimezone" + }, + "serviceUrl": { + "description": "Contains the URL that specifies the channel's service endpoint. Set by the channel.", + "type": "string", + "title": "serviceUrl" + }, + "channelId": { + "description": "Contains an ID that uniquely identifies the channel. Set by the channel.", + "type": "string", + "title": "channelId" + }, + "from": { + "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", + "description": "Identifies the sender of the message.", + "title": "from" + }, + "conversation": { + "$ref": "#/definitions/botframework.json/definitions/ConversationAccount", + "description": "Identifies the conversation to which the activity belongs.", + "title": "conversation" + }, + "recipient": { + "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", + "description": "Identifies the recipient of the message.", + "title": "recipient" + }, + "textFormat": { + "description": "Format of text fields Default:markdown. Possible values include: 'markdown', 'plain', 'xml'", + "type": "string", + "title": "textFormat" + }, + "attachmentLayout": { + "description": "The layout hint for multiple attachments. Default: list. Possible values include: 'list',\n'carousel'", + "type": "string", + "title": "attachmentLayout" + }, + "membersAdded": { + "description": "The collection of members added to the conversation.", + "type": "array", + "title": "membersAdded", + "items": { + "$ref": "#/definitions/botframework.json/definitions/ChannelAccount" + } + }, + "membersRemoved": { + "description": "The collection of members removed from the conversation.", + "type": "array", + "title": "membersRemoved", + "items": { + "$ref": "#/definitions/botframework.json/definitions/ChannelAccount" + } + }, + "reactionsAdded": { + "description": "The collection of reactions added to the conversation.", + "type": "array", + "title": "reactionsAdded", + "items": { + "$ref": "#/definitions/botframework.json/definitions/MessageReaction" + } + }, + "reactionsRemoved": { + "description": "The collection of reactions removed from the conversation.", + "type": "array", + "title": "reactionsRemoved", + "items": { + "$ref": "#/definitions/botframework.json/definitions/MessageReaction" + } + }, + "topicName": { + "description": "The updated topic name of the conversation.", + "type": "string", + "title": "topicName" + }, + "historyDisclosed": { + "description": "Indicates whether the prior history of the channel is disclosed.", + "type": "boolean", + "title": "historyDisclosed" + }, + "locale": { + "description": "A locale name for the contents of the text field.\nThe locale name is a combination of an ISO 639 two- or three-letter culture code associated\nwith a language\nand an ISO 3166 two-letter subculture code associated with a country or region.\nThe locale name can also correspond to a valid BCP-47 language tag.", + "type": "string", + "title": "locale" + }, + "text": { + "description": "The text content of the message.", + "type": "string", + "title": "text" + }, + "speak": { + "description": "The text to speak.", + "type": "string", + "title": "speak" + }, + "inputHint": { + "description": "Indicates whether your bot is accepting,\nexpecting, or ignoring user input after the message is delivered to the client. Possible\nvalues include: 'acceptingInput', 'ignoringInput', 'expectingInput'", + "type": "string", + "title": "inputHint" + }, + "summary": { + "description": "The text to display if the channel cannot render cards.", + "type": "string", + "title": "summary" + }, + "suggestedActions": { + "description": "The suggested actions for the activity.", + "$ref": "#/definitions/botframework.json/definitions/SuggestedActions", + "title": "suggestedActions" + }, + "attachments": { + "description": "Attachments", + "type": "array", + "title": "attachments", + "items": { + "$ref": "#/definitions/botframework.json/definitions/Attachment" + } + }, + "entities": { + "description": "Represents the entities that were mentioned in the message.", + "type": "array", + "title": "entities", + "items": { + "$ref": "#/definitions/botframework.json/definitions/Entity" + } + }, + "channelData": { + "description": "Contains channel-specific content.", + "title": "channelData" + }, + "action": { + "description": "Indicates whether the recipient of a contactRelationUpdate was added or removed from the\nsender's contact list.", + "type": "string", + "title": "action" + }, + "replyToId": { + "description": "Contains the ID of the message to which this message is a reply.", + "type": "string", + "title": "replyToId" + }, + "label": { + "description": "A descriptive label for the activity.", + "type": "string", + "title": "label" + }, + "valueType": { + "description": "The type of the activity's value object.", + "type": "string", + "title": "valueType" + }, + "value": { + "description": "A value that is associated with the activity.", + "title": "value" + }, + "name": { + "description": "The name of the operation associated with an invoke or event activity.", + "type": "string", + "title": "name" + }, + "relatesTo": { + "description": "A reference to another conversation or activity.", + "$ref": "#/definitions/botframework.json/definitions/ConversationReference", + "title": "relatesTo" + }, + "code": { + "description": "The a code for endOfConversation activities that indicates why the conversation ended.\nPossible values include: 'unknown', 'completedSuccessfully', 'userCancelled', 'botTimedOut',\n'botIssuedInvalidMessage', 'channelFailed'", + "type": "string", + "title": "code" + }, + "expiration": { + "description": "The time at which the activity should be considered to be \"expired\" and should not be\npresented to the recipient.", + "type": "string", + "format": "date-time", + "title": "expiration" + }, + "importance": { + "description": "The importance of the activity. Possible values include: 'low', 'normal', 'high'", + "type": "string", + "title": "importance" + }, + "deliveryMode": { + "description": "A delivery hint to signal to the recipient alternate delivery paths for the activity.\nThe default delivery mode is \"default\". Possible values include: 'normal', 'notification'", + "type": "string", + "title": "deliveryMode" + }, + "listenFor": { + "description": "List of phrases and references that speech and language priming systems should listen for", + "type": "array", + "title": "listenFor", + "items": { + "type": "string", + "title": "Phrase", + "description": "Phrase to listen for." + } + }, + "textHighlights": { + "description": "The collection of text fragments to highlight when the activity contains a ReplyToId value.", + "type": "array", + "title": "textHighlights", + "items": { + "$ref": "#/definitions/botframework.json/definitions/TextHighlight" + } + }, + "semanticAction": { + "$ref": "#/definitions/botframework.json/definitions/SemanticAction", + "description": "An optional programmatic action accompanying this request", + "title": "semanticAction" + } + } + } + } + } + } +}