diff --git a/.eslintrc.json b/.eslintrc.json index d21952753f..5bcc487e97 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -8,6 +8,7 @@ "plugins": ["prettier"], "rules": { "prettier/prettier": "error" - } + }, + "root": true } diff --git a/.gitignore b/.gitignore index 7f2ab38b1a..1635c14d55 100644 --- a/.gitignore +++ b/.gitignore @@ -384,6 +384,9 @@ experimental/generator-dotnet-yeoman/node_modules # Allow the root-level /packages/ directory or it gets confused with NuGet directories !/[Pp]ackages/* +# Allow the packages directory under tests +!/tests/unit/[Pp]ackages/* + # Ignore correct yarn files (no zero install support) .yarn/* !.yarn/patches diff --git a/build/yaml/templates/component-template.yml b/build/yaml/templates/component-template.yml index cce084d0c1..b2b5884c4b 100644 --- a/build/yaml/templates/component-template.yml +++ b/build/yaml/templates/component-template.yml @@ -33,7 +33,6 @@ stages: - job: build_test_dotnet displayName: Build and test .csproj with dotnet steps: - - template: dotnet-install-sdk-steps.yml - template: dotnet-build-test-steps.yml - stage: stage_package_nuget @@ -46,7 +45,6 @@ stages: condition: eq(variables.ComponentType, 'codeExtension') steps: - template: nuget-versioning-steps.yml - - template: dotnet-install-sdk-steps.yml - template: dotnet-package-steps.yml - template: nuget-signing-steps.yml - job: job_pack_nuspec diff --git a/build/yaml/templates/dotnet-build-test-steps.yml b/build/yaml/templates/dotnet-build-test-steps.yml index cf6901e5b2..6a6c0e7bc5 100644 --- a/build/yaml/templates/dotnet-build-test-steps.yml +++ b/build/yaml/templates/dotnet-build-test-steps.yml @@ -1,4 +1,14 @@ steps: +- task: UseDotNet@2 + displayName: 'Use .Net Core sdk 2.1.x' + inputs: + version: 2.1.x + +- task: UseDotNet@2 + displayName: 'Use .Net Core sdk 3.1.x' + inputs: + version: 3.1.x + - task: DotNetCoreCLI@2 displayName: 'Run `dotnet restore`' inputs: diff --git a/build/yaml/templates/dotnet-install-sdk-steps.yml b/build/yaml/templates/dotnet-install-sdk-steps.yml deleted file mode 100644 index 772e09f578..0000000000 --- a/build/yaml/templates/dotnet-install-sdk-steps.yml +++ /dev/null @@ -1,10 +0,0 @@ -steps: -- task: UseDotNet@2 - displayName: 'Use .Net Core sdk 2.1.x' - inputs: - version: 2.1.x - -- task: UseDotNet@2 - displayName: 'Use .Net Core sdk 3.1.x' - inputs: - version: 3.1.x diff --git a/build/yaml/templates/dotnet-package-steps.yml b/build/yaml/templates/dotnet-package-steps.yml index 49e0a39302..106b8caa7e 100644 --- a/build/yaml/templates/dotnet-package-steps.yml +++ b/build/yaml/templates/dotnet-package-steps.yml @@ -1,4 +1,9 @@ steps: +- task: UseDotNet@2 + displayName: 'Use .Net Core sdk 2.1.x' + inputs: + version: 2.1.x + - task: DotNetCoreCLI@2 displayName: 'Run `dotnet publish`' inputs: diff --git a/build/yaml/templates/npm-versioning-steps.yml b/build/yaml/templates/npm-versioning-steps.yml index a028d41658..a37761b4eb 100644 --- a/build/yaml/templates/npm-versioning-steps.yml +++ b/build/yaml/templates/npm-versioning-steps.yml @@ -13,7 +13,7 @@ steps: $deploymentRing = $deploymentRingOverride; } - if ($deploymentRing.ToLowerInvariant() -eq "rc") { + if (($deploymentRing.ToLowerInvariant() -eq "rc") -or ($deploymentRing.ToLowerInvariant() -eq "preview")) { $releaseCandidateNumber = "$env:RELEASECANDIDATENUMBER"; "Release Candidate Number = $releaseCandidateNumber"; diff --git a/build/yaml/templates/nuget-signing-steps.yml b/build/yaml/templates/nuget-signing-steps.yml index 5e08c14ebe..269af981c7 100644 --- a/build/yaml/templates/nuget-signing-steps.yml +++ b/build/yaml/templates/nuget-signing-steps.yml @@ -2,11 +2,6 @@ # Extra steps are required to sign the binaries of the code extensions. steps: -- task: UseDotNet@2 - displayName: 'Use .Net Core sdk 2.1.x' - inputs: - version: 2.1.x - - task: CopyFiles@2 displayName: 'Copy packages to Signing' inputs: diff --git a/build/yaml/templates/nuget-versioning-steps.yml b/build/yaml/templates/nuget-versioning-steps.yml index 1e9f430aa5..9192584a46 100644 --- a/build/yaml/templates/nuget-versioning-steps.yml +++ b/build/yaml/templates/nuget-versioning-steps.yml @@ -13,7 +13,7 @@ steps: $deploymentRing = $deploymentRingOverride; } - if ($deploymentRing.ToLowerInvariant() -eq "rc") { + if (($deploymentRing.ToLowerInvariant() -eq "rc") -or ($deploymentRing.ToLowerInvariant() -eq "preview")) { $releaseCandidateNumber = "$env:RELEASECANDIDATENUMBER"; "Release Candidate Number = $releaseCandidateNumber"; diff --git a/generators/generator-bot-adaptive/generators/app/templates/assets/schemas/sdk.schema b/generators/generator-bot-adaptive/generators/app/templates/assets/schemas/sdk.schema index f43be3014a..9e26dfeeb6 100644 --- a/generators/generator-bot-adaptive/generators/app/templates/assets/schemas/sdk.schema +++ b/generators/generator-bot-adaptive/generators/app/templates/assets/schemas/sdk.schema @@ -1,9873 +1 @@ -{ - "$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/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.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$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.FirstSelector" - }, - { - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "$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.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.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.SetProperties" - }, - { - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "$ref": "#/definitions/Microsoft.TelemetryTrackEvent" - }, - { - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" - }, - { - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "$ref": "#/definitions/Microsoft.ThrowException" - }, - { - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - } - ], - "definitions": { - "Microsoft.ActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft activity template", - "type": "object", - "required": [ - "template", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "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" - }, - "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": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - } - }, - "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" - ], - "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/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeInteger" - }, - "minLength": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeIntegerDefault0" - }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - }, - "items": { - "anyOf": [ - { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - }, - { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/schemaArray" - } - ], - "default": true - }, - "maxItems": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeInteger" - }, - "minItems": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeIntegerDefault0" - }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "contains": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - }, - "maxProperties": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeInteger" - }, - "minProperties": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeIntegerDefault0" - }, - "required": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/stringArray" - }, - "additionalProperties": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - }, - "definitions": { - "type": "object", - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - } - }, - "properties": { - "type": "object", - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - } - }, - "patternProperties": { - "type": "object", - "propertyNames": { - "format": "regex" - }, - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - } - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - }, - { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/stringArray" - } - ] - } - }, - "propertyNames": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - }, - "const": true, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": true - }, - "type": { - "anyOf": [ - { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/simpleTypes" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/simpleTypes" - }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { - "type": "string" - }, - "contentMediaType": { - "type": "string" - }, - "contentEncoding": { - "type": "string" - }, - "if": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - }, - "then": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - }, - "else": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - }, - "allOf": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/schemaArray" - }, - "anyOf": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/schemaArray" - }, - "oneOf": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/schemaArray" - }, - "not": { - "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" - } - }, - "default": true - }, - { - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/Microsoft.IActivityTemplate/oneOf/1/properties/attachments/items", - "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/Microsoft.IActivityTemplate/oneOf/1/properties/attachments/items", - "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, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.", - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/Microsoft.IActivityTemplate/oneOf/1/properties/suggestedActions/properties/actions/items", - "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/equalsExpression" - } - ] - }, - "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/equalsExpression" - } - ] - }, - "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, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.ConfirmInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Confirm input dialog", - "description": "Collect information - Ask for confirmation (yes or no).", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/equalsExpression" - } - ] - }, - "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/Microsoft.IActivityTemplate/oneOf/1/properties/suggestedActions/properties/actions/items", - "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/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, - "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.ConfirmationEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Confirmation entity recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.ContinueConversationLater": { - "$role": "implements(Microsoft.IDialog)", - "title": "Continue conversation later (Queue)", - "description": "Continue conversation at later time (via Azure Storage Queue).", - "type": "object", - "required": [ - "date", - "connectionString", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - }, - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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": [ - "=$lastActivity" - ] - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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 parent dialogs." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First trigger selector", - "description": "Selector for first true rule", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.", - "default": "dialog.foreach.index" - }, - "value": { - "$ref": "#/definitions/stringExpression", - "title": "Value property", - "description": "Property that holds the value of the item.", - "default": "dialog.foreach.value" - }, - "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", - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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": [ - "$lastActivity" - ] - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to action", - "description": "Go to an an action by id.", - "type": "object", - "required": [ - "actionId", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.", - "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": [ - { - "type": "string" - }, - { - "required": [ - "type" - ], - "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/Microsoft.IActivityTemplate/oneOf/1/properties/membersAdded/items", - "description": "Identifies the sender of the message.", - "title": "from" - }, - "conversation": { - "description": "Identifies the conversation to which the activity belongs.", - "title": "conversation", - "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" - } - } - }, - "recipient": { - "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/membersAdded/items", - "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": { - "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" - } - } - } - }, - "membersRemoved": { - "description": "The collection of members removed from the conversation.", - "type": "array", - "title": "membersRemoved", - "items": { - "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/membersAdded/items" - } - }, - "reactionsAdded": { - "description": "The collection of reactions added to the conversation.", - "type": "array", - "title": "reactionsAdded", - "items": { - "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" - } - } - } - }, - "reactionsRemoved": { - "description": "The collection of reactions removed from the conversation.", - "type": "array", - "title": "reactionsRemoved", - "items": { - "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/reactionsAdded/items" - } - }, - "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.", - "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": { - "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" - } - } - } - } - } - }, - "attachments": { - "description": "Attachments", - "type": "array", - "title": "attachments", - "items": { - "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" - } - } - } - }, - "entities": { - "description": "Represents the entities that were mentioned in the message.", - "type": "array", - "title": "entities", - "items": { - "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" - } - } - } - }, - "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.", - "title": "relatesTo", - "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/Microsoft.IActivityTemplate/oneOf/1/properties/membersAdded/items", - "title": "user" - }, - "bot": { - "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/membersAdded/items", - "description": "Bot participating in this conversation", - "title": "bot" - }, - "conversation": { - "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/conversation", - "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" - } - } - }, - "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": { - "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": "An optional programmatic action accompanying this request", - "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/Microsoft.IActivityTemplate/oneOf/1/properties/entities/items" - } - } - } - } - } - }, - { - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - } - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.11.0" - } - }, - "Microsoft.IDialog": { - "title": "Microsoft dialogs", - "description": "Components which derive from Dialog", - "$role": "interface", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginSkill" - }, - { - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "$ref": "#/definitions/Microsoft.CancelDialog" - }, - { - "$ref": "#/definitions/Microsoft.ContinueConversationLater" - }, - { - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "$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.GotoAction" - }, - { - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "$ref": "#/definitions/Microsoft.TelemetryTrackEvent" - }, - { - "$ref": "#/definitions/Microsoft.ThrowException" - }, - { - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "$ref": "#/definitions/Microsoft.TextInput" - } - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.11.0" - } - }, - "Microsoft.IEntityRecognizer": { - "$role": "interface", - "title": "Entity recognizers", - "description": "Components which derive from EntityRecognizer.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "oneOf": [ - { - "type": "string", - "title": "Reference to Microsoft.IEntityRecognizer", - "description": "Reference to Microsoft.IEntityRecognizer .dialog file." - }, - { - "$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" - } - ] - }, - "Microsoft.ILanguageGenerator": { - "title": "Microsoft LanguageGenerator", - "description": "Components which dervie from the LanguageGenerator class", - "$role": "interface", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/Microsoft.ResourceMultiLanguageGenerator" - }, - { - "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" - } - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - } - }, - "Microsoft.IRecognizer": { - "title": "Microsoft recognizer", - "description": "Components which derive from Recognizer class", - "$role": "interface", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.ChannelMentionEntityRecognizer" - }, - { - "$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" - } - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.11.0" - } - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Components which derive from TextTemplate class", - "$role": "interface", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - } - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.11.0" - } - }, - "Microsoft.ITrigger": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "oneOf": [ - { - "type": "string", - "title": "Reference to Microsoft.ITrigger", - "description": "Reference to Microsoft.ITrigger .dialog file." - }, - { - "$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.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" - } - ] - }, - "Microsoft.ITriggerSelector": { - "$role": "interface", - "title": "Selectors", - "description": "Components which derive from TriggerSelector class.", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "oneOf": [ - { - "type": "string", - "title": "Reference to Microsoft.ITriggerSelector", - "description": "Reference to Microsoft.ITriggerSelector .dialog file." - }, - { - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "$ref": "#/definitions/Microsoft.TrueSelector" - } - ] - }, - "Microsoft.IfCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "If condition", - "description": "Two-way branch the conversation flow based on a condition.", - "type": "object", - "required": [ - "condition", - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.InputDialog": { - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.LanguagePolicy": { - "title": "Language policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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": { - "$ref": "#/definitions/stringExpression", - "title": "Text", - "description": "Information to log." - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.AI.Luis", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.", - "type": "object", - "required": [ - "connectionName", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.", - "examples": [ - "dialog.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", - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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 take when an entity should be assigned to a property.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "required": [ - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "property": { - "type": "string", - "title": "Property", - "description": "Property that will be set after entity is selected." - }, - "entity": { - "type": "string", - "title": "Entity", - "description": "Entity being put into property" - }, - "operation": { - "type": "string", - "title": "Operation", - "description": "Operation for assigning entity." - }, - "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/integerExpression", - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "required": [ - "actions", - "$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/integerExpression", - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "required": [ - "actions", - "$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/integerExpression", - "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 an entity value needs to be resolved.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "required": [ - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "property": { - "type": "string", - "title": "Property to be set", - "description": "Property that will be set after entity is selected." - }, - "entity": { - "type": "string", - "title": "Ambiguous entity", - "description": "Ambiguous entity" - }, - "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/integerExpression", - "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 ambigious intent", - "description": "Actions to perform on when an intent is ambigious.", - "type": "object", - "required": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "required": [ - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "entity": { - "type": "string", - "title": "Entity being assigned", - "description": "Entity being assigned to property choice" - }, - "properties": { - "type": "array", - "title": "Possible properties", - "description": "Properties to be chosen between.", - "items": { - "type": "string", - "title": "Property name", - "description": "Possible property to choose." - } - }, - "entities": { - "type": "array", - "title": "Entities", - "description": "Ambiguous entity names.", - "items": { - "type": "string", - "title": "Entity name", - "description": "Entity name being chosen between." - } - }, - "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/integerExpression", - "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.OnCondition": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On condition", - "description": "Actions to perform when specified condition is true.", - "type": "object", - "required": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "event", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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.", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "type": "object", - "required": [ - "actions", - "$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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "required": [ - "actions", - "$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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "required": [ - "actions", - "$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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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": [ - "actions", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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/integerExpression", - "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.OrdinalEntityRecognizer": { - "$role": [ - "implements(Microsoft.IRecognizer)", - "implements(Microsoft.IEntityRecognizer)" - ], - "title": "Ordinal entity recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.AI.QnA", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.AI.QnA", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.SetProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set one or more property values.", - "type": "object", - "required": [ - "assignments", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "activity": { - "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1", - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "actions" - ], - "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.TelemetryTrackEvent": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Telemetry - track event", - "description": "Track a custom event using the registered Telemetry Client.", - "required": [ - "url", - "method", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.TelemetryTrackEvent" - }, - "$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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.TextInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Update an activity", - "description": "Respond with an activity.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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": [ - "=dialog.lastActivityId" - ] - }, - "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", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.11.0" - }, - "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." - } - } - }, - "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 - ] - } - ] - }, - "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" - ] - } - ] - }, - "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.]*\\)))$" - }, - "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')" - ] - } - ] - }, - "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": [ - "=..." - ] - } - ] - } - } -} +{} \ No newline at end of file diff --git a/generators/generator-bot-adaptive/generators/app/templates/assets/schemas/sdk.uischema b/generators/generator-bot-adaptive/generators/app/templates/assets/schemas/sdk.uischema index 48d8d8b8f2..9e26dfeeb6 100644 --- a/generators/generator-bot-adaptive/generators/app/templates/assets/schemas/sdk.uischema +++ b/generators/generator-bot-adaptive/generators/app/templates/assets/schemas/sdk.uischema @@ -1,781 +1 @@ -{ - "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", - "Microsoft.AdaptiveDialog": { - "form": { - "description": "This configures a data driven dialog via a collection of events and actions.", - "helpLink": "https://aka.ms/bf-composer-docs-dialog", - "hidden": [ - "triggers", - "generator", - "selector", - "schema" - ], - "label": "Adaptive dialog", - "order": [ - "recognizer", - "*" - ], - "properties": { - "recognizer": { - "description": "To understand what the user says, your dialog needs a \"Recognizer\"; that includes example words and sentences that users may use.", - "label": "Language Understanding" - } - } - } - }, - "Microsoft.BeginDialog": { - "form": { - "helpLink": "https://aka.ms/bfc-understanding-dialogs", - "label": "Begin a new dialog", - "order": [ - "dialog", - "options", - "resultProperty", - "*" - ], - "properties": { - "resultProperty": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Begin Dialog" - } - }, - "Microsoft.BeginSkill": { - "form": { - "helpLink": "https://aka.ms/bf-composer-docs-connect-skill", - "label": "Connect to a skill", - "properties": { - "resultProperty": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Skill Dialog" - } - }, - "Microsoft.BreakLoop": { - "form": { - "label": "Break out of loop", - "subtitle": "Break out of loop" - } - }, - "Microsoft.CancelAllDialogs": { - "form": { - "helpLink": "https://aka.ms/bfc-understanding-dialogs", - "label": "Cancel all active dialogs", - "subtitle": "Cancel All Dialogs" - } - }, - "Microsoft.ContinueLoop": { - "form": { - "label": "Continue loop", - "subtitle": "Continue loop" - } - }, - "Microsoft.DebugBreak": { - "form": { - "label": "Debug Break" - } - }, - "Microsoft.DeleteProperties": { - "form": { - "helpLink": "https://aka.ms/bfc-using-memory", - "label": "Delete properties", - "properties": { - "properties": { - "intellisenseScopes": [ - "user-variables" - ] - } - }, - "subtitle": "Delete Properties" - } - }, - "Microsoft.DeleteProperty": { - "form": { - "helpLink": "https://aka.ms/bfc-using-memory", - "label": "Delete a property", - "properties": { - "property": { - "intellisenseScopes": [ - "user-variables" - ] - } - }, - "subtitle": "Delete Property" - } - }, - "Microsoft.EditActions": { - "form": { - "label": "Modify active dialog", - "subtitle": "Edit Actions" - } - }, - "Microsoft.EditArray": { - "form": { - "helpLink": "https://aka.ms/bfc-using-memory", - "label": "Edit an array property", - "properties": { - "itemsProperty": { - "intellisenseScopes": [ - "user-variables" - ] - }, - "resultProperty": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Edit Array" - } - }, - "Microsoft.EmitEvent": { - "form": { - "helpLink": "https://aka.ms/bfc-custom-events", - "label": "Emit a custom event", - "subtitle": "Emit Event" - } - }, - "Microsoft.EndDialog": { - "form": { - "helpLink": "https://aka.ms/bfc-understanding-dialogs", - "label": "End this dialog", - "subtitle": "End Dialog" - } - }, - "Microsoft.EndTurn": { - "form": { - "helpLink": "https://aka.ms/bfc-understanding-dialogs", - "label": "End turn", - "subtitle": "End Turn" - } - }, - "Microsoft.Foreach": { - "form": { - "helpLink": "https://aka.ms/bfc-controlling-conversation-flow", - "hidden": [ - "actions" - ], - "label": "Loop: For each item", - "order": [ - "itemsProperty", - "*" - ], - "properties": { - "index": { - "intellisenseScopes": [ - "variable-scopes" - ] - }, - "itemsProperty": { - "intellisenseScopes": [ - "user-variables" - ] - }, - "value": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "For Each" - } - }, - "Microsoft.ForeachPage": { - "form": { - "helpLink": "https://aka.ms/bfc-controlling-conversation-flow", - "hidden": [ - "actions" - ], - "label": "Loop: For each page (multiple items)", - "order": [ - "itemsProperty", - "pageSize", - "*" - ], - "properties": { - "itemsProperty": { - "intellisenseScopes": [ - "user-variables" - ] - }, - "page": { - "intellisenseScopes": [ - "variable-scopes" - ] - }, - "pageIndex": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "For Each Page" - } - }, - "Microsoft.HttpRequest": { - "form": { - "helpLink": "https://aka.ms/bfc-using-http", - "label": "Send an HTTP request", - "order": [ - "method", - "url", - "body", - "headers", - "*" - ], - "properties": { - "resultProperty": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "HTTP Request" - } - }, - "Microsoft.IfCondition": { - "form": { - "helpLink": "https://aka.ms/bfc-controlling-conversation-flow", - "hidden": [ - "actions", - "elseActions" - ], - "label": "Branch: If/Else", - "subtitle": "If Condition" - } - }, - "Microsoft.LogAction": { - "form": { - "helpLink": "https://aka.ms/composer-telemetry", - "label": "Log to console", - "subtitle": "Log Action" - } - }, - "Microsoft.RepeatDialog": { - "form": { - "helpLink": "https://aka.ms/bfc-understanding-dialogs", - "label": "Repeat this dialog", - "order": [ - "options", - "*" - ], - "subtitle": "Repeat Dialog" - } - }, - "Microsoft.ReplaceDialog": { - "form": { - "helpLink": "https://aka.ms/bfc-understanding-dialogs", - "label": "Replace this dialog", - "order": [ - "dialog", - "options", - "*" - ], - "subtitle": "Replace Dialog" - } - }, - "Microsoft.SendActivity": { - "form": { - "helpLink": "https://aka.ms/bfc-send-activity", - "label": "Send a response", - "order": [ - "activity", - "*" - ], - "subtitle": "Send Activity" - } - }, - "Microsoft.SetProperties": { - "form": { - "helpLink": "https://aka.ms/bfc-using-memory", - "label": "Set properties", - "properties": { - "assignments": { - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - } - } - }, - "subtitle": "Set Properties" - } - }, - "Microsoft.SetProperty": { - "form": { - "helpLink": "https://aka.ms/bfc-using-memory", - "label": "Set a property", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Set Property" - } - }, - "Microsoft.SignOutUser": { - "form": { - "label": "Sign out user", - "subtitle": "Signout User" - } - }, - "Microsoft.SwitchCondition": { - "form": { - "helpLink": "https://aka.ms/bfc-controlling-conversation-flow", - "hidden": [ - "default" - ], - "label": "Branch: Switch (multiple options)", - "properties": { - "cases": { - "hidden": [ - "actions" - ] - }, - "condition": { - "intellisenseScopes": [ - "user-variables" - ] - } - }, - "subtitle": "Switch Condition" - } - }, - "Microsoft.ThrowException": { - "form": { - "label": "Throw an exception", - "subtitle": "Throw an exception" - } - }, - "Microsoft.TraceActivity": { - "form": { - "helpLink": "https://aka.ms/composer-telemetry", - "label": "Emit a trace event", - "subtitle": "Trace Activity" - } - }, - "Microsoft.Ask": { - "form": { - "helpLink": "https://aka.ms/bfc-send-activity", - "label": "Send a response to ask a question", - "order": [ - "activity", - "*" - ], - "subtitle": "Ask Activity" - } - }, - "Microsoft.AttachmentInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a file or an attachment", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Attachment Input" - } - }, - "Microsoft.ChoiceInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt with multi-choice", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Choice Input" - } - }, - "Microsoft.ConfirmInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for confirmation", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Confirm Input" - } - }, - "Microsoft.DateTimeInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a date or a time", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Date Time Input" - } - }, - "Microsoft.NumberInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a number", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Number Input" - } - }, - "Microsoft.OAuthInput": { - "form": { - "helpLink": "https://aka.ms/bfc-using-oauth", - "label": "OAuth login", - "order": [ - "connectionName", - "*" - ], - "subtitle": "OAuth Input" - } - }, - "Microsoft.TextInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for text", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Text Input" - } - }, - "Microsoft.RegexRecognizer": { - "form": { - "hidden": [ - "entities" - ] - } - }, - "Microsoft.OnActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Activities", - "order": [ - "condition", - "*" - ], - "subtitle": "Activity received" - } - }, - "Microsoft.OnAssignEntity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Handle a condition when an entity is assigned", - "order": [ - "condition", - "*" - ], - "subtitle": "EntityAssigned activity" - } - }, - "Microsoft.OnBeginDialog": { - "form": { - "hidden": [ - "actions" - ], - "label": "Dialog started", - "order": [ - "condition", - "*" - ], - "subtitle": "Begin dialog event" - } - }, - "Microsoft.OnCancelDialog": { - "form": { - "hidden": [ - "actions" - ], - "label": "Dialog cancelled", - "order": [ - "condition", - "*" - ], - "subtitle": "Cancel dialog event" - } - }, - "Microsoft.OnChooseIntent": { - "form": { - "hidden": [ - "actions" - ], - "order": [ - "condition", - "*" - ] - } - }, - "Microsoft.OnCondition": { - "form": { - "hidden": [ - "actions" - ], - "label": "Handle a condition", - "order": [ - "condition", - "*" - ], - "subtitle": "Condition" - } - }, - "Microsoft.OnConversationUpdateActivity": { - "form": { - "description": "Handle the events fired when a user begins a new conversation with the bot.", - "helpLink": "https://aka.ms/bf-composer-docs-conversation-update-activity", - "hidden": [ - "actions" - ], - "label": "Greeting", - "order": [ - "condition", - "*" - ], - "subtitle": "ConversationUpdate activity" - } - }, - "Microsoft.OnDialogEvent": { - "form": { - "hidden": [ - "actions" - ], - "label": "Dialog events", - "order": [ - "condition", - "*" - ], - "subtitle": "Dialog event" - } - }, - "Microsoft.OnEndOfActions": { - "form": { - "hidden": [ - "actions" - ], - "label": "Handle a condition when actions have ended", - "order": [ - "condition", - "*" - ], - "subtitle": "EndOfActions activity" - } - }, - "Microsoft.OnEndOfConversationActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Conversation ended", - "order": [ - "condition", - "*" - ], - "subtitle": "EndOfConversation activity" - } - }, - "Microsoft.OnError": { - "form": { - "hidden": [ - "actions" - ], - "label": "Error occurred", - "order": [ - "condition", - "*" - ], - "subtitle": "Error event" - } - }, - "Microsoft.OnEventActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Event received", - "order": [ - "condition", - "*" - ], - "subtitle": "Event activity" - } - }, - "Microsoft.OnHandoffActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Handover to human", - "order": [ - "condition", - "*" - ], - "subtitle": "Handoff activity" - } - }, - "Microsoft.OnInstallationUpdateActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Installation updated", - "order": [ - "condition", - "*" - ], - "subtitle": "Installation updated activity" - } - }, - "Microsoft.OnIntent": { - "form": { - "hidden": [ - "actions" - ], - "label": "Intent recognized", - "order": [ - "intent", - "condition", - "entities", - "*" - ], - "subtitle": "Intent recognized" - } - }, - "Microsoft.OnInvokeActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Conversation invoked", - "order": [ - "condition", - "*" - ], - "subtitle": "Invoke activity" - } - }, - "Microsoft.OnMessageActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Message received", - "order": [ - "condition", - "*" - ], - "subtitle": "Message received activity" - } - }, - "Microsoft.OnMessageDeleteActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Message deleted", - "order": [ - "condition", - "*" - ], - "subtitle": "Message deleted activity" - } - }, - "Microsoft.OnMessageReactionActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Message reaction", - "order": [ - "condition", - "*" - ], - "subtitle": "Message reaction activity" - } - }, - "Microsoft.OnMessageUpdateActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Message updated", - "order": [ - "condition", - "*" - ], - "subtitle": "Message updated activity" - } - }, - "Microsoft.OnRepromptDialog": { - "form": { - "hidden": [ - "actions" - ], - "label": "Re-prompt for input", - "order": [ - "condition", - "*" - ], - "subtitle": "Reprompt dialog event" - } - }, - "Microsoft.OnTypingActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "User is typing", - "order": [ - "condition", - "*" - ], - "subtitle": "Typing activity" - } - }, - "Microsoft.OnUnknownIntent": { - "form": { - "hidden": [ - "actions" - ], - "label": "Unknown intent", - "order": [ - "condition", - "*" - ], - "subtitle": "Unknown intent recognized" - } - } -} +{} \ No newline at end of file diff --git a/generators/generator-bot-adaptive/package.json b/generators/generator-bot-adaptive/package.json index 98ca42a60a..2784cd4e9f 100644 --- a/generators/generator-bot-adaptive/package.json +++ b/generators/generator-bot-adaptive/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/generator-bot-adaptive", - "version": "1.0.0", + "version": "1.1.1", "description": "Yeoman generator for creating a base bot built on the Azure Bot Framework and the Adaptive stack.", "keywords": [ "microsoft", diff --git a/generators/generator-bot-adaptive/platforms.js b/generators/generator-bot-adaptive/platforms.js index 621dd9b47a..cccd893509 100644 --- a/generators/generator-bot-adaptive/platforms.js +++ b/generators/generator-bot-adaptive/platforms.js @@ -3,12 +3,12 @@ const dotnet = { name: 'dotnet', - defaultSdkVersion: '4.13.2', + defaultSdkVersion: '4.14.1', }; const js = { name: 'js', - defaultSdkVersion: '4.13.4-preview', + defaultSdkVersion: '4.14.0-preview', }; module.exports = { dotnet, js }; diff --git a/generators/generator-bot-adaptive/test/dotnet-functions.test.js b/generators/generator-bot-adaptive/test/dotnet-functions.test.js index 04cb7cd664..dc96e8c34c 100644 --- a/generators/generator-bot-adaptive/test/dotnet-functions.test.js +++ b/generators/generator-bot-adaptive/test/dotnet-functions.test.js @@ -125,7 +125,7 @@ describe(`generator-bot-adaptive --platform ${platform} --integration ${integrat { botName, packageReferences: '', - sdkVersion: '4.13.2', + sdkVersion: '4.14.1', } ); diff --git a/generators/generator-bot-adaptive/test/dotnet-webapp.test.js b/generators/generator-bot-adaptive/test/dotnet-webapp.test.js index b3a99461ab..21c2576efa 100644 --- a/generators/generator-bot-adaptive/test/dotnet-webapp.test.js +++ b/generators/generator-bot-adaptive/test/dotnet-webapp.test.js @@ -106,7 +106,7 @@ describe(`generator-bot-adaptive --platform ${platform} --integration ${integrat { botName, packageReferences: '', - sdkVersion: '4.13.2', + sdkVersion: '4.14.1', } ); diff --git a/generators/generator-bot-adaptive/test/js-functions.test.js b/generators/generator-bot-adaptive/test/js-functions.test.js index c3c990981a..c22b1be238 100644 --- a/generators/generator-bot-adaptive/test/js-functions.test.js +++ b/generators/generator-bot-adaptive/test/js-functions.test.js @@ -107,10 +107,10 @@ describe(`generator-bot-adaptive --platform ${platform} --integration ${integrat }, dependencies: { 'cross-env': 'latest', - 'botbuilder-ai-luis': '4.13.4-preview', - 'botbuilder-ai-qna': '4.13.4-preview', + 'botbuilder-ai-luis': '4.14.0-preview', + 'botbuilder-ai-qna': '4.14.0-preview', 'botbuilder-dialogs-adaptive-runtime-integration-azure-functions': - '4.13.4-preview', + '4.14.0-preview', }, }; diff --git a/generators/generator-bot-adaptive/test/js-webapp.test.js b/generators/generator-bot-adaptive/test/js-webapp.test.js index 2028572509..d76e3995cd 100644 --- a/generators/generator-bot-adaptive/test/js-webapp.test.js +++ b/generators/generator-bot-adaptive/test/js-webapp.test.js @@ -86,10 +86,10 @@ describe(`generator-bot-adaptive --platform ${platform} --integration ${integrat }, dependencies: { 'cross-env': 'latest', - 'botbuilder-ai-luis': '4.13.4-preview', - 'botbuilder-ai-qna': '4.13.4-preview', + 'botbuilder-ai-luis': '4.14.0-preview', + 'botbuilder-ai-qna': '4.14.0-preview', 'botbuilder-dialogs-adaptive-runtime-integration-express': - '4.13.4-preview', + '4.14.0-preview', }, }; diff --git a/generators/generator-bot-core-assistant/generators/app/index.js b/generators/generator-bot-core-assistant/generators/app/index.js index b19b308c8c..ff274836a0 100644 --- a/generators/generator-bot-core-assistant/generators/app/index.js +++ b/generators/generator-bot-core-assistant/generators/app/index.js @@ -12,7 +12,7 @@ const packageReferences = { [platforms.dotnet.name]: [ { name: 'Microsoft.Bot.Components.HelpAndCancel', - version: '1.0.0', + version: '1.1.1', }, ], [platforms.js.name]: [ diff --git a/generators/generator-bot-core-assistant/package.json b/generators/generator-bot-core-assistant/package.json index 22944a9a4b..285a059819 100644 --- a/generators/generator-bot-core-assistant/package.json +++ b/generators/generator-bot-core-assistant/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/generator-bot-core-assistant", - "version": "1.0.0", + "version": "1.1.1", "description": "Yeoman generator for creating an assistant-style bot with NLP built on the Azure Bot Framework.", "keywords": [ "microsoft", @@ -24,7 +24,7 @@ "lint": "eslint -c ../../.eslintrc.json ." }, "dependencies": { - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0", + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1", "yeoman-generator": "^2.0.5", "yeoman-test": "^1.9.1" }, diff --git a/generators/generator-bot-core-language/generators/app/index.js b/generators/generator-bot-core-language/generators/app/index.js index e831c00de2..e231c8f3d6 100644 --- a/generators/generator-bot-core-language/generators/app/index.js +++ b/generators/generator-bot-core-language/generators/app/index.js @@ -12,11 +12,11 @@ const packageReferences = { [platforms.dotnet.name]: [ { name: 'Microsoft.Bot.Components.HelpAndCancel', - version: '1.0.0', + version: '1.1.1', }, { name: 'Microsoft.Bot.Components.Welcome', - version: '1.0.0', + version: '1.1.1', }, ], [platforms.js.name]: [ diff --git a/generators/generator-bot-core-language/package.json b/generators/generator-bot-core-language/package.json index 5cecb71f13..463947c559 100644 --- a/generators/generator-bot-core-language/package.json +++ b/generators/generator-bot-core-language/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/generator-bot-core-language", - "version": "1.0.0", + "version": "1.1.1", "description": "Yeoman generator for creating a simple conversational bot with NLP built on the Azure Bot Framework.", "keywords": [ "microsoft", @@ -26,7 +26,7 @@ "lint": "eslint -c ../../.eslintrc.json ." }, "dependencies": { - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0", + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1", "yeoman-generator": "^2.0.5", "yeoman-test": "^1.9.1" }, diff --git a/generators/generator-bot-core-qna/package.json b/generators/generator-bot-core-qna/package.json index 9692356e3e..2e0ff125cb 100644 --- a/generators/generator-bot-core-qna/package.json +++ b/generators/generator-bot-core-qna/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/generator-bot-core-qna", - "version": "1.0.0", + "version": "1.1.1", "description": "Yeoman generator for creating a bot and connecting to a QnA Maker knowledge base.", "keywords": [ "microsoft", @@ -23,7 +23,7 @@ "lint": "eslint -c ../../.eslintrc.json ." }, "dependencies": { - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0", + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1", "yeoman-generator": "^2.0.5", "yeoman-test": "^1.9.1" }, diff --git a/generators/generator-bot-empty/package.json b/generators/generator-bot-empty/package.json index a4cdb7f0ff..645fa1f905 100644 --- a/generators/generator-bot-empty/package.json +++ b/generators/generator-bot-empty/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/generator-bot-empty", - "version": "1.0.0", + "version": "1.1.1", "description": "Yeoman generator for creating an empty bot built on the Azure Bot Framework.", "keywords": [ "microsoft", @@ -26,7 +26,7 @@ "lint": "eslint -c ../../.eslintrc.json ." }, "dependencies": { - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0", + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1", "yeoman-generator": "^2.0.5", "yeoman-test": "^1.9.1" }, diff --git a/generators/generator-bot-enterprise-assistant/generators/app/index.js b/generators/generator-bot-enterprise-assistant/generators/app/index.js index 33ed5d2b6f..2a3d3e28b8 100644 --- a/generators/generator-bot-enterprise-assistant/generators/app/index.js +++ b/generators/generator-bot-enterprise-assistant/generators/app/index.js @@ -36,7 +36,7 @@ module.exports = class extends BaseGenerator { { isPlugin: true, name: 'Microsoft.Bot.Builder.AI.Orchestrator', - version: '4.13.2', + version: '4.14.1', }, ], modifyApplicationSettings: (appSettings) => { diff --git a/generators/generator-bot-enterprise-assistant/package.json b/generators/generator-bot-enterprise-assistant/package.json index c7f51f4dc0..8b538a0e6e 100644 --- a/generators/generator-bot-enterprise-assistant/package.json +++ b/generators/generator-bot-enterprise-assistant/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/generator-bot-enterprise-assistant", - "version": "1.0.0", + "version": "1.1.1", "description": "Yeoman generator for creating an enterprise assistant, with a root bot and two skills built on the Azure Bot Framework.", "keywords": [ "microsoft", @@ -25,9 +25,9 @@ "lint": "eslint -c ../../.eslintrc.json ." }, "dependencies": { - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0", - "@microsoft/generator-bot-enterprise-calendar": "workspace:^1.0.0", - "@microsoft/generator-bot-enterprise-people": "workspace:^1.0.0", + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1", + "@microsoft/generator-bot-enterprise-calendar": "workspace:^1.1.1", + "@microsoft/generator-bot-enterprise-people": "workspace:^1.1.1", "uuid": "^8.3.2", "yeoman-generator": "^2.0.5", "yeoman-test": "^1.9.1" diff --git a/generators/generator-bot-enterprise-calendar/generators/app/index.js b/generators/generator-bot-enterprise-calendar/generators/app/index.js index 64202cef42..c07c0d72da 100644 --- a/generators/generator-bot-enterprise-calendar/generators/app/index.js +++ b/generators/generator-bot-enterprise-calendar/generators/app/index.js @@ -16,7 +16,7 @@ module.exports = class extends BaseGenerator { { isPlugin: true, name: 'Microsoft.Bot.Components.Graph', - version: '1.0.0', + version: '1.1.1', }, ], modifyApplicationSettings: (appSettings) => { diff --git a/generators/generator-bot-enterprise-calendar/package.json b/generators/generator-bot-enterprise-calendar/package.json index 419f85cefa..ccc2b013bf 100644 --- a/generators/generator-bot-enterprise-calendar/package.json +++ b/generators/generator-bot-enterprise-calendar/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/generator-bot-enterprise-calendar", - "version": "1.0.0", + "version": "1.1.1", "description": "Yeoman generator for creating an Adaptive bot built on the Azure Bot Framework using the Calendar template.", "keywords": [ "microsoft", @@ -24,7 +24,7 @@ "lint": "eslint ." }, "dependencies": { - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0", + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1", "yeoman-generator": "^2.0.5", "yeoman-test": "^1.9.1" }, diff --git a/generators/generator-bot-enterprise-people/generators/app/index.js b/generators/generator-bot-enterprise-people/generators/app/index.js index d85abc8a14..afc0f48b0a 100644 --- a/generators/generator-bot-enterprise-people/generators/app/index.js +++ b/generators/generator-bot-enterprise-people/generators/app/index.js @@ -16,7 +16,7 @@ module.exports = class extends BaseGenerator { { isPlugin: true, name: 'Microsoft.Bot.Components.Graph', - version: '1.0.0', + version: '1.1.1', }, ], modifyApplicationSettings: (appSettings) => { diff --git a/generators/generator-bot-enterprise-people/package.json b/generators/generator-bot-enterprise-people/package.json index 7e8b5bb1f8..e8ae667072 100644 --- a/generators/generator-bot-enterprise-people/package.json +++ b/generators/generator-bot-enterprise-people/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/generator-bot-enterprise-people", - "version": "1.0.0", + "version": "1.1.1", "description": "Yeoman generator for creating an Adaptive bot built on the Azure Bot Framework using the People template.", "keywords": [ "microsoft", @@ -24,7 +24,7 @@ "lint": "eslint -c ../../.eslintrc.json ." }, "dependencies": { - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0", + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1", "yeoman-generator": "^2.0.5", "yeoman-test": "^1.9.1" }, diff --git a/package.json b/package.json index 7a69ff9c32..33608161e5 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "packages/*", "packages/*/js", "skills/declarative/*", - "testing/*" + "tests/**/js", + "!tests/functional" ], "scripts": { "lint": "yarn workspaces foreach run lint" diff --git a/packages/AdaptiveCards/Microsoft.Bot.Components.AdaptiveCards.csproj b/packages/AdaptiveCards/Microsoft.Bot.Components.AdaptiveCards.csproj index ebcd529718..c9b6c9e0fb 100644 --- a/packages/AdaptiveCards/Microsoft.Bot.Components.AdaptiveCards.csproj +++ b/packages/AdaptiveCards/Microsoft.Bot.Components.AdaptiveCards.csproj @@ -8,7 +8,7 @@ Microsoft.Bot.Components.AdaptiveCards https://github.com/microsoft/botframework-components/tree/main/packages/AdaptiveCards - 1.0.0 + 1.1.1 Composer triggers and actions for working with Adaptive Cards. Composer triggers and actions for working with Adaptive Cards. true @@ -20,7 +20,7 @@ - + diff --git a/packages/Directory.Build.props b/packages/Directory.Build.props index f25047d671..a65ea1de3e 100644 --- a/packages/Directory.Build.props +++ b/packages/Directory.Build.props @@ -12,18 +12,13 @@ - https://raw.githubusercontent.com/microsoft/botframework-sdk/master/icon.png - https://github.com/Microsoft/BotBuilder/blob/master/LICENSE + https://raw.githubusercontent.com/microsoft/botframework-sdk/main/icon.png true - https://github.com/Microsoft/BotBuilder-dotnet/blob/master/LICENSE + MIT en-US https://github.com/Microsoft/botframework-components - - $(NoWarn);NU5125 + $(NoWarn);NU5048 true true snupkg diff --git a/packages/Graph/Microsoft.Bot.Components.Graph.csproj b/packages/Graph/Microsoft.Bot.Components.Graph.csproj index 7e09985822..e8875e0481 100644 --- a/packages/Graph/Microsoft.Bot.Components.Graph.csproj +++ b/packages/Graph/Microsoft.Bot.Components.Graph.csproj @@ -7,7 +7,7 @@ Microsoft.Bot.Components.Graph - 1.0.0 + 1.1.1 Custom actions for the MS Graph API for Bot Framework bots. A set of custom actions for working with the Microsoft Graph API from Bot Framework Composer. https://github.com/Microsoft/botframework-components/tree/main/packages/Graph @@ -20,7 +20,7 @@ - + all diff --git a/packages/HelpAndCancel/Microsoft.Bot.Components.HelpAndCancel.nuspec b/packages/HelpAndCancel/Microsoft.Bot.Components.HelpAndCancel.nuspec index dd564f2118..9855582d85 100644 --- a/packages/HelpAndCancel/Microsoft.Bot.Components.HelpAndCancel.nuspec +++ b/packages/HelpAndCancel/Microsoft.Bot.Components.HelpAndCancel.nuspec @@ -2,18 +2,18 @@ Microsoft.Bot.Components.HelpAndCancel - 1.0.0 + 1.1.1 Microsoft Microsoft © Microsoft Corporation. All rights reserved. - https://github.com/Microsoft/BotBuilder/blob/master/LICENSE + MIT true https://github.com/Microsoft/botframework-components/tree/main/packages/HelpAndCancel First version of HelpAndCancel package Contains Adaptive Dialog assets to support Help and Cancel conversational flows in a bot built on the Azure Bot Framework. msbot-component msbot-content conversationalcore helpintent cancelintent preview - + diff --git a/packages/HelpAndCancel/package.json b/packages/HelpAndCancel/package.json index 72ba223afc..e66581ac6f 100644 --- a/packages/HelpAndCancel/package.json +++ b/packages/HelpAndCancel/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/bot-components-helpandcancel", - "version": "1.0.0", + "version": "1.1.1", "description": "Contains Adaptive Dialog assets to support Help and Cancel conversational flows in a bot built on the Azure Bot Framework.", "keywords": [ "microsoft", @@ -21,6 +21,6 @@ "url": "https://github.com/Microsoft/botframework-components.git" }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"No test specified for package \\\"@microsoft/bot-components-helpandcancel\\\", skipping.\"" } } diff --git a/packages/Teams/dotnet/Actions/GetMeetingInfo.cs b/packages/Teams/dotnet/Actions/GetMeetingInfo.cs new file mode 100644 index 0000000000..a95eaa52a5 --- /dev/null +++ b/packages/Teams/dotnet/Actions/GetMeetingInfo.cs @@ -0,0 +1,104 @@ +// Licensed under the MIT License. +// Copyright (c) Microsoft Corporation. All rights reserved. + +using System; +using System.Runtime.CompilerServices; +using System.Threading; +using System.Threading.Tasks; +using AdaptiveExpressions.Properties; +using Microsoft.Bot.Builder.Dialogs; +using Microsoft.Bot.Builder.Teams; +using Microsoft.Bot.Connector; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Components.Teams.Actions +{ + /// + /// Calls TeamsInfo.GetMeetingInfoAsync and sets the result to a memory property. + /// + public class GetMeetingInfo : Dialog + { + /// + /// Class identifier. + /// + [JsonProperty("$kind")] + public const string Kind = "Teams.GetMeetingInfo"; + + /// + /// Initializes a new instance of the class. + /// + /// Optional, source file full path. + /// Optional, line number in source file. + [JsonConstructor] + public GetMeetingInfo([CallerFilePath] string callerPath = "", [CallerLineNumber] int callerLine = 0) + : base() + { + RegisterSourceLocation(callerPath, callerLine); + } + + /// + /// Gets or sets an optional expression which if is true will disable this action. + /// + /// + /// "user.age > 18". + /// + /// + /// A boolean expression. + /// + [JsonProperty("disabled")] + public BoolExpression Disabled { get; set; } + + /// + /// Gets or sets property path to put the value in. + /// + /// + /// Property path to put the value in. + /// + [JsonProperty("property")] + public StringExpression Property { get; set; } + + /// + /// Gets or sets the expression to get the value to use for meeting id. + /// + /// + /// The expression to get the value to use for meeting id. Default value is turn.activity.channelData.meeting.id. + /// + [JsonProperty("meetingId")] + public StringExpression MeetingId { get; set; } = "=turn.activity.channelData.meeting.id"; + + /// + public override async Task BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken)) + { + if (options is CancellationToken) + { + throw new ArgumentException($"{nameof(options)} cannot be a cancellation token"); + } + + if (Disabled != null && Disabled.GetValue(dc.State)) + { + return await dc.EndDialogAsync(cancellationToken: cancellationToken).ConfigureAwait(false); + } + + if (dc.Context.Activity.ChannelId != Channels.Msteams) + { + throw new InvalidOperationException($"{Kind} works only on the Teams channel."); + } + + string meetingId = MeetingId.GetValueOrNull(dc.State); + var result = await TeamsInfo.GetMeetingInfoAsync(dc.Context, meetingId, cancellationToken: cancellationToken).ConfigureAwait(false); + + if (Property != null) + { + dc.State.SetValue(Property.GetValue(dc.State), result); + } + + return await dc.EndDialogAsync(result, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + protected override string OnComputeId() + { + return $"{GetType().Name}[{MeetingId?.ToString() ?? string.Empty},{Property?.ToString() ?? string.Empty}]"; + } + } +} diff --git a/packages/Teams/dotnet/Actions/SendMessageToTeamsChannel.cs b/packages/Teams/dotnet/Actions/SendMessageToTeamsChannel.cs index 912b8beecf..9f65d59452 100644 --- a/packages/Teams/dotnet/Actions/SendMessageToTeamsChannel.cs +++ b/packages/Teams/dotnet/Actions/SendMessageToTeamsChannel.cs @@ -2,7 +2,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. using System; +using System.Linq; using System.Runtime.CompilerServices; +using System.Security.Claims; using System.Threading; using System.Threading.Tasks; using AdaptiveExpressions.Properties; @@ -118,23 +120,52 @@ public SendMessageToTeamsChannel([CallerFilePath] string callerPath = "", [Calle teamsChannelId = dc.Context.Activity.TeamsGetChannelId(); } - if (!(dc.Context.Adapter is BotFrameworkAdapter)) + Tuple result; + + // Check for legacy adapter + if (dc.Context.Adapter is BotFrameworkAdapter) + { + // TeamsInfo.SendMessageToTeamsChannelAsync requires AppCredentials + var credentials = dc.Context.TurnState.Get()?.Credentials as MicrosoftAppCredentials; + if (credentials == null) + { + throw new InvalidOperationException($"Missing credentials as {nameof(MicrosoftAppCredentials)} in {nameof(IConnectorClient)} from TurnState"); + } + + // The result comes back as a tuple, which is used to set the two properties (if present). + result = await TeamsInfo.SendMessageToTeamsChannelAsync(dc.Context, activity, teamsChannelId, credentials, cancellationToken: cancellationToken).ConfigureAwait(false); + } + else if (dc.Context.Adapter is CloudAdapterBase) { - throw new InvalidOperationException($"{Kind} is not supported by the current adapter."); + // Retrieve the bot appid from TurnState's ClaimsIdentity + string appId; + if (dc.Context.TurnState.Get(BotAdapter.BotIdentityKey) is ClaimsIdentity botIdentity) + { + // Apparently 'version' is sometimes empty, which will result in no id returned from GetAppIdFromClaims + appId = JwtTokenValidation.GetAppIdFromClaims(botIdentity.Claims); + if (string.IsNullOrEmpty(appId)) + { + appId = botIdentity.Claims.FirstOrDefault(claim => claim.Type == AuthenticationConstants.AudienceClaim)?.Value; + } + + if (string.IsNullOrEmpty(appId)) + { + throw new InvalidOperationException($"Missing AppIdClaim in ClaimsIdentity."); + } + } + else + { + throw new InvalidOperationException($"Missing {BotAdapter.BotIdentityKey} in {nameof(ITurnContext)} TurnState."); + } + + // The result comes back as a tuple, which is used to set the two properties (if present). + result = await TeamsInfo.SendMessageToTeamsChannelAsync(dc.Context, activity, teamsChannelId, appId, cancellationToken: cancellationToken).ConfigureAwait(false); } - - // TODO: this will NOT work with certificate app credentials - - // TeamsInfo.SendMessageToTeamsChannelAsync requires AppCredentials - var credentials = dc.Context.TurnState.Get()?.Credentials as MicrosoftAppCredentials; - if (credentials == null) + else { - throw new InvalidOperationException($"Missing credentials as {nameof(MicrosoftAppCredentials)} in {nameof(IConnectorClient)} from TurnState"); + throw new InvalidOperationException($"The adapter does not support {nameof(SendMessageToTeamsChannel)}."); } - // The result comes back as a tuple, which is used to set the two properties (if present). - var result = await TeamsInfo.SendMessageToTeamsChannelAsync(dc.Context, activity, teamsChannelId, credentials, cancellationToken: cancellationToken).ConfigureAwait(false); - if (ConversationReferenceProperty != null) { dc.State.SetValue(ConversationReferenceProperty.GetValue(dc.State), result.Item1); diff --git a/packages/Teams/dotnet/Microsoft.Bot.Components.Teams.csproj b/packages/Teams/dotnet/Microsoft.Bot.Components.Teams.csproj index d333f2f004..9533cc0562 100644 --- a/packages/Teams/dotnet/Microsoft.Bot.Components.Teams.csproj +++ b/packages/Teams/dotnet/Microsoft.Bot.Components.Teams.csproj @@ -3,7 +3,7 @@ netstandard2.0 Microsoft.Bot.Components.Teams - 1.0.0 + 1.1.1 This library implements .NET support for adaptive dialogs with Microsoft Teams This library implements .NET support for adaptive dialogs with Microsoft Teams https://github.com/Microsoft/botframework-components/tree/main/packages/Teams/dotnet @@ -35,7 +35,7 @@ - + diff --git a/packages/Teams/dotnet/Schemas/Actions/Teams.GetMeetingInfo.schema b/packages/Teams/dotnet/Schemas/Actions/Teams.GetMeetingInfo.schema new file mode 100644 index 0000000000..39d3fedb45 --- /dev/null +++ b/packages/Teams/dotnet/Schemas/Actions/Teams.GetMeetingInfo.schema @@ -0,0 +1,38 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", + "$role": "implements(Microsoft.IDialog)", + "title": "Get meeting information", + "description": "Get teams meeting information.", + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "property": { + "$ref": "schema:#/definitions/stringExpression", + "title": "Property", + "description": "Property (named location to store information).", + "examples": [ + "dialog.meetingInfo" + ] + }, + "meetingId": { + "$ref": "schema:#/definitions/stringExpression", + "title": "Meeting id", + "description": "Meeting Id or expression to a meetingId to use to get the meeting information. Default value is the current turn.activity.channelData.meeting.id.", + "examples": [ + "=turn.activity.channelData.meeting.id" + ] + }, + "disabled": { + "$ref": "schema:#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "=user.age > 3" + ] + } + } +} \ No newline at end of file diff --git a/packages/Teams/dotnet/Schemas/Actions/Teams.GetMeetingInfo.uischema b/packages/Teams/dotnet/Schemas/Actions/Teams.GetMeetingInfo.uischema new file mode 100644 index 0000000000..9f79a1de99 --- /dev/null +++ b/packages/Teams/dotnet/Schemas/Actions/Teams.GetMeetingInfo.uischema @@ -0,0 +1,6 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", + "menu": { + "submenu": ["Microsoft Teams", "Get Teams Info"] + } +} \ No newline at end of file diff --git a/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingEnd.schema b/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingEnd.schema new file mode 100644 index 0000000000..e339419fb0 --- /dev/null +++ b/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingEnd.schema @@ -0,0 +1,9 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", + "$role": [ "implements(Microsoft.ITrigger)", "extends(Microsoft.OnCondition)" ], + "title": "On meeting end", + "description": "Actions triggered when a Teams Meeting is ended", + "type": "object", + "required": [ + ] +} diff --git a/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingEnd.uischema b/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingEnd.uischema new file mode 100644 index 0000000000..98cfcc870a --- /dev/null +++ b/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingEnd.uischema @@ -0,0 +1,7 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", + "trigger": { + "submenu": "Microsoft Teams", + "label": "On meeting end" + } +} diff --git a/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingStart.schema b/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingStart.schema new file mode 100644 index 0000000000..e30ddfff41 --- /dev/null +++ b/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingStart.schema @@ -0,0 +1,9 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", + "$role": [ "implements(Microsoft.ITrigger)", "extends(Microsoft.OnCondition)" ], + "title": "On meeting start", + "description": "Actions triggered when a Teams Meeting is started", + "type": "object", + "required": [ + ] +} diff --git a/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingStart.uischema b/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingStart.uischema new file mode 100644 index 0000000000..440af4b889 --- /dev/null +++ b/packages/Teams/dotnet/Schemas/TriggerConditions/Teams.OnMeetingStart.uischema @@ -0,0 +1,7 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", + "trigger": { + "submenu": "Microsoft Teams", + "label": "On meeting start" + } +} diff --git a/packages/Teams/dotnet/TeamsBotComponent.cs b/packages/Teams/dotnet/TeamsBotComponent.cs index cf2cd3cc6e..1eb4cef0aa 100644 --- a/packages/Teams/dotnet/TeamsBotComponent.cs +++ b/packages/Teams/dotnet/TeamsBotComponent.cs @@ -42,6 +42,8 @@ public override void ConfigureServices(IServiceCollection services, IConfigurati services.AddSingleton(sp => new DeclarativeType(OnTeamsChannelRenamed.Kind)); services.AddSingleton(sp => new DeclarativeType(OnTeamsChannelRestored.Kind)); services.AddSingleton(sp => new DeclarativeType(OnTeamsFileConsent.Kind)); + services.AddSingleton(sp => new DeclarativeType(OnTeamsMeetingStart.Kind)); + services.AddSingleton(sp => new DeclarativeType(OnTeamsMeetingEnd.Kind)); services.AddSingleton(sp => new DeclarativeType(OnTeamsMECardButtonClicked.Kind)); services.AddSingleton(sp => new DeclarativeType(OnTeamsMEConfigQuerySettingUrl.Kind)); @@ -68,6 +70,7 @@ public override void ConfigureServices(IServiceCollection services, IConfigurati // Actions + services.AddSingleton(sp => new DeclarativeType(GetMeetingInfo.Kind)); services.AddSingleton(sp => new DeclarativeType(GetMeetingParticipant.Kind)); services.AddSingleton(sp => new DeclarativeType(GetMember.Kind)); services.AddSingleton(sp => new DeclarativeType(GetPagedMembers.Kind)); diff --git a/packages/Teams/dotnet/TriggerConditions/OnTeamsMeetingEnd.cs b/packages/Teams/dotnet/TriggerConditions/OnTeamsMeetingEnd.cs new file mode 100644 index 0000000000..c99285ab01 --- /dev/null +++ b/packages/Teams/dotnet/TriggerConditions/OnTeamsMeetingEnd.cs @@ -0,0 +1,37 @@ +// Licensed under the MIT License. +// Copyright (c) Microsoft Corporation. All rights reserved. + +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using AdaptiveExpressions; +using Microsoft.Bot.Builder.Dialogs; +using Microsoft.Bot.Builder.Dialogs.Adaptive.Conditions; +using Microsoft.Bot.Connector; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Components.Teams.Conditions +{ + /// + /// Actions triggered when a Teams Meeting End event is received. + /// + /// + /// turn.activity.value has meeting data. + /// + public class OnTeamsMeetingEnd : OnEventActivity + { + [JsonProperty("$kind")] + public new const string Kind = "Teams.OnMeetingEnd"; + + [JsonConstructor] + public OnTeamsMeetingEnd(List actions = null, string condition = null, [CallerFilePath] string callerPath = "", [CallerLineNumber] int callerLine = 0) + : base(actions: actions, condition: condition, callerPath: callerPath, callerLine: callerLine) + { + } + + /// + protected override Expression CreateExpression() + { + return Expression.AndExpression(Expression.Parse($"{TurnPath.Activity}.channelId == '{Channels.Msteams}' && {TurnPath.Activity}.name == 'application/vnd.microsoft.meetingEnd'"), base.CreateExpression()); + } + } +} diff --git a/packages/Teams/dotnet/TriggerConditions/OnTeamsMeetingStart.cs b/packages/Teams/dotnet/TriggerConditions/OnTeamsMeetingStart.cs new file mode 100644 index 0000000000..921f0a58d4 --- /dev/null +++ b/packages/Teams/dotnet/TriggerConditions/OnTeamsMeetingStart.cs @@ -0,0 +1,37 @@ +// Licensed under the MIT License. +// Copyright (c) Microsoft Corporation. All rights reserved. + +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using AdaptiveExpressions; +using Microsoft.Bot.Builder.Dialogs; +using Microsoft.Bot.Builder.Dialogs.Adaptive.Conditions; +using Microsoft.Bot.Connector; +using Newtonsoft.Json; + +namespace Microsoft.Bot.Components.Teams.Conditions +{ + /// + /// Actions triggered when a Teams Meeting Start event is received. + /// + /// + /// turn.activity.value has meeting data. + /// + public class OnTeamsMeetingStart : OnEventActivity + { + [JsonProperty("$kind")] + public new const string Kind = "Teams.OnMeetingStart"; + + [JsonConstructor] + public OnTeamsMeetingStart(List actions = null, string condition = null, [CallerFilePath] string callerPath = "", [CallerLineNumber] int callerLine = 0) + : base(actions: actions, condition: condition, callerPath: callerPath, callerLine: callerLine) + { + } + + /// + protected override Expression CreateExpression() + { + return Expression.AndExpression(Expression.Parse($"{TurnPath.Activity}.channelId == '{Channels.Msteams}' && {TurnPath.Activity}.name == 'application/vnd.microsoft.meetingStart'"), base.CreateExpression()); + } + } +} diff --git a/packages/Teams/js/package.json b/packages/Teams/js/package.json index 3dafdda466..38e4518849 100644 --- a/packages/Teams/js/package.json +++ b/packages/Teams/js/package.json @@ -2,7 +2,7 @@ "name": "@microsoft/bot-components-teams", "author": "Microsoft Corp.", "description": "Rule system for the Microsoft BotBuilder adaptive dialog system, with integration specific to Microsoft Teams.", - "version": "1.0.0", + "version": "1.1.1", "license": "MIT", "keywords": [ "msbot-component", @@ -29,28 +29,31 @@ "main": "lib/index.js", "types": "lib/index.d.ts", "peerDependencies": { - "adaptive-expressions": "~4.13.4", - "botbuilder": "~4.13.4", - "botbuilder-dialogs": "~4.13.4", - "botbuilder-dialogs-adaptive": "~4.13.4-preview", - "botbuilder-dialogs-adaptive-runtime-core": "~4.13.4-preview", - "botbuilder-dialogs-declarative": "~4.13.4-preview", - "botbuilder-stdlib": "~4.13.4-internal", + "adaptive-expressions": "~4.14.0", + "botbuilder": "~4.14.0", + "botbuilder-dialogs": "~4.14.0", + "botbuilder-dialogs-adaptive": "~4.14.0-preview", + "botbuilder-dialogs-adaptive-runtime-core": "~4.14.0-preview", + "botbuilder-dialogs-declarative": "~4.14.0-preview", + "botbuilder-stdlib": "~4.14.0-internal", + "botframework-connector": "~4.14.0", "lodash": "^4.17.21" }, "devDependencies": { "@tsconfig/recommended": "^1.0.1", "@types/lodash": "^4.14.168", - "@typescript-eslint/eslint-plugin": "latest", - "@typescript-eslint/parser": "latest", - "adaptive-expressions": "4.13.4", - "botbuilder": "4.13.4", - "botbuilder-dialogs": "4.13.4", - "botbuilder-dialogs-adaptive": "4.13.4-preview", - "botbuilder-dialogs-adaptive-runtime-core": "4.13.4-preview", - "botbuilder-dialogs-declarative": "4.13.4-preview", - "botbuilder-stdlib": "4.13.4-internal", - "eslint": "latest", + "@typescript-eslint/eslint-plugin": "^4.28.2", + "@typescript-eslint/parser": "^4.28.2", + "adaptive-expressions": "4.14.0", + "botbuilder": "4.14.0", + "botbuilder-dialogs": "4.14.0", + "botbuilder-dialogs-adaptive": "4.14.0-preview", + "botbuilder-dialogs-adaptive-runtime-core": "4.14.0-preview", + "botbuilder-dialogs-declarative": "4.14.0-preview", + "botbuilder-stdlib": "4.14.0-internal", + "botframework-connector": "4.14.0", + "eslint": "^7.30.0", + "eslint-plugin-prettier": "latest", "lodash": "^4.17.21", "rimraf": "^3.0.2", "typescript": "^4.0.5" diff --git a/packages/Teams/js/schemas/Actions/Teams.GetMeetingInfo.schema b/packages/Teams/js/schemas/Actions/Teams.GetMeetingInfo.schema new file mode 100644 index 0000000000..39d3fedb45 --- /dev/null +++ b/packages/Teams/js/schemas/Actions/Teams.GetMeetingInfo.schema @@ -0,0 +1,38 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", + "$role": "implements(Microsoft.IDialog)", + "title": "Get meeting information", + "description": "Get teams meeting information.", + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "property": { + "$ref": "schema:#/definitions/stringExpression", + "title": "Property", + "description": "Property (named location to store information).", + "examples": [ + "dialog.meetingInfo" + ] + }, + "meetingId": { + "$ref": "schema:#/definitions/stringExpression", + "title": "Meeting id", + "description": "Meeting Id or expression to a meetingId to use to get the meeting information. Default value is the current turn.activity.channelData.meeting.id.", + "examples": [ + "=turn.activity.channelData.meeting.id" + ] + }, + "disabled": { + "$ref": "schema:#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "=user.age > 3" + ] + } + } +} \ No newline at end of file diff --git a/packages/Teams/js/schemas/Actions/Teams.GetMeetingInfo.uischema b/packages/Teams/js/schemas/Actions/Teams.GetMeetingInfo.uischema new file mode 100644 index 0000000000..9f79a1de99 --- /dev/null +++ b/packages/Teams/js/schemas/Actions/Teams.GetMeetingInfo.uischema @@ -0,0 +1,6 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", + "menu": { + "submenu": ["Microsoft Teams", "Get Teams Info"] + } +} \ No newline at end of file diff --git a/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingEnd.schema b/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingEnd.schema new file mode 100644 index 0000000000..e339419fb0 --- /dev/null +++ b/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingEnd.schema @@ -0,0 +1,9 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", + "$role": [ "implements(Microsoft.ITrigger)", "extends(Microsoft.OnCondition)" ], + "title": "On meeting end", + "description": "Actions triggered when a Teams Meeting is ended", + "type": "object", + "required": [ + ] +} diff --git a/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingEnd.uischema b/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingEnd.uischema new file mode 100644 index 0000000000..98cfcc870a --- /dev/null +++ b/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingEnd.uischema @@ -0,0 +1,7 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", + "trigger": { + "submenu": "Microsoft Teams", + "label": "On meeting end" + } +} diff --git a/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingStart.schema b/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingStart.schema new file mode 100644 index 0000000000..e30ddfff41 --- /dev/null +++ b/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingStart.schema @@ -0,0 +1,9 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", + "$role": [ "implements(Microsoft.ITrigger)", "extends(Microsoft.OnCondition)" ], + "title": "On meeting start", + "description": "Actions triggered when a Teams Meeting is started", + "type": "object", + "required": [ + ] +} diff --git a/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingStart.uischema b/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingStart.uischema new file mode 100644 index 0000000000..440af4b889 --- /dev/null +++ b/packages/Teams/js/schemas/TriggerConditions/Teams.OnMeetingStart.uischema @@ -0,0 +1,7 @@ +{ + "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", + "trigger": { + "submenu": "Microsoft Teams", + "label": "On meeting start" + } +} diff --git a/packages/Teams/js/src/actions/actionHelpers.ts b/packages/Teams/js/src/actions/actionHelpers.ts index 60e118e449..32dfc8fe38 100644 --- a/packages/Teams/js/src/actions/actionHelpers.ts +++ b/packages/Teams/js/src/actions/actionHelpers.ts @@ -35,10 +35,10 @@ export function getValue( * BotFrameworkAdapter and TestAdapter contain them, so we just need to make sure that dc.context.adapter contains * an adapter with the appropriate auth methods. */ -export interface HasAuthMethods { - getUserToken: typeof BotFrameworkAdapter.prototype.getUserToken; - getSignInLink: typeof BotFrameworkAdapter.prototype.getSignInLink; -} +export type HasAuthMethods = Pick< + BotFrameworkAdapter, + 'getUserToken' | 'getSignInLink' +>; /** * Test to assert val has required auth methods. @@ -55,3 +55,27 @@ export const testAdapterHasAuthMethods: Test = ( tests.isFunc((val as BotFrameworkAdapter).getSignInLink)) ); }; + +/** + * This is similar to HasAuthMethods, but purely for testing since TestAdapter does not have + * createConnectorClient, but BotFrameworkAdapter does. + */ +export type HasCreateConnectorClientMethod = Pick< + BotFrameworkAdapter, + 'createConnectorClient' +>; + +/** + * Test to assert val has required createConnectorClient method. + * + * @param {any} val Usually context.adapter. + * @returns {Assertion} Asserts that val has required createConnectorClient method. + */ +export const testAdapterHasCreateConnectorClientMethod: Test = ( + val: unknown +): val is HasCreateConnectorClientMethod => { + return ( + val instanceof BotFrameworkAdapter || + tests.isFunc((val as BotFrameworkAdapter).createConnectorClient) + ); +}; diff --git a/packages/Teams/js/src/actions/baseAuthResponseDialog.ts b/packages/Teams/js/src/actions/baseAuthResponseDialog.ts index 9d9a5cfa88..e16eed86f4 100644 --- a/packages/Teams/js/src/actions/baseAuthResponseDialog.ts +++ b/packages/Teams/js/src/actions/baseAuthResponseDialog.ts @@ -2,7 +2,13 @@ // Licensed under the MIT License. import isEmpty from 'lodash/isEmpty'; -import { ActionTypes, Activity, CardAction, TokenResponse } from 'botbuilder'; +import { + ActionTypes, + Activity, + CardAction, + CloudAdapterBase, + TokenResponse, +} from 'botbuilder'; import { BoolExpressionConverter, Expression, @@ -22,6 +28,7 @@ import { BaseTeamsCacheInfoResponseDialog, BaseTeamsCacheInfoResponseDialogConfiguration, } from './baseTeamsCacheInfoResponseDialog'; +import { UserTokenClient } from 'botframework-connector'; export interface BaseAuthResponseDialogConfiguration extends BaseTeamsCacheInfoResponseDialogConfiguration { @@ -98,8 +105,8 @@ export abstract class BaseAuthResponseDialog if (tokenResponse) { // We have the token, so the user is already signed in. // Similar to OAuthInput, just return the token in the property. - if (this.property != null) { - dc.state.setValue(this.property?.getValue(dc.state), tokenResponse); + if (this.property) { + dc.state.setValue(this.property.getValue(dc.state), tokenResponse); } // End the dialog and return the token response. @@ -125,19 +132,32 @@ export abstract class BaseAuthResponseDialog * @param {CardAction} _cardAction CardAction with a valid Sign In Link. * @returns {Partial} Promise representing the InvokeResponse Activity specific to this type of auth dialog. */ - protected createOAuthInvokeResponseActivityFromCardAction( + protected abstract createOAuthInvokeResponseActivityFromCardAction( _dc: DialogContext, _cardAction: CardAction - ): Partial { - throw new Error('NotImplemented'); - } + ): Partial; private async createOAuthInvokeResponseActivityFromTitleAndConnectionName( dc: DialogContext, - title?: string, - connectionName?: string + title: string, + connectionName: string ): Promise> { - // TODO: Switch to using Cloud OAuth after this PR gets merged: https://github.com/microsoft/botbuilder-js/pull/3149 + const userTokenClient = dc.context.turnState.get( + (dc.context.adapter as CloudAdapterBase).UserTokenClientKey + ); + if (userTokenClient) { + const signInResource = await userTokenClient.getSignInResource( + connectionName, + dc.context.activity, + '' + ); + return this.createOAuthInvokeResponseActivityFromTitleAndSignInLink( + dc, + title, + signInResource.signInLink as string + ); + } + if (!testAdapterHasAuthMethods(dc.context.adapter)) { throw new Error('Auth is not supported by the current adapter.'); } else if (!title || !connectionName) { @@ -176,13 +196,27 @@ export abstract class BaseAuthResponseDialog dc: DialogContext, connectionName: string ): Promise { - // TODO: Switch to using Cloud OAuth after this PR gets merged: https://github.com/microsoft/botbuilder-js/pull/3149 + // When the Bot Service Auth flow completes, the action.State will contain a magic code used for verification. + const state = dc.context.activity.value?.state; + + const userTokenClient = dc.context.turnState.get( + (dc.context.adapter as CloudAdapterBase).UserTokenClientKey + ); + if (userTokenClient) { + return userTokenClient.getUserToken( + dc.context.activity.from?.id, + connectionName, + dc.context.activity.channelId, + state + ); + } + if (!testAdapterHasAuthMethods(dc.context.adapter)) { throw new Error('Auth is not supported by the current adapter.'); } // When the Bot Service Auth flow completes, the action.State will contain a magic code used for verification. - const magicCode = !isEmpty(dc.context.activity?.value) + const magicCode = !isEmpty(dc.context.activity.value) ? dc.context.activity.value.state : undefined; diff --git a/packages/Teams/js/src/actions/getMeetingInfo.ts b/packages/Teams/js/src/actions/getMeetingInfo.ts new file mode 100644 index 0000000000..dcdd7b77e3 --- /dev/null +++ b/packages/Teams/js/src/actions/getMeetingInfo.ts @@ -0,0 +1,119 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { + BoolExpression, + BoolExpressionConverter, + Expression, + StringExpression, + StringExpressionConverter, +} from 'adaptive-expressions'; +import { Channels, TeamsInfo } from 'botbuilder'; +import { + Converter, + ConverterFactory, + Dialog, + DialogConfiguration, + DialogContext, + DialogTurnResult, +} from 'botbuilder-dialogs'; +import { getValue } from './actionHelpers'; + +export interface GetMeetingInfoConfiguration extends DialogConfiguration { + disabled?: boolean | string | BoolExpression; + property?: string | Expression | StringExpression; + meetingId?: string | Expression | StringExpression; +} + +/** + * Calls `TeamsInfo.getMeetingInfo` and sets the result to a memory property. + */ +export class GetMeetingInfo + extends Dialog + implements GetMeetingInfoConfiguration { + /** + * Class identifier. + */ + static $kind = 'Teams.GetMeetingInfo'; + + /** + * Gets or sets an optional expression which if is true will disable this action. + * + * @example + * "user.age > 18". + */ + public disabled?: BoolExpression; + + /** + * Gets or sets property path to put the value in. + */ + public property?: StringExpression; + + /** + * Gets or sets the expression to get the value to use for meeting id. + * + * @default + * =turn.activity.channelData.meeting.id + */ + public meetingId = new StringExpression( + '=turn.activity.channelData.meeting.id' + ); + + public getConverter( + property: keyof GetMeetingInfoConfiguration + ): Converter | ConverterFactory { + switch (property) { + case 'disabled': + return new BoolExpressionConverter(); + case 'property': + case 'meetingId': + return new StringExpressionConverter(); + default: + return super.getConverter(property); + } + } + + /** + * Called when the dialog is started and pushed onto the dialog stack. + * + * @param {DialogContext} dc The [DialogContext](xref:botbuilder-dialogs.DialogContext) for the current turn of conversation. + * @param {object} _options Optional, initial information to pass to the dialog. + * @returns {Promise} A promise representing the asynchronous operation. + */ + public async beginDialog( + dc: DialogContext, + _options?: Record + ): Promise { + if (this.disabled?.getValue(dc.state)) { + return dc.endDialog(); + } + + if (dc.context.activity.channelId !== Channels.Msteams) { + throw new Error( + `${GetMeetingInfo.$kind} works only on the Teams channel.` + ); + } + + const meetingId = getValue(dc, this.meetingId); + + const result = await TeamsInfo.getMeetingInfo(dc.context, meetingId); + + if (this.property != null) { + dc.state.setValue(this.property.getValue(dc.state), result); + } + + return dc.endDialog(result); + } + + /** + * Builds the compute Id for the dialog. + * + * @returns {string} A string representing the compute Id. + */ + protected onComputeId(): string { + return `GetMeetingInfo[\ + ${this.meetingId ?? ''},\ + ${this.property?.toString() ?? ''}\ + ]`; + } +} diff --git a/packages/Teams/js/src/actions/index.ts b/packages/Teams/js/src/actions/index.ts index 30897cccdb..c131adaa4a 100644 --- a/packages/Teams/js/src/actions/index.ts +++ b/packages/Teams/js/src/actions/index.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +export * from './getMeetingInfo'; export * from './getMeetingParticipant'; export * from './getMember'; export * from './getPagedMembers'; diff --git a/packages/Teams/js/src/actions/sendMessageToTeamsChannel.ts b/packages/Teams/js/src/actions/sendMessageToTeamsChannel.ts index 6f0546054b..54d6a17cbc 100644 --- a/packages/Teams/js/src/actions/sendMessageToTeamsChannel.ts +++ b/packages/Teams/js/src/actions/sendMessageToTeamsChannel.ts @@ -8,7 +8,13 @@ import { StringExpression, StringExpressionConverter, } from 'adaptive-expressions'; -import { Activity, Channels, TeamsInfo } from 'botbuilder'; +import { + Activity, + Channels, + CloudAdapterBase, + ConversationReference, + TeamsInfo, +} from 'botbuilder'; import { Converter, ConverterFactory, @@ -19,8 +25,17 @@ import { DialogTurnResult, TemplateInterface, } from 'botbuilder-dialogs'; +import { + AuthenticationConstants, + ClaimsIdentity, + ConnectorClient, + JwtTokenValidation, +} from 'botframework-connector'; import { ActivityTemplateConverter } from 'botbuilder-dialogs-adaptive/lib/converters'; -import { getValue } from './actionHelpers'; +import { + getValue, + testAdapterHasCreateConnectorClientMethod, +} from './actionHelpers'; export interface SendMessageToTeamsChannelConfiguration extends DialogConfiguration { @@ -124,11 +139,58 @@ export class SendMessageToTeamsChannel getValue(dc, this.teamsChannelId) ?? dc.context?.activity.channelData?.channel?.id; - const result = await TeamsInfo.sendMessageToTeamsChannel( - dc.context, - activity, - teamsChannelId - ); + let result: [ConversationReference, string]; + + // Check for legacy adapter + if (testAdapterHasCreateConnectorClientMethod(dc.context.adapter)) { + const credentials = dc.context.turnState.get( + dc.context.adapter.ConnectorClientKey + )?.credentials; + if (!credentials) { + throw new Error( + 'Missing credentials as MicrosoftAppCredentials in ConnectorClient from TurnState' + ); + } + + result = await TeamsInfo.sendMessageToTeamsChannel( + dc.context, + activity, + teamsChannelId + ); + } else if (dc.context.adapter instanceof CloudAdapterBase) { + const botIdentity = dc.context.turnState.get( + dc.context.adapter.BotIdentityKey + ); + + let appId: string | undefined; + if (botIdentity) { + // 'version' is sometimes empty, which will result in no id returned from GetAppIdFromClaims. + appId = JwtTokenValidation.getAppIdFromClaims(botIdentity.claims); + + if (!appId) { + appId = botIdentity.claims.find( + (claim) => claim.type === AuthenticationConstants.AudienceClaim + )?.value; + } + + if (!appId) { + throw new Error('Missing AppIdClaim in ClaimsIdentity'); + } + } else { + throw new Error( + 'Missing dc.context.adapter.BotIdentityKey in TurnContext TurnState' + ); + } + + result = await TeamsInfo.sendMessageToTeamsChannel( + dc.context, + activity, + teamsChannelId, + appId + ); + } else { + throw new Error('The adapter does not support SendMessageToTeamsChannel'); + } if (this.conversationReferenceProperty != null) { dc.state.setValue( diff --git a/packages/Teams/js/src/actions/sendTabCardResponse.ts b/packages/Teams/js/src/actions/sendTabCardResponse.ts index a4f83ba764..641b59365e 100644 --- a/packages/Teams/js/src/actions/sendTabCardResponse.ts +++ b/packages/Teams/js/src/actions/sendTabCardResponse.ts @@ -2,6 +2,7 @@ // Licensed under the MIT License. import { + BoolExpression, BoolExpressionConverter, StringExpressionConverter, } from 'adaptive-expressions'; @@ -16,47 +17,45 @@ import { import { Converter, ConverterFactory, + Dialog, DialogContext, DialogStateManager, DialogTurnResult, TemplateInterface, } from 'botbuilder-dialogs'; import { ActivityTemplateConverter } from 'botbuilder-dialogs-adaptive/lib/converters'; -import { - BaseAuthResponseDialog, - BaseAuthResponseDialogConfiguration, -} from './baseAuthResponseDialog'; -export interface SendTabCardResponseConfiguration - extends BaseAuthResponseDialogConfiguration { +export interface SendTabCardResponseConfiguration extends Dialog { cards?: TemplateInterface; + disabled?: boolean | string | BoolExpression; } /** * Send a Card Tab response to the user. */ -export class SendTabCardResponse - extends BaseAuthResponseDialog - implements BaseAuthResponseDialogConfiguration { +export class SendTabCardResponse extends Dialog { /** * Class identifier. */ public static $kind = 'Teams.SendTabCardResponse'; + /** + * Gets or sets an optional expression which if is true will disable this action. + */ + public disabled?: BoolExpression; + /** * Template for the activity expression containing Adaptive Cards to send. */ public cards?: TemplateInterface; public getConverter( - property: keyof BaseAuthResponseDialogConfiguration | string + property: keyof Dialog | string ): Converter | ConverterFactory { switch (property) { case 'disabled': return new BoolExpressionConverter(); case 'property': - case 'connectionName': - case 'title': return new StringExpressionConverter(); case 'cards': return new ActivityTemplateConverter(); @@ -114,7 +113,7 @@ export class SendTabCardResponse */ protected onComputeId(): string { return `SendTabCardResponse[\ - ${this.title?.toString() ?? ''}\ + ${this.cards?.toString() ?? ''}\ ]`; } diff --git a/packages/Teams/js/src/adaptiveTeamsBotComponent.ts b/packages/Teams/js/src/adaptiveTeamsBotComponent.ts index 5a8ae0ad92..85f800e0ab 100644 --- a/packages/Teams/js/src/adaptiveTeamsBotComponent.ts +++ b/packages/Teams/js/src/adaptiveTeamsBotComponent.ts @@ -9,6 +9,7 @@ import { } from 'botbuilder-dialogs-adaptive-runtime-core'; import { + GetMeetingInfo, GetMeetingParticipant, GetMember, GetPagedMembers, @@ -40,12 +41,13 @@ import { OnTeamsChannelRenamed, OnTeamsChannelRestored, OnTeamsFileConsent, + OnTeamsMeetingStart, + OnTeamsMeetingEnd, OnTeamsMEBotMessagePreviewEdit, OnTeamsMEBotMessagePreviewSend, OnTeamsMECardButtonClicked, OnTeamsMEConfigQuerySettingUrl, OnTeamsMEConfigSetting, - OnTeamsMEConfigurationSetting, OnTeamsMEFetchTask, OnTeamsMEQuery, OnTeamsMESelectItem, @@ -75,6 +77,10 @@ export class AdaptiveTeamsBotComponent extends BotComponent { getDeclarativeTypes() { return [ // Actions + { + kind: GetMeetingInfo.$kind, + type: GetMeetingInfo, + }, { kind: GetMeetingParticipant.$kind, type: GetMeetingParticipant, @@ -153,6 +159,8 @@ export class AdaptiveTeamsBotComponent extends BotComponent { type: OnTeamsChannelRestored, }, { kind: OnTeamsFileConsent.$kind, type: OnTeamsFileConsent }, + { kind: OnTeamsMeetingStart.$kind, type: OnTeamsMeetingStart }, + { kind: OnTeamsMeetingEnd.$kind, type: OnTeamsMeetingEnd }, { kind: OnTeamsMEBotMessagePreviewEdit.$kind, type: OnTeamsMEBotMessagePreviewEdit, @@ -176,10 +184,6 @@ export class AdaptiveTeamsBotComponent extends BotComponent { { kind: OnTeamsMEFetchTask.$kind, type: OnTeamsMEFetchTask }, { kind: OnTeamsMEQuery.$kind, type: OnTeamsMEQuery }, { kind: OnTeamsMESelectItem.$kind, type: OnTeamsMESelectItem }, - { - kind: OnTeamsMEConfigurationSetting.$kind, - type: OnTeamsMEConfigurationSetting, - }, { kind: OnTeamsMESubmitAction.$kind, type: OnTeamsMESubmitAction, diff --git a/packages/Teams/js/src/conditions/index.ts b/packages/Teams/js/src/conditions/index.ts index 47dc788d5a..a2f7036f93 100644 --- a/packages/Teams/js/src/conditions/index.ts +++ b/packages/Teams/js/src/conditions/index.ts @@ -9,12 +9,13 @@ export * from './onTeamsChannelDeleted'; export * from './onTeamsChannelRenamed'; export * from './onTeamsChannelRestored'; export * from './onTeamsFileConsent'; +export * from './onTeamsMeetingStart'; +export * from './onTeamsMeetingEnd'; export * from './onTeamsMEBotMessagePreviewEdit'; export * from './onTeamsMEBotMessagePreviewSend'; export * from './onTeamsMECardButtonClicked'; export * from './onTeamsMEConfigQuerySettingUrl'; export * from './onTeamsMEConfigSetting'; -export * from './onTeamsMEConfigurationSetting'; export * from './onTeamsMEFetchTask'; export * from './onTeamsMEQuery'; export * from './onTeamsMESelectItem'; diff --git a/packages/Teams/js/src/conditions/onTeamsMEBotMessagePreviewSend.ts b/packages/Teams/js/src/conditions/onTeamsMEBotMessagePreviewSend.ts index bc21decd69..1675f3aadd 100644 --- a/packages/Teams/js/src/conditions/onTeamsMEBotMessagePreviewSend.ts +++ b/packages/Teams/js/src/conditions/onTeamsMEBotMessagePreviewSend.ts @@ -11,7 +11,7 @@ import { OnInvokeActivity } from 'botbuilder-dialogs-adaptive'; * and activity.value.botMessagePreviewAction == 'send'. */ export class OnTeamsMEBotMessagePreviewSend extends OnInvokeActivity { - static $kind = 'Teams.OnMEBotMessagePreviewEdit'; + static $kind = 'Teams.OnMEBotMessagePreviewSend'; public commandId?: string; diff --git a/packages/Teams/js/src/conditions/onTeamsMEConfigurationSetting.ts b/packages/Teams/js/src/conditions/onTeamsMeetingEnd.ts similarity index 63% rename from packages/Teams/js/src/conditions/onTeamsMEConfigurationSetting.ts rename to packages/Teams/js/src/conditions/onTeamsMeetingEnd.ts index 5987339a07..55e49c6c51 100644 --- a/packages/Teams/js/src/conditions/onTeamsMEConfigurationSetting.ts +++ b/packages/Teams/js/src/conditions/onTeamsMeetingEnd.ts @@ -4,13 +4,14 @@ import { Expression } from 'adaptive-expressions'; import { Channels } from 'botbuilder'; import { TurnPath } from 'botbuilder-dialogs'; -import { OnInvokeActivity } from 'botbuilder-dialogs-adaptive'; +import { OnEventActivity } from 'botbuilder-dialogs-adaptive'; /** - * Actions triggered when a Teams InvokeActivity is received with activity.name='composeExtension/setting'. + * Actions triggered when a Teams Meeting End event is received. + * Note: turn.activity.value has meeting data. */ -export class OnTeamsMEConfigurationSetting extends OnInvokeActivity { - static $kind = 'Teams.OnMEConfigurationSetting'; +export class OnTeamsMeetingEnd extends OnEventActivity { + static $kind = 'Teams.OnMeetingEnd'; /** * Create expression for this condition. @@ -20,7 +21,7 @@ export class OnTeamsMEConfigurationSetting extends OnInvokeActivity { protected createExpression(): Expression { return Expression.andExpression( Expression.parse( - `${TurnPath.activity}.channelId == '${Channels.Msteams}' && ${TurnPath.activity}.name == 'composeExtension/setting'` + `${TurnPath.activity}.channelId == '${Channels.Msteams}' && ${TurnPath.activity}.name == 'application/vnd.microsoft.meetingEnd'` ), super.createExpression() ); diff --git a/packages/Teams/js/src/conditions/onTeamsMeetingStart.ts b/packages/Teams/js/src/conditions/onTeamsMeetingStart.ts new file mode 100644 index 0000000000..c940d2d705 --- /dev/null +++ b/packages/Teams/js/src/conditions/onTeamsMeetingStart.ts @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { Expression } from 'adaptive-expressions'; +import { Channels } from 'botbuilder'; +import { TurnPath } from 'botbuilder-dialogs'; +import { OnEventActivity } from 'botbuilder-dialogs-adaptive'; + +/** + * Actions triggered when a Teams Meeting Start event is received. + * Note: turn.activity.value has meeting data. + */ +export class OnTeamsMeetingStart extends OnEventActivity { + static $kind = 'Teams.OnMeetingStart'; + + /** + * Create expression for this condition. + * + * @returns {Expression} An [Expression](xref:adaptive-expressions.Expression) used to evaluate this rule. + */ + protected createExpression(): Expression { + return Expression.andExpression( + Expression.parse( + `${TurnPath.activity}.channelId == '${Channels.Msteams}' && ${TurnPath.activity}.name == 'application/vnd.microsoft.meetingStart'` + ), + super.createExpression() + ); + } +} diff --git a/packages/Teams/js/src/index.ts b/packages/Teams/js/src/index.ts index dc1d9d0c69..8018bf5010 100644 --- a/packages/Teams/js/src/index.ts +++ b/packages/Teams/js/src/index.ts @@ -1,10 +1,12 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import { AdaptiveTeamsBotComponent } from './adaptiveTeamsBotComponent'; /** * @module @microsoft/bot-components-teams */ export * from './actions'; -export * from './adaptiveTeamsBotComponent'; +export { AdaptiveTeamsBotComponent }; export * from './conditions'; +export default AdaptiveTeamsBotComponent; diff --git a/packages/Welcome/Microsoft.Bot.Components.Welcome.nuspec b/packages/Welcome/Microsoft.Bot.Components.Welcome.nuspec index 43d5a1026d..e721b8650f 100644 --- a/packages/Welcome/Microsoft.Bot.Components.Welcome.nuspec +++ b/packages/Welcome/Microsoft.Bot.Components.Welcome.nuspec @@ -2,18 +2,18 @@ Microsoft.Bot.Components.Welcome - 1.0.0 + 1.1.1 Microsoft Microsoft © Microsoft Corporation. All rights reserved. - https://github.com/Microsoft/BotBuilder/blob/master/LICENSE + MIT true https://github.com/Microsoft/botframework-components/tree/main/packages/Welcome First version of welcome package An Adaptive Dialog for greeting new and returning users on first interaction with your bot built on the Azure Bot Framework. msbot-component msbot-content conversationalcore welcome preview - + diff --git a/packages/Welcome/package.json b/packages/Welcome/package.json index 1997adafb9..f7556f2c57 100644 --- a/packages/Welcome/package.json +++ b/packages/Welcome/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/bot-components-welcome", - "version": "1.0.0", + "version": "1.1.1", "description": "An Adaptive Dialog for greeting new and returning users on first interaction with your bot built on the Azure Bot Framework.", "keywords": [ "microsoft", @@ -21,6 +21,6 @@ "url": "https://github.com/Microsoft/botframework-components.git" }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"No test specified for package \\\"@microsoft/bot-components-welcome\\\", skipping.\"" } } diff --git a/skills/csharp/Directory.Build.props b/skills/csharp/Directory.Build.props index 61dd1dc0cf..1c0432473e 100644 --- a/skills/csharp/Directory.Build.props +++ b/skills/csharp/Directory.Build.props @@ -24,7 +24,7 @@ https://github.com/microsoft/botframework-skills - https://github.com/microsoft/botframework-skills/blob/master/LICENSE + MIT en-US $(NoWarn);NU5125;NU1701;8002 diff --git a/skills/csharp/calendarskill/CalendarSkill.csproj b/skills/csharp/calendarskill/CalendarSkill.csproj index 58f7186653..04cef3197f 100644 --- a/skills/csharp/calendarskill/CalendarSkill.csproj +++ b/skills/csharp/calendarskill/CalendarSkill.csproj @@ -14,7 +14,7 @@ - + diff --git a/skills/declarative/Calendar/Calendar/Calendar.csproj b/skills/declarative/Calendar/Calendar/Calendar.csproj index 7fe5d77eb9..390eefd437 100644 --- a/skills/declarative/Calendar/Calendar/Calendar.csproj +++ b/skills/declarative/Calendar/Calendar/Calendar.csproj @@ -12,7 +12,7 @@ - + diff --git a/skills/declarative/People/People/People.csproj b/skills/declarative/People/People/People.csproj index 9b4d6229b0..c6f7201baf 100644 --- a/skills/declarative/People/People/People.csproj +++ b/skills/declarative/People/People/People.csproj @@ -12,9 +12,9 @@ - - - - + + + + \ No newline at end of file diff --git a/tests/functional/Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot/package.json b/tests/functional/Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot/package.json index bddc987858..2f072f539a 100644 --- a/tests/functional/Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot/package.json +++ b/tests/functional/Bots/JavaScript/Consumers/CodeFirst/SimpleHostBot/package.json @@ -15,8 +15,8 @@ "url": "https://github.com" }, "dependencies": { - "botbuilder": "~4.13.3", - "botbuilder-dialogs": "~4.13.3", + "botbuilder": "4.14.0", + "botbuilder-dialogs": "~4.14.0", "dotenv": "~8.2.0", "restify": "~8.5.1" }, diff --git a/tests/functional/Bots/JavaScript/Consumers/CodeFirst/WaterfallHostBot/package.json b/tests/functional/Bots/JavaScript/Consumers/CodeFirst/WaterfallHostBot/package.json index 197d3fb53a..333bab7282 100644 --- a/tests/functional/Bots/JavaScript/Consumers/CodeFirst/WaterfallHostBot/package.json +++ b/tests/functional/Bots/JavaScript/Consumers/CodeFirst/WaterfallHostBot/package.json @@ -15,8 +15,8 @@ "url": "https://github.com" }, "dependencies": { - "botbuilder": "~4.13.3", - "botbuilder-dialogs": "~4.13.3", + "botbuilder": "~4.14.0", + "botbuilder-dialogs": "~4.14.0", "dotenv": "~8.2.0", "restify": "~8.5.1" }, diff --git a/tests/functional/Bots/JavaScript/Skills/CodeFirst/EchoSkillBot/package.json b/tests/functional/Bots/JavaScript/Skills/CodeFirst/EchoSkillBot/package.json index ff06ea8e8e..862c06e364 100644 --- a/tests/functional/Bots/JavaScript/Skills/CodeFirst/EchoSkillBot/package.json +++ b/tests/functional/Bots/JavaScript/Skills/CodeFirst/EchoSkillBot/package.json @@ -15,7 +15,7 @@ "url": "https://github.com" }, "dependencies": { - "botbuilder": "~4.13.3", + "botbuilder": "~4.14.0", "dotenv": "^8.2.0", "restify": "~8.5.1" }, diff --git a/tests/functional/Bots/JavaScript/Skills/CodeFirst/WaterfallSkillBot/package.json b/tests/functional/Bots/JavaScript/Skills/CodeFirst/WaterfallSkillBot/package.json index f7990840f7..2ebcff1533 100644 --- a/tests/functional/Bots/JavaScript/Skills/CodeFirst/WaterfallSkillBot/package.json +++ b/tests/functional/Bots/JavaScript/Skills/CodeFirst/WaterfallSkillBot/package.json @@ -15,8 +15,8 @@ "url": "https://github.com" }, "dependencies": { - "botbuilder": "~4.13.3", - "botbuilder-dialogs": "~4.13.3", + "botbuilder": "~4.14.0", + "botbuilder-dialogs": "~4.14.0", "dotenv": "^8.2.0", "node-fetch": "^2.6.1", "restify": "~8.5.1" diff --git a/tests/functional/Directory.Build.props b/tests/functional/Directory.Build.props index 3e44d6df83..d869fda3bd 100644 --- a/tests/functional/Directory.Build.props +++ b/tests/functional/Directory.Build.props @@ -25,7 +25,7 @@ https://github.com/microsoft/BotFramework-FunctionalTests - https://github.com/microsoft/BotFramework-FunctionalTests/blob/main/LICENSE + MIT en-US true diff --git a/tests/functional/Libraries/TranscriptConverter/TranscriptConverter.csproj b/tests/functional/Libraries/TranscriptConverter/TranscriptConverter.csproj index 544dd18be4..9bfe2aa204 100644 --- a/tests/functional/Libraries/TranscriptConverter/TranscriptConverter.csproj +++ b/tests/functional/Libraries/TranscriptConverter/TranscriptConverter.csproj @@ -8,7 +8,7 @@ - + diff --git a/tests/functional/Libraries/TranscriptTestRunner/TranscriptTestRunner.csproj b/tests/functional/Libraries/TranscriptTestRunner/TranscriptTestRunner.csproj index 357cf4ee10..a2714722fb 100644 --- a/tests/functional/Libraries/TranscriptTestRunner/TranscriptTestRunner.csproj +++ b/tests/functional/Libraries/TranscriptTestRunner/TranscriptTestRunner.csproj @@ -11,8 +11,8 @@ - - + + diff --git a/tests/unit/Microsoft.Bot.Components.Tests.sln b/tests/unit/Microsoft.Bot.Components.Tests.sln index 74801b67a6..733f8655f9 100644 --- a/tests/unit/Microsoft.Bot.Components.Tests.sln +++ b/tests/unit/Microsoft.Bot.Components.Tests.sln @@ -17,10 +17,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "packages", "packages", "{73 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "teams", "teams", "{61708441-52A4-48F6-819A-B8D4C279C4C8}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Bot.Components.Teams.Tests", "packages\Microsoft.Bot.Components.Teams.Tests\Microsoft.Bot.Components.Teams.Tests.csproj", "{F6E872DE-52B7-4372-B546-B18B5A495C73}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Bot.Components.Graph", "..\..\packages\Graph\Microsoft.Bot.Components.Graph.csproj", "{9561BF32-D0EE-464F-981B-7E4298ACDDFB}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Bot.Components.Teams.Tests", "packages\Teams\dotnet\Microsoft.Bot.Components.Teams.Tests.csproj", "{4005C95D-BECC-450B-927D-54C8CCF178BB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -43,14 +43,14 @@ Global {F0E73465-DB1D-4F8A-B527-88F1E2515A5C}.Debug|Any CPU.Build.0 = Debug|Any CPU {F0E73465-DB1D-4F8A-B527-88F1E2515A5C}.Release|Any CPU.ActiveCfg = Release|Any CPU {F0E73465-DB1D-4F8A-B527-88F1E2515A5C}.Release|Any CPU.Build.0 = Release|Any CPU - {F6E872DE-52B7-4372-B546-B18B5A495C73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F6E872DE-52B7-4372-B546-B18B5A495C73}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F6E872DE-52B7-4372-B546-B18B5A495C73}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F6E872DE-52B7-4372-B546-B18B5A495C73}.Release|Any CPU.Build.0 = Release|Any CPU {9561BF32-D0EE-464F-981B-7E4298ACDDFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9561BF32-D0EE-464F-981B-7E4298ACDDFB}.Debug|Any CPU.Build.0 = Debug|Any CPU {9561BF32-D0EE-464F-981B-7E4298ACDDFB}.Release|Any CPU.ActiveCfg = Release|Any CPU {9561BF32-D0EE-464F-981B-7E4298ACDDFB}.Release|Any CPU.Build.0 = Release|Any CPU + {4005C95D-BECC-450B-927D-54C8CCF178BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4005C95D-BECC-450B-927D-54C8CCF178BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4005C95D-BECC-450B-927D-54C8CCF178BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4005C95D-BECC-450B-927D-54C8CCF178BB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -60,7 +60,7 @@ Global {6876407A-F34E-479F-9F3C-6E6ED81EB600} = {31CBAEDA-E319-49AE-A662-AA0739205C82} {F0E73465-DB1D-4F8A-B527-88F1E2515A5C} = {31CBAEDA-E319-49AE-A662-AA0739205C82} {61708441-52A4-48F6-819A-B8D4C279C4C8} = {73825711-6685-48E2-BFA2-3FCDECE1A0FD} - {F6E872DE-52B7-4372-B546-B18B5A495C73} = {61708441-52A4-48F6-819A-B8D4C279C4C8} + {4005C95D-BECC-450B-927D-54C8CCF178BB} = {61708441-52A4-48F6-819A-B8D4C279C4C8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {2D0FB02B-704A-44E0-AECA-A4FDF6F805C5} diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMeetingParticipant.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMeetingParticipant.test.dialog similarity index 89% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMeetingParticipant.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMeetingParticipant.test.dialog index a770c1cc0c..85fe1ad023 100644 --- a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMeetingParticipant.test.dialog +++ b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMeetingParticipant.test.dialog @@ -20,6 +20,15 @@ "tenantId": "customTenantId" } ] + }, + { + "$kind": "Microsoft.OnError", + "actions": [ + { + "$kind": "Microsoft.SendActivity", + "activity": "${turn.dialogEvent.value.message}" + } + ] } ] }, @@ -27,7 +36,7 @@ { "$kind": "Microsoft.Test.UserActivity", "activity": { - "type": "message", + "type": "message", "text": "hi", "from": { "id": "participant-id", diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMeetingParticipantError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMeetingParticipantError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMeetingParticipantError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMeetingParticipantError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMeetingParticipantErrorWithAdapter.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMeetingParticipantErrorWithAdapter.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMeetingParticipantErrorWithAdapter.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMeetingParticipantErrorWithAdapter.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMember.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMember.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMember.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMember.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMemberError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMemberError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMemberError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMemberError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMemberErrorWithAdapter.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMemberErrorWithAdapter.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetMemberErrorWithAdapter.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetMemberErrorWithAdapter.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetPagedMembers.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetPagedMembers.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetPagedMembers.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetPagedMembers.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetPagedMembersError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetPagedMembersError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetPagedMembersError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetPagedMembersError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetPagedTeamMembers.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetPagedTeamMembers.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetPagedTeamMembers.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetPagedTeamMembers.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetPagedTeamMembersError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetPagedTeamMembersError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetPagedTeamMembersError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetPagedTeamMembersError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamChannels.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamChannels.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamChannels.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamChannels.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamChannelsError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamChannelsError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamChannelsError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamChannelsError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamDetails.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamDetails.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamDetails.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamDetails.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamDetailsError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamDetailsError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamDetailsError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamDetailsError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamMember.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamMember.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamMember.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamMember.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamMemberError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamMemberError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamMemberError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamMemberError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamMemberErrorWithAdapter.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamMemberErrorWithAdapter.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_GetTeamMemberErrorWithAdapter.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_GetTeamMemberErrorWithAdapter.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendAppBasedLinkQueryResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendAppBasedLinkQueryResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendAppBasedLinkQueryResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendAppBasedLinkQueryResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendAppBasedLinkQueryResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendAppBasedLinkQueryResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendAppBasedLinkQueryResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendAppBasedLinkQueryResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEActionResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEActionResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEActionResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEActionResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEActionResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEActionResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEActionResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEActionResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEAttachmentsResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEAttachmentsResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEAttachmentsResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEAttachmentsResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEAttachmentsResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEAttachmentsResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEAttachmentsResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEAttachmentsResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEAuthResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEAuthResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEAuthResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEAuthResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEAuthResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEAuthResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEAuthResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEAuthResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEAuthResponseErrorWithAdapter.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEAuthResponseErrorWithAdapter.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEAuthResponseErrorWithAdapter.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEAuthResponseErrorWithAdapter.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEBotMessagePreviewResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEBotMessagePreviewResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEBotMessagePreviewResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEBotMessagePreviewResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEBotMessagePreviewResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEBotMessagePreviewResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEBotMessagePreviewResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEBotMessagePreviewResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEConfigQuerySettingUrlResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEConfigQuerySettingUrlResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEConfigQuerySettingUrlResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEConfigQuerySettingUrlResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEConfigQuerySettingUrlResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEConfigQuerySettingUrlResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEConfigQuerySettingUrlResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEConfigQuerySettingUrlResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEMessageResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEMessageResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEMessageResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEMessageResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEMessageResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEMessageResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMEMessageResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMEMessageResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMESelectItemResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMESelectItemResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMESelectItemResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMESelectItemResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMESelectItemResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMESelectItemResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMESelectItemResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMESelectItemResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMessageToTeamsChannel.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMessageToTeamsChannel.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMessageToTeamsChannel.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMessageToTeamsChannel.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMessageToTeamsChannelError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMessageToTeamsChannelError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendMessageToTeamsChannelError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendMessageToTeamsChannelError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTabAuthResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTabAuthResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTabAuthResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTabAuthResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTabAuthResponseErrorWithAdapter.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTabAuthResponseErrorWithAdapter.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTabAuthResponseErrorWithAdapter.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTabAuthResponseErrorWithAdapter.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTabCardResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTabCardResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTabCardResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTabCardResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTabCardResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTabCardResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTabCardResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTabCardResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTaskModuleCardResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTaskModuleCardResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTaskModuleCardResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTaskModuleCardResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTaskModuleCardResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTaskModuleCardResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTaskModuleCardResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTaskModuleCardResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTaskModuleMessageResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTaskModuleMessageResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTaskModuleMessageResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTaskModuleMessageResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTaskModuleUrlResponse.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTaskModuleUrlResponse.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTaskModuleUrlResponse.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTaskModuleUrlResponse.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTaskModuleUrlResponseError.test.dialog b/tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTaskModuleUrlResponseError.test.dialog similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ActionTests/Action_SendTaskModuleUrlResponseError.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ActionTests/Action_SendTaskModuleUrlResponseError.test.dialog diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ConditionalTests/ConditionalsTests_OnTeamsActivityTypes.test.dialog b/tests/unit/packages/Teams/Shared Tests/ConditionalTests/ConditionalsTests_OnTeamsActivityTypes.test.dialog similarity index 91% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ConditionalTests/ConditionalsTests_OnTeamsActivityTypes.test.dialog rename to tests/unit/packages/Teams/Shared Tests/ConditionalTests/ConditionalsTests_OnTeamsActivityTypes.test.dialog index ef348c61ac..a4b7225a61 100644 --- a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Tests/ConditionalTests/ConditionalsTests_OnTeamsActivityTypes.test.dialog +++ b/tests/unit/packages/Teams/Shared Tests/ConditionalTests/ConditionalsTests_OnTeamsActivityTypes.test.dialog @@ -93,6 +93,26 @@ } ] }, + { + "$kind": "Teams.OnMEBotMessagePreviewEdit", + "condition": "turn.activity.text == 'OnMEBotMessagePreviewEdit'", + "actions": [ + { + "$kind": "Microsoft.SendActivity", + "activity": "OnMEBotMessagePreviewEdit" + } + ] + }, + { + "$kind": "Teams.OnMEBotMessagePreviewSend", + "condition": "turn.activity.text == 'OnMEBotMessagePreviewSend'", + "actions": [ + { + "$kind": "Microsoft.SendActivity", + "activity": "OnMEBotMessagePreviewSend" + } + ] + }, { "$kind": "Teams.OnMECardButtonClicked", "condition": "turn.activity.text == 'OnCardButtonClicked'", @@ -372,6 +392,36 @@ "$kind": "Microsoft.Test.AssertReply", "text": "OnFileConsent" }, + { + "$kind": "Microsoft.Test.UserActivity", + "activity": { + "type": "invoke", + "text": "OnMEBotMessagePreviewEdit", + "value": { + "botMessagePreviewAction": "edit" + }, + "name": "composeExtension/submitAction" + } + }, + { + "$kind": "Microsoft.Test.AssertReply", + "text": "OnMEBotMessagePreviewEdit" + }, + { + "$kind": "Microsoft.Test.UserActivity", + "activity": { + "type": "invoke", + "text": "OnMEBotMessagePreviewSend", + "value": { + "botMessagePreviewAction": "send" + }, + "name": "composeExtension/submitAction" + } + }, + { + "$kind": "Microsoft.Test.AssertReply", + "text": "OnMEBotMessagePreviewSend" + }, { "$kind": "Microsoft.Test.UserActivity", "activity": { diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/ActionTests.cs b/tests/unit/packages/Teams/dotnet/ActionTests.cs similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/ActionTests.cs rename to tests/unit/packages/Teams/dotnet/ActionTests.cs diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/ConditionalTests.cs b/tests/unit/packages/Teams/dotnet/ConditionalTests.cs similarity index 95% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/ConditionalTests.cs rename to tests/unit/packages/Teams/dotnet/ConditionalTests.cs index 8c744a42d9..d9a73bdc63 100644 --- a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/ConditionalTests.cs +++ b/tests/unit/packages/Teams/dotnet/ConditionalTests.cs @@ -26,7 +26,7 @@ public ConditionalTests() ComponentRegistration.Add(new DeclarativeComponentRegistrationBridge()); ResourceExplorer = new ResourceExplorer() - .AddFolder(Path.Combine(TestUtils.GetProjectPath(), "Tests", nameof(ConditionalTests)), monitorChanges: false); + .AddFolder(Path.Combine(TestUtils.GetProjectPath(), "..", "Shared Tests", nameof(ConditionalTests)), monitorChanges: false); } public static ResourceExplorer ResourceExplorer { get; set; } diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Microsoft.Bot.Components.Teams.Tests.csproj b/tests/unit/packages/Teams/dotnet/Microsoft.Bot.Components.Teams.Tests.csproj similarity index 88% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Microsoft.Bot.Components.Teams.Tests.csproj rename to tests/unit/packages/Teams/dotnet/Microsoft.Bot.Components.Teams.Tests.csproj index 112c033e7f..dd88645a9c 100644 --- a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/Microsoft.Bot.Components.Teams.Tests.csproj +++ b/tests/unit/packages/Teams/dotnet/Microsoft.Bot.Components.Teams.Tests.csproj @@ -10,8 +10,8 @@ - - + + @@ -23,7 +23,7 @@ - + diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/ResourceExplorerFixture.cs b/tests/unit/packages/Teams/dotnet/ResourceExplorerFixture.cs similarity index 95% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/ResourceExplorerFixture.cs rename to tests/unit/packages/Teams/dotnet/ResourceExplorerFixture.cs index 7b2b192b71..1da40ac30a 100644 --- a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/ResourceExplorerFixture.cs +++ b/tests/unit/packages/Teams/dotnet/ResourceExplorerFixture.cs @@ -22,7 +22,7 @@ public ResourceExplorerFixture Initialize(string resourceFolder) { if (_folderPath.Length == 0) { - _folderPath = Path.Combine(TestUtils.GetProjectPath(), "Tests", resourceFolder); + _folderPath = Path.Combine(TestUtils.GetProjectPath(), "..", "Shared Tests", resourceFolder); ResourceExplorer = ResourceExplorer.AddFolder(_folderPath, monitorChanges: false); } diff --git a/tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/TestUtils.cs b/tests/unit/packages/Teams/dotnet/TestUtils.cs similarity index 100% rename from tests/unit/packages/Microsoft.Bot.Components.Teams.Tests/TestUtils.cs rename to tests/unit/packages/Teams/dotnet/TestUtils.cs diff --git a/tests/unit/packages/Teams/js/package.json b/tests/unit/packages/Teams/js/package.json new file mode 100644 index 0000000000..894e3f6a0f --- /dev/null +++ b/tests/unit/packages/Teams/js/package.json @@ -0,0 +1,23 @@ +{ + "name": "@microsoft/bot-components-teams-tests", + "private": true, + "scripts": { + "build:package": "yarn workspace @microsoft/bot-components-teams build", + "test": "yarn run build:package && mocha --require ts-node/register tests/*.test.ts", + "lint": "eslint . --ext .js,.ts --config ../../../../../packages/Teams/js/.eslintrc.json" + }, + "dependencies": { + "@microsoft/bot-components-teams": "workspace:packages/Teams/js", + "@types/mocha": "^8.2.2", + "botbuilder": "4.14.0", + "botbuilder-dialogs-adaptive": "4.14.0-preview", + "botbuilder-dialogs-adaptive-testing": "4.14.0-preview", + "botframework-connector": "4.14.0", + "mocha": "^9.0.2", + "nock": "^13.1.1", + "ts-node": "^10.0.0" + }, + "devDependencies": { + "eslint": "^7.30.0" + } +} diff --git a/tests/unit/packages/Teams/js/tests/actionTests.test.ts b/tests/unit/packages/Teams/js/tests/actionTests.test.ts new file mode 100644 index 0000000000..1492fde260 --- /dev/null +++ b/tests/unit/packages/Teams/js/tests/actionTests.test.ts @@ -0,0 +1,508 @@ +// Licensed under the MIT License. +// Copyright (c) Microsoft Corporation. All rights reserved. + +import { + ConversationState, + useBotState, + MemoryStorage, + UserState, + Channels, + ConversationReference, + ChannelAccount, + ConversationAccount, + BotAdapter, + TestAdapter, + TurnContext, + Middleware, +} from 'botbuilder'; +import { AdaptiveTeamsBotComponent } from '@microsoft/bot-components-teams'; +import { TestUtils } from 'botbuilder-dialogs-adaptive-testing'; +import { + ConnectorClient, + MicrosoftAppCredentials, +} from 'botframework-connector'; +import { ok } from 'assert'; +import nock = require('nock'); +import { makeResourceExplorer } from './utils'; + +const getTeamsTestAdapter = ( + convo?: Partial +): TestAdapter => { + const adapter = new TestAdapter(convo as ConversationReference); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: This is required because TeamsInfo checks that the adapter has a createConnectorClient method + // and TestAdapter doesn't have one, natively. + adapter.createConnectorClient = () => { + return new ConnectorClient(new MicrosoftAppCredentials('', '')); + }; + + // DialogManager requires conversationState + const storage = new MemoryStorage(); + const userState = new UserState(storage); + const conversationState = new ConversationState(storage); + useBotState((adapter as unknown) as BotAdapter, userState, conversationState); + + return adapter; +}; + +const getTeamsUser = (): ChannelAccount => { + return { + id: '29:User-Id', + name: 'User Name', + aadObjectId: 'participant-aad-id', + }; +}; + +const getPersonalConversation = (): ConversationAccount => { + return { + id: 'a:oneOnOneConversationId', + name: 'oneOnOne', + tenantId: 'tenantId-Guid', + conversationType: 'personal', + isGroup: false, + }; +}; + +const getGroupConversation = (): ConversationAccount => { + return { + id: '19:groupChatId@thread.v2', + name: 'group', + tenantId: 'tenantId-Guid', + conversationType: 'groupChat', + isGroup: true, + }; +}; + +const getBaseConversationReference = (): ConversationReference => { + return { + user: getTeamsUser(), + channelId: Channels.Msteams, + conversation: getPersonalConversation(), + bot: { + id: 'botId', + name: 'Bot', + }, + serviceUrl: 'https://api.botframework.com', + }; +}; + +const getPersonalConversationReference = (): ConversationReference => { + return { + ...getBaseConversationReference(), + conversation: getPersonalConversation(), + }; +}; + +const getGroupConversationReference = (): ConversationReference => { + return { + ...getBaseConversationReference(), + conversation: getGroupConversation(), + }; +}; + +const generateTeamMembers = (amount: number): Record[] => { + const members = []; + const baseUser = getTeamsUser(); + for (let i = 0; i < amount; i++) { + members.push({ + id: `${baseUser.id}-${i}`, + name: `${baseUser.name}-${i}`, + objectId: `User-${i}-Object-Id`, + givenName: 'User', + surname: `Surname-${i}`, + email: `User.${i}@microsoft.com`, + userPrincipalName: `user${i}@microsoft.com`, + tenantId: 'tenant-id-1', + }); + } + + return members; +}; + +// This is only used for SendMessageToTeamsChannel test since it has a check in turnState for +// credentials and they never get saved is the adapter is TestAdapter. +class AddConnectorClientMiddleware implements Middleware { + async onTurn(context: TurnContext, next: () => Promise): Promise { + context.turnState.set( + context.adapter.ConnectorClientKey, + new ConnectorClient(new MicrosoftAppCredentials('', '')) + ); + await next(); + } +} + +describe('Actions', function () { + before(() => nock.disableNetConnect()); + beforeEach(() => nock.cleanAll()); + after(() => nock.enableNetConnect()); + afterEach(() => nock.cleanAll()); + + const resourceExplorer = makeResourceExplorer( + 'ActionTests', + AdaptiveTeamsBotComponent + ); + + /** + * Note: With mocha, `this.test?.title` refers to the test's name, so runTestScript + * is just calling a file with the same name as the test. + */ + it('Action_GetMeetingParticipant', async function () { + const conversationReference = getPersonalConversationReference(); + const participant = { + user: { + userPrincipalName: 'userPrincipalName-1', + }, + meeting: { + role: 'Organizer', + }, + conversation: conversationReference.conversation, + }; + + const fetchExpectation = nock('https://api.botframework.com') + .get( + '/v1/meetings/meeting-id-1/participants/participant-aad-id-1?tenantId=tenant-id-1' + ) + .reply(200, participant); + + const fetchExpectationCustomProperties = nock( + 'https://api.botframework.com' + ) + .get( + '/v1/meetings/customMeetingId/participants/customParticipantId?tenantId=customTenantId' + ) + .reply(200, participant); + + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + + ok(fetchExpectation.isDone()); + ok(fetchExpectationCustomProperties.isDone()); + }); + + it('Action_GetMeetingParticipantError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_GetMeetingParticipantErrorWithAdapter', async function () { + const conversationReference = getPersonalConversationReference(); + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + }); + + it('Action_GetMember', async function () { + const conversationReference = getPersonalConversationReference(); + const members = generateTeamMembers(1); + + const fetchExpectation = nock('https://api.botframework.com') + .get('/v3/conversations/a%3AoneOnOneConversationId/members/member-id') + .reply(200, members[0]); + + const fetchExpectationCustomProperties = nock( + 'https://api.botframework.com' + ) + .get( + '/v3/conversations/a%3AoneOnOneConversationId/members/customMemberId' + ) + .reply(200, members[0]); + + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + + ok(fetchExpectation.isDone()); + ok(fetchExpectationCustomProperties.isDone()); + }); + + it('Action_GetMemberError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_GetMemberErrorWithAdapter', async function () { + const conversationReference = getPersonalConversationReference(); + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + }); + + it('Action_GetPagedMembers', async function () { + const conversationReference = getGroupConversationReference(); + const members = generateTeamMembers(3); + + const fetchExpectation = nock('https://api.botframework.com') + .get('/v3/conversations/19%3AgroupChatId%40thread.v2/pagedmembers') + .reply(200, { continuationToken: 'token', members }); + + const fetchExpectationCustomProperties = nock( + 'https://api.botframework.com' + ) + .get( + '/v3/conversations/19%3AgroupChatId%40thread.v2/pagedmembers?pageSize=2&continuationToken=token' + ) + .reply(200, { + continuationToken: 'customToken', + members: members.slice(0, 2), + }); + + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + + ok(fetchExpectation.isDone()); + ok(fetchExpectationCustomProperties.isDone()); + }); + + it('Action_GetPagedMembersError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_GetPagedTeamMembers', async function () { + const conversationReference = getGroupConversationReference(); + const members = generateTeamMembers(3); + + const fetchExpectation = nock('https://api.botframework.com') + .get('/v3/conversations/team-id-1/pagedmembers') + .reply(200, { continuationToken: 'token', members }); + + const fetchExpectationCustomProperties = nock( + 'https://api.botframework.com' + ) + .get( + '/v3/conversations/team-id-1/pagedmembers?pageSize=2&continuationToken=token' + ) + .reply(200, { + continuationToken: 'customToken', + members: members.slice(0, 2), + }); + + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + + ok(fetchExpectation.isDone()); + ok(fetchExpectationCustomProperties.isDone()); + }); + + it('Action_GetPagedTeamMembersError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_GetTeamChannels', async function () { + const conversationReference = getGroupConversationReference(); + const conversations = [ + { + id: '19:ChannelIdgeneralChannelId@thread.skype', + name: 'Testing0', + }, + { + id: '19:somechannelId2e5ab3df9ae9b594bdb@thread.skype', + name: 'Testing1', + }, + { + id: '19:somechannelId388ade16aa4dd375e69@thread.skype', + name: 'Testing2', + }, + ]; + + const fetchExpectation = nock('https://api.botframework.com') + .get('/v3/teams/team-id-1/conversations') + .reply(200, { conversations }); + + const fetchExpectationCustomProperties = nock( + 'https://api.botframework.com' + ) + .get('/v3/teams/customTeamId/conversations') + .reply(200, { conversations }); + + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + + ok(fetchExpectation.isDone()); + ok(fetchExpectationCustomProperties.isDone()); + }); + + it('Action_GetTeamChannelsError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_GetTeamDetails', async function () { + const conversationReference = getGroupConversationReference(); + const teamDetails = { + id: '19:generalChannelIdgeneralChannelId@thread.skype', + name: 'TeamName', + aadGroupId: 'Team-aadGroupId', + }; + + const fetchExpectation = nock('https://api.botframework.com') + .get('/v3/teams/team-id-1') + .reply(200, teamDetails); + + const fetchExpectationCustomProperties = nock( + 'https://api.botframework.com' + ) + .get('/v3/teams/customTeamId') + .reply(200, teamDetails); + + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + + ok(fetchExpectation.isDone()); + ok(fetchExpectationCustomProperties.isDone()); + }); + + it('Action_GetTeamDetailsError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_GetTeamMember', async function () { + const conversationReference = getGroupConversationReference(); + const members = generateTeamMembers(1); + + const fetchExpectation = nock('https://api.botframework.com') + .get('/v3/conversations/team-id-1/members/29%3AUser-Id') + .reply(200, members[0]); + + const fetchExpectationCustomProperties = nock( + 'https://api.botframework.com' + ) + .get('/v3/conversations/customTeamId/members/customMemberId') + .reply(200, members[0]); + + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + + ok(fetchExpectation.isDone()); + ok(fetchExpectationCustomProperties.isDone()); + }); + + it('Action_GetTeamMemberError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_GetTeamMemberErrorWithAdapter', async function () { + const conversationReference = getGroupConversationReference(); + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + }); + + it('Action_SendAppBasedLinkQueryResponse', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendAppBasedLinkQueryResponseError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMessageToTeamsChannel', async function () { + const conversationReference = getGroupConversationReference(); + const adapter = getTeamsTestAdapter(conversationReference); + adapter.use(new AddConnectorClientMiddleware()); + + const fetchExpectation = nock('https://api.botframework.com') + .post('/v3/conversations') + .times(2) + .reply(200); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + + ok(fetchExpectation.isDone()); + }); + + it('Action_SendMessageToTeamsChannelError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEActionResponse', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEActionResponseError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEAttachmentsResponse', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEAttachmentsResponseError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEAuthResponse', async function () { + // Note: the test.dialog for this test uses `StartsWith` at the end due to differences in JS and .NET TestAdapter.getSignInlink + const conversationReference = getPersonalConversationReference(); + conversationReference.conversation.id = 'Action_SendMEAuthResponse'; + const adapter = getTeamsTestAdapter(conversationReference); + + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + }); + + it('Action_SendMEAuthResponseError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEAuthResponseErrorWithAdapter', async function () { + const adapter = getTeamsTestAdapter(); + // eslint-disable-next-line + // @ts-ignore: We have to set this to null to test the error but tsconfig "strict" doesn't allow it. + adapter.getUserToken = null; + await TestUtils.runTestScript(resourceExplorer, this.test?.title, adapter); + }); + + it('Action_SendMEBotMessagePreviewResponse', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEBotMessagePreviewResponseError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEConfigQuerySettingUrlResponse', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEConfigQuerySettingUrlResponseError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEMessageResponse', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMEMessageResponseError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMESelectItemResponse', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendMESelectItemResponseError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendTaskModuleCardResponse', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendTaskModuleCardResponseError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendTaskModuleMessageResponse', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendTaskModuleUrlResponse', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); + + it('Action_SendTaskModuleUrlResponseError', async function () { + await TestUtils.runTestScript(resourceExplorer, this.test?.title); + }); +}); diff --git a/tests/unit/packages/Teams/js/tests/conditionalTests.test.ts b/tests/unit/packages/Teams/js/tests/conditionalTests.test.ts new file mode 100644 index 0000000000..9c6a66b6ef --- /dev/null +++ b/tests/unit/packages/Teams/js/tests/conditionalTests.test.ts @@ -0,0 +1,21 @@ +// Licensed under the MIT License. +// Copyright (c) Microsoft Corporation. All rights reserved. + +import { TestUtils } from 'botbuilder-dialogs-adaptive-testing'; +import 'mocha'; +import { AdaptiveTeamsBotComponent } from '@microsoft/bot-components-teams'; +import { makeResourceExplorer } from './utils'; + +describe('Conditional Tests', function () { + const resourceExplorer = makeResourceExplorer( + 'ConditionalTests', + AdaptiveTeamsBotComponent + ); + + it('OnTeamsActivityTypes', async () => { + await TestUtils.runTestScript( + resourceExplorer, + 'ConditionalsTests_OnTeamsActivityTypes' + ); + }); +}); diff --git a/tests/unit/packages/Teams/js/tests/utils.ts b/tests/unit/packages/Teams/js/tests/utils.ts new file mode 100644 index 0000000000..8998dbef16 --- /dev/null +++ b/tests/unit/packages/Teams/js/tests/utils.ts @@ -0,0 +1,41 @@ +// Licensed under the MIT License. +// Copyright (c) Microsoft Corporation. All rights reserved. + +import { AdaptiveBotComponent } from 'botbuilder-dialogs-adaptive'; +import { + ServiceCollection, + noOpConfiguration, +} from 'botbuilder-dialogs-adaptive-runtime-core'; +import { AdaptiveTestBotComponent } from 'botbuilder-dialogs-adaptive-testing'; +import { + ResourceExplorer, + ResourceExplorerOptions, +} from 'botbuilder-dialogs-declarative'; +import path from 'path'; +import { BotComponent } from 'botbuilder'; + +export function makeResourceExplorer( + resourceFolder: string, + ...botComponents: Array BotComponent> +): ResourceExplorer { + const services = new ServiceCollection({ + declarativeTypes: [], + }); + + new AdaptiveBotComponent().configureServices(services, noOpConfiguration); + new AdaptiveTestBotComponent().configureServices(services, noOpConfiguration); + + botComponents.forEach((BotComponent) => { + new BotComponent().configureServices(services, noOpConfiguration); + }); + + const declarativeTypes = services.mustMakeInstance('declarativeTypes'); + + return new ResourceExplorer({ + declarativeTypes, + } as ResourceExplorerOptions).addFolder( + path.join(__dirname, '..', '..', 'Shared Tests', resourceFolder), + true, + false + ); +} diff --git a/tests/unit/packages/Teams/js/tsconfig.json b/tests/unit/packages/Teams/js/tsconfig.json new file mode 100644 index 0000000000..fe0f8351e4 --- /dev/null +++ b/tests/unit/packages/Teams/js/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@tsconfig/recommended", + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "composite": true, + "sourceMap": true, + "strict": true + } + } + \ No newline at end of file diff --git a/tests/unit/skills/calendar/Microsoft.Bot.Dialogs.Tests.Skills.Calendar.csproj b/tests/unit/skills/calendar/Microsoft.Bot.Dialogs.Tests.Skills.Calendar.csproj index e98d945c2c..cd04caac54 100644 --- a/tests/unit/skills/calendar/Microsoft.Bot.Dialogs.Tests.Skills.Calendar.csproj +++ b/tests/unit/skills/calendar/Microsoft.Bot.Dialogs.Tests.Skills.Calendar.csproj @@ -7,10 +7,10 @@ - - - - + + + + diff --git a/tests/unit/skills/common/Microsoft.Bot.Dialogs.Tests.Common.csproj b/tests/unit/skills/common/Microsoft.Bot.Dialogs.Tests.Common.csproj index 05c521c926..84135e3144 100644 --- a/tests/unit/skills/common/Microsoft.Bot.Dialogs.Tests.Common.csproj +++ b/tests/unit/skills/common/Microsoft.Bot.Dialogs.Tests.Common.csproj @@ -6,10 +6,10 @@ - - - - + + + + diff --git a/tests/unit/skills/people/Microsoft.Bot.Dialogs.Tests.Skills.People.csproj b/tests/unit/skills/people/Microsoft.Bot.Dialogs.Tests.Skills.People.csproj index 02c6c2f4e2..cd9c89cd5b 100644 --- a/tests/unit/skills/people/Microsoft.Bot.Dialogs.Tests.Skills.People.csproj +++ b/tests/unit/skills/people/Microsoft.Bot.Dialogs.Tests.Skills.People.csproj @@ -6,10 +6,10 @@ - - - - + + + + diff --git a/yarn.lock b/yarn.lock index faed4e0a0e..676d12eb0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,35 @@ __metadata: version: 4 cacheKey: 7 +"@azure/abort-controller@npm:^1.0.0": + version: 1.0.4 + resolution: "@azure/abort-controller@npm:1.0.4" + dependencies: + tslib: ^2.0.0 + checksum: e772f6c9afd2c448260f08ef796e4ff73348c5dfd100ce557cf73dd08d7664e819f11f8e59c19a76daa46c1b271ce3061db23072c2150b112df655d38e82944b + languageName: node + linkType: hard + +"@azure/cognitiveservices-luis-runtime@npm:2.0.0": + version: 2.0.0 + resolution: "@azure/cognitiveservices-luis-runtime@npm:2.0.0" + dependencies: + "@azure/ms-rest-js": ^1.6.0 + tslib: ^1.9.3 + checksum: 15d51d16a707a29e9e72e74e96a4227f43a76e12e920328a8f5c7ebb41c711ac11a9676035b2410a198ba9f0007521f650ebd0046709677b557755327a41a325 + languageName: node + linkType: hard + +"@azure/core-auth@npm:^1.1.4": + version: 1.3.2 + resolution: "@azure/core-auth@npm:1.3.2" + dependencies: + "@azure/abort-controller": ^1.0.0 + tslib: ^2.2.0 + checksum: 66c7d074b55e15ecf75c2de64841693c680c326c969dd037bc3800674b658ae1d1b717975c543a34de2da1a1eb1410983d7d2f96ad1d26b61f0372d9214feeb7 + languageName: node + linkType: hard + "@azure/ms-rest-js@npm:1.9.1": version: 1.9.1 resolution: "@azure/ms-rest-js@npm:1.9.1" @@ -21,6 +50,22 @@ __metadata: languageName: node linkType: hard +"@azure/ms-rest-js@npm:^1.6.0": + version: 1.11.2 + resolution: "@azure/ms-rest-js@npm:1.11.2" + dependencies: + "@azure/core-auth": ^1.1.4 + axios: ^0.21.1 + form-data: ^2.3.2 + tough-cookie: ^2.4.3 + tslib: ^1.9.2 + tunnel: 0.0.6 + uuid: ^3.2.1 + xml2js: ^0.4.19 + checksum: a96f2f075ecbef968ad85606087ad8a1d40382d4b9581d184049c46027f2d470b6b669d5dfec722545f54b10e75f8d60ea5a950a69393bc8c431ec81dd5f561b + languageName: node + linkType: hard + "@babel/code-frame@npm:7.12.11": version: 7.12.11 resolution: "@babel/code-frame@npm:7.12.11" @@ -85,39 +130,94 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^0.4.2": + version: 0.4.2 + resolution: "@eslint/eslintrc@npm:0.4.2" + dependencies: + ajv: ^6.12.4 + debug: ^4.1.1 + espree: ^7.3.0 + globals: ^13.9.0 + ignore: ^4.0.6 + import-fresh: ^3.2.1 + js-yaml: ^3.13.1 + minimatch: ^3.0.4 + strip-json-comments: ^3.1.1 + checksum: 60b66ce4257bf5c36a920dea83a056102fef746e7afd7100a6fe245a126ff455f67f4948e75d28ed73090bff8f8556b6a996e74a124911ca703440bc245dbc23 + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.5.0": + version: 0.5.0 + resolution: "@humanwhocodes/config-array@npm:0.5.0" + dependencies: + "@humanwhocodes/object-schema": ^1.2.0 + debug: ^4.1.1 + minimatch: ^3.0.4 + checksum: 71e3c1fef40166ecaacbe29b681499dc6bab3fe45df5bfb3e137baf6e50f22813cf14f24ff759a4da43b6743d7f5a776298ae1e0e266c9602bab62da2ee3b302 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^1.2.0": + version: 1.2.0 + resolution: "@humanwhocodes/object-schema@npm:1.2.0" + checksum: ef533ee0d227b8036e4220013575fedc3d0346e2e40bc5f5536ba5761825f23577eb4b71e52f18a2d3b827c9d83cfa60c821a71e30d5f6537918a94bc1990963 + languageName: node + linkType: hard + "@microsoft/bot-components-helpandcancel@workspace:packages/HelpAndCancel": version: 0.0.0-use.local resolution: "@microsoft/bot-components-helpandcancel@workspace:packages/HelpAndCancel" languageName: unknown linkType: soft +"@microsoft/bot-components-teams-tests@workspace:tests/unit/packages/Teams/js": + version: 0.0.0-use.local + resolution: "@microsoft/bot-components-teams-tests@workspace:tests/unit/packages/Teams/js" + dependencies: + "@microsoft/bot-components-teams": "workspace:packages/Teams/js" + "@types/mocha": ^8.2.2 + botbuilder: 4.14.0 + botbuilder-dialogs-adaptive: 4.14.0-preview + botbuilder-dialogs-adaptive-testing: 4.14.0-preview + botframework-connector: 4.14.0 + eslint: ^7.30.0 + mocha: ^9.0.2 + nock: ^13.1.1 + ts-node: ^10.0.0 + languageName: unknown + linkType: soft + "@microsoft/bot-components-teams@workspace:packages/Teams/js": version: 0.0.0-use.local resolution: "@microsoft/bot-components-teams@workspace:packages/Teams/js" dependencies: "@tsconfig/recommended": ^1.0.1 "@types/lodash": ^4.14.168 - "@typescript-eslint/eslint-plugin": latest - "@typescript-eslint/parser": latest - adaptive-expressions: 4.13.4 - botbuilder: 4.13.4 - botbuilder-dialogs: 4.13.4 - botbuilder-dialogs-adaptive: 4.13.4-preview - botbuilder-dialogs-adaptive-runtime-core: 4.13.4-preview - botbuilder-dialogs-declarative: 4.13.4-preview - botbuilder-stdlib: 4.13.4-internal - eslint: latest + "@typescript-eslint/eslint-plugin": ^4.28.2 + "@typescript-eslint/parser": ^4.28.2 + adaptive-expressions: 4.14.0 + botbuilder: 4.14.0 + botbuilder-dialogs: 4.14.0 + botbuilder-dialogs-adaptive: 4.14.0-preview + botbuilder-dialogs-adaptive-runtime-core: 4.14.0-preview + botbuilder-dialogs-declarative: 4.14.0-preview + botbuilder-stdlib: 4.14.0-internal + botframework-connector: 4.14.0 + eslint: ^7.30.0 + eslint-plugin-prettier: latest lodash: ^4.17.21 rimraf: ^3.0.2 typescript: ^4.0.5 peerDependencies: - adaptive-expressions: ~4.13.4 - botbuilder: ~4.13.4 - botbuilder-dialogs: ~4.13.4 - botbuilder-dialogs-adaptive: ~4.13.4-preview - botbuilder-dialogs-adaptive-runtime-core: ~4.13.4-preview - botbuilder-dialogs-declarative: ~4.13.4-preview - botbuilder-stdlib: ~4.13.4-internal + adaptive-expressions: ~4.14.0 + botbuilder: ~4.14.0 + botbuilder-dialogs: ~4.14.0 + botbuilder-dialogs-adaptive: ~4.14.0-preview + botbuilder-dialogs-adaptive-runtime-core: ~4.14.0-preview + botbuilder-dialogs-declarative: ~4.14.0-preview + botbuilder-stdlib: ~4.14.0-internal + botframework-connector: ~4.14.0 lodash: ^4.17.21 languageName: unknown linkType: soft @@ -134,7 +234,7 @@ __metadata: languageName: unknown linkType: soft -"@microsoft/generator-bot-adaptive@workspace:^1.0.0, @microsoft/generator-bot-adaptive@workspace:generators/generator-bot-adaptive": +"@microsoft/generator-bot-adaptive@workspace:^1.1.1, @microsoft/generator-bot-adaptive@workspace:generators/generator-bot-adaptive": version: 0.0.0-use.local resolution: "@microsoft/generator-bot-adaptive@workspace:generators/generator-bot-adaptive" dependencies: @@ -157,7 +257,7 @@ __metadata: version: 0.0.0-use.local resolution: "@microsoft/generator-bot-core-assistant@workspace:generators/generator-bot-core-assistant" dependencies: - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0" + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1" eslint: latest eslint-config-prettier: latest eslint-plugin-prettier: latest @@ -171,7 +271,7 @@ __metadata: version: 0.0.0-use.local resolution: "@microsoft/generator-bot-core-language@workspace:generators/generator-bot-core-language" dependencies: - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0" + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1" eslint: latest eslint-config-prettier: latest eslint-plugin-prettier: latest @@ -185,7 +285,7 @@ __metadata: version: 0.0.0-use.local resolution: "@microsoft/generator-bot-core-qna@workspace:generators/generator-bot-core-qna" dependencies: - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0" + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1" eslint: latest eslint-config-prettier: latest eslint-plugin-prettier: latest @@ -199,7 +299,7 @@ __metadata: version: 0.0.0-use.local resolution: "@microsoft/generator-bot-empty@workspace:generators/generator-bot-empty" dependencies: - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0" + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1" eslint: latest eslint-config-prettier: latest eslint-plugin-prettier: latest @@ -213,9 +313,9 @@ __metadata: version: 0.0.0-use.local resolution: "@microsoft/generator-bot-enterprise-assistant@workspace:generators/generator-bot-enterprise-assistant" dependencies: - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0" - "@microsoft/generator-bot-enterprise-calendar": "workspace:^1.0.0" - "@microsoft/generator-bot-enterprise-people": "workspace:^1.0.0" + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1" + "@microsoft/generator-bot-enterprise-calendar": "workspace:^1.1.1" + "@microsoft/generator-bot-enterprise-people": "workspace:^1.1.1" eslint: latest eslint-config-prettier: latest eslint-plugin-prettier: latest @@ -226,11 +326,11 @@ __metadata: languageName: unknown linkType: soft -"@microsoft/generator-bot-enterprise-calendar@workspace:^1.0.0, @microsoft/generator-bot-enterprise-calendar@workspace:generators/generator-bot-enterprise-calendar": +"@microsoft/generator-bot-enterprise-calendar@workspace:^1.1.1, @microsoft/generator-bot-enterprise-calendar@workspace:generators/generator-bot-enterprise-calendar": version: 0.0.0-use.local resolution: "@microsoft/generator-bot-enterprise-calendar@workspace:generators/generator-bot-enterprise-calendar" dependencies: - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0" + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1" eslint: latest eslint-config-prettier: latest eslint-plugin-prettier: latest @@ -240,11 +340,11 @@ __metadata: languageName: unknown linkType: soft -"@microsoft/generator-bot-enterprise-people@workspace:^1.0.0, @microsoft/generator-bot-enterprise-people@workspace:generators/generator-bot-enterprise-people": +"@microsoft/generator-bot-enterprise-people@workspace:^1.1.1, @microsoft/generator-bot-enterprise-people@workspace:generators/generator-bot-enterprise-people": version: 0.0.0-use.local resolution: "@microsoft/generator-bot-enterprise-people@workspace:generators/generator-bot-enterprise-people" dependencies: - "@microsoft/generator-bot-adaptive": "workspace:^1.0.0" + "@microsoft/generator-bot-adaptive": "workspace:^1.1.1" eslint: latest eslint-config-prettier: latest eslint-plugin-prettier: latest @@ -467,6 +567,34 @@ __metadata: languageName: node linkType: hard +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.8 + resolution: "@tsconfig/node10@npm:1.0.8" + checksum: 0336493b89fb7c06409a1247a3fb00fac2755f21f3f8ae4b9dd2457859abfc5e8ca42b6d9ca5a279fe81bc70fe1f3450eef61e5dd5a63a7b4a6946ff31874816 + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.9 + resolution: "@tsconfig/node12@npm:1.0.9" + checksum: 5532bfb5df47ed3a507da533c731a2fb80ee2e886edadbf20e664dcd3172d5c159577a281d15733b8d0c30bfa4e6b48496bef0704192c085520bc76bb9938068 + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.1 + resolution: "@tsconfig/node14@npm:1.0.1" + checksum: d0068287dba46dc98e7d49c229b0fee034fbac2bb4bc2efe12cc67227a1c68ec0728ca1e535dff7f033f7455de6c67e9b8f9d90f4fc3bb07c0d9ac08186fe65c + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.1": + version: 1.0.1 + resolution: "@tsconfig/node16@npm:1.0.1" + checksum: c389a4a81c291a27b96705de7fbe46d29aa4eb771450a41dfc075d89e1fdd63141898043a0d9f627460a1c409d06635a044dc4b3a4516173769a7d0a1558c51d + languageName: node + linkType: hard + "@tsconfig/recommended@npm:^1.0.1": version: 1.0.1 resolution: "@tsconfig/recommended@npm:1.0.1" @@ -498,10 +626,10 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.3": - version: 7.0.7 - resolution: "@types/json-schema@npm:7.0.7" - checksum: b9d2c509fa4e0b82f58e73f5e6ab76c60ff1884ba41bb82f37fb1cece226d4a3e5a62fedf78a43da0005373a6713d9abe61c1e592906402c41c08ad6ab26d52b +"@types/json-schema@npm:^7.0.7": + version: 7.0.8 + resolution: "@types/json-schema@npm:7.0.8" + checksum: 435a3d18a88aeac7bc88c2cdd2c19466c62ce79303493edd72380cd4af9775c05f35d424d5e76ffe3f94575ebb535305c6cae928c5bfb9c39eafbfb6932520a1 languageName: node linkType: hard @@ -523,6 +651,22 @@ __metadata: languageName: node linkType: hard +"@types/lodash.isequal@npm:^4.5.5": + version: 4.5.5 + resolution: "@types/lodash.isequal@npm:4.5.5" + dependencies: + "@types/lodash": "*" + checksum: 141df617686010657bb3e46b21facce2dd15b771fdfebd9df2f3d6fd3603d6336b64da4027257402c640f71b65d91eca9305b53d282cf604bcbb88e662034aad + languageName: node + linkType: hard + +"@types/lodash@npm:*": + version: 4.14.171 + resolution: "@types/lodash@npm:4.14.171" + checksum: e48668fb030ad7d8c0c7751061bd332ad8704937d976bd4e24fd9e2128f80c17112be11e5c13d39f6a210336dc3549f7fb00eaebb56b94c2bfb89ad64c57d721 + languageName: node + linkType: hard + "@types/lodash@npm:^4.14.168": version: 4.14.168 resolution: "@types/lodash@npm:4.14.168" @@ -544,6 +688,13 @@ __metadata: languageName: node linkType: hard +"@types/mocha@npm:^8.2.2": + version: 8.2.2 + resolution: "@types/mocha@npm:8.2.2" + checksum: 3455211b134b0cfcfc71fee2d4f22a6ac3e313a93bf6c0cd3519c1e85653ffb8c9bb68dcff083b8e9e15b4ea3cb4f50d9916709946c082f072807aeba747575b + languageName: node + linkType: hard + "@types/node@npm:*": version: 14.14.31 resolution: "@types/node@npm:14.14.31" @@ -606,103 +757,102 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:latest": - version: 4.22.0 - resolution: "@typescript-eslint/eslint-plugin@npm:4.22.0" +"@typescript-eslint/eslint-plugin@npm:^4.28.2": + version: 4.28.2 + resolution: "@typescript-eslint/eslint-plugin@npm:4.28.2" dependencies: - "@typescript-eslint/experimental-utils": 4.22.0 - "@typescript-eslint/scope-manager": 4.22.0 - debug: ^4.1.1 + "@typescript-eslint/experimental-utils": 4.28.2 + "@typescript-eslint/scope-manager": 4.28.2 + debug: ^4.3.1 functional-red-black-tree: ^1.0.1 - lodash: ^4.17.15 - regexpp: ^3.0.0 - semver: ^7.3.2 - tsutils: ^3.17.1 + regexpp: ^3.1.0 + semver: ^7.3.5 + tsutils: ^3.21.0 peerDependencies: "@typescript-eslint/parser": ^4.0.0 eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 40485bbf51283616b5098b33fa5285104a80419c4dcf75659442ae780352289bc238a64591939012ebc47823485497ae6ba8a35e653b0e33ff7f58743b46c34e + checksum: 6af8ea7665d5eaf0bafe241d71e3a85df07c0c82e59f530bd6627e0371e66a2d4a517cacd00d030680fe13d423b065c53185d3f48daa174fea316f024b1ab545 languageName: node linkType: hard -"@typescript-eslint/experimental-utils@npm:4.22.0": - version: 4.22.0 - resolution: "@typescript-eslint/experimental-utils@npm:4.22.0" +"@typescript-eslint/experimental-utils@npm:4.28.2": + version: 4.28.2 + resolution: "@typescript-eslint/experimental-utils@npm:4.28.2" dependencies: - "@types/json-schema": ^7.0.3 - "@typescript-eslint/scope-manager": 4.22.0 - "@typescript-eslint/types": 4.22.0 - "@typescript-eslint/typescript-estree": 4.22.0 - eslint-scope: ^5.0.0 - eslint-utils: ^2.0.0 + "@types/json-schema": ^7.0.7 + "@typescript-eslint/scope-manager": 4.28.2 + "@typescript-eslint/types": 4.28.2 + "@typescript-eslint/typescript-estree": 4.28.2 + eslint-scope: ^5.1.1 + eslint-utils: ^3.0.0 peerDependencies: eslint: "*" - checksum: afabf0d6f9e70b910575d8bc2e8ccd3416e8d05ed968296fc56379f71f8cf3a27107598b98f7c76a91e6b0be796dc102c866381a3af5bf24799a333532d1e997 + checksum: 5b3fed818af9882ae54bf258351c2740a92aa0bb5a85478ce1d4d957e594882ece42048149b1a1a8500023c1d334d9846048bc96f309ed60715232be8ef5d1a8 languageName: node linkType: hard -"@typescript-eslint/parser@npm:latest": - version: 4.22.0 - resolution: "@typescript-eslint/parser@npm:4.22.0" +"@typescript-eslint/parser@npm:^4.28.2": + version: 4.28.2 + resolution: "@typescript-eslint/parser@npm:4.28.2" dependencies: - "@typescript-eslint/scope-manager": 4.22.0 - "@typescript-eslint/types": 4.22.0 - "@typescript-eslint/typescript-estree": 4.22.0 - debug: ^4.1.1 + "@typescript-eslint/scope-manager": 4.28.2 + "@typescript-eslint/types": 4.28.2 + "@typescript-eslint/typescript-estree": 4.28.2 + debug: ^4.3.1 peerDependencies: eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 679e14a5cec5bae3b392b1736f5d919897fd1a269a9d25366babfd12c1d275b320ae36a0b8be215ba14780cb1feec2b386001b4e0225ef82bd0040bf5dbaf99f + checksum: 4d71ddbe039007f366b6e9deca12183e45ea165053a29b64e8e4534451a134fe664fd3bf8ec06951e2afe8b5fd14143fb2ef3182a9ee8d2b20a89a3c0f4f2529 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:4.22.0": - version: 4.22.0 - resolution: "@typescript-eslint/scope-manager@npm:4.22.0" +"@typescript-eslint/scope-manager@npm:4.28.2": + version: 4.28.2 + resolution: "@typescript-eslint/scope-manager@npm:4.28.2" dependencies: - "@typescript-eslint/types": 4.22.0 - "@typescript-eslint/visitor-keys": 4.22.0 - checksum: c6f5565f517373cba61d29be919c69ad0e178f2a007eed6f1d8f80518853c3c4e6a3a059e492920b71675f0828e093eb36ec9eef318b9e2b4e9e65b0e93f03b6 + "@typescript-eslint/types": 4.28.2 + "@typescript-eslint/visitor-keys": 4.28.2 + checksum: 31c30f428ba50087fc6a8dacc00b4d007d6653f1ea261a468e0a5425d730c5bf1e87bea581494862687c294d1f2ace30813f919800a05190fa332db6cd192bef languageName: node linkType: hard -"@typescript-eslint/types@npm:4.22.0": - version: 4.22.0 - resolution: "@typescript-eslint/types@npm:4.22.0" - checksum: db2717132540feba39b002cdb2483aa822e0b50c17f9deff918a52609178df071444188a1e76c07c51018c353b01509dd741272b6d482edf7d9e7d60adc6c70e +"@typescript-eslint/types@npm:4.28.2": + version: 4.28.2 + resolution: "@typescript-eslint/types@npm:4.28.2" + checksum: 9f5e6bf3df4540adf8eb1f83909bac778257f60a6ef7fcafa7df5224949839a63dba61fe4b58de538ffe17517e88ff6b29f691209f80a55df87935bac6349f69 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:4.22.0": - version: 4.22.0 - resolution: "@typescript-eslint/typescript-estree@npm:4.22.0" +"@typescript-eslint/typescript-estree@npm:4.28.2": + version: 4.28.2 + resolution: "@typescript-eslint/typescript-estree@npm:4.28.2" dependencies: - "@typescript-eslint/types": 4.22.0 - "@typescript-eslint/visitor-keys": 4.22.0 - debug: ^4.1.1 - globby: ^11.0.1 + "@typescript-eslint/types": 4.28.2 + "@typescript-eslint/visitor-keys": 4.28.2 + debug: ^4.3.1 + globby: ^11.0.3 is-glob: ^4.0.1 - semver: ^7.3.2 - tsutils: ^3.17.1 + semver: ^7.3.5 + tsutils: ^3.21.0 peerDependenciesMeta: typescript: optional: true - checksum: 538d932361d1463c9450c155fc5696f4cc1a07db2bfd4ca9079e1f919e5062fd95d8dc128fc2fa8368c9582787cfc97ee6284083b94fe8d580cd1a9fca688efa + checksum: 4fe36863b8af9808ee86b3cf64d6076a8b9a3224f9e1c17650d06ea46d80225b7e94903f71e7330a682b84eb1045189f1f09dc896165e9cab36714d24992ee84 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:4.22.0": - version: 4.22.0 - resolution: "@typescript-eslint/visitor-keys@npm:4.22.0" +"@typescript-eslint/visitor-keys@npm:4.28.2": + version: 4.28.2 + resolution: "@typescript-eslint/visitor-keys@npm:4.28.2" dependencies: - "@typescript-eslint/types": 4.22.0 + "@typescript-eslint/types": 4.28.2 eslint-visitor-keys: ^2.0.0 - checksum: 645896d05aa757fac02d952574ecda0eecd0be120162e28533c4528bb70d2162e9df62c3547217c69f18a72ceecaf212ea585afd20f976db64b59ac6de0d1ec8 + checksum: cec563831f563bb057f00045104db7ed92576755065d7563607c5f3581e5588fe8b83229767cd81763136aeb663dd49b99e7ee24decfbfc5fc7bd7b36bb1a525 languageName: node linkType: hard @@ -792,30 +942,31 @@ __metadata: languageName: node linkType: hard -"adal-node@npm:0.2.1": - version: 0.2.1 - resolution: "adal-node@npm:0.2.1" +"adal-node@npm:0.2.2": + version: 0.2.2 + resolution: "adal-node@npm:0.2.2" dependencies: "@types/node": ^8.0.47 async: ^2.6.3 + axios: ^0.21.1 date-utils: "*" jws: 3.x.x - request: ^2.88.0 underscore: ">= 1.3.1" uuid: ^3.1.0 xmldom: ">= 0.1.x" xpath.js: ~1.1.0 - checksum: 93cbb8a159873865996194cbc0ef2036927622c8ff21d2be0b093a476785b6d31e97cba80bc23fdd4ff0714aae62a43f507e3742a7c27e5ced92078519ecd554 + checksum: eafd8acda0ff50d57ce5939a801f6d72596aaeea26798d3ca006af713abd124d942f1a83d338c1472c23ca743b1940a7dc27e67b0bd63efb44e0568f6c2a96a8 languageName: node linkType: hard -"adaptive-expressions@npm:4.13.4": - version: 4.13.4 - resolution: "adaptive-expressions@npm:4.13.4" +"adaptive-expressions@npm:4.14.0": + version: 4.14.0 + resolution: "adaptive-expressions@npm:4.14.0" dependencies: "@microsoft/recognizers-text-data-types-timex-expression": 1.3.0 "@types/atob-lite": ^2.0.0 "@types/btoa-lite": ^1.0.0 + "@types/lodash.isequal": ^4.5.5 "@types/lru-cache": ^5.1.0 "@types/xmldom": ^0.1.30 antlr4ts: 0.5.0-alpha.3 @@ -825,13 +976,14 @@ __metadata: d3-format: ^1.4.4 dayjs: ^1.10.3 jspath: ^0.4.0 + lodash.isequal: ^4.5.0 lru-cache: ^5.1.1 uuid: ^8.3.2 x2js: ^3.4.0 xml2js: ^0.4.23 xmldom: ^0.5.0 xpath: ^0.0.32 - checksum: fc5a86ec925509d28275eec36a9285e8beb67a6b5b670de77a858ab9ea95cb03b53737f3dc657f4d5ce90275d60c7a98fef0c72dbb9ac69756c66e8678757e57 + checksum: de9b382e92ffe2bea6236ad40a19e73ab797e65943180e54392159c1731f3dc2138dda1d1af81c51bcc36e9a41410f64783f3ca13085933d36cbb2826e3a55b0 languageName: node linkType: hard @@ -859,6 +1011,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:^8.0.1": + version: 8.6.1 + resolution: "ajv@npm:8.6.1" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: 9abb66b4ced54f0e955313387183615028df1affc28859332d5d935258e391ead880ad5a4e5c59e3b82367486b3824faefdaf7b87cfd3a5b6629f14e8edc2fd7 + languageName: node + linkType: hard + "ansi-colors@npm:4.1.1, ansi-colors@npm:^4.1.1": version: 4.1.1 resolution: "ansi-colors@npm:4.1.1" @@ -945,7 +1109,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:~3.1.1": +"anymatch@npm:~3.1.1, anymatch@npm:~3.1.2": version: 3.1.2 resolution: "anymatch@npm:3.1.2" dependencies: @@ -981,6 +1145,13 @@ __metadata: languageName: node linkType: hard +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 81b3b40b1529c4fbf75b12f7c3e6fb2dcce9e78072063babc169de9b4f40777788f3d2b04380f659ef676a756e03ccfbfe78adf4477353bda906295fa69dab89 + languageName: node + linkType: hard + "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -1122,16 +1293,6 @@ __metadata: languageName: node linkType: hard -"assert@npm:^1.4.1": - version: 1.5.0 - resolution: "assert@npm:1.5.0" - dependencies: - object-assign: ^4.1.1 - util: 0.10.3 - checksum: 9bd01a7a574d99656d3998b95e904c35fe41c9e18b8193a4b1bb3b1df2772f4fb03bf75897093daca9d883ed888d9be5da2a9a952da6f1da9101f4147a2f00c1 - languageName: node - linkType: hard - "assign-symbols@npm:^1.0.0": version: 1.0.0 resolution: "assign-symbols@npm:1.0.0" @@ -1508,6 +1669,13 @@ __metadata: languageName: node linkType: hard +"bitwise@npm:^2.0.4": + version: 2.1.0 + resolution: "bitwise@npm:2.1.0" + checksum: 51c7ae49c2c109444c6aafaf221b86c8caf10c60c3ac0316b0cb1a76d12c8af383170bec22863bdd378ac05730a145a0026a9ce1fe2ff4925dc75c3288e45011 + languageName: node + linkType: hard + "bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" @@ -1519,156 +1687,194 @@ __metadata: languageName: node linkType: hard -"botbuilder-core@npm:4.13.4": - version: 4.13.4 - resolution: "botbuilder-core@npm:4.13.4" +"botbuilder-ai@npm:4.14.0": + version: 4.14.0 + resolution: "botbuilder-ai@npm:4.14.0" dependencies: - assert: ^1.4.1 - botbuilder-dialogs-adaptive-runtime-core: 4.13.4-preview - botbuilder-stdlib: 4.13.4-internal - botframework-connector: 4.13.4 - botframework-schema: 4.13.4 + "@azure/cognitiveservices-luis-runtime": 2.0.0 + "@azure/ms-rest-js": 1.9.1 + adaptive-expressions: 4.14.0 + botbuilder-core: 4.14.0 + botbuilder-dialogs: 4.14.0 + botbuilder-dialogs-adaptive-runtime-core: 4.14.0-preview + botbuilder-dialogs-declarative: 4.14.0-preview + botbuilder-stdlib: 4.14.0-internal + lodash: ^4.17.21 + node-fetch: ^2.6.0 + url-parse: ^1.5.1 + zod: ~1.11.17 + checksum: 1da331cc766169cf5b1a2ecca9e8c242ad51eced86656bafc134f3a53683aedb26d8bd1806e43ec14be2bba1950abbd7ef8a389b686f6d4e6339fb9eb2588f38 + languageName: node + linkType: hard + +"botbuilder-core@npm:4.14.0": + version: 4.14.0 + resolution: "botbuilder-core@npm:4.14.0" + dependencies: + botbuilder-dialogs-adaptive-runtime-core: 4.14.0-preview + botbuilder-stdlib: 4.14.0-internal + botframework-connector: 4.14.0 + botframework-schema: 4.14.0 uuid: ^8.3.2 - checksum: 6aaff87b1213008c6f3f49efb066a2866a89017bea3cf8b521842387068fafe74854f188df5a9c3753e767d9a72a9c63a1f964232f4b1bf2d9ded04dfb70efbd + zod: ~1.11.17 + checksum: b617e7fea0120460113d59062cdf12f7903eea36d7941089dfe55aae3ba4abf8b3990e09273d76a584095303c972712762a0d87263360f7b4eab3e2c5ed6e017 languageName: node linkType: hard -"botbuilder-dialogs-adaptive-runtime-core@npm:4.13.4-preview": - version: 4.13.4-preview - resolution: "botbuilder-dialogs-adaptive-runtime-core@npm:4.13.4-preview" +"botbuilder-dialogs-adaptive-runtime-core@npm:4.14.0-preview": + version: 4.14.0-preview + resolution: "botbuilder-dialogs-adaptive-runtime-core@npm:4.14.0-preview" dependencies: dependency-graph: ^0.10.0 - runtypes: ~5.1.0 - checksum: 6cd8217d06c11ed97867967986af875d3ac1c8b404bc5ed57e9a8a3111cac1d9b22918eaabbb2a4497ce45d97e86add3e75b76ddf01b015c35daabe66675b552 + checksum: 8bc38639faa59e541a32feac99d7eb3428d6a5a2071d2cdaaee3b1480224ed213cfa00f974236f76b4169848bf2189e19e4e08a1415b4646b4e58ebc3aee1da1 + languageName: node + linkType: hard + +"botbuilder-dialogs-adaptive-testing@npm:4.14.0-preview": + version: 4.14.0-preview + resolution: "botbuilder-dialogs-adaptive-testing@npm:4.14.0-preview" + dependencies: + adaptive-expressions: 4.14.0 + bitwise: ^2.0.4 + botbuilder-ai: 4.14.0 + botbuilder-core: 4.14.0 + botbuilder-dialogs: 4.14.0 + botbuilder-dialogs-adaptive: 4.14.0-preview + botbuilder-dialogs-adaptive-runtime-core: 4.14.0-preview + botbuilder-dialogs-declarative: 4.14.0-preview + botbuilder-stdlib: 4.14.0-internal + murmurhash-js: ^1.0.0 + nock: ^11.9.1 + url-parse: ^1.5.1 + checksum: 6bff035cf41273596df50a0755026a34a7b55ae31af21d2c0574b961e84d3622ae545a74db296de7df533f028daa96c563ba70df3dc864b291cccce35d4c61d2 languageName: node linkType: hard -"botbuilder-dialogs-adaptive@npm:4.13.4-preview": - version: 4.13.4-preview - resolution: "botbuilder-dialogs-adaptive@npm:4.13.4-preview" +"botbuilder-dialogs-adaptive@npm:4.14.0-preview": + version: 4.14.0-preview + resolution: "botbuilder-dialogs-adaptive@npm:4.14.0-preview" dependencies: "@microsoft/recognizers-text-suite": 1.1.4 - adaptive-expressions: 4.13.4 - botbuilder: 4.13.4 - botbuilder-dialogs: 4.13.4 - botbuilder-dialogs-adaptive-runtime-core: 4.13.4-preview - botbuilder-dialogs-declarative: 4.13.4-preview - botbuilder-lg: 4.13.4 - botframework-connector: 4.13.4 - botframework-schema: 4.13.4 + adaptive-expressions: 4.14.0 + botbuilder: 4.14.0 + botbuilder-dialogs: 4.14.0 + botbuilder-dialogs-adaptive-runtime-core: 4.14.0-preview + botbuilder-dialogs-declarative: 4.14.0-preview + botbuilder-lg: 4.14.0 lodash: ^4.17.21 node-fetch: ^2.6.0 - checksum: d11907e44030b3dc2ed1c822679de512642ec1d0ad222d4e318292922c45d36cd37d82645f9835c4928065aca5cc75ab11f2e34aea124baac2b7ac6c0ab86686 + checksum: 622237a71b8f63e8cb5e536910a0e6997dc47c1f130c09877d134dd9909873fb1a12677e4d3228c97ae7a4dd1933cdd2314c4a1c5dda059ff879687eec151ecc languageName: node linkType: hard -"botbuilder-dialogs-declarative@npm:4.13.4-preview": - version: 4.13.4-preview - resolution: "botbuilder-dialogs-declarative@npm:4.13.4-preview" +"botbuilder-dialogs-declarative@npm:4.14.0-preview": + version: 4.14.0-preview + resolution: "botbuilder-dialogs-declarative@npm:4.14.0-preview" dependencies: - botbuilder-core: 4.13.4 - botbuilder-dialogs: 4.13.4 - botbuilder-stdlib: 4.13.4-internal + botbuilder-core: 4.14.0 + botbuilder-dialogs: 4.14.0 + botbuilder-stdlib: 4.14.0-internal chokidar: ^3.4.0 - checksum: e18d637ca5cff9d0df34d813ac57108a617bc989dc37ae85130a2dc8756e11bb695fa47b8283fea8e629f47acae65d067ef9bd064411e8d27fc82d0e053e4d15 + checksum: 25863f1a2e4edd5982a5d103c44aa8f66c2ff16adf07a2fff8d49c48084f2c2143470478b978fbae0c6c82cf2f88e6fcd82a6887453f53526d186bd96d462c50 languageName: node linkType: hard -"botbuilder-dialogs@npm:4.13.4": - version: 4.13.4 - resolution: "botbuilder-dialogs@npm:4.13.4" +"botbuilder-dialogs@npm:4.14.0": + version: 4.14.0 + resolution: "botbuilder-dialogs@npm:4.14.0" dependencies: "@microsoft/recognizers-text-choice": 1.1.4 "@microsoft/recognizers-text-date-time": 1.1.4 "@microsoft/recognizers-text-number": 1.1.4 "@microsoft/recognizers-text-suite": 1.1.4 - botbuilder-core: 4.13.4 - botbuilder-dialogs-adaptive-runtime-core: 4.13.4-preview - botbuilder-stdlib: 4.13.4-internal - botframework-connector: 4.13.4 + botbuilder-core: 4.14.0 + botbuilder-dialogs-adaptive-runtime-core: 4.14.0-preview + botbuilder-stdlib: 4.14.0-internal + botframework-connector: 4.14.0 globalize: ^1.4.2 lodash: ^4.17.21 - runtypes: ~5.1.0 - uuid: ^8.3.2 - checksum: b7ac611bbf67946d0e32383a2df03c8b16f15d80850bb2e235686d588150c015db8d3c1475cad7d452c03d61ac8c5d0e70e30e86508489936e9862090da9cbe7 + zod: ~1.11.17 + checksum: c1f58e6b4bddeeea500f5bea3e1552478b39e11ea679f7d7771cf1bfb29cb79df627ac8405f3997a713338dde6861e0c465e4ab5fa78bf817264b5e49132a56a languageName: node linkType: hard -"botbuilder-lg@npm:4.13.4": - version: 4.13.4 - resolution: "botbuilder-lg@npm:4.13.4" +"botbuilder-lg@npm:4.14.0": + version: 4.14.0 + resolution: "botbuilder-lg@npm:4.14.0" dependencies: - adaptive-expressions: 4.13.4 + adaptive-expressions: 4.14.0 antlr4ts: 0.5.0-alpha.3 lodash: ^4.17.19 - path: ^0.12.7 uuid: ^8.3.2 - checksum: d1788d7ad6cc6fc64d818b89200e7d65b2a3e62e26267838b6b5861030f46fd54250bb46e6aa6da4c04425e317c002c51d00d09c22b894468cecd27ab20c4ee6 + checksum: b7602b0fabdb80994c6949f78fcd6f467917799586d857be37add227a8c261a6b4e4b24ad4d12e41ab458c062fa6fe68cb0bdb8cffa0f4f60b5ef7ea291add08 languageName: node linkType: hard -"botbuilder-stdlib@npm:4.13.4-internal": - version: 4.13.4-internal - resolution: "botbuilder-stdlib@npm:4.13.4-internal" - checksum: c6dd92a039fcca421841d9c0ebec88438152edcc8cab6ef16b2e3653c0cee5d287b4b0df02117c24b51af72a13c095c0b25e34fe2631cd5572addc15a8b735ce +"botbuilder-stdlib@npm:4.14.0-internal": + version: 4.14.0-internal + resolution: "botbuilder-stdlib@npm:4.14.0-internal" + checksum: e38630a1ae535c06422033b1301b764977cfd06259904d25c6a8bd72a676865c456fcdb792ce3abf03a3bb508bb212ab93a4b81702a32384cf297abe7dc9b8d4 languageName: node linkType: hard -"botbuilder@npm:4.13.4": - version: 4.13.4 - resolution: "botbuilder@npm:4.13.4" +"botbuilder@npm:4.14.0": + version: 4.14.0 + resolution: "botbuilder@npm:4.14.0" dependencies: "@azure/ms-rest-js": 1.9.1 axios: ^0.21.1 - botbuilder-core: 4.13.4 - botbuilder-dialogs-adaptive-runtime-core: 4.13.4-preview - botbuilder-stdlib: 4.13.4-internal - botframework-connector: 4.13.4 - botframework-streaming: 4.13.4 + botbuilder-core: 4.14.0 + botbuilder-stdlib: 4.14.0-internal + botframework-connector: 4.14.0 + botframework-streaming: 4.14.0 dayjs: ^1.10.3 filenamify: ^4.1.0 fs-extra: ^7.0.1 htmlparser2: ^6.0.1 uuid: ^8.3.2 - checksum: 20b1ca64457e1c371401f3e79476d4395f829ef7c74ef529958d2a58f90c214f68e679c7c9d73beeee1ec94fda2ad41ad017778a9d05c55c11a0b36a5b11573e + zod: ~1.11.17 + checksum: a916227bc341fc106be36f8fde60f7e83ebb8e05014d5c314c0a515711cd70595615d183989286557bad1ef08a5ad923a4bb03758a03cbc28440facafb9b0932 languageName: node linkType: hard -"botframework-connector@npm:4.13.4": - version: 4.13.4 - resolution: "botframework-connector@npm:4.13.4" +"botframework-connector@npm:4.14.0": + version: 4.14.0 + resolution: "botframework-connector@npm:4.14.0" dependencies: "@azure/ms-rest-js": 1.9.1 "@types/jsonwebtoken": 7.2.8 "@types/node": ^10.17.27 - adal-node: 0.2.1 + adal-node: 0.2.2 + axios: ^0.21.1 base64url: ^3.0.0 - botframework-schema: 4.13.4 + botbuilder-stdlib: 4.14.0-internal + botframework-schema: 4.14.0 cross-fetch: ^3.0.5 jsonwebtoken: 8.0.1 rsa-pem-from-mod-exp: ^0.8.4 - checksum: 2d1ab8b2fd4af68634cb23e31014bbc5464abfe4d76722a275a551a0b81819f15ee89bc343a8a1b918498aecb062020d638a0b2ed3c660169bd005443986dc1d + checksum: 565e2475524cd3ee3d2e4ddd83890e58a15e68f128daf9be5ad943e38c3088e8ed1a7f04c082825059a83fb007106ec1047e90aec19235665c27a526d0e9443e languageName: node linkType: hard -"botframework-schema@npm:4.13.4": - version: 4.13.4 - resolution: "botframework-schema@npm:4.13.4" +"botframework-schema@npm:4.14.0": + version: 4.14.0 + resolution: "botframework-schema@npm:4.14.0" dependencies: - botbuilder-stdlib: 4.13.4-internal - checksum: 5cf0ec42293396802b083e8099077fcb86e40ab41efd4b955aeb76253754b50f35e7d602bf3d88dafb90586bc05ad1d55d959f793333fce6f522d831a1e487ac + botbuilder-stdlib: 4.14.0-internal + uuid: ^8.3.2 + checksum: fd86f0a6eb5be4f84c90bdb58de20129fdd92138652aaebc4cc29ccdf7e0f7944e85c1c007ecb654d576b734fce984466ff2d7edc2f98c344f1210b23f0badf1 languageName: node linkType: hard -"botframework-streaming@npm:4.13.4": - version: 4.13.4 - resolution: "botframework-streaming@npm:4.13.4" +"botframework-streaming@npm:4.14.0": + version: 4.14.0 + resolution: "botframework-streaming@npm:4.14.0" dependencies: "@types/node": ^10.17.27 "@types/ws": ^6.0.3 uuid: ^8.3.2 ws: ^7.1.2 - checksum: b85af5123e04968e5cf89518f643531b15e33da0a42153b33ff8f6f39aebe6b2a5083707c6c6a87a45d755a5f6243216acaee9d3ca24338d2d207c6af05f4f4e + checksum: c23f75c1ddd95f2265bbf77c68ba0c188492398daaa0cda1cab113e9d22dcf63aec1831a5ce1df7382b91f20c0202c12e9afa4c6de799d64690825d3c3b5f76a languageName: node linkType: hard @@ -1991,6 +2197,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:3.5.2": + version: 3.5.2 + resolution: "chokidar@npm:3.5.2" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: 52fbff3acebf06ec0125872110f6c8403e66cd3d613264c83405496e199554d99380342d9b3a7ffd7910c53c5865e242ed7dd72fcb2e883d8e3ad3f3883aee6c + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -2292,6 +2517,13 @@ __metadata: languageName: node linkType: hard +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: babd307893abfb26d77ae11cb9d6b6cfa6d18c9cee435cf70b5a3fb44aa8d90c9ec26ea89cbb16e0a94b8d34f5fcaee164b90ed526cdd3158955673ab9652d01 + languageName: node + linkType: hard + "cross-fetch@npm:^3.0.5": version: 3.1.4 resolution: "cross-fetch@npm:3.1.4" @@ -2433,7 +2665,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.0.1, debug@npm:^4.1.0": +"debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.3.1": version: 4.3.2 resolution: "debug@npm:4.3.2" dependencies: @@ -2864,7 +3096,7 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:4.0.0": +"escape-string-regexp@npm:4.0.0, escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" checksum: c747be8d5ff7873127e3e0cffe7d2206a37208077fa9c30a3c1bb4f26bebd081c8c24d5fba7a99449f9d20670bea3dc5e1b6098b0f074b099bd38766271a272f @@ -2930,7 +3162,7 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^5.0.0, eslint-scope@npm:^5.1.1": +"eslint-scope@npm:^5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: @@ -2940,7 +3172,7 @@ __metadata: languageName: node linkType: hard -"eslint-utils@npm:^2.0.0, eslint-utils@npm:^2.1.0": +"eslint-utils@npm:^2.1.0": version: 2.1.0 resolution: "eslint-utils@npm:2.1.0" dependencies: @@ -2949,6 +3181,17 @@ __metadata: languageName: node linkType: hard +"eslint-utils@npm:^3.0.0": + version: 3.0.0 + resolution: "eslint-utils@npm:3.0.0" + dependencies: + eslint-visitor-keys: ^2.0.0 + peerDependencies: + eslint: ">=5" + checksum: 035451529f016e28edd26e8951f15e28a6a4e58adff67bd0cb494879f360080750b9c779e46561369aec0657ac2b89dd8b0aa38476e8cdf50e635aa872fa27b6 + languageName: node + linkType: hard + "eslint-visitor-keys@npm:^1.1.0, eslint-visitor-keys@npm:^1.3.0": version: 1.3.0 resolution: "eslint-visitor-keys@npm:1.3.0" @@ -2963,6 +3206,56 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^7.30.0": + version: 7.30.0 + resolution: "eslint@npm:7.30.0" + dependencies: + "@babel/code-frame": 7.12.11 + "@eslint/eslintrc": ^0.4.2 + "@humanwhocodes/config-array": ^0.5.0 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.0.1 + doctrine: ^3.0.0 + enquirer: ^2.3.5 + escape-string-regexp: ^4.0.0 + eslint-scope: ^5.1.1 + eslint-utils: ^2.1.0 + eslint-visitor-keys: ^2.0.0 + espree: ^7.3.1 + esquery: ^1.4.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + functional-red-black-tree: ^1.0.1 + glob-parent: ^5.1.2 + globals: ^13.6.0 + ignore: ^4.0.6 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + js-yaml: ^3.13.1 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.0.4 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + progress: ^2.0.0 + regexpp: ^3.1.0 + semver: ^7.2.1 + strip-ansi: ^6.0.0 + strip-json-comments: ^3.1.0 + table: ^6.0.9 + text-table: ^0.2.0 + v8-compile-cache: ^2.0.3 + bin: + eslint: bin/eslint.js + checksum: 028048847e0252d6c972ac612fe37be55822ae2255d10d1bf68255749f7ae1364b2aa538cd95f3bc4d951fc7d36195e46b62fe8d215297ef9a6a8aeb8ca28a90 + languageName: node + linkType: hard + "eslint@npm:latest": version: 7.21.0 resolution: "eslint@npm:7.21.0" @@ -3252,7 +3545,7 @@ __metadata: languageName: node linkType: hard -"fast-deep-equal@npm:^3.1.1": +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" checksum: 451526766b219503131d11e823eaadd1533080b0be4860e316670b039dcaf31cd1007c2fe036a9b922abba7c040dfad5e942ed79d21f2ff849e50049f36e0fb7 @@ -3641,7 +3934,7 @@ fsevents@^1.2.3: languageName: node linkType: hard -"fsevents@patch:fsevents@~2.3.1#builtin": +"fsevents@patch:fsevents@~2.3.1#builtin, fsevents@patch:fsevents@~2.3.2#builtin": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#builtin::version=2.3.2&hash=11e9ea" dependencies: @@ -3650,7 +3943,7 @@ fsevents@^1.2.3: languageName: node linkType: hard -fsevents@~2.3.1: +"fsevents@~2.3.1, fsevents@~2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" dependencies: @@ -3841,7 +4134,7 @@ fsevents@~2.3.1: languageName: node linkType: hard -"glob-parent@npm:^5.0.0, glob-parent@npm:^5.1.0, glob-parent@npm:~5.1.0": +"glob-parent@npm:^5.0.0, glob-parent@npm:^5.1.0, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.0, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -3871,6 +4164,20 @@ fsevents@~2.3.1: languageName: node linkType: hard +"glob@npm:7.1.7": + version: 7.1.7 + resolution: "glob@npm:7.1.7" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.0.4 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 352f74f08247db5420161a2f68f2bd84b53228b5fcfc9dcc37cd54d3f19ec0232495d84aeff1286d0727059e9fdc1031400e00b971bdc59e30f8f82b199c9d02 + languageName: node + linkType: hard + "globalize@npm:^1.4.2": version: 1.6.0 resolution: "globalize@npm:1.6.0" @@ -3889,6 +4196,15 @@ fsevents@~2.3.1: languageName: node linkType: hard +"globals@npm:^13.6.0, globals@npm:^13.9.0": + version: 13.10.0 + resolution: "globals@npm:13.10.0" + dependencies: + type-fest: ^0.20.2 + checksum: ae5f8d4ef26b845a3d2a370a0dd0b7cc8bce09d11bf75dbde8dce8a0855e8ad4f34613090eaad8e71d24fb01fe00d8b2708533b32da08f104c0ddd19b70219f1 + languageName: node + linkType: hard + "globals@npm:^9.18.0": version: 9.18.0 resolution: "globals@npm:9.18.0" @@ -3896,9 +4212,9 @@ fsevents@~2.3.1: languageName: node linkType: hard -"globby@npm:^11.0.1, globby@npm:^11.0.3": - version: 11.0.3 - resolution: "globby@npm:11.0.3" +"globby@npm:^11.0.2": + version: 11.0.2 + resolution: "globby@npm:11.0.2" dependencies: array-union: ^2.1.0 dir-glob: ^3.0.1 @@ -3906,13 +4222,13 @@ fsevents@~2.3.1: ignore: ^5.1.4 merge2: ^1.3.0 slash: ^3.0.0 - checksum: f17da0f869918656ec8c16c15ad100f025fbd13e4c157286cf340811eb1355a7d06dde77be1685a7a051970ec6abeff96a9b2a1a97525f84bc94fbd518c1d1db + checksum: d23f2a6b8897b97fb27422cde243e0fd406ebbaa821929293b27c977d169884f8112494cda4f456a51d0ec1e133e3ac703ec24bfed484e327305ea34a665eb06 languageName: node linkType: hard -"globby@npm:^11.0.2": - version: 11.0.2 - resolution: "globby@npm:11.0.2" +"globby@npm:^11.0.3": + version: 11.0.3 + resolution: "globby@npm:11.0.3" dependencies: array-union: ^2.1.0 dir-glob: ^3.0.1 @@ -3920,7 +4236,7 @@ fsevents@~2.3.1: ignore: ^5.1.4 merge2: ^1.3.0 slash: ^3.0.0 - checksum: d23f2a6b8897b97fb27422cde243e0fd406ebbaa821929293b27c977d169884f8112494cda4f456a51d0ec1e133e3ac703ec24bfed484e327305ea34a665eb06 + checksum: f17da0f869918656ec8c16c15ad100f025fbd13e4c157286cf340811eb1355a7d06dde77be1685a7a051970ec6abeff96a9b2a1a97525f84bc94fbd518c1d1db languageName: node linkType: hard @@ -4377,20 +4693,6 @@ fsevents@~2.3.1: languageName: node linkType: hard -"inherits@npm:2.0.1": - version: 2.0.1 - resolution: "inherits@npm:2.0.1" - checksum: 6f59f627a64cff6f4b5a2723184d831e6fc376cf88b8a94821caa2cad9d44da6d79583335024c01a541d9a25767785928a28f6e2192bb14be9ce800b315b4faa - languageName: node - linkType: hard - -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 9488f9433effbc24474f6baee8014e5337c7f99305ecb4204fa5864ae7655c24225780d87fc65ed8d3d374715a18c5dc8c69fe3bf9745cde2e7acd0ac068a07b - languageName: node - linkType: hard - "ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -5530,6 +5832,17 @@ fsevents@~2.3.1: languageName: node linkType: hard +"js-yaml@npm:4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: 8973cf4296c944cc2551d1e3d3d064e7de0d0a6db3f7bafe40339ee9e5e0329560b52c4b8492b9b22365404c9be0822b62340ab49884e1dedfcc7ff80158abe0 + languageName: node + linkType: hard + "js-yaml@npm:^3.13.1, js-yaml@npm:^3.7.0": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" @@ -5641,7 +5954,7 @@ fsevents@~2.3.1: languageName: node linkType: hard -"json-stringify-safe@npm:~5.0.1": +"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" checksum: 261dfb8eb3e72c8b0dda11fd7c20c151ffc1d1b03e529245d51708c8dd8d8c6a225880464adf41a570dff6e5c805fd9d1f47fed948cfb526e4fbe5a67ce4e5f4 @@ -5902,6 +6215,13 @@ fsevents@~2.3.1: languageName: node linkType: hard +"lodash.clonedeep@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.clonedeep@npm:4.5.0" + checksum: 41e2fe4c57c56a66a4775a6ddeebe9272f0ce4d257d97b3cb8724a9b01eeec9b09ce7e8603d6926baf5f48c287d988f0de4bf5aa244ea86b1f22c1e6f203cc27 + languageName: node + linkType: hard + "lodash.escaperegexp@npm:^4.1.2": version: 4.1.2 resolution: "lodash.escaperegexp@npm:4.1.2" @@ -5979,6 +6299,13 @@ fsevents@~2.3.1: languageName: node linkType: hard +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 4e2bb42a87a148991458d7c384bc197e96f7115e9536fc8e2c86ae9e99ce1c1f693ff15eb85761952535f48d72253aed8e673d9f32dde3e671cd91e3fde220a7 + languageName: node + linkType: hard + "lodash.once@npm:^4.0.0": version: 4.1.1 resolution: "lodash.once@npm:4.1.1" @@ -5986,6 +6313,13 @@ fsevents@~2.3.1: languageName: node linkType: hard +"lodash.set@npm:^4.3.2": + version: 4.3.2 + resolution: "lodash.set@npm:4.3.2" + checksum: 4dfedacae1c1cf86385a2b6e30ba538f06c90d703a0abd83a11432d80ec24b4016fe27359cdc0554a02a31a468789cbb282801dd755e54581cf0295477e2341d + languageName: node + linkType: hard + "lodash.sortby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.sortby@npm:4.7.0" @@ -6007,6 +6341,13 @@ fsevents@~2.3.1: languageName: node linkType: hard +"lodash.truncate@npm:^4.4.2": + version: 4.4.2 + resolution: "lodash.truncate@npm:4.4.2" + checksum: b1b0d7d993bb73d0032fe909d4523a836b6aa91566fa88ff78c3eac008bd3d3b2ba0f2e8381d7f906b1d6913a64982f34bea95dd556355c0d418bfddf3ab7b06 + languageName: node + linkType: hard + "lodash.zip@npm:^4.0.0": version: 4.2.0 resolution: "lodash.zip@npm:4.2.0" @@ -6014,7 +6355,7 @@ fsevents@~2.3.1: languageName: node linkType: hard -"lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.3.0": +"lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.13, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.3.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 4983720b9abca930a4a46f18db163d7dad8dd00dbed6db0cc7b499b33b717cce69f80928b27bbb1ff2cbd3b19d251ee90669a8b5ea466072ca81c2ebe91e7468 @@ -6030,16 +6371,7 @@ fsevents@~2.3.1: languageName: node linkType: hard -"log-symbols@npm:^2.2.0": - version: 2.2.0 - resolution: "log-symbols@npm:2.2.0" - dependencies: - chalk: ^2.0.1 - checksum: e2dfd255f3e3080134055597fb67bd67798d65383488683ed90f0376f7264dd21028f30d4c3a0686251dcfc4dc71172e8061cef21e89c6deabb8b375450d5166 - languageName: node - linkType: hard - -"log-symbols@npm:^4.1.0": +"log-symbols@npm:4.1.0, log-symbols@npm:^4.1.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: @@ -6049,6 +6381,15 @@ fsevents@~2.3.1: languageName: node linkType: hard +"log-symbols@npm:^2.2.0": + version: 2.2.0 + resolution: "log-symbols@npm:2.2.0" + dependencies: + chalk: ^2.0.1 + checksum: e2dfd255f3e3080134055597fb67bd67798d65383488683ed90f0376f7264dd21028f30d4c3a0686251dcfc4dc71172e8061cef21e89c6deabb8b375450d5166 + languageName: node + linkType: hard + "lolex@npm:^2.4.2": version: 2.7.5 resolution: "lolex@npm:2.7.5" @@ -6126,6 +6467,13 @@ fsevents@~2.3.1: languageName: node linkType: hard +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 2c780bab8409b865e8ee86697c599a2bf2765ec64d21eb67ccda27050e039f983feacad05a0d43aba3c966ea03d305d2612e94fec45474bcbc61181f57c5bb88 + languageName: node + linkType: hard + "makeerror@npm:1.0.x": version: 1.0.11 resolution: "makeerror@npm:1.0.11" @@ -6507,6 +6855,42 @@ fsevents@~2.3.1: languageName: node linkType: hard +"mocha@npm:^9.0.2": + version: 9.0.2 + resolution: "mocha@npm:9.0.2" + dependencies: + "@ungap/promise-all-settled": 1.1.2 + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.2 + debug: 4.3.1 + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.1.7 + growl: 1.10.5 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 3.0.4 + ms: 2.1.3 + nanoid: 3.1.23 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + which: 2.0.2 + wide-align: 1.1.3 + workerpool: 6.1.5 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + bin: + _mocha: bin/_mocha + mocha: bin/mocha + checksum: 305d820f2e7237f54c2c034198978c1ef7c0cf99ddf0c511c8e65e0d7cd00a2b87f7826dc91afa080473152159c1402f419f18d67f831dc55ebc84710ee97823 + languageName: node + linkType: hard + "moment@npm:^2.15.1, moment@npm:^2.24.0": version: 2.29.1 resolution: "moment@npm:2.29.1" @@ -6573,6 +6957,13 @@ fsevents@~2.3.1: languageName: node linkType: hard +"murmurhash-js@npm:^1.0.0": + version: 1.0.0 + resolution: "murmurhash-js@npm:1.0.0" + checksum: 7b0f02796fde7a6fe0e41ed3197b758e6824f33b284a5cbdcca0942e629d34309a4e344760204ad5503dc1d75f9ba7574b72406ac654dc56ab69f22b1e9ee821 + languageName: node + linkType: hard + "mute-stream@npm:0.0.7": version: 0.0.7 resolution: "mute-stream@npm:0.0.7" @@ -6605,6 +6996,15 @@ fsevents@~2.3.1: languageName: node linkType: hard +"nanoid@npm:3.1.23": + version: 3.1.23 + resolution: "nanoid@npm:3.1.23" + bin: + nanoid: bin/nanoid.cjs + checksum: e6dea1da5a593ffdc8cf2676d1d02f0626f07a54a5947a7a1f5ff1fd07901b2f53044c285e98b87eb367f016fde285fd8785d54a2dceeab9c3721f4e618f8326 + languageName: node + linkType: hard + "nanomatch@npm:^1.2.9": version: 1.2.13 resolution: "nanomatch@npm:1.2.13" @@ -6671,6 +7071,31 @@ fsevents@~2.3.1: languageName: node linkType: hard +"nock@npm:^11.9.1": + version: 11.9.1 + resolution: "nock@npm:11.9.1" + dependencies: + debug: ^4.1.0 + json-stringify-safe: ^5.0.1 + lodash: ^4.17.13 + mkdirp: ^0.5.0 + propagate: ^2.0.0 + checksum: 4cbbe7ee50d7a1514c60dfdbd40e10b9ec51035b8f0282dbb1bdd795ae2dd6d8612713b5edcf7fb1034f2d6b4449f672be71880702f1f5d36e06b0e718731ffc + languageName: node + linkType: hard + +"nock@npm:^13.1.1": + version: 13.1.1 + resolution: "nock@npm:13.1.1" + dependencies: + debug: ^4.1.0 + json-stringify-safe: ^5.0.1 + lodash.set: ^4.3.2 + propagate: ^2.0.0 + checksum: fa118c2c62a432b4665fa2a8fe549959ba41666bebf5939873a0fbc3a860310580272de74b3ea9538758a7f08dddd807edf35f162854763a0056f2ed892b210f + languageName: node + linkType: hard + "node-fetch@npm:2.6.1, node-fetch@npm:^2.6.0": version: 2.6.1 resolution: "node-fetch@npm:2.6.1" @@ -6845,7 +7270,7 @@ fsevents@~2.3.1: languageName: node linkType: hard -"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": +"object-assign@npm:^4.1.0": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: 66cf021898fc1b13ea573ea8635fbd5a76533f50cecbc2fcd5eee1e8029af41bcebe7023788b6d0e06cbe4401ecea075d972f78ec74467cdc571a0f1a4d1a081 @@ -7322,16 +7747,6 @@ fsevents@~2.3.1: languageName: node linkType: hard -"path@npm:^0.12.7": - version: 0.12.7 - resolution: "path@npm:0.12.7" - dependencies: - process: ^0.11.1 - util: ^0.10.3 - checksum: 0e2d3342ca6f91aba8e514919cae8a08ad12071297a3a99da6e3ea493f5296d9bb323ca9bece4d035fc280e91b701a740ce1e48ff65802004deaaae2f2cd623e - languageName: node - linkType: hard - "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0" @@ -7504,13 +7919,6 @@ fsevents@~2.3.1: languageName: node linkType: hard -"process@npm:^0.11.1": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: ed93a85e9185b40fb01788c588a87c1a9da0eb925ef7cebebbe1b8bbf0eba1802130366603a29e3b689c116969d4fe018de6aed3474bbeb5aefb3716b85d6449 - languageName: node - linkType: hard - "progress@npm:^2.0.0": version: 2.0.3 resolution: "progress@npm:2.0.3" @@ -7528,6 +7936,13 @@ fsevents@~2.3.1: languageName: node linkType: hard +"propagate@npm:^2.0.0": + version: 2.0.1 + resolution: "propagate@npm:2.0.1" + checksum: dd67518106bb3f1ee230b7e246a18285467e010b89703844f120c38e1462b52d79bddd4be0f8db080377a3d55218209674eae9eb672c29a033bf6b44cfc42828 + languageName: node + linkType: hard + "psl@npm:^1.1.28": version: 1.8.0 resolution: "psl@npm:1.8.0" @@ -7570,6 +7985,13 @@ fsevents@~2.3.1: languageName: node linkType: hard +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 6235036be3aedff7919dfc06b23f759264915c5794c6352d52a917401d40d2b9bb43b1d82e4e5be983e469aa320e06992aefc218192f6fa1d9eba4f54dc4786c + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.2 resolution: "queue-microtask@npm:1.2.2" @@ -7740,6 +8162,15 @@ fsevents@~2.3.1: languageName: node linkType: hard +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: ^2.2.1 + checksum: 7da2fe8d5abf17ae0bf97a052718e16d29fa185f3e461153035728d93642326ae8e44c17b9a9b3a5fa616dff160e96be3184e0323efaac7211f80c0aab5f622b + languageName: node + linkType: hard + "realpath-native@npm:^1.0.0": version: 1.1.0 resolution: "realpath-native@npm:1.1.0" @@ -7784,7 +8215,7 @@ fsevents@~2.3.1: languageName: node linkType: hard -"regexpp@npm:^3.0.0, regexpp@npm:^3.1.0": +"regexpp@npm:^3.1.0": version: 3.1.0 resolution: "regexpp@npm:3.1.0" checksum: 69d0ce6b449cf35d3732d6341a1e70850360ffc619f8eef10629871c462e614853fffb80d3f00fc17cd0bb5b8f34b0cde5be4b434e72c0eb3fbba2360c8b5ac4 @@ -7861,7 +8292,7 @@ fsevents@~2.3.1: languageName: node linkType: hard -"request@npm:^2.87.0, request@npm:^2.88.0, request@npm:^2.88.2": +"request@npm:^2.87.0, request@npm:^2.88.2": version: 2.88.2 resolution: "request@npm:2.88.2" dependencies: @@ -7910,6 +8341,13 @@ fsevents@~2.3.1: languageName: node linkType: hard +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: 0db25fb2ac9b4f2345a350846b7ba99d1f25a6686b1728246d14f05450c8f2fc066bdfae4561b4be2627c184a030a27e17268cfefdf46836e271db13734bc49e + languageName: node + linkType: hard + "resolve-cwd@npm:^2.0.0": version: 2.0.0 resolution: "resolve-cwd@npm:2.0.0" @@ -8205,6 +8643,17 @@ resolve@1.1.7: languageName: node linkType: hard +"semver@npm:^7.3.5": + version: 7.3.5 + resolution: "semver@npm:7.3.5" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: c53624ddf4b9779bcbf55a1eb8b37074cc44bfeca416f3cc263429408202a8a3c59b00eef8c647d697303bc39b95c022a5c61959221d3814bfb1270ff7c14986 + languageName: node + linkType: hard + "serialize-javascript@npm:5.0.1": version: 5.0.1 resolution: "serialize-javascript@npm:5.0.1" @@ -8214,6 +8663,15 @@ resolve@1.1.7: languageName: node linkType: hard +"serialize-javascript@npm:6.0.0": + version: 6.0.0 + resolution: "serialize-javascript@npm:6.0.0" + dependencies: + randombytes: ^2.1.0 + checksum: e086a40bfcb9d341c37a4e52bc200d143b54397cf1bb486f38cd40cdbaac4b82437d981472df94dbcff6334269e0d82daffbd6b75dd50fe54a5a5da2273f2360 + languageName: node + linkType: hard + "set-blocking@npm:^2.0.0, set-blocking@npm:~2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -8445,7 +8903,7 @@ resolve@1.1.7: languageName: node linkType: hard -"source-map-support@npm:^0.5.6": +"source-map-support@npm:^0.5.17, source-map-support@npm:^0.5.6": version: 0.5.19 resolution: "source-map-support@npm:0.5.19" dependencies: @@ -8835,6 +9293,20 @@ resolve@1.1.7: languageName: node linkType: hard +"table@npm:^6.0.9": + version: 6.7.1 + resolution: "table@npm:6.7.1" + dependencies: + ajv: ^8.0.1 + lodash.clonedeep: ^4.5.0 + lodash.truncate: ^4.4.2 + slice-ansi: ^4.0.0 + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + checksum: 66107046b7226051552d53c1260facfed03f4050373d3888620af7b1353f6a5429d9a4a5fb796c56c29b9dd5ffca7b661a815f42ec392cb5956432585578772a + languageName: node + linkType: hard + "tar@npm:^6.0.2": version: 6.1.0 resolution: "tar@npm:6.1.0" @@ -9029,14 +9501,55 @@ resolve@1.1.7: languageName: node linkType: hard -"tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.2": +"ts-node@npm:^10.0.0": + version: 10.0.0 + resolution: "ts-node@npm:10.0.0" + dependencies: + "@tsconfig/node10": ^1.0.7 + "@tsconfig/node12": ^1.0.7 + "@tsconfig/node14": ^1.0.0 + "@tsconfig/node16": ^1.0.1 + arg: ^4.1.0 + create-require: ^1.1.0 + diff: ^4.0.1 + make-error: ^1.1.1 + source-map-support: ^0.5.17 + yn: 3.1.1 + peerDependencies: + "@swc/core": ">=1.2.45" + "@swc/wasm": ">=1.2.45" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: dc461e2b9b931b00ff065530a0247f86da1d035e72a7ef6d7ed072dd8e6b236d1879f113dcc73a354d240c81b6b845445c3d32b16eeb68022ed27ab6d130c049 + languageName: node + linkType: hard + +"tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.2, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: f44fe7f216946b17d3e3074df3746372703cf24e9127b4c045511456e8e4bf25515fb0a1bb3937676cc305651c5d4fcb6377b0588a4c6a957e748c4c28905d17 languageName: node linkType: hard -"tsutils@npm:^3.17.1": +"tslib@npm:^2.0.0, tslib@npm:^2.2.0": + version: 2.3.0 + resolution: "tslib@npm:2.3.0" + checksum: 7b4fc9feff0f704743c3760f5d8d708f6417fac6458159e63df3a6b1100f0736e3b99edb9fe370f274ad15160a1f49ff05cb49402534c818ff552c48e38c3e6e + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0" dependencies: @@ -9102,6 +9615,13 @@ resolve@1.1.7: languageName: node linkType: hard +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 1f887bc6150e632fb772fd28e33c22a4ab036c6f484fa9ac2e2115f6cae9d62bba7ca0368e3332b539d85bd2c8391c7bff22ad410abcbc9ab3774d61e250b210 + languageName: node + linkType: hard + "type-fest@npm:^0.6.0": version: 0.6.0 resolution: "type-fest@npm:0.6.0" @@ -9257,6 +9777,16 @@ typescript@^4.0.5: languageName: node linkType: hard +"url-parse@npm:^1.5.1": + version: 1.5.1 + resolution: "url-parse@npm:1.5.1" + dependencies: + querystringify: ^2.1.1 + requires-port: ^1.0.0 + checksum: d8342b597bf1760c4b9e3c78458524d783fa1c901658f3db8b576fc73451c89e6686d218ddca4845b082a63b23971b4a8b916cccc91f4156cc9f97ffdabe0079 + languageName: node + linkType: hard + "url-to-options@npm:^1.0.1": version: 1.0.1 resolution: "url-to-options@npm:1.0.1" @@ -9291,24 +9821,6 @@ typescript@^4.0.5: languageName: node linkType: hard -"util@npm:0.10.3": - version: 0.10.3 - resolution: "util@npm:0.10.3" - dependencies: - inherits: 2.0.1 - checksum: 05c1a09f3af90250365386331b3986c0753af1900f20279f9302409b27e9d9d3c03a9cf4efba48aae859d04348ebfe56d68f89688113f61171da9c4fbe6baaca - languageName: node - linkType: hard - -"util@npm:^0.10.3": - version: 0.10.4 - resolution: "util@npm:0.10.4" - dependencies: - inherits: 2.0.3 - checksum: 6682ea8239076243495c45e81f19c2c002e02805de4de08554dc815500805923f27f504ec1a9c7599d420b62bf7452efbab6fa078219d529188b0ca830f142a5 - languageName: node - linkType: hard - "uuid@npm:^3.1.0, uuid@npm:^3.2.1, uuid@npm:^3.3.2": version: 3.4.0 resolution: "uuid@npm:3.4.0" @@ -9558,6 +10070,13 @@ typescript@^4.0.5: languageName: node linkType: hard +"workerpool@npm:6.1.5": + version: 6.1.5 + resolution: "workerpool@npm:6.1.5" + checksum: aaf220c463d32c146887d28b45f0291e803c8c41d77a559ff525347f178b3b53b3b029a240bb92529a72771093f7cf5afdc81a28396ecc2f2f3179ad31d03456 + languageName: node + linkType: hard + "wrap-ansi@npm:^2.0.0": version: 2.1.0 resolution: "wrap-ansi@npm:2.1.0" @@ -9960,9 +10479,23 @@ typescript@^4.0.5: languageName: node linkType: hard +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: bff63b80568d80c711670935427494dde47cdf97e8b04196b140ce0af519c81c5ee857eddad0caa8b422dd65aea0157bbfaacbb1546bebba623f0f383d5d9ae5 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" checksum: 096c3b40beb2804659539be1605a35c58eb0c85285f94b77b3e924f42ee265c1a40bf9f4153770039517146b469a964d51742395f35ca8135fc9f7e4982b785d languageName: node linkType: hard + +"zod@npm:~1.11.17": + version: 1.11.17 + resolution: "zod@npm:1.11.17" + checksum: 27e8799fa87ea4478a3155f40c39c4bef331b3c3273f00252ca646879c92eef54a5c36dcf31b6cd29bfd723fa4c1502e24d59e252d657183eab1252f273dfd7f + languageName: node + linkType: hard