From ce7393d50f3907c3110b3be729bcf7c0d316ebec Mon Sep 17 00:00:00 2001 From: hond Date: Tue, 13 Oct 2020 15:41:04 +0800 Subject: [PATCH 01/10] init --- Composer/packages/adaptive-flow/package.json | 4 +- Composer/packages/lib/indexers/package.json | 4 +- .../language-generation/package.json | 6 +- Composer/plugins/azurePublish/yarn.lock | 12 +-- Composer/yarn.lock | 75 +++++++------------ 5 files changed, 38 insertions(+), 63 deletions(-) diff --git a/Composer/packages/adaptive-flow/package.json b/Composer/packages/adaptive-flow/package.json index adde0e7f0e..01c213b85c 100644 --- a/Composer/packages/adaptive-flow/package.json +++ b/Composer/packages/adaptive-flow/package.json @@ -28,8 +28,8 @@ "@bfc/ui-shared": "*", "@emotion/core": "^10.0.27", "@emotion/styled": "^10.0.27", - "adaptive-expressions": "4.10.0-preview-147186", - "botbuilder-lg": "^4.10.0-preview-150886", + "adaptive-expressions": "4.11.0-dev.20201010.6e4a99e", + "botbuilder-lg": "4.11.0-dev.20201010.6e4a99e", "create-react-class": "^15.6.3", "d3": "^5.9.1", "dagre": "^0.8.4", diff --git a/Composer/packages/lib/indexers/package.json b/Composer/packages/lib/indexers/package.json index 2802f9f4c1..09fe7f74a8 100644 --- a/Composer/packages/lib/indexers/package.json +++ b/Composer/packages/lib/indexers/package.json @@ -27,8 +27,8 @@ }, "dependencies": { "@microsoft/bf-lu": "^4.11.0-dev.20201005.7e5e1b8", - "adaptive-expressions": "4.10.0-preview-147186", - "botbuilder-lg": "^4.10.0-preview-150886", + "adaptive-expressions": "4.11.0-dev.20201010.6e4a99e", + "botbuilder-lg": "4.11.0-dev.20201010.6e4a99e", "lodash": "^4.17.19" }, "peerDependencies": { diff --git a/Composer/packages/tools/language-servers/language-generation/package.json b/Composer/packages/tools/language-servers/language-generation/package.json index cb0876ffa9..0909da7654 100644 --- a/Composer/packages/tools/language-servers/language-generation/package.json +++ b/Composer/packages/tools/language-servers/language-generation/package.json @@ -15,10 +15,10 @@ "lint:typecheck": "tsc --noEmit" }, "dependencies": { + "@bfc/built-in-functions": "*", "@bfc/indexers": "*", - "botbuilder-lg": "^4.10.0-preview-150886", - "vscode-languageserver": "^5.3.0-next", - "@bfc/built-in-functions": "*" + "botbuilder-lg": "4.11.0-dev.20201010.6e4a99e", + "vscode-languageserver": "^5.3.0-next" }, "devDependencies": { "@bfc/test-utils": "*", diff --git a/Composer/plugins/azurePublish/yarn.lock b/Composer/plugins/azurePublish/yarn.lock index 4045eb47c3..65e47749d4 100644 --- a/Composer/plugins/azurePublish/yarn.lock +++ b/Composer/plugins/azurePublish/yarn.lock @@ -170,7 +170,7 @@ dependencies: "@microsoft/bf-lu" "^4.11.0-dev.20201005.7e5e1b8" adaptive-expressions "4.10.0-preview-147186" - botbuilder-lg "^4.10.0-preview-150886" + botbuilder-lg "4.11.0-dev.20201010.6e4a99e" lodash "^4.17.19" "@bfc/shared@../../packages/lib/shared": @@ -831,12 +831,12 @@ bluebird@^3.5.0: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -botbuilder-lg@^4.10.0-preview-150886: - version "4.10.1" - resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/botbuilder-lg/-/botbuilder-lg-4.10.1.tgz#fb74d81fa32fb9bc07bfe58aea58d06052681134" - integrity sha1-+3TYH6MvubwHv+WK6ljQYFJoETQ= +botbuilder-lg@4.11.0-dev.20201010.6e4a99e: + version "4.11.0-dev.20201010.6e4a99e" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/botbuilder-lg/-/botbuilder-lg-4.11.0-dev.20201010.6e4a99e.tgz#6201f1fb29756cd968589fcfd7980016b1f33369" + integrity sha1-YgHx+yl1bNloWJ/P15gAFrHzM2k= dependencies: - adaptive-expressions "4.10.1" + adaptive-expressions "4.11.0-dev.20201010.6e4a99e" antlr4ts "0.5.0-alpha.3" lodash "^4.17.19" path "^0.12.7" diff --git a/Composer/yarn.lock b/Composer/yarn.lock index 9b25a4958d..9da153992c 100644 --- a/Composer/yarn.lock +++ b/Composer/yarn.lock @@ -882,7 +882,7 @@ "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.10.5", "@babel/parser@^7.11.3", "@babel/parser@^7.11.5", "@babel/parser@^7.2.2", "@babel/parser@^7.3.4", "@babel/parser@^7.4.0", "@babel/parser@^7.7.0", "@babel/parser@^7.7.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0", "@babel/parser@^7.9.6": version "7.11.5" - resolved "https://botbuilder.myget.org/F/botbuilder-declarative/npm/@babel/parser/-/@babel/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/@babel/parser/-/@babel/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" integrity sha1-x/9jA99xCA7HpPW4wAPFjxz1EDc= "@babel/plugin-proposal-async-generator-functions@^7.2.0": @@ -3726,13 +3726,6 @@ dependencies: "@types/node" "*" -"@types/moment-timezone@^0.5.12": - version "0.5.12" - resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/@types/moment-timezone/-/@types/moment-timezone-0.5.12.tgz#0fb680c03db194fe8ff4551eaeb1eec8d3d80e9f" - integrity sha1-D7aAwD2xlP6P9FUerrHuyNPYDp8= - dependencies: - moment ">=2.14.0" - "@types/moment-timezone@^0.5.13": version "0.5.13" resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/@types/moment-timezone/-/@types/moment-timezone-0.5.13.tgz#0317ccc91eb4c7f4901704166166395c39276528" @@ -4513,28 +4506,10 @@ acorn@^7.4.0: resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha1-4a1IbmxUUBY0xsOXxcEh2qODYHw= -adaptive-expressions@4.10.0-preview-147186: - version "4.10.0-preview-147186" - resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/adaptive-expressions/-/adaptive-expressions-4.10.0-preview-147186.tgz#4468fcb00a27d955d4f1fd46566fda5a46baef87" - dependencies: - "@microsoft/recognizers-text-data-types-timex-expression" "1.1.4" - "@types/atob-lite" "^2.0.0" - "@types/lru-cache" "^5.1.0" - "@types/moment-timezone" "^0.5.12" - "@types/xmldom" "^0.1.29" - antlr4ts "0.5.0-alpha.3" - atob-lite "^2.0.0" - big-integer "^1.6.48" - jspath "^0.4.0" - lodash "^4.17.15" - lru-cache "^5.1.1" - moment "^2.25.1" - moment-timezone "^0.5.28" - -adaptive-expressions@4.10.0-preview-150886: - version "4.10.0-preview-150886" - resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/adaptive-expressions/-/adaptive-expressions-4.10.0-preview-150886.tgz#27d147b8b9389318e1b608601d83f5003701cf7b" - integrity sha1-J9FHuLk4kxjhtghgHYP1ADcBz3s= +adaptive-expressions@4.11.0-dev.20200929.ca9de94, adaptive-expressions@^4.11.0-dev.20200916.f8fef0f: + version "4.11.0-dev.20200929.ca9de94" + resolved "https://registry.yarnpkg.com/adaptive-expressions/-/adaptive-expressions-4.11.0-dev.20200929.ca9de94.tgz#305c8462e7e0c329f55aa8cd2b2496bb81c2490c" + integrity sha512-xq5QG19kIPio6piHEA4aPkqqi2ejYoYCBEovF55gJXaW5jKG+Q7bao3yqb2VTq9vISEyIq9VabmIlHzRQrOXyg== dependencies: "@microsoft/recognizers-text-data-types-timex-expression" "1.1.4" "@types/atob-lite" "^2.0.0" @@ -4550,10 +4525,10 @@ adaptive-expressions@4.10.0-preview-150886: moment "^2.25.1" moment-timezone "^0.5.28" -adaptive-expressions@4.11.0-dev.20200929.ca9de94, adaptive-expressions@^4.11.0-dev.20200916.f8fef0f: - version "4.11.0-dev.20200929.ca9de94" - resolved "https://registry.yarnpkg.com/adaptive-expressions/-/adaptive-expressions-4.11.0-dev.20200929.ca9de94.tgz#305c8462e7e0c329f55aa8cd2b2496bb81c2490c" - integrity sha512-xq5QG19kIPio6piHEA4aPkqqi2ejYoYCBEovF55gJXaW5jKG+Q7bao3yqb2VTq9vISEyIq9VabmIlHzRQrOXyg== +adaptive-expressions@4.11.0-dev.20201010.6e4a99e: + version "4.11.0-dev.20201010.6e4a99e" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/adaptive-expressions/-/adaptive-expressions-4.11.0-dev.20201010.6e4a99e.tgz#493292c1619ef243901e041849b9ed42af9fb6fd" + integrity sha1-STKSwWGe8kOQHgQYSbntQq+ftv0= dependencies: "@microsoft/recognizers-text-data-types-timex-expression" "1.1.4" "@types/atob-lite" "^2.0.0" @@ -5575,8 +5550,8 @@ binary-extensions@^2.0.0: bl@^2.2.1, bl@^4.0.3: version "2.2.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" - integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" + integrity sha1-jBGntzBlXF1WiYzchxIk9A/ZAdU= dependencies: readable-stream "^2.3.5" safe-buffer "^5.1.1" @@ -5672,12 +5647,12 @@ boolean@^3.0.0: resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.1.tgz#35ecf2b4a2ee191b0b44986f14eb5f052a5cbb4f" integrity sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA== -botbuilder-lg@^4.10.0-preview-150886: - version "4.10.0-preview-150886" - resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/botbuilder-lg/-/botbuilder-lg-4.10.0-preview-150886.tgz#bbc91011c1c3be3a343acfdb3168f152d71fadc1" - integrity sha1-u8kQEcHDvjo0Os/bMWjxUtcfrcE= +botbuilder-lg@4.11.0-dev.20201010.6e4a99e: + version "4.11.0-dev.20201010.6e4a99e" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/botbuilder-lg/-/botbuilder-lg-4.11.0-dev.20201010.6e4a99e.tgz#6201f1fb29756cd968589fcfd7980016b1f33369" + integrity sha1-YgHx+yl1bNloWJ/P15gAFrHzM2k= dependencies: - adaptive-expressions "4.10.0-preview-150886" + adaptive-expressions "4.11.0-dev.20201010.6e4a99e" antlr4ts "0.5.0-alpha.3" lodash "^4.17.19" path "^0.12.7" @@ -8621,7 +8596,7 @@ elegant-spinner@^1.0.1: elliptic@^6.0.0, elliptic@^6.5.3: version "6.5.3" - resolved "https://botbuilder.myget.org/F/botbuilder-declarative/npm/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" integrity sha1-y1nrLv2vc6C9eMzXAVpirW4Pk9Y= dependencies: bn.js "^4.4.0" @@ -12714,7 +12689,7 @@ killable@^1.0.1: kind-of@^2.0.1, kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0, kind-of@^4.0.0, kind-of@^5.0.0, kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" - resolved "https://botbuilder.myget.org/F/botbuilder-declarative/npm/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0= kleur@^3.0.2: @@ -13129,7 +13104,7 @@ lodash.uniq@^4.5.0: "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.20" - resolved "https://botbuilder.myget.org/F/botbuilder-declarative/npm/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI= log-driver@^1.2.7: @@ -13657,7 +13632,7 @@ mixin-object@^2.0.1: mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.2, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^1.0.3, mkdirp@~0.5.1: version "0.5.5" - resolved "https://botbuilder.myget.org/F/botbuilder-declarative/npm/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8= dependencies: minimist "^1.2.5" @@ -16339,7 +16314,7 @@ read-text-file@^1.1.0: readable-stream@^2.3.5: version "2.3.7" - resolved "https://botbuilder.myget.org/F/botbuilder-declarative/npm/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c= dependencies: core-util-is "~1.0.0" @@ -17152,7 +17127,7 @@ select-hose@^2.0.0: selfsigned@1.10.8, selfsigned@^1.10.7: version "1.10.8" - resolved "https://botbuilder.myget.org/F/botbuilder-declarative/npm/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" integrity sha1-DRcgi30Swz+OrIXEGDXyf8PYGjA= dependencies: node-forge "^0.10.0" @@ -17296,7 +17271,7 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: set-value@^0.4.3, set-value@^2.0.0, set-value@^3.0.2: version "3.0.2" - resolved "https://botbuilder.myget.org/F/botbuilder-declarative/npm/set-value/-/set-value-3.0.2.tgz#74e8ecd023c33d0f77199d415409a40f21e61b90" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/set-value/-/set-value-3.0.2.tgz#74e8ecd023c33d0f77199d415409a40f21e61b90" integrity sha1-dOjs0CPDPQ93GZ1BVAmkDyHmG5A= dependencies: is-plain-object "^2.0.4" @@ -18319,8 +18294,8 @@ terminal-link@^2.0.0: terser-webpack-plugin@2.3.7, terser-webpack-plugin@^1.4.3, terser-webpack-plugin@^2.3.7: version "2.3.8" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" - integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" + integrity sha1-iUdkoZsHQ/L3BOfCqEjFKDppZyQ= dependencies: cacache "^13.0.1" find-cache-dir "^3.3.1" From da20b6115fa25ebd64ca3ea8bbcb5201af9139a6 Mon Sep 17 00:00:00 2001 From: hond Date: Tue, 13 Oct 2020 18:12:33 +0800 Subject: [PATCH 02/10] update LG library --- .../packages/client/src/hooks/useResolver.ts | 4 +- .../parsers/workers/lgParser.worker.ts | 6 +- Composer/packages/lib/indexers/src/index.ts | 11 ++- .../packages/lib/indexers/src/utils/lgUtil.ts | 8 +- .../lib/shared/src/resolverFactory.ts | 50 +++++++++-- .../packages/server/src/services/project.ts | 11 +-- .../language-generation/src/LGServer.ts | 17 ++-- .../language-generation/src/lgParser.ts | 10 +-- .../language-generation/src/lgWorker.ts | 4 +- .../language-understanding/src/LUServer.ts | 4 +- .../language-understanding/src/utils.ts | 2 +- Composer/packages/types/src/indexers.ts | 4 - Composer/plugins/azurePublish/yarn.lock | 84 +++++++++++++------ 13 files changed, 142 insertions(+), 73 deletions(-) diff --git a/Composer/packages/client/src/hooks/useResolver.ts b/Composer/packages/client/src/hooks/useResolver.ts index 48d4dd35cb..7637ceb894 100644 --- a/Composer/packages/client/src/hooks/useResolver.ts +++ b/Composer/packages/client/src/hooks/useResolver.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { useRef } from 'react'; -import { importResolverGenerator } from '@bfc/shared'; +import { lgImportResolverGenerator } from '@bfc/shared'; import { useRecoilValue } from 'recoil'; import { dialogsState, luFilesState, lgFilesState, localeState, qnaFilesState } from '../recoilModel'; @@ -28,7 +28,7 @@ export const useResolvers = (projectId: string) => { const dialogsRef = useRef(dialogs); dialogsRef.current = dialogs; - const lgImportresolver = () => importResolverGenerator(lgFilesRef.current, '.lg'); + const lgImportresolver = () => lgImportResolverGenerator(lgFilesRef.current, '.lg'); const lgFileResolver = (id: string) => { const fileId = id.includes('.') ? id : `${id}.${localeRef.current}`; diff --git a/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts b/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts index 169e3949e2..190a573e1d 100644 --- a/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts +++ b/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { lgUtil } from '@bfc/indexers'; -import { importResolverGenerator, LgFile } from '@bfc/shared'; +import { lgImportResolverGenerator, LgFile } from '@bfc/shared'; import { LgActionType, @@ -91,8 +91,8 @@ type LgMessageEvent = type LgResources = Map; -const lgFileResolver = (lgFiles) => { - return importResolverGenerator(lgFiles, '.lg'); +const lgFileResolver = (lgFiles: LgResources[]) => { + return lgImportResolverGenerator(lgFiles, '.lg'); }; export class LgCache { diff --git a/Composer/packages/lib/indexers/src/index.ts b/Composer/packages/lib/indexers/src/index.ts index 322006f90d..1836213308 100644 --- a/Composer/packages/lib/indexers/src/index.ts +++ b/Composer/packages/lib/indexers/src/index.ts @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { DialogSetting, FileInfo, importResolverGenerator } from '@bfc/shared'; +import { DialogSetting, FileInfo, lgImportResolverGenerator } from '@bfc/shared'; import { dialogIndexer } from './dialogIndexer'; import { dialogSchemaIndexer } from './dialogSchemaIndexer'; @@ -12,6 +12,7 @@ import { skillManifestIndexer } from './skillManifestIndexer'; import { botProjectSpaceIndexer } from './botProjectSpaceIndexer'; import { FileExtensions } from './utils/fileExtensions'; import { getExtension, getBaseName } from './utils/help'; +import { LGResource } from 'botbuilder-lg'; class Indexer { private classifyFile(files: FileInfo[]) { @@ -37,13 +38,11 @@ class Indexer { private getLgImportResolver = (files: FileInfo[], locale: string) => { const lgFiles = files.map(({ name, content }) => { - return { - id: getBaseName(name, '.lg'), - content, - }; + const id = getBaseName(name, '.lg'); + return new LGResource(id, id, content); }); - return importResolverGenerator(lgFiles, '.lg', locale); + return lgImportResolverGenerator(lgFiles, '.lg', locale); }; public index(files: FileInfo[], botName: string, locale: string, skillContent: any, settings: DialogSetting) { diff --git a/Composer/packages/lib/indexers/src/utils/lgUtil.ts b/Composer/packages/lib/indexers/src/utils/lgUtil.ts index 7b6754cea2..391de36ec1 100644 --- a/Composer/packages/lib/indexers/src/utils/lgUtil.ts +++ b/Composer/packages/lib/indexers/src/utils/lgUtil.ts @@ -7,8 +7,8 @@ * */ -import { Templates, Template, Diagnostic as LGDiagnostic, ImportResolverDelegate } from 'botbuilder-lg'; -import { LgTemplate, importResolverGenerator, TextFile, Diagnostic, Position, Range, LgFile } from '@bfc/shared'; +import { Templates, Template, Diagnostic as LGDiagnostic, LGResource, ImportResolverDelegate } from 'botbuilder-lg'; +import { LgTemplate, lgImportResolverGenerator, Diagnostic, Position, Range, LgFile } from '@bfc/shared'; import formatMessage from 'format-message'; import isEmpty from 'lodash/isEmpty'; import { SourceRange } from 'botbuilder-lg/lib/sourceRange'; @@ -259,8 +259,8 @@ export function extractOptionByKey(nameOfKey: string, options: string[]): string return result; } -export function parse(id: string, content: string, lgFiles: TextFile[]): LgFile { - const lgImportResolver = importResolverGenerator(lgFiles, '.lg'); +export function parse(id: string, content: string, lgFiles: LGResource[]): LgFile { + const lgImportResolver = lgImportResolverGenerator(lgFiles, '.lg'); return lgIndexer.parse(content, id, lgImportResolver); } diff --git a/Composer/packages/lib/shared/src/resolverFactory.ts b/Composer/packages/lib/shared/src/resolverFactory.ts index 105b15a8bc..bdff5ef8c7 100644 --- a/Composer/packages/lib/shared/src/resolverFactory.ts +++ b/Composer/packages/lib/shared/src/resolverFactory.ts @@ -2,9 +2,10 @@ // Licensed under the MIT License. import formatMessage from 'format-message'; +import { LGResource, ImportResolverDelegate } from 'botbuilder-lg'; -export declare type ResolverResource = { content: string; id: string }; -export declare type ImportResolverDelegate = (source: string, resourceId: string) => ResolverResource; +export declare type LUResolverResource = { content: string; id: string }; +export declare type LUImportResolverDelegate = (source: string, resourceId: string) => LUResolverResource; function getFileName(path: string): string { return path.split('/').pop() || path; @@ -16,11 +17,11 @@ function getFileName(path: string): string { * @param ext resource extension, e.g. .lg, .lu * @param defaultLocale complete resource id = [id].[locale][ext] */ -export function importResolverGenerator( - resources: ResolverResource[], +export function luImportResolverGenerator( + resources: LUResolverResource[], ext = '', defaultLocale = 'en-us' -): ImportResolverDelegate { +): LUImportResolverDelegate { /** * @param source current file id * @param resourceId imported file id @@ -51,3 +52,42 @@ export function importResolverGenerator( }; }; } + +/** + * + * @param resources resources feed to resolver + * @param ext resource extension, e.g. .lg, .lu + * @param defaultLocale complete resource id = [id].[locale][ext] + */ +export function lgImportResolverGenerator( + resources: LGResource[], + ext = '', + defaultLocale = 'en-us' +): ImportResolverDelegate { + /** + * @param source current file id + * @param resourceId imported file id + * for example: + * in todosample.en-us.lg: + * [import](../common/common.lg) + * + * would resolve to common.en-us.lg || common.lg + * + * lgResource = todosample || todosample.en-us || todosample.en-us.lg || todosample.lg || . + * resourceId = common || common.lg || ../common/common.lg + * + */ + return (lgResource: LGResource, resourceId: string) => { + // eslint-disable-next-line security/detect-non-literal-regexp + const extReg = new RegExp(ext + '$'); + const sourceId = getFileName(lgResource.id).replace(extReg, ''); + const locale = /\w\.\w/.test(sourceId) ? sourceId.split('.').pop() : defaultLocale; + const targetId = getFileName(resourceId).replace(extReg, ''); + + const targetFile = + resources.find(({ id }) => id === `${targetId}.${locale}`) || resources.find(({ id }) => id === targetId); + + if (!targetFile) throw new Error(formatMessage(`File not found`)); + return new LGResource(resourceId, resourceId, targetFile.content); + }; +} diff --git a/Composer/packages/server/src/services/project.ts b/Composer/packages/server/src/services/project.ts index 31d0eaac8e..12d60ddfe8 100644 --- a/Composer/packages/server/src/services/project.ts +++ b/Composer/packages/server/src/services/project.ts @@ -4,7 +4,7 @@ import merge from 'lodash/merge'; import find from 'lodash/find'; import flatten from 'lodash/flatten'; -import { importResolverGenerator, ResolverResource } from '@bfc/shared'; +import { luImportResolverGenerator, LUResolverResource } from '@bfc/shared'; import extractMemoryPaths from '@bfc/indexers/lib/dialogUtils/extractMemoryPaths'; import { UserIdentity } from '@bfc/extension'; @@ -35,18 +35,19 @@ export class BotProjectService { } } - public static getLgResources(projectId?: string): ResolverResource[] { + public static getLgResources(projectId?: string): LGResource[] { BotProjectService.initialize(); const project = BotProjectService.getIndexedProjectById(projectId); if (!project) throw new Error('project not found'); const resources = project.lgFiles.map((file) => { const { name, content } = file; - return { id: Path.basename(name, '.lg'), content }; + const id = Path.basename(name, '.lg'); + return new LGResource(id, id, content); }); return resources; } - public static luImportResolver(source: string, id: string, projectId: string): ResolverResource { + public static luImportResolver(source: string, id: string, projectId: string): LUResolverResource { BotProjectService.initialize(); const project = BotProjectService.getIndexedProjectById(projectId); if (!project) throw new Error('project not found'); @@ -54,7 +55,7 @@ export class BotProjectService { const { name, content } = file; return { id: Path.basename(name, '.lu'), content }; }); - const resolver = importResolverGenerator(resource, '.lu'); + const resolver = luImportResolverGenerator(resource, '.lu'); return resolver(source, id); } diff --git a/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts b/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts index d256dc46db..451187a0b2 100644 --- a/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts +++ b/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts @@ -16,7 +16,7 @@ import { import { TextDocumentPositionParams, DocumentOnTypeFormattingParams } from 'vscode-languageserver-protocol'; import get from 'lodash/get'; import { filterTemplateDiagnostics, isValid, lgUtil } from '@bfc/indexers'; -import { MemoryResolver, ResolverResource, LgFile, importResolverGenerator } from '@bfc/shared'; +import { MemoryResolver, LgFile, lgImportResolverGenerator } from '@bfc/shared'; import { buildInFunctionsMap } from '@bfc/built-in-functions'; import { LgParser } from './lgParser'; @@ -31,6 +31,7 @@ import { cardPropDict, cardPropPossibleValueType, } from './utils'; +import { LGResource } from 'botbuilder-lg'; // define init methods call from client const InitializeDocumentsMethodName = 'initializeDocuments'; @@ -47,7 +48,7 @@ export class LGServer { constructor( protected readonly connection: IConnection, - protected readonly getLgResources: (projectId?: string) => ResolverResource[], + protected readonly getLgResources: (projectId?: string) => LGResource[], protected readonly memoryResolver?: MemoryResolver ) { this.documents.listen(this.connection); @@ -161,17 +162,17 @@ export class LGServer { const index = (): LgFile => { const content = this.documents.get(uri)?.getText() || ''; // if inline mode, composite local with server resolved file. - const lgTextFiles = projectId ? this.getLgResources(projectId) : []; + const lgResources = projectId ? this.getLgResources(projectId) : []; if (fileId && templateId) { - const lgTextFile = lgTextFiles.find((item) => item.id === fileId); - if (lgTextFile) { - const lgFile = lgUtil.parse(lgTextFile.id, lgTextFile.content, lgTextFiles); - const lgResolver = importResolverGenerator(lgTextFiles, '.lg'); + const lgResource = lgResources.find((item) => item.id === fileId); + if (lgResource) { + const lgFile = lgUtil.parse(lgResource.id, lgResource.content, lgResources); + const lgResolver = lgImportResolverGenerator(lgResources, '.lg'); return lgUtil.updateTemplate(lgFile, templateId, { body: content }, lgResolver); } } - return lgUtil.parse(fileId || uri, content, lgTextFiles); + return lgUtil.parse(fileId || uri, content, lgResources); }; const lgDocument: LGDocument = { uri, diff --git a/Composer/packages/tools/language-servers/language-generation/src/lgParser.ts b/Composer/packages/tools/language-servers/language-generation/src/lgParser.ts index c9d986296e..e4078d95fd 100644 --- a/Composer/packages/tools/language-servers/language-generation/src/lgParser.ts +++ b/Composer/packages/tools/language-servers/language-generation/src/lgParser.ts @@ -4,10 +4,10 @@ import { fork, ChildProcess } from 'child_process'; import path from 'path'; -import { importResolverGenerator } from '@bfc/shared'; -import { ResolverResource } from '@bfc/shared'; +import { lgImportResolverGenerator } from '@bfc/shared'; import uniqueId from 'lodash/uniqueId'; import { lgIndexer } from '@bfc/indexers'; +import { LGResource } from 'botbuilder-lg'; const isTest = process.env?.NODE_ENV === 'test'; export interface WorkerMsg { @@ -17,8 +17,8 @@ export interface WorkerMsg { } class LgParserWithoutWorker { - public async parseText(content: string, id: string, resources: ResolverResource[]) { - const lgImportResolver = importResolverGenerator(resources, '.lg'); + public async parseText(content: string, id: string, resources: LGResource[]) { + const lgImportResolver = lgImportResolverGenerator(resources, '.lg'); return lgIndexer.parse(content, id, lgImportResolver); } } @@ -32,7 +32,7 @@ class LgParserWithWorker { LgParserWithWorker.worker.on('message', this.handleMsg.bind(this)); } - public async parseText(content: string, id: string, resources: ResolverResource[]): Promise { + public async parseText(content: string, id: string, resources: LGResource[]): Promise { const msgId = uniqueId(); const msg = { id: msgId, payload: { content, id, resources } }; return new Promise((resolve, reject) => { diff --git a/Composer/packages/tools/language-servers/language-generation/src/lgWorker.ts b/Composer/packages/tools/language-servers/language-generation/src/lgWorker.ts index ec9d11bb14..fb62ffc83d 100644 --- a/Composer/packages/tools/language-servers/language-generation/src/lgWorker.ts +++ b/Composer/packages/tools/language-servers/language-generation/src/lgWorker.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { importResolverGenerator } from '@bfc/shared'; +import { lgImportResolverGenerator } from '@bfc/shared'; import { lgIndexer } from '@bfc/indexers'; import { WorkerMsg } from './lgParser'; @@ -10,7 +10,7 @@ process.on('message', (message: WorkerMsg) => { const { content, id, resources } = message.payload; try { - const lgImportResolver = importResolverGenerator(resources, '.lg'); + const lgImportResolver = lgImportResolverGenerator(resources, '.lg'); const { templates, allTemplates, diagnostics } = lgIndexer.parse(content, id, lgImportResolver); process.send?.({ id: message.id, payload: { id, content, templates, allTemplates, diagnostics } }); } catch (error) { diff --git a/Composer/packages/tools/language-servers/language-understanding/src/LUServer.ts b/Composer/packages/tools/language-servers/language-understanding/src/LUServer.ts index 691797b5e6..9464da157c 100644 --- a/Composer/packages/tools/language-servers/language-understanding/src/LUServer.ts +++ b/Composer/packages/tools/language-servers/language-understanding/src/LUServer.ts @@ -21,7 +21,7 @@ import { parser } from '@microsoft/bf-lu/lib/parser'; import { EntityTypesObj, LineState } from './entityEnum'; import * as util from './matchingPattern'; -import { ImportResolverDelegate, LUOption, LUDocument, generageDiagnostic, convertDiagnostics } from './utils'; +import { LUImportResolverDelegate, LUOption, LUDocument, generageDiagnostic, convertDiagnostics } from './utils'; // define init methods call from client const LABELEXPERIENCEREQUEST = 'labelingExperienceRequest'; @@ -162,7 +162,7 @@ export class LUServer { const { uri } = document; const { fileId, sectionId, projectId, luFeatures = {} } = luOption || {}; const index = () => { - const importResolver: ImportResolverDelegate = this.getImportResolver(document); + const importResolver: LUImportResolverDelegate = this.getImportResolver(document); let content: string = document.getText(); // if inline mode, composite local with server resolved file. if (this.importResolver && fileId && sectionId) { diff --git a/Composer/packages/tools/language-servers/language-understanding/src/utils.ts b/Composer/packages/tools/language-servers/language-understanding/src/utils.ts index 02f15ec8b1..63f95e46b0 100644 --- a/Composer/packages/tools/language-servers/language-understanding/src/utils.ts +++ b/Composer/packages/tools/language-servers/language-understanding/src/utils.ts @@ -27,7 +27,7 @@ export interface LUDocument { index: () => any; } -export declare type ImportResolverDelegate = ( +export declare type LUImportResolverDelegate = ( source: string, resourceId: string ) => { diff --git a/Composer/packages/types/src/indexers.ts b/Composer/packages/types/src/indexers.ts index f2cf6f1356..e0ccc0b01c 100644 --- a/Composer/packages/types/src/indexers.ts +++ b/Composer/packages/types/src/indexers.ts @@ -153,10 +153,6 @@ export type Skill = { name: string; }; -export type TextFile = { - id: string; - content: string; -}; export type FileResolver = (id: string) => FileInfo | undefined; export type MemoryResolver = (id: string) => string[] | undefined; diff --git a/Composer/plugins/azurePublish/yarn.lock b/Composer/plugins/azurePublish/yarn.lock index 65e47749d4..ca7d1a084c 100644 --- a/Composer/plugins/azurePublish/yarn.lock +++ b/Composer/plugins/azurePublish/yarn.lock @@ -162,14 +162,16 @@ debug "^4.1.1" fs-extra "^9.0.1" globby "^11.0.0" + node-fetch "^2.6.1" passport "^0.4.1" path-to-regexp "^6.1.0" + tar "^6.0.5" "@bfc/indexers@../../packages/lib/indexers": version "0.0.0" dependencies: "@microsoft/bf-lu" "^4.11.0-dev.20201005.7e5e1b8" - adaptive-expressions "4.10.0-preview-147186" + adaptive-expressions "4.11.0-dev.20201010.6e4a99e" botbuilder-lg "4.11.0-dev.20201010.6e4a99e" lodash "^4.17.19" @@ -458,7 +460,7 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/moment-timezone@^0.5.12", "@types/moment-timezone@^0.5.13": +"@types/moment-timezone@^0.5.13": version "0.5.30" resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/@types/moment-timezone/-/@types/moment-timezone-0.5.30.tgz#340ed45fe3e715f4a011f5cfceb7cb52aad46fc7" integrity sha1-NA7UX+PnFfSgEfXPzrfLUqrUb8c= @@ -582,29 +584,10 @@ adal-node@^0.1.28: xmldom ">= 0.1.x" xpath.js "~1.1.0" -adaptive-expressions@4.10.0-preview-147186: - version "4.10.0-preview-147186" - resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/adaptive-expressions/-/adaptive-expressions-4.10.0-preview-147186.tgz#4468fcb00a27d955d4f1fd46566fda5a46baef87" - integrity sha1-RGj8sAon2VXU8f1GVm/aWka674c= - dependencies: - "@microsoft/recognizers-text-data-types-timex-expression" "1.1.4" - "@types/atob-lite" "^2.0.0" - "@types/lru-cache" "^5.1.0" - "@types/moment-timezone" "^0.5.12" - "@types/xmldom" "^0.1.29" - antlr4ts "0.5.0-alpha.3" - atob-lite "^2.0.0" - big-integer "^1.6.48" - jspath "^0.4.0" - lodash "^4.17.15" - lru-cache "^5.1.1" - moment "^2.25.1" - moment-timezone "^0.5.28" - -adaptive-expressions@4.10.1: - version "4.10.1" - resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/adaptive-expressions/-/adaptive-expressions-4.10.1.tgz#11308cd3aff402dc454dfaaa8d2af0ea3812554e" - integrity sha1-ETCM06/0AtxFTfqqjSrw6jgSVU4= +adaptive-expressions@4.11.0-dev.20201010.6e4a99e: + version "4.11.0-dev.20200929.ca9de94" + resolved "https://registry.npmjs.org/adaptive-expressions/-/adaptive-expressions-4.11.0-dev.20200929.ca9de94.tgz#305c8462e7e0c329f55aa8cd2b2496bb81c2490c" + integrity sha512-xq5QG19kIPio6piHEA4aPkqqi2ejYoYCBEovF55gJXaW5jKG+Q7bao3yqb2VTq9vISEyIq9VabmIlHzRQrOXyg== dependencies: "@microsoft/recognizers-text-data-types-timex-expression" "1.1.4" "@types/atob-lite" "^2.0.0" @@ -911,6 +894,11 @@ charenc@~0.0.1: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + clean-stack@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31" @@ -1417,6 +1405,13 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1955,6 +1950,26 @@ minimist@1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass@^3.0.0: + version "3.1.3" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + moment-timezone@*, moment-timezone@^0.5.28: version "0.5.31" resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/moment-timezone/-/moment-timezone-0.5.31.tgz#9c40d8c5026f0c7ab46eda3d63e49c155148de05" @@ -1997,7 +2012,7 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-fetch@^2.6.0, node-fetch@~2.6.0: +node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@~2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -2448,6 +2463,18 @@ tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" +tar@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" + integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -2630,6 +2657,11 @@ yallist@^3.0.2: resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha1-27fa+b/YusmrRev2ArjLrQ1dCP0= +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + zip-stream@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.0.2.tgz#3a20f1bd7729c2b59fd4efa04df5eb7a5a217d2e" From 4276c88b7c89aa0d4eb14190b9e38772de8f4008 Mon Sep 17 00:00:00 2001 From: Hongyang Date: Tue, 13 Oct 2020 20:59:11 +0800 Subject: [PATCH 03/10] migrate LgFile to LGResource --- .../client/src/recoilModel/parsers/workers/lgParser.worker.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts b/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts index 190a573e1d..9ace702880 100644 --- a/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts +++ b/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts @@ -2,6 +2,7 @@ // Licensed under the MIT License. import { lgUtil } from '@bfc/indexers'; import { lgImportResolverGenerator, LgFile } from '@bfc/shared'; +import { LGResource } from 'botbuilder-lg'; import { LgActionType, @@ -119,7 +120,8 @@ export class LgCache { public addProject(projectId: string, lgFiles: LgFile[]) { const lgResources = new Map(); lgFiles.forEach((file) => { - lgResources.set(file.id, lgUtil.parse(file.id, file.content, lgFiles)); + const resources = lgFiles.map((u) => new LGResource(u.id, u.id, u.content)); + lgResources.set(file.id, lgUtil.parse(file.id, file.content, resources)); }); this.projects.set(projectId, lgResources); } From f796f881dfabb265aeae2414d0dd3ddbfb961dd4 Mon Sep 17 00:00:00 2001 From: Hongyang Date: Tue, 13 Oct 2020 21:34:12 +0800 Subject: [PATCH 04/10] fix issue --- .../packages/client/src/hooks/useResolver.ts | 7 ++++- .../parsers/workers/lgParser.worker.ts | 13 +++++++-- .../packages/server/src/locales/en-US.json | 28 ++++++------------- .../packages/server/src/services/project.ts | 1 + Composer/plugins/azurePublish/yarn.lock | 4 +-- 5 files changed, 27 insertions(+), 26 deletions(-) diff --git a/Composer/packages/client/src/hooks/useResolver.ts b/Composer/packages/client/src/hooks/useResolver.ts index 7637ceb894..3fd00a727d 100644 --- a/Composer/packages/client/src/hooks/useResolver.ts +++ b/Composer/packages/client/src/hooks/useResolver.ts @@ -3,6 +3,7 @@ import { useRef } from 'react'; import { lgImportResolverGenerator } from '@bfc/shared'; import { useRecoilValue } from 'recoil'; +import { LGResource } from 'botbuilder-lg'; import { dialogsState, luFilesState, lgFilesState, localeState, qnaFilesState } from '../recoilModel'; @@ -28,7 +29,11 @@ export const useResolvers = (projectId: string) => { const dialogsRef = useRef(dialogs); dialogsRef.current = dialogs; - const lgImportresolver = () => lgImportResolverGenerator(lgFilesRef.current, '.lg'); + const lgImportresolver = () => + lgImportResolverGenerator( + lgFilesRef.current.map((u) => new LGResource(u.id, u.id, u.content)), + '.lg' + ); const lgFileResolver = (id: string) => { const fileId = id.includes('.') ? id : `${id}.${localeRef.current}`; diff --git a/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts b/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts index 9ace702880..c8a9719190 100644 --- a/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts +++ b/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts @@ -92,8 +92,11 @@ type LgMessageEvent = type LgResources = Map; -const lgFileResolver = (lgFiles: LgResources[]) => { - return lgImportResolverGenerator(lgFiles, '.lg'); +const lgFileResolver = (lgFiles: LgFile[]) => { + return lgImportResolverGenerator( + lgFiles.map((u) => new LGResource(u.id, u.id, u.content)), + '.lg' + ); }; export class LgCache { @@ -163,7 +166,11 @@ export const handleMessage = (msg: LgMessageEvent) => { case LgActionType.Parse: { const { id, content, lgFiles, projectId } = msg.payload; - const lgFile = lgUtil.parse(id, content, lgFiles); + const lgFile = lgUtil.parse( + id, + content, + lgFiles.map((u) => new LGResource(u.id, u.id, u.content)) + ); cache.set(projectId, lgFile); payload = filterParseResult(lgFile); break; diff --git a/Composer/packages/server/src/locales/en-US.json b/Composer/packages/server/src/locales/en-US.json index ab735644ba..9eed8d8066 100644 --- a/Composer/packages/server/src/locales/en-US.json +++ b/Composer/packages/server/src/locales/en-US.json @@ -791,8 +791,8 @@ "duplicated_intents_recognized_d3908424": { "message": "Duplicated intents recognized" }, - "each_page_of_pagesizestring_in_propstring_a7e23b00": { - "message": "Each page of { pageSizeString } in { propString }" + "each_page_of_be455012": { + "message": "Each page of" }, "each_value_in_ae285cd9": { "message": "Each value in" @@ -923,9 +923,6 @@ "error_processing_schema_2c707cf3": { "message": "Error Processing Schema" }, - "event_48c2be6e": { - "message": " (Event)" - }, "event_activity_2067a94b": { "message": "Event activity" }, @@ -1091,9 +1088,6 @@ "home_351838cd": { "message": "Home" }, - "host_ef9acfae": { - "message": "Host " - }, "http_request_79847109": { "message": "HTTP Request" }, @@ -1130,6 +1124,9 @@ "import_schema_75659c5f": { "message": "Import schema" }, + "in_4caf13c1": { + "message": "in" + }, "in_production_5a70b8b4": { "message": "In production" }, @@ -1637,6 +1634,9 @@ "open_inline_editor_a5aabcfa": { "message": "Open inline editor" }, + "open_skills_page_for_configuration_details_a2a484ea": { + "message": "Open Skills page for configuration details" + }, "optional_221bcc9d": { "message": "Optional" }, @@ -1922,15 +1922,6 @@ "restart_bot_34e36428": { "message": "Restart Bot" }, - "result_b1f14e91": { - "message": " = Result" - }, - "result_property_100ef34f": { - "message": " = Result property" - }, - "return_value_b386d1b": { - "message": "= Return value" - }, "review_and_generate_63dec712": { "message": "Review and generate" }, @@ -2315,9 +2306,6 @@ "toggle_extension_e41de2d2": { "message": "Toggle extension" }, - "token_property_e53a19d9": { - "message": " = Token Property" - }, "toolbar_bafd4228": { "message": "toolbar" }, diff --git a/Composer/packages/server/src/services/project.ts b/Composer/packages/server/src/services/project.ts index 12d60ddfe8..3cc2f0b203 100644 --- a/Composer/packages/server/src/services/project.ts +++ b/Composer/packages/server/src/services/project.ts @@ -7,6 +7,7 @@ import flatten from 'lodash/flatten'; import { luImportResolverGenerator, LUResolverResource } from '@bfc/shared'; import extractMemoryPaths from '@bfc/indexers/lib/dialogUtils/extractMemoryPaths'; import { UserIdentity } from '@bfc/extension'; +import { LGResource } from 'botbuilder-lg'; import { BotProject } from '../models/bot/botProject'; import { LocationRef } from '../models/bot/interface'; diff --git a/Composer/plugins/azurePublish/yarn.lock b/Composer/plugins/azurePublish/yarn.lock index ca7d1a084c..988d676280 100644 --- a/Composer/plugins/azurePublish/yarn.lock +++ b/Composer/plugins/azurePublish/yarn.lock @@ -586,8 +586,8 @@ adal-node@^0.1.28: adaptive-expressions@4.11.0-dev.20201010.6e4a99e: version "4.11.0-dev.20200929.ca9de94" - resolved "https://registry.npmjs.org/adaptive-expressions/-/adaptive-expressions-4.11.0-dev.20200929.ca9de94.tgz#305c8462e7e0c329f55aa8cd2b2496bb81c2490c" - integrity sha512-xq5QG19kIPio6piHEA4aPkqqi2ejYoYCBEovF55gJXaW5jKG+Q7bao3yqb2VTq9vISEyIq9VabmIlHzRQrOXyg== + resolved "https://registry.npm.taobao.org/adaptive-expressions/download/adaptive-expressions-4.11.0-dev.20200929.ca9de94.tgz#305c8462e7e0c329f55aa8cd2b2496bb81c2490c" + integrity sha1-MFyEYufgwyn1WqjNKySWu4HCSQw= dependencies: "@microsoft/recognizers-text-data-types-timex-expression" "1.1.4" "@types/atob-lite" "^2.0.0" From 23ee1c974620c78d85c890503238fb917aac188e Mon Sep 17 00:00:00 2001 From: zhixzhan Date: Wed, 14 Oct 2020 11:06:18 +0800 Subject: [PATCH 05/10] update package entry --- Composer/packages/adaptive-flow/package.json | 2 +- Composer/packages/lib/indexers/package.json | 2 +- Composer/plugins/azurePublish/yarn.lock | 27 +++++++++++++++++--- Composer/yarn.lock | 19 ++++++++++++++ 4 files changed, 44 insertions(+), 6 deletions(-) diff --git a/Composer/packages/adaptive-flow/package.json b/Composer/packages/adaptive-flow/package.json index 01c213b85c..59b0c38493 100644 --- a/Composer/packages/adaptive-flow/package.json +++ b/Composer/packages/adaptive-flow/package.json @@ -28,7 +28,7 @@ "@bfc/ui-shared": "*", "@emotion/core": "^10.0.27", "@emotion/styled": "^10.0.27", - "adaptive-expressions": "4.11.0-dev.20201010.6e4a99e", + "adaptive-expressions": "^4.11.0-dev.20201013.d5458bf", "botbuilder-lg": "4.11.0-dev.20201010.6e4a99e", "create-react-class": "^15.6.3", "d3": "^5.9.1", diff --git a/Composer/packages/lib/indexers/package.json b/Composer/packages/lib/indexers/package.json index 09fe7f74a8..c389622e47 100644 --- a/Composer/packages/lib/indexers/package.json +++ b/Composer/packages/lib/indexers/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "@microsoft/bf-lu": "^4.11.0-dev.20201005.7e5e1b8", - "adaptive-expressions": "4.11.0-dev.20201010.6e4a99e", + "adaptive-expressions": "^4.11.0-dev.20201013.d5458bf", "botbuilder-lg": "4.11.0-dev.20201010.6e4a99e", "lodash": "^4.17.19" }, diff --git a/Composer/plugins/azurePublish/yarn.lock b/Composer/plugins/azurePublish/yarn.lock index 988d676280..7eb6660f47 100644 --- a/Composer/plugins/azurePublish/yarn.lock +++ b/Composer/plugins/azurePublish/yarn.lock @@ -171,7 +171,7 @@ version "0.0.0" dependencies: "@microsoft/bf-lu" "^4.11.0-dev.20201005.7e5e1b8" - adaptive-expressions "4.11.0-dev.20201010.6e4a99e" + adaptive-expressions "^4.11.0-dev.20201013.d5458bf" botbuilder-lg "4.11.0-dev.20201010.6e4a99e" lodash "^4.17.19" @@ -585,9 +585,28 @@ adal-node@^0.1.28: xpath.js "~1.1.0" adaptive-expressions@4.11.0-dev.20201010.6e4a99e: - version "4.11.0-dev.20200929.ca9de94" - resolved "https://registry.npm.taobao.org/adaptive-expressions/download/adaptive-expressions-4.11.0-dev.20200929.ca9de94.tgz#305c8462e7e0c329f55aa8cd2b2496bb81c2490c" - integrity sha1-MFyEYufgwyn1WqjNKySWu4HCSQw= + version "4.11.0-dev.20201010.6e4a99e" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/adaptive-expressions/-/adaptive-expressions-4.11.0-dev.20201010.6e4a99e.tgz#493292c1619ef243901e041849b9ed42af9fb6fd" + integrity sha1-STKSwWGe8kOQHgQYSbntQq+ftv0= + dependencies: + "@microsoft/recognizers-text-data-types-timex-expression" "1.1.4" + "@types/atob-lite" "^2.0.0" + "@types/lru-cache" "^5.1.0" + "@types/moment-timezone" "^0.5.13" + "@types/xmldom" "^0.1.29" + antlr4ts "0.5.0-alpha.3" + atob-lite "^2.0.0" + big-integer "^1.6.48" + jspath "^0.4.0" + lodash "^4.17.19" + lru-cache "^5.1.1" + moment "^2.25.1" + moment-timezone "^0.5.28" + +adaptive-expressions@^4.11.0-dev.20201013.d5458bf: + version "4.11.0-dev.20201013.d5458bf" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/adaptive-expressions/-/adaptive-expressions-4.11.0-dev.20201013.d5458bf.tgz#d7573dab8d883985b80df8c8859edc4dead7593a" + integrity sha1-11c9q42IOYW4DfjIhZ7cTerXWTo= dependencies: "@microsoft/recognizers-text-data-types-timex-expression" "1.1.4" "@types/atob-lite" "^2.0.0" diff --git a/Composer/yarn.lock b/Composer/yarn.lock index 9da153992c..388a81fba5 100644 --- a/Composer/yarn.lock +++ b/Composer/yarn.lock @@ -4544,6 +4544,25 @@ adaptive-expressions@4.11.0-dev.20201010.6e4a99e: moment "^2.25.1" moment-timezone "^0.5.28" +adaptive-expressions@^4.11.0-dev.20201013.d5458bf: + version "4.11.0-dev.20201013.d5458bf" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/adaptive-expressions/-/adaptive-expressions-4.11.0-dev.20201013.d5458bf.tgz#d7573dab8d883985b80df8c8859edc4dead7593a" + integrity sha1-11c9q42IOYW4DfjIhZ7cTerXWTo= + dependencies: + "@microsoft/recognizers-text-data-types-timex-expression" "1.1.4" + "@types/atob-lite" "^2.0.0" + "@types/lru-cache" "^5.1.0" + "@types/moment-timezone" "^0.5.13" + "@types/xmldom" "^0.1.29" + antlr4ts "0.5.0-alpha.3" + atob-lite "^2.0.0" + big-integer "^1.6.48" + jspath "^0.4.0" + lodash "^4.17.19" + lru-cache "^5.1.1" + moment "^2.25.1" + moment-timezone "^0.5.28" + address@1.0.3, address@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" From bead61ddb17801134f6d419701d899875f29157f Mon Sep 17 00:00:00 2001 From: Hongyang Date: Wed, 14 Oct 2020 20:14:28 +0800 Subject: [PATCH 06/10] app lint:fix command --- Composer/packages/lib/indexers/src/index.ts | 6 +- .../packages/lib/indexers/src/utils/lgUtil.ts | 4 +- .../packages/server/src/locales/en-US.json | 171 ++++++++++++++++++ .../language-generation/src/LGServer.ts | 2 +- 4 files changed, 177 insertions(+), 6 deletions(-) diff --git a/Composer/packages/lib/indexers/src/index.ts b/Composer/packages/lib/indexers/src/index.ts index 1836213308..134df21d06 100644 --- a/Composer/packages/lib/indexers/src/index.ts +++ b/Composer/packages/lib/indexers/src/index.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { DialogSetting, FileInfo, lgImportResolverGenerator } from '@bfc/shared'; +import { LGResource } from 'botbuilder-lg'; import { dialogIndexer } from './dialogIndexer'; import { dialogSchemaIndexer } from './dialogSchemaIndexer'; @@ -12,7 +13,6 @@ import { skillManifestIndexer } from './skillManifestIndexer'; import { botProjectSpaceIndexer } from './botProjectSpaceIndexer'; import { FileExtensions } from './utils/fileExtensions'; import { getExtension, getBaseName } from './utils/help'; -import { LGResource } from 'botbuilder-lg'; class Indexer { private classifyFile(files: FileInfo[]) { @@ -37,12 +37,12 @@ class Indexer { } private getLgImportResolver = (files: FileInfo[], locale: string) => { - const lgFiles = files.map(({ name, content }) => { + const lgResources = files.map(({ name, content }) => { const id = getBaseName(name, '.lg'); return new LGResource(id, id, content); }); - return lgImportResolverGenerator(lgFiles, '.lg', locale); + return lgImportResolverGenerator(lgResources, '.lg', locale); }; public index(files: FileInfo[], botName: string, locale: string, skillContent: any, settings: DialogSetting) { diff --git a/Composer/packages/lib/indexers/src/utils/lgUtil.ts b/Composer/packages/lib/indexers/src/utils/lgUtil.ts index 391de36ec1..889e67c4f0 100644 --- a/Composer/packages/lib/indexers/src/utils/lgUtil.ts +++ b/Composer/packages/lib/indexers/src/utils/lgUtil.ts @@ -259,8 +259,8 @@ export function extractOptionByKey(nameOfKey: string, options: string[]): string return result; } -export function parse(id: string, content: string, lgFiles: LGResource[]): LgFile { - const lgImportResolver = lgImportResolverGenerator(lgFiles, '.lg'); +export function parse(id: string, content: string, lgResources: LGResource[]): LgFile { + const lgImportResolver = lgImportResolverGenerator(lgResources, '.lg'); return lgIndexer.parse(content, id, lgImportResolver); } diff --git a/Composer/packages/server/src/locales/en-US.json b/Composer/packages/server/src/locales/en-US.json index 9eed8d8066..38983a4c98 100644 --- a/Composer/packages/server/src/locales/en-US.json +++ b/Composer/packages/server/src/locales/en-US.json @@ -245,6 +245,9 @@ "are_you_sure_you_want_to_uninstall_these_extension_cf6265e8": { "message": "Are you sure you want to uninstall these extensions?" }, + "arm_template_bc8441bb": { + "message": "ARM Template" + }, "array_643947ee": { "message": "Array" }, @@ -281,6 +284,27 @@ "available_skills_95c114ac": { "message": "Available Skills" }, + "azure_app_service_plan_a285fb06": { + "message": "Azure App Service Plan" + }, + "azure_application_insights_c80028e4": { + "message": "Azure Application Insights" + }, + "azure_blob_storage_b5503630": { + "message": "Azure Blob Storage" + }, + "azure_bot_service_3afc983": { + "message": "Azure Bot Service" + }, + "azure_cosmos_db_a82b5d09": { + "message": "Azure Cosmos DB" + }, + "back_2900f52a": { + "message": "Back" + }, + "basic_assistant_d23bde15": { + "message": "Basic Assistant" + }, "been_used_5daccdb2": { "message": "Been used" }, @@ -329,6 +353,12 @@ "bot_asks_5e9f0202": { "message": "Bot Asks" }, + "bot_configured_for_speech_66fc8e57": { + "message": "Bot Configured for Speech" + }, + "bot_configured_for_text_a67eca78": { + "message": "Bot Configured for Text" + }, "bot_framework_composer_enables_developers_and_mult_ce0e42a9": { "message": "Bot Framework Composer enables developers and multi-disciplinary teams to build all kinds of conversational experiences, using the latest components from the Bot Framework: SDK, LG, LU, and declarative file formats, all without writing code." }, @@ -353,6 +383,9 @@ "bot_language_active_7cf9dc78": { "message": "Bot language (active)" }, + "bot_name_bbd0779d": { + "message": "Bot Name" + }, "bot_name_is_botname_a28c2d05": { "message": "Bot name is { botName }" }, @@ -371,6 +404,9 @@ "bot_settings_ce2783e4": { "message": "Bot Settings" }, + "bot_web_app_ca8b1468": { + "message": "Bot Web App" + }, "branch_if_else_391e5681": { "message": "Branch: If/else" }, @@ -428,6 +464,12 @@ "choose_one_2c4277df": { "message": "Choose One" }, + "choose_one_7feacdb6": { + "message": "Choose one:" + }, + "choose_your_assistant_7ee96d89": { + "message": "Choose Your Assistant" + }, "chris_whitten_11df1f35": { "message": "Chris Whitten" }, @@ -482,9 +524,21 @@ "conditionalselector_ed2031f0": { "message": "ConditionalSelector" }, + "configuration_summary_f9b92424": { + "message": "Configuration Summary" + }, "configure_composer_to_start_your_bot_using_runtime_fe37dadf": { "message": "Configure Composer to start your bot using runtime code you can customize and control." }, + "configured_with_enterprise_scenarios_calendar_who__e9e7e75a": { + "message": "Configured with enterprise scenarios, calendar, who bot, professional chit-chat." + }, + "configured_with_hospitality_scenarios_bing_search__f71c09c0": { + "message": "Configured with hospitality scenarios, Bing search and caring chit-chat." + }, + "configured_with_simple_conversational_capability_l_d42f128c": { + "message": "Configured with simple conversational capability like greeting, chit-chat & more." + }, "configures_default_language_model_to_use_if_there__f09f1acd": { "message": "Configures default language model to use if there is no culture code in the file name (Default: en-us)" }, @@ -515,6 +569,9 @@ "connect_to_qna_knowledgebase_4b324132": { "message": "Connect to QnA Knowledgebase" }, + "content_1440204b": { + "message": "Content" + }, "continue_loop_22635585": { "message": "Continue loop" }, @@ -557,6 +614,9 @@ "create_a_name_for_the_project_which_will_be_used_t_57e9b690": { "message": "Create a name for the project which will be used to name the application: (projectname-environment-LUfilename)" }, + "create_a_new_bot_or_choose_from_virtual_assistant__7c1e6674": { + "message": "Create a new bot or choose from Virtual assistant templates." + }, "create_a_new_dialog_21d84b82": { "message": "Create a new dialog" }, @@ -623,6 +683,9 @@ "custom_recognizer_951bab90": { "message": "Custom recognizer" }, + "customize_your_assistant_e4038b74": { + "message": "Customize your assistant" + }, "cut_c8c92681": { "message": "Cut" }, @@ -887,6 +950,9 @@ "enter_an_answer_84152a83": { "message": "Enter an answer" }, + "enterprise_assistant_434df551": { + "message": "Enterprise Assistant" + }, "entities_ef09392c": { "message": "Entities" }, @@ -992,6 +1058,9 @@ "extracting_qna_pairs_from_urls_eaed1b1c": { "message": "Extracting QNA pairs from { urls }" }, + "fallback_text_e5ff1cb7": { + "message": "Fallback Text" + }, "false_2f39ee6d": { "message": "false" }, @@ -1001,6 +1070,9 @@ "field_set_6e7d7f67": { "message": "Field Set" }, + "fields_must_be_either_all_strings_or_all_fieldset__d3df28c": { + "message": "fields must be either all strings or all fieldset objects" + }, "file_name_8fd421ff": { "message": "File name" }, @@ -1061,6 +1133,9 @@ "getting_started_f45a7e87": { "message": "Getting Started" }, + "give_your_bot_personality_multi_language_capabilit_f00c2c93": { + "message": "Give your bot personality, multi-language capabilities and more; you can edit this later in Bot Settings." + }, "go_to_qna_all_up_view_page_d475333d": { "message": "Go to QnA all-up view page." }, @@ -1070,6 +1145,9 @@ "greeting_f906f962": { "message": "Greeting" }, + "greeting_message_ce77bbb2": { + "message": "Greeting Message" + }, "handle_a_condition_f32eb8d": { "message": "Handle a Condition" }, @@ -1082,15 +1160,30 @@ "here_s_what_we_know_4e9c1731": { "message": "Here’s what we know…" }, + "hi_there_here_are_some_things_that_i_can_do_32909722": { + "message": "Hi there! Here are some things that I can do!" + }, "hide_code_5dcffa94": { "message": "Hide code" }, "home_351838cd": { "message": "Home" }, + "hospitality_assistant_c330e403": { + "message": "Hospitality Assistant" + }, + "hosts_your_bot_application_9dd01ffc": { + "message": "Hosts your Bot application." + }, + "hosts_your_qna_maker_knowledgebases_64713aee": { + "message": "Hosts your QnA Maker knowledgebases" + }, "http_request_79847109": { "message": "HTTP Request" }, + "i_am_sorry_i_didn_t_understand_that_f86e307a": { + "message": "I am sorry, I didn''t understand that" + }, "i_want_to_delete_this_bot_f81a4735": { "message": "I want to delete this bot" }, @@ -1559,6 +1652,9 @@ "not_yet_published_669e37b3": { "message": "Not yet published" }, + "notes_c42e0fd5": { + "message": "Notes" + }, "notification_list_ee2abb6c": { "message": "Notification list" }, @@ -1673,6 +1769,15 @@ "paste_5963d1c1": { "message": "Paste" }, + "personality_1381bf78": { + "message": "{ personality }" + }, + "personality_cf47985f": { + "message": "Personality" + }, + "personality_choice_3dfd8268": { + "message": "Personality Choice" + }, "please_add_at_least_minitems_endpoint_5439fd74": { "message": "Please add at least { minItems } endpoint" }, @@ -1736,6 +1841,9 @@ "progress_of_total_87de8616": { "message": "{ progress }% of { total }" }, + "prompt_configurations_ab47cd3f": { + "message": "Prompt Configurations" + }, "prompt_for_a_date_5d2c689e": { "message": "Prompt for a date" }, @@ -1796,6 +1904,9 @@ "provide_a_brief_description_it_will_appear_on_the__f962eb38": { "message": "Provide a brief description. It will appear on the publish history list." }, + "provisioning_summary_2be9422f": { + "message": "Provisioning Summary" + }, "pseudo_1a319287": { "message": "Pseudo" }, @@ -1835,6 +1946,15 @@ "qna_intent_recognized_49c3d797": { "message": "QnA Intent recognized" }, + "qna_maker_azure_search_service_88a403db": { + "message": "QnA Maker Azure Search Service" + }, + "qna_maker_c313ed6e": { + "message": "QnA Maker" + }, + "qna_maker_web_app_3da183bd": { + "message": "QnA Maker Web App" + }, "qna_navigation_pane_b79ebcbf": { "message": "Qna Navigation Pane" }, @@ -1913,6 +2033,9 @@ "requiredtext_priority_priority_4293288f": { "message": "{ requiredText } | Priority: { priority }" }, + "resource_374a9df": { + "message": "Resource" + }, "response_is_response_3cd62f8f": { "message": "Response is { response }" }, @@ -1967,6 +2090,9 @@ "search_for_extensions_on_npm_c5ca65d9": { "message": "Search for extensions on npm" }, + "search_index_for_your_qna_maker_knowledgebases_22700ca7": { + "message": "Search index for your QnA Maker knowledgebases." + }, "see_log_4b833bf7": { "message": "See Log" }, @@ -1985,6 +2111,9 @@ "select_an_event_type_3d7108f1": { "message": "Select an event type" }, + "select_an_option_9f5dfb55": { + "message": "Select an option" + }, "select_language_to_delete_d1662d3d": { "message": "Select language to delete" }, @@ -2009,6 +2138,9 @@ "select_which_tasks_this_skill_can_perform_172b0eae": { "message": "Select which tasks this skill can perform" }, + "selected_assistant_type_83d58f54": { + "message": "Selected Assistant Type" + }, "selection_field_86d1dc94": { "message": "selection field" }, @@ -2117,6 +2249,9 @@ "specify_a_name_description_and_location_for_your_n_667f1438": { "message": "Specify a name, description, and location for your new bot project." }, + "speech_16063aed": { + "message": "Speech" + }, "start_bot_25ecad14": { "message": "Start Bot" }, @@ -2147,6 +2282,15 @@ "submit_a3cc6859": { "message": "Submit" }, + "subscription_keys_for_language_understanding_cogni_105e039f": { + "message": "Subscription keys for Language Understanding Cognitive Service." + }, + "subscription_keys_for_qna_maker_cognitive_service__91da99a4": { + "message": "Subscription keys for QnA Maker Cognitive Service which facilitates the bot personality you selected." + }, + "summary_24ad7681": { + "message": "Summary" + }, "synonyms_optional_afe5cdb1": { "message": "Synonyms (Optional)" }, @@ -2171,15 +2315,24 @@ "the_api_messages_endpoint_for_the_skill_f318dc63": { "message": "The /api/messages endpoint for the skill." }, + "the_azure_bot_service_resource_stores_configuratio_b7b4e73d": { + "message": "The Azure Bot Service resource stores configuration information that allows your Virtual Assistant to be accessed on the supported Channels and provide OAuth authentication." + }, "the_callback_url_for_the_skill_host_e20e1012": { "message": "The callback url for the skill host." }, "the_dialog_you_have_tried_to_delete_is_currently_u_a37c7a02": { "message": "The dialog you have tried to delete is currently used in the below dialog(s). Removing this dialog will cause your Bot to malfunction without additional action." }, + "the_following_customizations_will_be_applied_to_yo_7d3384cf": { + "message": "The following customizations will be applied to your bot" + }, "the_following_lufile_s_are_invalid_c61ea748": { "message": "The Following LuFile(s) are invalid: \n" }, + "the_following_will_be_provisioned_to_enable_your_b_6c52fdac": { + "message": "The following will be provisioned to enable your bot" + }, "the_main_dialog_is_named_after_your_bot_it_is_the__3d9864f": { "message": "The main dialog is named after your bot. It is the root and entry point of a bot." }, @@ -2420,6 +2573,18 @@ "used_in_126529e5": { "message": "Used In" }, + "used_to_capture_conversation_and_application_telem_cae2c2a4": { + "message": "Used to capture conversation and application telemetry." + }, + "used_to_host_your_bot_web_app_and_qna_maker_web_ap_514dc11b": { + "message": "Used to host your Bot Web App and QnA Maker Web App." + }, + "used_to_store_conversation_state_11f348bd": { + "message": "Used to store conversation state." + }, + "used_to_store_conversation_transcripts_d80440ab": { + "message": "Used to store conversation transcripts." + }, "user_input_673e4a89": { "message": "User input" }, @@ -2432,6 +2597,9 @@ "validating_35b79a96": { "message": "Validating..." }, + "validation_b10c677c": { + "message": "Validation" + }, "validation_rules_efd3144d": { "message": "Validation Rules" }, @@ -2510,6 +2678,9 @@ "what_is_the_type_of_this_trigger_d2701744": { "message": "What is the type of this trigger?" }, + "what_will_your_virtual_assistant_say_if_it_does_no_972dd9ab": { + "message": "What will your Virtual Assistant say if it does not understand the user?" + }, "what_your_bot_says_to_the_user_this_is_a_template__a8d2266d": { "message": "What your bot says to the user. This is a template used to create the outgoing message. It can include language generation rules, properties from memory, and other features.\n\nFor example, to define variations that will be chosen at random, write:\n- hello\n- hi" }, diff --git a/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts b/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts index 451187a0b2..4e71c37dac 100644 --- a/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts +++ b/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts @@ -18,6 +18,7 @@ import get from 'lodash/get'; import { filterTemplateDiagnostics, isValid, lgUtil } from '@bfc/indexers'; import { MemoryResolver, LgFile, lgImportResolverGenerator } from '@bfc/shared'; import { buildInFunctionsMap } from '@bfc/built-in-functions'; +import { LGResource } from 'botbuilder-lg'; import { LgParser } from './lgParser'; import { @@ -31,7 +32,6 @@ import { cardPropDict, cardPropPossibleValueType, } from './utils'; -import { LGResource } from 'botbuilder-lg'; // define init methods call from client const InitializeDocumentsMethodName = 'initializeDocuments'; From d5aa2ec793cd264ecdf89f7e1f5165602b85bca2 Mon Sep 17 00:00:00 2001 From: hond Date: Mon, 19 Oct 2020 11:27:35 +0800 Subject: [PATCH 07/10] remove untracked files --- .../packages/server/src/locales/en-US.json | 27 - .../lib/botProjectDeployConfig.d.ts | 17 - .../lib/botProjectDeployConfig.js | 5 - .../lib/botProjectDeployConfig.js.map | 1 - .../lib/botProjectLoggerType.d.ts | 11 - .../azurePublish/lib/botProjectLoggerType.js | 20 - .../lib/botProjectLoggerType.js.map | 1 - .../lib/botProjectRuntimeType.d.ts | 4 - .../azurePublish/lib/botProjectRuntimeType.js | 11 - .../lib/botProjectRuntimeType.js.map | 1 - Composer/plugins/azurePublish/lib/deploy.d.ts | 16 - Composer/plugins/azurePublish/lib/deploy.js | 166 - .../plugins/azurePublish/lib/deploy.js.map | 1 - Composer/plugins/azurePublish/lib/index.d.ts | 2 - Composer/plugins/azurePublish/lib/index.js | 380 - .../plugins/azurePublish/lib/index.js.map | 1 - Composer/plugins/azurePublish/lib/luis.d.ts | 23 - Composer/plugins/azurePublish/lib/luis.js | 194 - Composer/plugins/azurePublish/lib/luis.js.map | 1 - .../plugins/azurePublish/lib/luisAndQnA.d.ts | 40 - .../plugins/azurePublish/lib/luisAndQnA.js | 359 - .../azurePublish/lib/luisAndQnA.js.map | 1 - .../plugins/azurePublish/lib/mergeDeep.d.ts | 11 - .../plugins/azurePublish/lib/mergeDeep.js | 38 - .../plugins/azurePublish/lib/mergeDeep.js.map | 1 - .../plugins/azurePublish/lib/provision.d.ts | 48 - .../plugins/azurePublish/lib/provision.js | 479 - .../plugins/azurePublish/lib/provision.js.map | 1 - Composer/plugins/azurePublish/lib/schema.d.ts | 3 - Composer/plugins/azurePublish/lib/schema.js | 138 - .../plugins/azurePublish/lib/schema.js.map | 1 - .../lib/utils/crossTrainUtil.d.ts | 12 - .../azurePublish/lib/utils/crossTrainUtil.js | 190 - .../lib/utils/crossTrainUtil.js.map | 1 - .../azurePublish/lib/utils/fileUtil.d.ts | 2 - .../azurePublish/lib/utils/fileUtil.js | 18 - .../azurePublish/lib/utils/fileUtil.js.map | 1 - .../azurePublish/lib/utils/jsonWalk.d.ts | 16 - .../azurePublish/lib/utils/jsonWalk.js | 29 - .../azurePublish/lib/utils/jsonWalk.js.map | 1 - .../hostedBots/1469.6275444402218/.gitignore | 9 - .../1469.6275444402218/BotProject.csproj | 45 - .../1469.6275444402218/BotProject.ruleset | 199 - .../1469.6275444402218/BotProject.sln | 31 - .../1469.6275444402218/BotSettings.cs | 28 - .../1469.6275444402218/ComposerBot.cs | 53 - .../ComposerDialogs/emptybot-0.dialog | 59 - .../language-generation/en-us/common.en-us.lg | 8 - .../en-us/emptybot-0.en-us.lg | 9 - .../en-us/emptybot-0.en-us.lu | 0 .../ComposerDialogs/settings/appsettings.json | 14 - .../Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 52 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 363 - .../1469.6275444402218/LuisConfig.cs | 36 - .../1469.6275444402218/LuisConfigAdaptor.cs | 23 - .../1469.6275444402218/NuGet.Config | 7 - .../hostedBots/1469.6275444402218/Program.cs | 58 - .../Properties/launchSettings.json | 27 - .../hostedBots/1469.6275444402218/README.md | 22 - .../1469.6275444402218/Schemas/sdk.schema | 12321 ---------------- .../Scripts/build_runtime.ps1 | 17 - .../Scripts/build_runtime.sh | 11 - .../1469.6275444402218/Scripts/create.ps1 | 211 - .../1469.6275444402218/Scripts/deploy.ps1 | 253 - .../SkillConversationIdFactory.cs | 45 - .../hostedBots/1469.6275444402218/Startup.cs | 156 - .../1469.6275444402218/Tests/ActionsTests.cs | 247 - .../Tests/ControllingConversationTests.cs | 120 - .../1469.6275444402218/Tests/InputsTests.cs | 155 - .../1469.6275444402218/Tests/MessageTests.cs | 110 - .../1469.6275444402218/Tests/Tests.csproj | 19 - .../1469.6275444402218/Tests/ToDoBotTests.cs | 108 - .../appsettings.Deployment.json | 4 - .../appsettings.Development.json | 3 - .../1469.6275444402218/appsettings.json | 17 - .../1469.6275444402218/packages/packages.json | 0 .../1469.6275444402218/wwwroot/default.htm | 364 - .../hostedBots/15667.573629219556/.gitignore | 9 - .../15667.573629219556/BotProject.csproj | 42 - .../15667.573629219556/BotProject.ruleset | 199 - .../15667.573629219556/BotProject.sln | 31 - .../15667.573629219556/BotSettings.cs | 28 - .../15667.573629219556/ComposerBot.cs | 53 - .../ComposerDialogs/echobot-0.dialog | 54 - .../language-generation/en-us/common.en-us.lg | 15 - .../en-us/echobot-0.en-us.lg | 4 - .../en-us/echobot-0.en-us.lu | 0 .../ComposerDialogs/settings/appsettings.json | 14 - .../Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 52 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 363 - .../15667.573629219556/LuisConfig.cs | 36 - .../15667.573629219556/LuisConfigAdaptor.cs | 23 - .../15667.573629219556/NuGet.Config | 7 - .../hostedBots/15667.573629219556/Program.cs | 58 - .../Properties/launchSettings.json | 27 - .../hostedBots/15667.573629219556/README.md | 22 - .../15667.573629219556/Schemas/sdk.schema | 12321 ---------------- .../Scripts/build_runtime.ps1 | 17 - .../Scripts/build_runtime.sh | 11 - .../15667.573629219556/Scripts/create.ps1 | 211 - .../15667.573629219556/Scripts/deploy.ps1 | 253 - .../SkillConversationIdFactory.cs | 45 - .../hostedBots/15667.573629219556/Startup.cs | 156 - .../15667.573629219556/Tests/ActionsTests.cs | 247 - .../Tests/ControllingConversationTests.cs | 120 - .../15667.573629219556/Tests/InputsTests.cs | 155 - .../15667.573629219556/Tests/MessageTests.cs | 110 - .../15667.573629219556/Tests/Tests.csproj | 19 - .../15667.573629219556/Tests/ToDoBotTests.cs | 108 - .../appsettings.Deployment.json | 3 - .../appsettings.Development.json | 3 - .../15667.573629219556/appsettings.json | 17 - .../15667.573629219556/packages/packages.json | 0 .../15667.573629219556/wwwroot/default.htm | 364 - .../hostedBots/23804.454040430723/.gitignore | 9 - .../23804.454040430723/BotProject.csproj | 45 - .../23804.454040430723/BotProject.ruleset | 199 - .../23804.454040430723/BotProject.sln | 31 - .../23804.454040430723/BotSettings.cs | 28 - .../23804.454040430723/ComposerBot.cs | 53 - .../ComposerDialogs/echobot-1.dialog | 54 - .../language-generation/en-us/common.en-us.lg | 14 - .../en-us/echobot-1.en-us.lg | 4 - .../en-us/echobot-1.en-us.lu | 0 .../ComposerDialogs/settings/appsettings.json | 14 - .../Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 52 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 363 - .../23804.454040430723/LuisConfig.cs | 36 - .../23804.454040430723/LuisConfigAdaptor.cs | 23 - .../23804.454040430723/NuGet.Config | 7 - .../hostedBots/23804.454040430723/Program.cs | 58 - .../Properties/launchSettings.json | 27 - .../hostedBots/23804.454040430723/README.md | 22 - .../23804.454040430723/Schemas/sdk.schema | 12321 ---------------- .../Scripts/build_runtime.ps1 | 17 - .../Scripts/build_runtime.sh | 11 - .../23804.454040430723/Scripts/create.ps1 | 211 - .../23804.454040430723/Scripts/deploy.ps1 | 253 - .../SkillConversationIdFactory.cs | 45 - .../hostedBots/23804.454040430723/Startup.cs | 156 - .../23804.454040430723/Tests/ActionsTests.cs | 247 - .../Tests/ControllingConversationTests.cs | 120 - .../23804.454040430723/Tests/InputsTests.cs | 155 - .../23804.454040430723/Tests/MessageTests.cs | 110 - .../23804.454040430723/Tests/Tests.csproj | 19 - .../23804.454040430723/Tests/ToDoBotTests.cs | 108 - .../appsettings.Deployment.json | 3 - .../appsettings.Development.json | 3 - .../23804.454040430723/appsettings.json | 17 - .../23804.454040430723/packages/packages.json | 0 .../23804.454040430723/wwwroot/default.htm | 364 - .../hostedBots/46828.36760693736/.gitignore | 2 - .../hostedBots/46828.36760693736/README.md | 73 - .../46828.36760693736/echobot-2.botproj | 6 - .../46828.36760693736/echobot-2.dialog | 67 - .../generated/echobot-2.lu.qna.dialog | 4 - .../knowledge-base/en-us/echobot-2.en-us.qna | 0 .../language-generation/en-us/common.en-us.lg | 2 - .../en-us/echobot-2.en-us.lg | 7 - .../en-us/echobot-2.en-us.lu | 0 .../46828.36760693736/runtime/.gitignore | 360 - .../runtime/ComposerRuntime.sln | 49 - .../46828.36760693736/runtime/NuGet.Config | 7 - .../46828.36760693736/runtime/README.md | 7 - .../runtime/azurefunctions/.gitignore | 264 - .../runtime/azurefunctions/MessagesTrigger.cs | 54 - ...Framework.Composer.FunctionTemplate.csproj | 4 - ...ramework.Composer.FunctionTemplate.ruleset | 199 - ...oft.BotFramework.Composer.Functions.csproj | 56 - .../Settings/ActivitySerializationSettings.cs | 26 - .../runtime/azurefunctions/SkillsTrigger.cs | 60 - .../runtime/azurefunctions/Startup.cs | 238 - .../runtime/azurefunctions/host.json | 3 - .../runtime/azurewebapp/.gitignore | 9 - .../AllowedCallersClaimsValidator.cs | 51 - .../azurewebapp/Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 53 - ...rosoft.BotFramework.Composer.WebApp.csproj | 42 - ...tFramework.Composer.WebAppTemplate.ruleset | 199 - .../runtime/azurewebapp/Program.cs | 47 - .../Properties/launchSettings.json | 27 - .../runtime/azurewebapp/README.md | 19 - .../runtime/azurewebapp/Schemas/readme.md | 124 - .../runtime/azurewebapp/Schemas/sdk.schema | 9489 ------------ .../runtime/azurewebapp/Schemas/sdk.uischema | 568 - .../azurewebapp/Schemas/update-schema.ps1 | 30 - .../azurewebapp/Schemas/update-schema.sh | 32 - .../runtime/azurewebapp/Scripts/deploy.ps1 | 241 - .../runtime/azurewebapp/Startup.cs | 245 - .../azurewebapp/packages/packages.json | 0 .../runtime/azurewebapp/wwwroot/default.htm | 364 - .../46828.36760693736/runtime/core/.gitignore | 9 - .../runtime/core/ComposerBot.cs | 81 - .../runtime/core/ComposerBotPathExtensions.cs | 29 - .../core/ComposerSettingsExtensions.cs | 61 - .../runtime/core/LuisConfig.cs | 36 - ...icrosoft.BotFramework.Composer.Core.csproj | 30 - ...crosoft.BotFramework.Composer.Core.ruleset | 199 - .../core/Settings/BlobStorageConfiguration.cs | 17 - .../core/Settings/BotFeatureSettings.cs | 22 - .../runtime/core/Settings/BotSettings.cs | 43 - .../core/Settings/BotSkillConfiguration.cs | 12 - .../core/SkillConversationIdFactory.cs | 78 - .../customaction/Action/MultiplyDialog.cs | 68 - .../runtime/customaction/CustomAction.sln | 25 - .../CustomActionComponentRegistration.cs | 23 - ....BotFramework.Composer.CustomAction.csproj | 17 - .../Schemas/MultiplyDialog.schema | 25 - .../runtime/tests/ActionsTests.cs | 248 - .../AllowedCallersClaimsValidationTests.cs | 101 - .../tests/ControllingConversationTests.cs | 136 - .../runtime/tests/InputsTests.cs | 157 - .../runtime/tests/MessageTests.cs | 111 - ...crosoft.BotFramework.Composer.Tests.csproj | 28 - .../tests/SkillConversationIdFactoryTests.cs | 155 - .../runtime/tests/ToDoBotTests.cs | 111 - ...function-template-with-preexisting-rg.json | 356 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../DeploymentTemplates/qna-template.json | 221 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 390 - .../46828.36760693736/scripts/package.json | 23 - .../scripts/provisionComposer.js | 812 - .../hostedBots/58177.92879852568/.gitignore | 2 - .../hostedBots/58177.92879852568/README.md | 73 - .../58177.92879852568/echobot-0.dialog | 67 - .../generated/echobot-0.lu.qna.dialog | 4 - .../knowledge-base/en-us/echobot-0.en-us.qna | 0 .../language-generation/en-us/common.en-us.lg | 2 - .../en-us/echobot-0.en-us.lg | 25 - .../en-us/echobot-0.en-us.lu | 0 .../58177.92879852568/runtime/.gitignore | 360 - .../runtime/ComposerRuntime.sln | 49 - .../58177.92879852568/runtime/NuGet.Config | 7 - .../58177.92879852568/runtime/README.md | 7 - .../runtime/azurefunctions/.gitignore | 264 - .../runtime/azurefunctions/MessagesTrigger.cs | 54 - ...Framework.Composer.FunctionTemplate.csproj | 4 - ...ramework.Composer.FunctionTemplate.ruleset | 199 - ...oft.BotFramework.Composer.Functions.csproj | 56 - .../Settings/ActivitySerializationSettings.cs | 26 - .../runtime/azurefunctions/SkillsTrigger.cs | 60 - .../runtime/azurefunctions/Startup.cs | 238 - .../runtime/azurefunctions/host.json | 3 - .../runtime/azurewebapp/.gitignore | 9 - .../azurewebapp/Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 53 - ...rosoft.BotFramework.Composer.WebApp.csproj | 42 - ...tFramework.Composer.WebAppTemplate.ruleset | 199 - .../runtime/azurewebapp/Program.cs | 47 - .../Properties/launchSettings.json | 27 - .../runtime/azurewebapp/README.md | 19 - .../runtime/azurewebapp/Schemas/readme.md | 124 - .../runtime/azurewebapp/Schemas/sdk.schema | 9538 ------------ .../runtime/azurewebapp/Schemas/sdk.uischema | 568 - .../azurewebapp/Schemas/update-schema.ps1 | 30 - .../azurewebapp/Schemas/update-schema.sh | 32 - .../runtime/azurewebapp/Scripts/deploy.ps1 | 241 - .../runtime/azurewebapp/Startup.cs | 232 - .../azurewebapp/packages/packages.json | 0 .../runtime/azurewebapp/wwwroot/default.htm | 364 - .../58177.92879852568/runtime/core/.gitignore | 9 - .../runtime/core/ComposerBot.cs | 81 - .../runtime/core/ComposerBotPathExtensions.cs | 29 - .../core/ComposerSettingsExtensions.cs | 61 - .../runtime/core/LuisConfig.cs | 36 - ...icrosoft.BotFramework.Composer.Core.csproj | 30 - ...crosoft.BotFramework.Composer.Core.ruleset | 199 - .../core/Settings/BlobStorageConfiguration.cs | 17 - .../core/Settings/BotFeatureSettings.cs | 22 - .../runtime/core/Settings/BotSettings.cs | 41 - .../core/SkillConversationIdFactory.cs | 78 - .../customaction/Action/MultiplyDialog.cs | 68 - .../runtime/customaction/CustomAction.sln | 25 - .../CustomActionComponentRegistration.cs | 23 - ....BotFramework.Composer.CustomAction.csproj | 17 - .../Schemas/MultiplyDialog.schema | 25 - .../runtime/tests/ActionsTests.cs | 248 - .../tests/ControllingConversationTests.cs | 136 - .../runtime/tests/InputsTests.cs | 157 - .../runtime/tests/MessageTests.cs | 111 - ...crosoft.BotFramework.Composer.Tests.csproj | 28 - .../tests/SkillConversationIdFactoryTests.cs | 155 - .../runtime/tests/ToDoBotTests.cs | 111 - ...function-template-with-preexisting-rg.json | 356 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 521 - .../58177.92879852568/scripts/package.json | 23 - .../scripts/provisionComposer.js | 661 - .../58177.92879852568/sdk.override.schema | 4922 ------ .../58177.92879852568/sdk.override.uischema | 336 - .../hostedBots/60624.90875963831/.gitignore | 9 - .../60624.90875963831/BotProject.csproj | 42 - .../60624.90875963831/BotProject.ruleset | 199 - .../60624.90875963831/BotProject.sln | 31 - .../60624.90875963831/BotSettings.cs | 28 - .../60624.90875963831/ComposerBot.cs | 53 - .../ComposerDialogs/echobot-4.dialog | 54 - .../language-generation/en-us/common.lg | 16 - .../language-generation/en-us/echobot-4.lg | 4 - .../en-us/echobot-4.en-us.lu | 0 .../ComposerDialogs/settings/appsettings.json | 14 - .../Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 52 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 363 - .../60624.90875963831/LuisConfig.cs | 36 - .../60624.90875963831/LuisConfigAdaptor.cs | 23 - .../hostedBots/60624.90875963831/NuGet.Config | 7 - .../hostedBots/60624.90875963831/Program.cs | 58 - .../Properties/launchSettings.json | 27 - .../hostedBots/60624.90875963831/README.md | 22 - .../60624.90875963831/Schemas/sdk.schema | 12321 ---------------- .../Scripts/build_runtime.ps1 | 17 - .../Scripts/build_runtime.sh | 11 - .../60624.90875963831/Scripts/create.ps1 | 211 - .../60624.90875963831/Scripts/deploy.ps1 | 253 - .../SkillConversationIdFactory.cs | 45 - .../hostedBots/60624.90875963831/Startup.cs | 156 - .../60624.90875963831/Tests/ActionsTests.cs | 247 - .../Tests/ControllingConversationTests.cs | 120 - .../60624.90875963831/Tests/InputsTests.cs | 155 - .../60624.90875963831/Tests/MessageTests.cs | 110 - .../60624.90875963831/Tests/Tests.csproj | 19 - .../60624.90875963831/Tests/ToDoBotTests.cs | 108 - .../appsettings.Deployment.json | 4 - .../appsettings.Development.json | 3 - .../60624.90875963831/appsettings.json | 17 - .../60624.90875963831/packages/packages.json | 0 .../60624.90875963831/wwwroot/default.htm | 364 - .../hostedBots/67602.31967312547/README.md | 73 - .../67602.31967312547/common.en-us.lg | 2 - .../67602.31967312547/echobot-0.dialog | 87 - .../67602.31967312547/echobot-0.en-us.lg | 16 - .../language-generation/en-us/common.en-us.lg | 2 - .../en-us/echobot-0.en-us.lg | 16 - .../en-us/echobot-0.en-us.lu | 0 .../67602.31967312547/runtime/.gitignore | 360 - .../runtime/ComposerRuntime.sln | 43 - .../67602.31967312547/runtime/NuGet.Config | 7 - .../67602.31967312547/runtime/README.md | 7 - .../runtime/azurefunctions/.gitignore | 264 - .../runtime/azurefunctions/MessagesTrigger.cs | 54 - ...Framework.Composer.FunctionTemplate.csproj | 4 - ...ramework.Composer.FunctionTemplate.ruleset | 199 - ...oft.BotFramework.Composer.Functions.csproj | 61 - .../Settings/ActivitySerializationSettings.cs | 26 - .../runtime/azurefunctions/SkillsTrigger.cs | 60 - .../runtime/azurefunctions/Startup.cs | 236 - .../appsettings.Deployment.json | 4 - .../appsettings.Development.json | 4 - .../runtime/azurefunctions/appsettings.json | 24 - .../runtime/azurefunctions/host.json | 3 - .../runtime/azurewebapp/.gitignore | 9 - .../azurewebapp/Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 53 - ...rosoft.BotFramework.Composer.WebApp.csproj | 41 - ...tFramework.Composer.WebAppTemplate.ruleset | 199 - .../runtime/azurewebapp/Program.cs | 64 - .../Properties/launchSettings.json | 27 - .../runtime/azurewebapp/README.md | 21 - .../runtime/azurewebapp/Schemas/readme.md | 58 - .../runtime/azurewebapp/Schemas/sdk.schema | 8850 ----------- .../runtime/azurewebapp/Schemas/update.sh | 2 - .../azurewebapp/Scripts/build_runtime.ps1 | 17 - .../azurewebapp/Scripts/build_runtime.sh | 11 - .../runtime/azurewebapp/Scripts/create.ps1 | 211 - .../runtime/azurewebapp/Scripts/deploy.ps1 | 272 - .../runtime/azurewebapp/Startup.cs | 227 - .../azurewebapp/appsettings.Deployment.json | 4 - .../azurewebapp/appsettings.Development.json | 4 - .../runtime/azurewebapp/appsettings.json | 24 - .../azurewebapp/packages/packages.json | 0 .../runtime/azurewebapp/wwwroot/default.htm | 364 - .../67602.31967312547/runtime/core/.gitignore | 9 - .../runtime/core/ComposerBot.cs | 85 - .../runtime/core/LuisConfig.cs | 36 - .../runtime/core/LuisConfigAdapter.cs | 21 - ...icrosoft.BotFramework.Composer.Core.csproj | 30 - ...crosoft.BotFramework.Composer.Core.ruleset | 199 - .../core/Settings/BlobStorageConfiguration.cs | 17 - .../core/Settings/BotFeatureSettings.cs | 22 - .../runtime/core/Settings/BotSettings.cs | 41 - .../core/SkillConversationIdFactory.cs | 45 - .../customaction/Action/MultiplyDialog.cs | 68 - .../runtime/customaction/CustomAction.sln | 25 - .../CustomActionComponentRegistration.cs | 23 - ....BotFramework.Composer.CustomAction.csproj | 17 - .../Schemas/MultiplyDialog.schema | 25 - .../runtime/tests/ActionsTests.cs | 248 - .../tests/ControllingConversationTests.cs | 136 - .../runtime/tests/InputsTests.cs | 157 - .../runtime/tests/MessageTests.cs | 111 - ...crosoft.BotFramework.Composer.Tests.csproj | 28 - .../runtime/tests/ToDoBotTests.cs | 111 - ...function-template-with-preexisting-rg.json | 356 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 388 - .../67602.31967312547/scripts/package.json | 21 - .../scripts/provisionComposer.js | 599 - .../settings/appsettings.json | 36 - .../hostedBots/71499.22109829121/.gitignore | 9 - .../71499.22109829121/BotProject.csproj | 45 - .../71499.22109829121/BotProject.ruleset | 199 - .../71499.22109829121/BotProject.sln | 31 - .../71499.22109829121/BotSettings.cs | 28 - .../71499.22109829121/ComposerBot.cs | 53 - .../ComposerDialogs/echobot-2.dialog | 54 - .../language-generation/en-us/common.en-us.lg | 30 - .../en-us/echobot-2.en-us.lg | 4 - .../en-us/echobot-2.en-us.lu | 0 .../ComposerDialogs/settings/appsettings.json | 14 - .../Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 52 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 363 - .../71499.22109829121/LuisConfig.cs | 36 - .../71499.22109829121/LuisConfigAdaptor.cs | 23 - .../hostedBots/71499.22109829121/NuGet.Config | 7 - .../hostedBots/71499.22109829121/Program.cs | 58 - .../Properties/launchSettings.json | 27 - .../hostedBots/71499.22109829121/README.md | 22 - .../71499.22109829121/Schemas/sdk.schema | 12321 ---------------- .../Scripts/build_runtime.ps1 | 17 - .../Scripts/build_runtime.sh | 11 - .../71499.22109829121/Scripts/create.ps1 | 211 - .../71499.22109829121/Scripts/deploy.ps1 | 253 - .../SkillConversationIdFactory.cs | 45 - .../hostedBots/71499.22109829121/Startup.cs | 156 - .../71499.22109829121/Tests/ActionsTests.cs | 247 - .../Tests/ControllingConversationTests.cs | 120 - .../71499.22109829121/Tests/InputsTests.cs | 155 - .../71499.22109829121/Tests/MessageTests.cs | 110 - .../71499.22109829121/Tests/Tests.csproj | 19 - .../71499.22109829121/Tests/ToDoBotTests.cs | 108 - .../appsettings.Deployment.json | 4 - .../appsettings.Development.json | 3 - .../71499.22109829121/appsettings.json | 17 - .../71499.22109829121/packages/packages.json | 0 .../71499.22109829121/wwwroot/default.htm | 364 - .../hostedBots/80560.06813833171/README.md | 73 - .../80560.06813833171/emptybot-1.dialog | 30 - .../language-generation/en-us/common.en-us.lg | 3 - .../en-us/emptybot-1.en-us.lg | 27 - .../en-us/emptybot-1.en-us.lu | 0 .../80560.06813833171/runtime/.gitignore | 360 - .../runtime/ComposerRuntime.sln | 43 - .../80560.06813833171/runtime/NuGet.Config | 7 - .../80560.06813833171/runtime/README.md | 7 - .../runtime/azurefunctions/.gitignore | 264 - .../runtime/azurefunctions/MessagesTrigger.cs | 54 - ...Framework.Composer.FunctionTemplate.csproj | 4 - ...ramework.Composer.FunctionTemplate.ruleset | 199 - ...oft.BotFramework.Composer.Functions.csproj | 61 - .../Settings/ActivitySerializationSettings.cs | 26 - .../runtime/azurefunctions/SkillsTrigger.cs | 60 - .../runtime/azurefunctions/Startup.cs | 236 - .../appsettings.Deployment.json | 4 - .../appsettings.Development.json | 4 - .../runtime/azurefunctions/appsettings.json | 24 - .../runtime/azurefunctions/host.json | 3 - .../runtime/azurewebapp/.gitignore | 9 - .../azurewebapp/Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 53 - ...rosoft.BotFramework.Composer.WebApp.csproj | 41 - ...tFramework.Composer.WebAppTemplate.ruleset | 199 - .../runtime/azurewebapp/Program.cs | 64 - .../Properties/launchSettings.json | 27 - .../runtime/azurewebapp/README.md | 21 - .../runtime/azurewebapp/Schemas/readme.md | 58 - .../runtime/azurewebapp/Schemas/sdk.schema | 8850 ----------- .../runtime/azurewebapp/Schemas/update.sh | 2 - .../azurewebapp/Scripts/build_runtime.ps1 | 17 - .../azurewebapp/Scripts/build_runtime.sh | 11 - .../runtime/azurewebapp/Scripts/create.ps1 | 211 - .../runtime/azurewebapp/Scripts/deploy.ps1 | 272 - .../runtime/azurewebapp/Startup.cs | 227 - .../azurewebapp/appsettings.Deployment.json | 4 - .../azurewebapp/appsettings.Development.json | 4 - .../runtime/azurewebapp/appsettings.json | 24 - .../azurewebapp/packages/packages.json | 0 .../runtime/azurewebapp/wwwroot/default.htm | 364 - .../80560.06813833171/runtime/core/.gitignore | 9 - .../runtime/core/ComposerBot.cs | 85 - .../runtime/core/LuisConfig.cs | 36 - .../runtime/core/LuisConfigAdapter.cs | 21 - ...icrosoft.BotFramework.Composer.Core.csproj | 30 - ...crosoft.BotFramework.Composer.Core.ruleset | 199 - .../core/Settings/BlobStorageConfiguration.cs | 17 - .../core/Settings/BotFeatureSettings.cs | 22 - .../runtime/core/Settings/BotSettings.cs | 41 - .../core/SkillConversationIdFactory.cs | 45 - .../customaction/Action/MultiplyDialog.cs | 68 - .../runtime/customaction/CustomAction.sln | 25 - .../CustomActionComponentRegistration.cs | 23 - ....BotFramework.Composer.CustomAction.csproj | 17 - .../Schemas/MultiplyDialog.schema | 25 - .../runtime/tests/ActionsTests.cs | 248 - .../tests/ControllingConversationTests.cs | 136 - .../runtime/tests/InputsTests.cs | 157 - .../runtime/tests/MessageTests.cs | 111 - ...crosoft.BotFramework.Composer.Tests.csproj | 28 - .../runtime/tests/ToDoBotTests.cs | 111 - .../80560.06813833171/schemas/readme.md | 58 - .../80560.06813833171/schemas/sdk.schema | 8850 ----------- .../80560.06813833171/schemas/update.sh | 2 - ...function-template-with-preexisting-rg.json | 356 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 388 - .../80560.06813833171/scripts/package.json | 21 - .../scripts/provisionComposer.js | 599 - .../settings/appsettings.json | 36 - .../hostedBots/81179.68797966064/README.md | 73 - .../81179.68797966064/common.en-us.lg | 2 - .../81179.68797966064/echobot-1.dialog | 87 - .../81179.68797966064/echobot-1.en-us.lg | 10 - .../language-generation/en-us/common.en-us.lg | 2 - .../en-us/echobot-1.en-us.lg | 11 - .../en-us/echobot-1.en-us.lu | 0 .../81179.68797966064/runtime/.gitignore | 360 - .../runtime/ComposerRuntime.sln | 43 - .../81179.68797966064/runtime/NuGet.Config | 7 - .../81179.68797966064/runtime/README.md | 7 - .../runtime/azurefunctions/.gitignore | 264 - .../runtime/azurefunctions/MessagesTrigger.cs | 54 - ...Framework.Composer.FunctionTemplate.csproj | 4 - ...ramework.Composer.FunctionTemplate.ruleset | 199 - ...oft.BotFramework.Composer.Functions.csproj | 61 - .../Settings/ActivitySerializationSettings.cs | 26 - .../runtime/azurefunctions/SkillsTrigger.cs | 60 - .../runtime/azurefunctions/Startup.cs | 236 - .../appsettings.Deployment.json | 4 - .../appsettings.Development.json | 4 - .../runtime/azurefunctions/appsettings.json | 24 - .../runtime/azurefunctions/host.json | 3 - .../runtime/azurewebapp/.gitignore | 9 - .../azurewebapp/Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 53 - ...rosoft.BotFramework.Composer.WebApp.csproj | 41 - ...tFramework.Composer.WebAppTemplate.ruleset | 199 - .../runtime/azurewebapp/Program.cs | 64 - .../Properties/launchSettings.json | 27 - .../runtime/azurewebapp/README.md | 21 - .../runtime/azurewebapp/Schemas/readme.md | 58 - .../runtime/azurewebapp/Schemas/sdk.schema | 8850 ----------- .../runtime/azurewebapp/Schemas/update.sh | 2 - .../azurewebapp/Scripts/build_runtime.ps1 | 17 - .../azurewebapp/Scripts/build_runtime.sh | 11 - .../runtime/azurewebapp/Scripts/create.ps1 | 211 - .../runtime/azurewebapp/Scripts/deploy.ps1 | 272 - .../runtime/azurewebapp/Startup.cs | 227 - .../azurewebapp/appsettings.Deployment.json | 4 - .../azurewebapp/appsettings.Development.json | 4 - .../runtime/azurewebapp/appsettings.json | 24 - .../azurewebapp/packages/packages.json | 0 .../runtime/azurewebapp/wwwroot/default.htm | 364 - .../81179.68797966064/runtime/core/.gitignore | 9 - .../runtime/core/ComposerBot.cs | 85 - .../runtime/core/LuisConfig.cs | 36 - .../runtime/core/LuisConfigAdapter.cs | 21 - ...icrosoft.BotFramework.Composer.Core.csproj | 30 - ...crosoft.BotFramework.Composer.Core.ruleset | 199 - .../core/Settings/BlobStorageConfiguration.cs | 17 - .../core/Settings/BotFeatureSettings.cs | 22 - .../runtime/core/Settings/BotSettings.cs | 41 - .../core/SkillConversationIdFactory.cs | 45 - .../customaction/Action/MultiplyDialog.cs | 68 - .../runtime/customaction/CustomAction.sln | 25 - .../CustomActionComponentRegistration.cs | 23 - ....BotFramework.Composer.CustomAction.csproj | 17 - .../Schemas/MultiplyDialog.schema | 25 - .../runtime/tests/ActionsTests.cs | 248 - .../tests/ControllingConversationTests.cs | 136 - .../runtime/tests/InputsTests.cs | 157 - .../runtime/tests/MessageTests.cs | 111 - ...crosoft.BotFramework.Composer.Tests.csproj | 28 - .../runtime/tests/ToDoBotTests.cs | 111 - ...function-template-with-preexisting-rg.json | 356 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 388 - .../81179.68797966064/scripts/package.json | 21 - .../scripts/provisionComposer.js | 599 - .../settings/appsettings.json | 36 - .../hostedBots/88691.6992608121/README.md | 73 - .../88691.6992608121/emptybot-0.dialog | 53 - .../language-generation/en-us/common.en-us.lg | 2 - .../en-us/emptybot-0.en-us.lg | 10 - .../en-us/emptybot-0.en-us.lu | 0 .../88691.6992608121/runtime/.gitignore | 360 - .../runtime/ComposerRuntime.sln | 43 - .../88691.6992608121/runtime/NuGet.Config | 7 - .../88691.6992608121/runtime/README.md | 7 - .../runtime/azurefunctions/.gitignore | 264 - .../runtime/azurefunctions/MessagesTrigger.cs | 54 - ...Framework.Composer.FunctionTemplate.csproj | 4 - ...ramework.Composer.FunctionTemplate.ruleset | 199 - ...oft.BotFramework.Composer.Functions.csproj | 61 - .../Settings/ActivitySerializationSettings.cs | 26 - .../runtime/azurefunctions/SkillsTrigger.cs | 60 - .../runtime/azurefunctions/Startup.cs | 236 - .../appsettings.Deployment.json | 4 - .../appsettings.Development.json | 4 - .../runtime/azurefunctions/appsettings.json | 24 - .../runtime/azurefunctions/host.json | 3 - .../runtime/azurewebapp/.gitignore | 9 - .../azurewebapp/Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 53 - ...rosoft.BotFramework.Composer.WebApp.csproj | 41 - ...tFramework.Composer.WebAppTemplate.ruleset | 199 - .../runtime/azurewebapp/Program.cs | 64 - .../Properties/launchSettings.json | 27 - .../runtime/azurewebapp/README.md | 21 - .../runtime/azurewebapp/Schemas/readme.md | 58 - .../runtime/azurewebapp/Schemas/sdk.schema | 8850 ----------- .../runtime/azurewebapp/Schemas/update.sh | 2 - .../azurewebapp/Scripts/build_runtime.ps1 | 17 - .../azurewebapp/Scripts/build_runtime.sh | 11 - .../runtime/azurewebapp/Scripts/create.ps1 | 211 - .../runtime/azurewebapp/Scripts/deploy.ps1 | 272 - .../runtime/azurewebapp/Startup.cs | 227 - .../azurewebapp/appsettings.Deployment.json | 4 - .../azurewebapp/appsettings.Development.json | 4 - .../runtime/azurewebapp/appsettings.json | 24 - .../azurewebapp/packages/packages.json | 0 .../runtime/azurewebapp/wwwroot/default.htm | 364 - .../88691.6992608121/runtime/core/.gitignore | 9 - .../runtime/core/ComposerBot.cs | 85 - .../runtime/core/LuisConfig.cs | 36 - .../runtime/core/LuisConfigAdapter.cs | 21 - ...icrosoft.BotFramework.Composer.Core.csproj | 30 - ...crosoft.BotFramework.Composer.Core.ruleset | 199 - .../core/Settings/BlobStorageConfiguration.cs | 17 - .../core/Settings/BotFeatureSettings.cs | 22 - .../runtime/core/Settings/BotSettings.cs | 41 - .../core/SkillConversationIdFactory.cs | 45 - .../customaction/Action/MultiplyDialog.cs | 68 - .../runtime/customaction/CustomAction.sln | 25 - .../CustomActionComponentRegistration.cs | 23 - ....BotFramework.Composer.CustomAction.csproj | 17 - .../Schemas/MultiplyDialog.schema | 25 - .../runtime/tests/ActionsTests.cs | 248 - .../tests/ControllingConversationTests.cs | 136 - .../runtime/tests/InputsTests.cs | 157 - .../runtime/tests/MessageTests.cs | 111 - ...crosoft.BotFramework.Composer.Tests.csproj | 28 - .../runtime/tests/ToDoBotTests.cs | 111 - ...function-template-with-preexisting-rg.json | 356 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 388 - .../88691.6992608121/scripts/package.json | 21 - .../scripts/provisionComposer.js | 599 - .../settings/appsettings.json | 36 - .../hostedBots/89317.2709537091/.gitignore | 9 - .../89317.2709537091/BotProject.csproj | 45 - .../89317.2709537091/BotProject.ruleset | 199 - .../89317.2709537091/BotProject.sln | 31 - .../89317.2709537091/BotSettings.cs | 28 - .../89317.2709537091/ComposerBot.cs | 69 - .../en-us/adaptiveCard.json | 207 - .../language-generation/en-us/common.en-us.lg | 341 - .../respondingwithcardssample-0.en-us.lg | 34 - .../respondingwithcardssample-0.en-us.lu | 0 .../respondingwithcardssample-0.dialog | 252 - .../ComposerDialogs/settings/appsettings.json | 15 - .../Controllers/BotController.cs | 41 - .../Controllers/SkillController.cs | 52 - .../new-rg-parameters.json | 42 - .../preexisting-rg-parameters.json | 39 - .../template-with-new-rg.json | 183 - .../template-with-preexisting-rg.json | 363 - .../hostedBots/89317.2709537091/LuisConfig.cs | 36 - .../89317.2709537091/LuisConfigAdaptor.cs | 23 - .../hostedBots/89317.2709537091/NuGet.Config | 7 - .../hostedBots/89317.2709537091/Program.cs | 58 - .../Properties/launchSettings.json | 27 - .../hostedBots/89317.2709537091/README.md | 22 - .../89317.2709537091/Schemas/sdk.schema | 12245 --------------- .../Scripts/build_runtime.ps1 | 17 - .../89317.2709537091/Scripts/build_runtime.sh | 11 - .../89317.2709537091/Scripts/create.ps1 | 211 - .../89317.2709537091/Scripts/deploy.ps1 | 253 - .../SkillConversationIdFactory.cs | 45 - .../hostedBots/89317.2709537091/Startup.cs | 150 - .../89317.2709537091/Tests/ActionsTests.cs | 242 - .../Tests/ControllingConversationTests.cs | 129 - .../89317.2709537091/Tests/InputsTests.cs | 151 - .../89317.2709537091/Tests/MessageTests.cs | 104 - .../89317.2709537091/Tests/Tests.csproj | 19 - .../89317.2709537091/Tests/ToDoBotTests.cs | 104 - .../appsettings.Deployment.json | 3 - .../appsettings.Development.json | 3 - .../89317.2709537091/appsettings.json | 17 - .../89317.2709537091/packages/packages.json | 0 .../89317.2709537091/wwwroot/default.htm | 364 - .../plugins/localPublish/lib/copyDir.d.ts | 9 - Composer/plugins/localPublish/lib/copyDir.js | 47 - .../plugins/localPublish/lib/copyDir.js.map | 1 - Composer/plugins/localPublish/lib/index.d.ts | 2 - Composer/plugins/localPublish/lib/index.js | 470 - .../plugins/localPublish/lib/index.js.map | 1 - .../plugins/localPublish/lib/interface.d.ts | 22 - .../plugins/localPublish/lib/interface.js | 5 - .../plugins/localPublish/lib/interface.js.map | 1 - Composer/plugins/runtimes/lib/copyDir.d.ts | 2 - Composer/plugins/runtimes/lib/copyDir.js | 47 - Composer/plugins/runtimes/lib/copyDir.js.map | 1 - Composer/plugins/runtimes/lib/index.d.ts | 2 - Composer/plugins/runtimes/lib/index.js | 244 - Composer/plugins/runtimes/lib/index.js.map | 1 - Composer/plugins/runtimes/lib/interface.d.ts | 22 - Composer/plugins/runtimes/lib/interface.js | 5 - .../plugins/runtimes/lib/interface.js.map | 1 - Composer/plugins/samples/lib/index.d.ts | 2 - Composer/plugins/samples/lib/index.js | 129 - Composer/plugins/samples/lib/index.js.map | 1 - Composer/plugins/vacore/lib/index.d.ts | 2 - Composer/plugins/vacore/lib/index.js | 30 - Composer/plugins/vacore/lib/index.js.map | 1 - 745 files changed, 205318 deletions(-) delete mode 100644 Composer/plugins/azurePublish/lib/botProjectDeployConfig.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/botProjectDeployConfig.js delete mode 100644 Composer/plugins/azurePublish/lib/botProjectDeployConfig.js.map delete mode 100644 Composer/plugins/azurePublish/lib/botProjectLoggerType.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/botProjectLoggerType.js delete mode 100644 Composer/plugins/azurePublish/lib/botProjectLoggerType.js.map delete mode 100644 Composer/plugins/azurePublish/lib/botProjectRuntimeType.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/botProjectRuntimeType.js delete mode 100644 Composer/plugins/azurePublish/lib/botProjectRuntimeType.js.map delete mode 100644 Composer/plugins/azurePublish/lib/deploy.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/deploy.js delete mode 100644 Composer/plugins/azurePublish/lib/deploy.js.map delete mode 100644 Composer/plugins/azurePublish/lib/index.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/index.js delete mode 100644 Composer/plugins/azurePublish/lib/index.js.map delete mode 100644 Composer/plugins/azurePublish/lib/luis.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/luis.js delete mode 100644 Composer/plugins/azurePublish/lib/luis.js.map delete mode 100644 Composer/plugins/azurePublish/lib/luisAndQnA.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/luisAndQnA.js delete mode 100644 Composer/plugins/azurePublish/lib/luisAndQnA.js.map delete mode 100644 Composer/plugins/azurePublish/lib/mergeDeep.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/mergeDeep.js delete mode 100644 Composer/plugins/azurePublish/lib/mergeDeep.js.map delete mode 100644 Composer/plugins/azurePublish/lib/provision.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/provision.js delete mode 100644 Composer/plugins/azurePublish/lib/provision.js.map delete mode 100644 Composer/plugins/azurePublish/lib/schema.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/schema.js delete mode 100644 Composer/plugins/azurePublish/lib/schema.js.map delete mode 100644 Composer/plugins/azurePublish/lib/utils/crossTrainUtil.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/utils/crossTrainUtil.js delete mode 100644 Composer/plugins/azurePublish/lib/utils/crossTrainUtil.js.map delete mode 100644 Composer/plugins/azurePublish/lib/utils/fileUtil.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/utils/fileUtil.js delete mode 100644 Composer/plugins/azurePublish/lib/utils/fileUtil.js.map delete mode 100644 Composer/plugins/azurePublish/lib/utils/jsonWalk.d.ts delete mode 100644 Composer/plugins/azurePublish/lib/utils/jsonWalk.js delete mode 100644 Composer/plugins/azurePublish/lib/utils/jsonWalk.js.map delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/emptybot-0.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-generation/en-us/emptybot-0.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-understanding/en-us/emptybot-0.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/settings/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/LuisConfigAdaptor.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/build_runtime.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/build_runtime.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/create.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/1469.6275444402218/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/echobot-0.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-generation/en-us/echobot-0.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-understanding/en-us/echobot-0.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/settings/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/LuisConfigAdaptor.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/build_runtime.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/build_runtime.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/create.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/15667.573629219556/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/echobot-1.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-generation/en-us/echobot-1.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-understanding/en-us/echobot-1.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/settings/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/LuisConfigAdaptor.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/build_runtime.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/build_runtime.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/create.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/23804.454040430723/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/echobot-2.botproj delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/echobot-2.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/generated/echobot-2.lu.qna.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/knowledge-base/en-us/echobot-2.en-us.qna delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/language-generation/en-us/echobot-2.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/language-understanding/en-us/echobot-2.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/ComposerRuntime.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/MessagesTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/SkillsTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/host.json delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Authorization/AllowedCallersClaimsValidator.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/readme.md delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/sdk.uischema delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/update-schema.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/update-schema.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerBotPathExtensions.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerSettingsExtensions.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Microsoft.BotFramework.Composer.Core.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BlobStorageConfiguration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotFeatureSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotSkillConfiguration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Action/MultiplyDialog.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/CustomAction.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/CustomActionComponentRegistration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Schemas/MultiplyDialog.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/AllowedCallersClaimsValidationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/SkillConversationIdFactoryTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/qna-template.json delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/package.json delete mode 100644 Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/provisionComposer.js delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/echobot-0.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/generated/echobot-0.lu.qna.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/knowledge-base/en-us/echobot-0.en-us.qna delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/language-generation/en-us/echobot-0.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/language-understanding/en-us/echobot-0.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/ComposerRuntime.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/MessagesTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/SkillsTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/host.json delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/readme.md delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/sdk.uischema delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/update-schema.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/update-schema.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerBotPathExtensions.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerSettingsExtensions.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Microsoft.BotFramework.Composer.Core.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BlobStorageConfiguration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BotFeatureSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Action/MultiplyDialog.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/CustomAction.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/CustomActionComponentRegistration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Schemas/MultiplyDialog.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/SkillConversationIdFactoryTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/package.json delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/provisionComposer.js delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/sdk.override.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/58177.92879852568/sdk.override.uischema delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/echobot-4.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-generation/en-us/common.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-generation/en-us/echobot-4.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-understanding/en-us/echobot-4.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/settings/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/LuisConfigAdaptor.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/build_runtime.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/build_runtime.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/create.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/60624.90875963831/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/echobot-0.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/echobot-0.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/language-generation/en-us/echobot-0.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/language-understanding/en-us/echobot-0.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/ComposerRuntime.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/MessagesTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/SkillsTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/host.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/readme.md delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/update.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/build_runtime.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/build_runtime.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/create.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/LuisConfigAdapter.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Microsoft.BotFramework.Composer.Core.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BlobStorageConfiguration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BotFeatureSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Action/MultiplyDialog.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/CustomAction.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/CustomActionComponentRegistration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Schemas/MultiplyDialog.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/package.json delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/provisionComposer.js delete mode 100644 Composer/plugins/localPublish/hostedBots/67602.31967312547/settings/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/echobot-2.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-generation/en-us/echobot-2.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-understanding/en-us/echobot-2.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/settings/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/LuisConfigAdaptor.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/build_runtime.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/build_runtime.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/create.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/71499.22109829121/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/emptybot-1.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/language-generation/en-us/emptybot-1.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/language-understanding/en-us/emptybot-1.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/ComposerRuntime.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/MessagesTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/SkillsTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/host.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/readme.md delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/update.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/build_runtime.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/build_runtime.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/create.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/LuisConfigAdapter.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Microsoft.BotFramework.Composer.Core.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BlobStorageConfiguration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BotFeatureSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Action/MultiplyDialog.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/CustomAction.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/CustomActionComponentRegistration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Schemas/MultiplyDialog.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/readme.md delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/update.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/package.json delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/provisionComposer.js delete mode 100644 Composer/plugins/localPublish/hostedBots/80560.06813833171/settings/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/echobot-1.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/echobot-1.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/language-generation/en-us/echobot-1.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/language-understanding/en-us/echobot-1.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/ComposerRuntime.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/MessagesTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/SkillsTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/host.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/readme.md delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/update.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/build_runtime.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/build_runtime.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/create.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/LuisConfigAdapter.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Microsoft.BotFramework.Composer.Core.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BlobStorageConfiguration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BotFeatureSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Action/MultiplyDialog.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/CustomAction.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/CustomActionComponentRegistration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Schemas/MultiplyDialog.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/package.json delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/provisionComposer.js delete mode 100644 Composer/plugins/localPublish/hostedBots/81179.68797966064/settings/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/emptybot-0.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/language-generation/en-us/emptybot-0.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/language-understanding/en-us/emptybot-0.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/ComposerRuntime.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/MessagesTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/SkillsTrigger.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/host.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/readme.md delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/update.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/build_runtime.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/build_runtime.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/create.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/LuisConfigAdapter.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Microsoft.BotFramework.Composer.Core.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BlobStorageConfiguration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BotFeatureSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Action/MultiplyDialog.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/CustomAction.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/CustomActionComponentRegistration.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Schemas/MultiplyDialog.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/package.json delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/provisionComposer.js delete mode 100644 Composer/plugins/localPublish/hostedBots/88691.6992608121/settings/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/.gitignore delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.ruleset delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.sln delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/BotSettings.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerBot.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/adaptiveCard.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/common.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/respondingwithcardssample-0.en-us.lg delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-understanding/en-us/respondingwithcardssample-0.en-us.lu delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/respondingwithcardssample-0.dialog delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/settings/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Controllers/BotController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Controllers/SkillController.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/new-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/preexisting-rg-parameters.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/template-with-new-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/template-with-preexisting-rg.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/LuisConfig.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/LuisConfigAdaptor.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/NuGet.Config delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Program.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Properties/launchSettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/README.md delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Schemas/sdk.schema delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/build_runtime.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/build_runtime.sh delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/create.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/deploy.ps1 delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/SkillConversationIdFactory.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Startup.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ActionsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ControllingConversationTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/InputsTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/MessageTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/Tests.csproj delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ToDoBotTests.cs delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.Deployment.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.Development.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/packages/packages.json delete mode 100644 Composer/plugins/localPublish/hostedBots/89317.2709537091/wwwroot/default.htm delete mode 100644 Composer/plugins/localPublish/lib/copyDir.d.ts delete mode 100644 Composer/plugins/localPublish/lib/copyDir.js delete mode 100644 Composer/plugins/localPublish/lib/copyDir.js.map delete mode 100644 Composer/plugins/localPublish/lib/index.d.ts delete mode 100644 Composer/plugins/localPublish/lib/index.js delete mode 100644 Composer/plugins/localPublish/lib/index.js.map delete mode 100644 Composer/plugins/localPublish/lib/interface.d.ts delete mode 100644 Composer/plugins/localPublish/lib/interface.js delete mode 100644 Composer/plugins/localPublish/lib/interface.js.map delete mode 100644 Composer/plugins/runtimes/lib/copyDir.d.ts delete mode 100644 Composer/plugins/runtimes/lib/copyDir.js delete mode 100644 Composer/plugins/runtimes/lib/copyDir.js.map delete mode 100644 Composer/plugins/runtimes/lib/index.d.ts delete mode 100644 Composer/plugins/runtimes/lib/index.js delete mode 100644 Composer/plugins/runtimes/lib/index.js.map delete mode 100644 Composer/plugins/runtimes/lib/interface.d.ts delete mode 100644 Composer/plugins/runtimes/lib/interface.js delete mode 100644 Composer/plugins/runtimes/lib/interface.js.map delete mode 100644 Composer/plugins/samples/lib/index.d.ts delete mode 100644 Composer/plugins/samples/lib/index.js delete mode 100644 Composer/plugins/samples/lib/index.js.map delete mode 100644 Composer/plugins/vacore/lib/index.d.ts delete mode 100644 Composer/plugins/vacore/lib/index.js delete mode 100644 Composer/plugins/vacore/lib/index.js.map diff --git a/Composer/packages/server/src/locales/en-US.json b/Composer/packages/server/src/locales/en-US.json index 3339673068..841a65d73f 100644 --- a/Composer/packages/server/src/locales/en-US.json +++ b/Composer/packages/server/src/locales/en-US.json @@ -914,15 +914,6 @@ "duplicated_intents_recognized_d3908424": { "message": "Duplicated intents recognized" }, -<<<<<<< HEAD - "each_page_of_be455012": { - "message": "Each page of" - }, - "each_value_in_ae285cd9": { - "message": "Each value in" - }, -======= ->>>>>>> main "early_adopters_e8db7999": { "message": "Early adopters" }, @@ -1022,9 +1013,6 @@ "enterprise_assistant_434df551": { "message": "Enterprise Assistant" }, - "enterprise_assistant_434df551": { - "message": "Enterprise Assistant" - }, "entities_ef09392c": { "message": "Entities" }, @@ -1130,9 +1118,6 @@ "fallback_text_e5ff1cb7": { "message": "Fallback Text" }, - "fallback_text_e5ff1cb7": { - "message": "Fallback Text" - }, "false_2f39ee6d": { "message": "false" }, @@ -1295,9 +1280,6 @@ "import_schema_75659c5f": { "message": "Import schema" }, - "in_4caf13c1": { - "message": "in" - }, "in_production_5a70b8b4": { "message": "In production" }, @@ -1829,9 +1811,6 @@ "open_inline_editor_a5aabcfa": { "message": "Open inline editor" }, - "open_skills_page_for_configuration_details_a2a484ea": { - "message": "Open Skills page for configuration details" - }, "optional_221bcc9d": { "message": "Optional" }, @@ -2231,12 +2210,9 @@ "select_an_option_9f5dfb55": { "message": "Select an option" }, -<<<<<<< HEAD -======= "select_an_schema_to_edit_or_create_a_new_one_59c7326a": { "message": "Select an schema to edit or create a new one" }, ->>>>>>> main "select_language_to_delete_d1662d3d": { "message": "Select language to delete" }, @@ -2588,12 +2564,9 @@ "toggle_extension_e41de2d2": { "message": "Toggle extension" }, -<<<<<<< HEAD -======= "toggle_show_all_61f19d77": { "message": "Toggle show all" }, ->>>>>>> main "toolbar_bafd4228": { "message": "toolbar" }, diff --git a/Composer/plugins/azurePublish/lib/botProjectDeployConfig.d.ts b/Composer/plugins/azurePublish/lib/botProjectDeployConfig.d.ts deleted file mode 100644 index 2a36f11ac2..0000000000 --- a/Composer/plugins/azurePublish/lib/botProjectDeployConfig.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { BotProjectRuntimeType } from './botProjectRuntimeType'; -export interface BotProjectDeployConfig { - subId: string; - creds?: any; - accessToken: string; - projPath: string; - logger: (string: any) => any; - deployFilePath?: string; - zipPath?: string; - publishFolder?: string; - templatePath?: string; - dotnetProjectPath?: string; - generatedFolder?: string; - remoteBotPath?: string; - runtimeType?: BotProjectRuntimeType; - [key: string]: any; -} diff --git a/Composer/plugins/azurePublish/lib/botProjectDeployConfig.js b/Composer/plugins/azurePublish/lib/botProjectDeployConfig.js deleted file mode 100644 index 3a5bd1c530..0000000000 --- a/Composer/plugins/azurePublish/lib/botProjectDeployConfig.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=botProjectDeployConfig.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/botProjectDeployConfig.js.map b/Composer/plugins/azurePublish/lib/botProjectDeployConfig.js.map deleted file mode 100644 index 9effcf7a5d..0000000000 --- a/Composer/plugins/azurePublish/lib/botProjectDeployConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"botProjectDeployConfig.js","sourceRoot":"","sources":["../src/botProjectDeployConfig.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/botProjectLoggerType.d.ts b/Composer/plugins/azurePublish/lib/botProjectLoggerType.d.ts deleted file mode 100644 index 48219ab6db..0000000000 --- a/Composer/plugins/azurePublish/lib/botProjectLoggerType.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -export declare enum BotProjectDeployLoggerType { - PROVISION_INFO = "PROVISION_INFO", - PROVISION_ERROR = "PROVISION_ERROR", - PROVISION_WARNING = "PROVISION_WARNING", - PROVISION_SUCCESS = "PROVISION_SUCCESS", - PROVISION_ERROR_DETAILS = "PROVISION_ERROR_DETAILS", - DEPLOY_INFO = "DEPLOY_INFO", - DEPLOY_ERROR = "DEPLOY_ERROR", - DEPLOY_WARNING = "DEPLOY_WARNING", - DEPLOY_SUCCESS = "DEPLOY_SUCCESS" -} diff --git a/Composer/plugins/azurePublish/lib/botProjectLoggerType.js b/Composer/plugins/azurePublish/lib/botProjectLoggerType.js deleted file mode 100644 index c012b4e14b..0000000000 --- a/Composer/plugins/azurePublish/lib/botProjectLoggerType.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BotProjectDeployLoggerType = void 0; -var BotProjectDeployLoggerType; -(function (BotProjectDeployLoggerType) { - // Logger Type for Provision - BotProjectDeployLoggerType["PROVISION_INFO"] = "PROVISION_INFO"; - BotProjectDeployLoggerType["PROVISION_ERROR"] = "PROVISION_ERROR"; - BotProjectDeployLoggerType["PROVISION_WARNING"] = "PROVISION_WARNING"; - BotProjectDeployLoggerType["PROVISION_SUCCESS"] = "PROVISION_SUCCESS"; - BotProjectDeployLoggerType["PROVISION_ERROR_DETAILS"] = "PROVISION_ERROR_DETAILS"; - // Logger Type for Deploy - BotProjectDeployLoggerType["DEPLOY_INFO"] = "DEPLOY_INFO"; - BotProjectDeployLoggerType["DEPLOY_ERROR"] = "DEPLOY_ERROR"; - BotProjectDeployLoggerType["DEPLOY_WARNING"] = "DEPLOY_WARNING"; - BotProjectDeployLoggerType["DEPLOY_SUCCESS"] = "DEPLOY_SUCCESS"; -})(BotProjectDeployLoggerType = exports.BotProjectDeployLoggerType || (exports.BotProjectDeployLoggerType = {})); -//# sourceMappingURL=botProjectLoggerType.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/botProjectLoggerType.js.map b/Composer/plugins/azurePublish/lib/botProjectLoggerType.js.map deleted file mode 100644 index 46f8903ee9..0000000000 --- a/Composer/plugins/azurePublish/lib/botProjectLoggerType.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"botProjectLoggerType.js","sourceRoot":"","sources":["../src/botProjectLoggerType.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,IAAY,0BAaX;AAbD,WAAY,0BAA0B;IACpC,4BAA4B;IAC5B,+DAAiC,CAAA;IACjC,iEAAmC,CAAA;IACnC,qEAAuC,CAAA;IACvC,qEAAuC,CAAA;IACvC,iFAAmD,CAAA;IAEnD,yBAAyB;IACzB,yDAA2B,CAAA;IAC3B,2DAA6B,CAAA;IAC7B,+DAAiC,CAAA;IACjC,+DAAiC,CAAA;AACnC,CAAC,EAbW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAarC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/botProjectRuntimeType.d.ts b/Composer/plugins/azurePublish/lib/botProjectRuntimeType.d.ts deleted file mode 100644 index 3f8e64ed80..0000000000 --- a/Composer/plugins/azurePublish/lib/botProjectRuntimeType.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare enum BotProjectRuntimeType { - CSHARP = "CSHARP", - NODE = "NODE" -} diff --git a/Composer/plugins/azurePublish/lib/botProjectRuntimeType.js b/Composer/plugins/azurePublish/lib/botProjectRuntimeType.js deleted file mode 100644 index ec976b2b3a..0000000000 --- a/Composer/plugins/azurePublish/lib/botProjectRuntimeType.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BotProjectRuntimeType = void 0; -var BotProjectRuntimeType; -(function (BotProjectRuntimeType) { - BotProjectRuntimeType["CSHARP"] = "CSHARP"; - BotProjectRuntimeType["NODE"] = "NODE"; -})(BotProjectRuntimeType = exports.BotProjectRuntimeType || (exports.BotProjectRuntimeType = {})); -//# sourceMappingURL=botProjectRuntimeType.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/botProjectRuntimeType.js.map b/Composer/plugins/azurePublish/lib/botProjectRuntimeType.js.map deleted file mode 100644 index cd0675b45f..0000000000 --- a/Composer/plugins/azurePublish/lib/botProjectRuntimeType.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"botProjectRuntimeType.js","sourceRoot":"","sources":["../src/botProjectRuntimeType.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,0CAAiB,CAAA;IACjB,sCAAa,CAAA;AACf,CAAC,EAHW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAGhC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/deploy.d.ts b/Composer/plugins/azurePublish/lib/deploy.d.ts deleted file mode 100644 index 8e649a3735..0000000000 --- a/Composer/plugins/azurePublish/lib/deploy.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { BotProjectDeployConfig } from './botProjectDeployConfig'; -export declare class BotProjectDeploy { - private accessToken; - private projPath; - private zipPath; - private logger; - private runtime; - constructor(config: BotProjectDeployConfig); - /*******************************************************************************************************************************/ - /** - * Deploy a bot to a location - */ - deploy(project: any, settings: any, profileName: string, name: string, environment: string, hostname?: string, luisResource?: string): Promise; - private zipDirectory; - private deployZip; -} diff --git a/Composer/plugins/azurePublish/lib/deploy.js b/Composer/plugins/azurePublish/lib/deploy.js deleted file mode 100644 index 3ec9f95797..0000000000 --- a/Composer/plugins/azurePublish/lib/deploy.js +++ /dev/null @@ -1,166 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BotProjectDeploy = void 0; -const path = __importStar(require("path")); -const fs = __importStar(require("fs-extra")); -const rp = __importStar(require("request-promise")); -const botProjectLoggerType_1 = require("./botProjectLoggerType"); -const luisAndQnA_1 = require("./luisAndQnA"); -const archiver = require("archiver"); -class BotProjectDeploy { - constructor(config) { - var _a; - this.logger = config.logger; - this.accessToken = config.accessToken; - this.projPath = config.projPath; - // get the appropriate runtime - this.runtime = config.runtime; - // path to the zipped assets - this.zipPath = (_a = config.zipPath) !== null && _a !== void 0 ? _a : path.join(this.projPath, 'code.zip'); - } - /*******************************************************************************************************************************/ - /* This section has to do with deploying to existing Azure resources - /*******************************************************************************************************************************/ - /** - * Deploy a bot to a location - */ - deploy(project, settings, profileName, name, environment, hostname, luisResource) { - return __awaiter(this, void 0, void 0, function* () { - try { - // STEP 1: CLEAN UP PREVIOUS BUILDS - // cleanup any previous build - if (yield fs.pathExists(this.zipPath)) { - yield fs.remove(this.zipPath); - } - // STEP 2: UPDATE LUIS - // Do the LUIS build if LUIS settings are present - let language = settings.defaultLanguage || settings.luis.defaultLanguage; - if (!language) { - language = 'en-us'; - } - const publisher = new luisAndQnA_1.LuisAndQnaPublish({ logger: this.logger, projPath: this.projPath }); - // this function returns an object that contains the luis APP ids mapping - // each dialog to its matching app. - const { luisAppIds, qnaConfig } = yield publisher.publishLuisAndQna(name, environment, this.accessToken, language, settings.luis, settings.qna, luisResource); - // amend luis settings with newly generated values - settings.luis = Object.assign(Object.assign({}, settings.luis), luisAppIds); - settings.qna = Object.assign(Object.assign({}, settings.qna), qnaConfig); - // STEP 3: BUILD - // run any platform specific build steps. - // this returns a pathToArtifacts where the deployable version lives. - const pathToArtifacts = yield this.runtime.buildDeploy(this.projPath, project, settings, profileName); - // STEP 4: ZIP THE ASSETS - // Build a zip file of the project - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: 'Packing up the bot service ...', - }); - yield this.zipDirectory(pathToArtifacts, this.zipPath); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: 'Packing Service Success!', - }); - // STEP 5: DEPLOY THE ZIP FILE TO AZURE - // Deploy the zip file to the web app - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: 'Publishing to Azure ...', - }); - yield this.deployZip(this.accessToken, this.zipPath, name, environment, hostname); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_SUCCESS, - message: 'Publish To Azure Success!', - }); - } - catch (error) { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_ERROR, - message: JSON.stringify(error, Object.getOwnPropertyNames(error)), - }); - throw error; - } - }); - } - zipDirectory(source, out) { - return __awaiter(this, void 0, void 0, function* () { - const archive = archiver('zip', { zlib: { level: 9 } }); - const stream = fs.createWriteStream(out); - return new Promise((resolve, reject) => { - archive - .glob('**/*', { - cwd: source, - dot: true, - ignore: ['**/code.zip', 'node_modules/**/*'], - }) - .on('error', (err) => reject(err)) - .pipe(stream); - stream.on('close', () => resolve()); - archive.finalize(); - }); - }); - } - // Upload the zip file to Azure - // DOCS HERE: https://docs.microsoft.com/en-us/azure/app-service/deploy-zip - deployZip(token, zipPath, name, env, hostname) { - return __awaiter(this, void 0, void 0, function* () { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: 'Retrieve publishing details ...', - }); - const publishEndpoint = `https://${hostname ? hostname : name + '-' + env}.scm.azurewebsites.net/zipdeploy/?isAsync=true`; - try { - const response = yield rp.post({ - uri: publishEndpoint, - auth: { - bearer: token, - }, - body: fs.createReadStream(zipPath), - }); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: response, - }); - } - catch (err) { - if (err.statusCode === 403) { - throw new Error(`Token expired, please run az account get-access-token, then replace the accessToken in your configuration`); - } - else { - throw err; - } - } - }); - } -} -exports.BotProjectDeploy = BotProjectDeploy; -//# sourceMappingURL=deploy.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/deploy.js.map b/Composer/plugins/azurePublish/lib/deploy.js.map deleted file mode 100644 index 62d07c0a3b..0000000000 --- a/Composer/plugins/azurePublish/lib/deploy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElC,2CAA6B;AAE7B,6CAA+B;AAC/B,oDAAsC;AAGtC,iEAAoE;AACpE,6CAAiD;AACjD,qCAAsC;AAEtC,MAAa,gBAAgB;IAO3B,YAAY,MAA8B;;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,8BAA8B;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE9B,4BAA4B;QAC5B,IAAI,CAAC,OAAO,SAAG,MAAM,CAAC,OAAO,mCAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;IAED,iIAAiI;IACjI;qIACiI;IAEjI;;OAEG;IACU,MAAM,CACjB,OAAY,EACZ,QAAa,EACb,WAAmB,EACnB,IAAY,EACZ,WAAmB,EACnB,QAAiB,EACjB,YAAqB;;YAErB,IAAI;gBACF,mCAAmC;gBACnC,6BAA6B;gBAC7B,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBACrC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC/B;gBAED,sBAAsB;gBACtB,iDAAiD;gBACjD,IAAI,QAAQ,GAAG,QAAQ,CAAC,eAAe,IAAI,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;gBACzE,IAAI,CAAC,QAAQ,EAAE;oBACb,QAAQ,GAAG,OAAO,CAAC;iBACpB;gBACD,MAAM,SAAS,GAAG,IAAI,8BAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAE1F,yEAAyE;gBACzE,mCAAmC;gBACnC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,iBAAiB,CACjE,IAAI,EACJ,WAAW,EACX,IAAI,CAAC,WAAW,EAChB,QAAQ,EACR,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,GAAG,EACZ,YAAY,CACb,CAAC;gBAEF,kDAAkD;gBAClD,QAAQ,CAAC,IAAI,mCACR,QAAQ,CAAC,IAAI,GACb,UAAU,CACd,CAAC;gBACF,QAAQ,CAAC,GAAG,mCACP,QAAQ,CAAC,GAAG,GACZ,SAAS,CACb,CAAC;gBAEF,gBAAgB;gBAChB,yCAAyC;gBACzC,qEAAqE;gBACrE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAEtG,yBAAyB;gBACzB,kCAAkC;gBAClC,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;oBAC9C,OAAO,EAAE,gCAAgC;iBAC1C,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;oBAC9C,OAAO,EAAE,0BAA0B;iBACpC,CAAC,CAAC;gBAEH,uCAAuC;gBACvC,qCAAqC;gBACrC,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;oBAC9C,OAAO,EAAE,yBAAyB;iBACnC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAClF,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;oBACjD,OAAO,EAAE,2BAA2B;iBACrC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,YAAY;oBAC/C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;iBAClE,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;aACb;QACH,CAAC;KAAA;IAEa,YAAY,CAAC,MAAc,EAAE,GAAW;;YACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAEzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,OAAO;qBACJ,IAAI,CAAC,MAAM,EAAE;oBACZ,GAAG,EAAE,MAAM;oBACX,GAAG,EAAE,IAAI;oBACT,MAAM,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC;iBAC7C,CAAC;qBACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBACjC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEhB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAED,+BAA+B;IAC/B,2EAA2E;IAC7D,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,IAAY,EAAE,GAAW,EAAE,QAAiB;;YAClG,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;gBAC9C,OAAO,EAAE,iCAAiC;aAC3C,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,WACtB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,GACrC,gDAAgD,CAAC;YACjD,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC;oBAC7B,GAAG,EAAE,eAAe;oBACpB,IAAI,EAAE;wBACJ,MAAM,EAAE,KAAK;qBACd;oBACD,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;iBACnC,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;oBAC9C,OAAO,EAAE,QAAQ;iBAClB,CAAC,CAAC;aACJ;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;oBAC1B,MAAM,IAAI,KAAK,CACb,2GAA2G,CAC5G,CAAC;iBACH;qBAAM;oBACL,MAAM,GAAG,CAAC;iBACX;aACF;QACH,CAAC;KAAA;CACF;AAhKD,4CAgKC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/index.d.ts b/Composer/plugins/azurePublish/lib/index.d.ts deleted file mode 100644 index deae25e201..0000000000 --- a/Composer/plugins/azurePublish/lib/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: (composer: any) => Promise; -export default _default; diff --git a/Composer/plugins/azurePublish/lib/index.js b/Composer/plugins/azurePublish/lib/index.js deleted file mode 100644 index 072ffd9310..0000000000 --- a/Composer/plugins/azurePublish/lib/index.js +++ /dev/null @@ -1,380 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const path_1 = __importDefault(require("path")); -const uuid_1 = require("uuid"); -const md5_1 = __importDefault(require("md5")); -const fs_extra_1 = require("fs-extra"); -const mergeDeep_1 = require("./mergeDeep"); -const deploy_1 = require("./deploy"); -const schema_1 = __importDefault(require("./schema")); -// This option controls whether the history is serialized to a file between sessions with Composer -// set to TRUE for history to be saved to disk -// set to FALSE for history to be cached in memory only -const PERSIST_HISTORY = false; -const instructions = `To create a publish configuration, follow the instructions in the README file in your bot project folder.`; -// Wrap the entire class definition in the export so the composer object can be available to it -exports.default = (composer) => __awaiter(void 0, void 0, void 0, function* () { - class AzurePublisher { - constructor(mode, customName, customDescription) { - this.baseRuntimeFolder = process.env.AZURE_PUBLISH_PATH || path_1.default.resolve(__dirname, `../publishBots`); - /*******************************************************************************************************************************/ - /* These methods generate all the necessary paths to various files */ - /*******************************************************************************************************************************/ - // path to working folder containing all the assets - this.getRuntimeFolder = (key) => { - return path_1.default.resolve(this.baseRuntimeFolder, `${key}`); - }; - // path to the runtime code inside the working folder - this.getProjectFolder = (key, template) => { - return path_1.default.resolve(this.baseRuntimeFolder, `${key}/${template}`); - }; - // path to the declarative assets - this.getBotFolder = (key, template) => path_1.default.resolve(this.getProjectFolder(key, template), 'ComposerDialogs'); - this.getHistory = (botId, profileName) => __awaiter(this, void 0, void 0, function* () { - if (this.histories && this.histories[botId] && this.histories[botId][profileName]) { - return this.histories[botId][profileName]; - } - return []; - }); - this.updateHistory = (botId, profileName, newHistory) => __awaiter(this, void 0, void 0, function* () { - if (!this.histories[botId]) { - this.histories[botId] = {}; - } - if (!this.histories[botId][profileName]) { - this.histories[botId][profileName] = []; - } - this.histories[botId][profileName].unshift(newHistory); - if (PERSIST_HISTORY) { - yield fs_extra_1.writeJson(this.historyFilePath, this.histories); - } - }); - /*******************************************************************************************************************************/ - /* These methods implement the publish actions */ - /*******************************************************************************************************************************/ - /** - * Prepare a bot to be built and deployed by copying the runtime and declarative assets into a temporary folder - * @param project - * @param settings - * @param srcTemplate - * @param resourcekey - */ - this.init = (project, srcTemplate, resourcekey, runtime) => __awaiter(this, void 0, void 0, function* () { - // point to the declarative assets (possibly in remote storage) - const botFiles = project.getProject().files; - const botFolder = this.getBotFolder(resourcekey, this.mode); - const runtimeFolder = this.getRuntimeFolder(resourcekey); - // clean up from any previous deploys - yield this.cleanup(resourcekey); - // create the temporary folder to contain this project - fs_extra_1.mkdirSync(runtimeFolder, { recursive: true }); - // create the ComposerDialogs/ folder - fs_extra_1.mkdirSync(botFolder, { recursive: true }); - let manifestPath; - for (const file of botFiles) { - const pattern = /manifests\/[0-9A-z-]*.json/; - if (file.relativePath.match(pattern)) { - manifestPath = path_1.default.dirname(file.path); - } - // save bot files - const filePath = path_1.default.resolve(botFolder, file.relativePath); - if (!(yield fs_extra_1.pathExists(path_1.default.dirname(filePath)))) { - fs_extra_1.mkdirSync(path_1.default.dirname(filePath), { recursive: true }); - } - fs_extra_1.writeFileSync(filePath, file.content); - } - // save manifest - runtime.setSkillManifest(runtimeFolder, project.fileStorage, manifestPath, project.fileStorage, this.mode); - // copy bot and runtime into projFolder - yield fs_extra_1.copy(srcTemplate, runtimeFolder); - }); - /** - * Take the project from a given folder, build it, and push it to Azure. - * @param project - * @param runtime - * @param botId - * @param profileName - * @param jobId - * @param resourcekey - * @param customizeConfiguration - */ - this.performDeploymentAction = (project, settings, runtime, botId, profileName, jobId, resourcekey, customizeConfiguration) => __awaiter(this, void 0, void 0, function* () { - const { subscriptionID, accessToken, name, environment, hostname, luisResource } = customizeConfiguration; - try { - // Create the BotProjectDeploy object, which is used to carry out the deploy action. - const azDeployer = new deploy_1.BotProjectDeploy({ - subId: subscriptionID, - logger: (msg) => { - this.logger(msg); - this.logMessages.push(JSON.stringify(msg, null, 2)); - // update the log messages provided to Composer via the status API. - const status = this.getLoadingStatus(botId, profileName, jobId); - status.result.log = this.logMessages.join('\n'); - this.updateLoadingStatus(botId, profileName, jobId, status); - }, - accessToken: accessToken, - projPath: this.getProjectFolder(resourcekey, this.mode), - runtime: runtime, - }); - // Perform the deploy - yield azDeployer.deploy(project, settings, profileName, name, environment, hostname, luisResource); - // update status and history - const status = this.getLoadingStatus(botId, profileName, jobId); - if (status) { - status.status = 200; - status.result.message = 'Success'; - status.result.log = this.logMessages.join('\n'); - yield this.updateHistory(botId, profileName, Object.assign({ status: status.status }, status.result)); - this.removeLoadingStatus(botId, profileName, jobId); - yield this.cleanup(resourcekey); - } - } - catch (error) { - this.logger(error); - if (error instanceof Error) { - this.logMessages.push(error.message); - } - else if (typeof error === 'object') { - this.logMessages.push(JSON.stringify(error)); - } - else { - this.logMessages.push(error); - } - // update status and history - const status = this.getLoadingStatus(botId, profileName, jobId); - if (status) { - status.status = 500; - status.result.message = this.logMessages[this.logMessages.length - 1]; - status.result.log = this.logMessages.join('\n'); - yield this.updateHistory(botId, profileName, Object.assign({ status: status.status }, status.result)); - this.removeLoadingStatus(botId, profileName, jobId); - yield this.cleanup(resourcekey); - } - } - }); - /*******************************************************************************************************************************/ - /* These methods help to track the process of the deploy and provide info to Composer */ - /*******************************************************************************************************************************/ - this.addLoadingStatus = (botId, profileName, newStatus) => { - // save in publishingBots - if (!this.publishingBots[botId]) { - this.publishingBots[botId] = {}; - } - if (!this.publishingBots[botId][profileName]) { - this.publishingBots[botId][profileName] = []; - } - this.publishingBots[botId][profileName].push(newStatus); - }; - this.removeLoadingStatus = (botId, profileName, jobId) => { - if (this.publishingBots[botId] && this.publishingBots[botId][profileName]) { - const index = this.publishingBots[botId][profileName].findIndex((item) => item.result.id === jobId); - const status = this.publishingBots[botId][profileName][index]; - this.publishingBots[botId][profileName] = this.publishingBots[botId][profileName] - .slice(0, index) - .concat(this.publishingBots[botId][profileName].slice(index + 1)); - return status; - } - return; - }; - this.getLoadingStatus = (botId, profileName, jobId = '') => { - if (this.publishingBots[botId] && this.publishingBots[botId][profileName].length > 0) { - // get current status - if (jobId) { - return this.publishingBots[botId][profileName].find((item) => item.result.id === jobId); - } - return this.publishingBots[botId][profileName][this.publishingBots[botId][profileName].length - 1]; - } - return undefined; - }; - this.updateLoadingStatus = (botId, profileName, jobId = '', newStatus) => { - if (this.publishingBots[botId] && this.publishingBots[botId][profileName].length > 0) { - // get current status - if (jobId) { - for (let x = 0; x < this.publishingBots[botId][profileName].length; x++) { - if (this.publishingBots[botId][profileName][x].result.id === jobId) { - this.publishingBots[botId][profileName][x] = newStatus; - } - } - } - else { - this.publishingBots[botId][profileName][this.publishingBots[botId][profileName].length - 1] = newStatus; - } - } - }; - // move the init folder and publsih together and not wait in publish method. because init folder take a long time - this.asyncPublish = (config, project, resourcekey, jobId) => __awaiter(this, void 0, void 0, function* () { - const { - // these are provided by Composer - fullSettings, // all the bot's settings - includes sensitive values not included in projet.settings - profileName, // the name of the publishing profile "My Azure Prod Slot" - // these are specific to the azure publish profile shape - subscriptionID, name, environment, hostname, luisResource, defaultLanguage, settings, accessToken, } = config; - // get the appropriate runtime template which contains methods to build and configure the runtime - const runtime = composer.getRuntimeByProject(project); - // set runtime code path as runtime template folder path - let runtimeCodePath = runtime.path; - // If the project is using an "ejected" runtime, use that version of the code instead of the built-in template - // TODO: this templatePath should come from the runtime instead of this magic parameter - if (project.settings && - project.settings.runtime && - project.settings.runtime.customRuntime === true && - project.settings.runtime.path) { - runtimeCodePath = project.settings.runtime.path; - } - // Prepare the temporary project - // this writes all the settings to the root settings/appsettings.json file - yield this.init(project, runtimeCodePath, resourcekey, runtime); - // Merge all the settings - // this combines the bot-wide settings, the environment specific settings, and 2 new fields needed for deployed bots - // these will be written to the appropriate settings file inside the appropriate runtime plugin. - const mergedSettings = mergeDeep_1.mergeDeep(fullSettings, settings); - // Prepare parameters and then perform the actual deployment action - const customizeConfiguration = { - accessToken, - subscriptionID, - name, - environment, - hostname, - luisResource, - }; - yield this.performDeploymentAction(project, mergedSettings, runtime, project.id, profileName, jobId, resourcekey, customizeConfiguration); - }); - /************************************************************************************************** - * plugin methods - *************************************************************************************************/ - this.publish = (config, project, metadata, user) => __awaiter(this, void 0, void 0, function* () { - const { - // these are provided by Composer - profileName, // the name of the publishing profile "My Azure Prod Slot" - // these are specific to the azure publish profile shape - name, environment, settings, accessToken, } = config; - // get the bot id from the project - const botId = project.id; - // generate an id to track this deploy - const jobId = uuid_1.v4(); - // resource key to map to one provision resource - const resourcekey = md5_1.default([project.name, name, environment].join()); - // Initialize the output logs... - this.logMessages = ['Publish starting...']; - // Add first "in process" log message - const response = { - status: 202, - result: { - id: jobId, - time: new Date(), - message: 'Accepted for publishing.', - log: this.logMessages.join('\n'), - comment: metadata.comment, - }, - }; - this.addLoadingStatus(botId, profileName, response); - try { - // test creds, if not valid, return 500 - if (!accessToken) { - throw new Error('Required field `accessToken` is missing from publishing profile.'); - } - if (!settings) { - throw new Error('Required field `settings` is missing from publishing profile.'); - } - this.asyncPublish(config, project, resourcekey, jobId); - } - catch (err) { - console.log(err); - if (err instanceof Error) { - this.logMessages.push(err.message); - } - else if (typeof err === 'object') { - this.logMessages.push(JSON.stringify(err)); - } - else { - this.logMessages.push(err); - } - response.status = 500; - response.result.message = this.logMessages[this.logMessages.length - 1]; - yield this.updateHistory(botId, profileName, Object.assign({ status: response.status }, response.result)); - this.removeLoadingStatus(botId, profileName, jobId); - this.cleanup(resourcekey); - } - return response; - }); - this.getStatus = (config, project, user) => __awaiter(this, void 0, void 0, function* () { - const profileName = config.profileName; - const botId = project.id; - // return latest status - const status = this.getLoadingStatus(botId, profileName); - if (status) { - return status; - } - else { - const current = yield this.getHistory(botId, profileName); - if (current.length > 0) { - return { status: current[0].status, result: Object.assign({}, current[0]) }; - } - return { - status: 404, - result: { - message: 'bot not published', - }, - }; - } - }); - this.history = (config, project, user) => __awaiter(this, void 0, void 0, function* () { - const profileName = config.profileName; - const botId = project.id; - return yield this.getHistory(botId, profileName); - }); - this.histories = {}; - this.historyFilePath = path_1.default.resolve(__dirname, '../publishHistory.txt'); - if (PERSIST_HISTORY) { - this.loadHistoryFromFile(); - } - this.publishingBots = {}; - this.logMessages = []; - this.mode = mode || 'azurewebapp'; - this.schema = schema_1.default; - this.instructions = instructions; - this.customName = customName; - this.customDescription = customDescription; - this.logger = composer.log; - } - /*******************************************************************************************************************************/ - /* These methods deal with the publishing history displayed in the Composer UI */ - /*******************************************************************************************************************************/ - loadHistoryFromFile() { - return __awaiter(this, void 0, void 0, function* () { - if (yield fs_extra_1.pathExists(this.historyFilePath)) { - this.histories = yield fs_extra_1.readJson(this.historyFilePath); - } - }); - } - /** - * Remove any previous version of a project's working files - * @param resourcekey - */ - cleanup(resourcekey) { - return __awaiter(this, void 0, void 0, function* () { - const projFolder = this.getRuntimeFolder(resourcekey); - yield fs_extra_1.emptyDir(projFolder); - yield fs_extra_1.rmdir(projFolder); - }); - } - } - const azurePublish = new AzurePublisher(); - const azureFunctionsPublish = new AzurePublisher('azurefunctions', 'azureFunctionsPublish', 'Publish bot to Azure Functions (Preview)'); - yield composer.addPublishMethod(azurePublish); - yield composer.addPublishMethod(azureFunctionsPublish); -}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/index.js.map b/Composer/plugins/azurePublish/lib/index.js.map deleted file mode 100644 index ce3ada754c..0000000000 --- a/Composer/plugins/azurePublish/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;;;AAElC,gDAAwB;AAExB,+BAAkC;AAClC,8CAAsB;AACtB,uCAA4G;AAK5G,2CAAwC;AACxC,qCAA4C;AAC5C,sDAA8B;AAE9B,kGAAkG;AAClG,8CAA8C;AAC9C,uDAAuD;AACvD,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,MAAM,YAAY,GAAG,2GAA2G,CAAC;AAiBjI,+FAA+F;AAC/F,kBAAe,CAAO,QAAa,EAAiB,EAAE;IACpD,MAAM,cAAc;QAYlB,YAAY,IAAa,EAAE,UAAmB,EAAE,iBAA0B;YAgBlE,sBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;YAExG,iIAAiI;YACjI,sEAAsE;YACtE,iIAAiI;YAEjI,mDAAmD;YAC3C,qBAAgB,GAAG,CAAC,GAAW,EAAE,EAAE;gBACzC,OAAO,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC;YAEF,qDAAqD;YAC7C,qBAAgB,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,EAAE;gBAC3D,OAAO,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC;YAEF,iCAAiC;YACzB,iBAAY,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,EAAE,CACvD,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAWhE,eAAU,GAAG,CAAO,KAAa,EAAE,WAAmB,EAAE,EAAE;gBAChE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE;oBACjF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;iBAC3C;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAA,CAAC;YAEM,kBAAa,GAAG,CAAO,KAAa,EAAE,WAAmB,EAAE,UAAe,EAAE,EAAE;gBACpF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;iBAC5B;gBACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE;oBACvC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;iBACzC;gBACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACvD,IAAI,eAAe,EAAE;oBACnB,MAAM,oBAAS,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;iBACvD;YACH,CAAC,CAAA,CAAC;YAEF,iIAAiI;YACjI,iDAAiD;YACjD,iIAAiI;YACjI;;;;;;eAMG;YACK,SAAI,GAAG,CAAO,OAAY,EAAE,WAAmB,EAAE,WAAmB,EAAE,OAAY,EAAE,EAAE;gBAC5F,+DAA+D;gBAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAEzD,qCAAqC;gBACrC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAEhC,sDAAsD;gBACtD,oBAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE9C,qCAAqC;gBACrC,oBAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE1C,IAAI,YAAY,CAAC;gBACjB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;oBAC3B,MAAM,OAAO,GAAG,4BAA4B,CAAC;oBAC7C,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;wBACpC,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACxC;oBACD,iBAAiB;oBACjB,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC5D,IAAI,CAAC,CAAC,MAAM,qBAAU,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;wBAC/C,oBAAS,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;qBACxD;oBACD,wBAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;iBACvC;gBAED,gBAAgB;gBAChB,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE3G,uCAAuC;gBACvC,MAAM,eAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YACzC,CAAC,CAAA,CAAC;YAYF;;;;;;;;;eASG;YACK,4BAAuB,GAAG,CAChC,OAAoB,EACpB,QAAa,EACb,OAAY,EACZ,KAAa,EACb,WAAmB,EACnB,KAAa,EACb,WAAmB,EACnB,sBAAgD,EAChD,EAAE;gBACF,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,sBAAsB,CAAC;gBAC1G,IAAI;oBACF,oFAAoF;oBACpF,MAAM,UAAU,GAAG,IAAI,yBAAgB,CAAC;wBACtC,KAAK,EAAE,cAAc;wBACrB,MAAM,EAAE,CAAC,GAAQ,EAAE,EAAE;4BACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;4BACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;4BAEpD,mEAAmE;4BACnE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;4BAChE,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAEhD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;wBAC9D,CAAC;wBACD,WAAW,EAAE,WAAW;wBACxB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;wBACvD,OAAO,EAAE,OAAO;qBACjB,CAAC,CAAC;oBAEH,qBAAqB;oBACrB,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;oBAEnG,4BAA4B;oBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;oBAEhE,IAAI,MAAM,EAAE;wBACV,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;wBACpB,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;wBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAChD,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,kBAAI,MAAM,EAAE,MAAM,CAAC,MAAM,IAAK,MAAM,CAAC,MAAM,EAAG,CAAC;wBAC1F,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;wBACpD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;qBACjC;iBACF;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACnB,IAAI,KAAK,YAAY,KAAK,EAAE;wBAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;qBACtC;yBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;wBACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;qBAC9C;yBAAM;wBACL,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC9B;oBACD,4BAA4B;oBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;oBAChE,IAAI,MAAM,EAAE;wBACV,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;wBACpB,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACtE,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAChD,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,kBAAI,MAAM,EAAE,MAAM,CAAC,MAAM,IAAK,MAAM,CAAC,MAAM,EAAG,CAAC;wBAC1F,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;wBACpD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;qBACjC;iBACF;YACH,CAAC,CAAA,CAAC;YAEF,iIAAiI;YACjI,wFAAwF;YACxF,iIAAiI;YAEzH,qBAAgB,GAAG,CAAC,KAAa,EAAE,WAAmB,EAAE,SAAS,EAAE,EAAE;gBAC3E,yBAAyB;gBACzB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC/B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;iBACjC;gBACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE;oBAC5C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;iBAC9C;gBACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1D,CAAC,CAAC;YAEM,wBAAmB,GAAG,CAAC,KAAa,EAAE,WAAmB,EAAE,KAAa,EAAE,EAAE;gBAClF,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE;oBACzE,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;oBACpG,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC9D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;yBAC9E,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;yBACf,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;oBACpE,OAAO,MAAM,CAAC;iBACf;gBACD,OAAO;YACT,CAAC,CAAC;YAEM,qBAAgB,GAAG,CAAC,KAAa,EAAE,WAAmB,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE;gBAC5E,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpF,qBAAqB;oBACrB,IAAI,KAAK,EAAE;wBACT,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;qBACzF;oBACD,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;iBACpG;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC,CAAC;YAEM,wBAAmB,GAAG,CAAC,KAAa,EAAE,WAAmB,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE;gBAC1F,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpF,qBAAqB;oBACrB,IAAI,KAAK,EAAE;wBACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACvE,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,EAAE;gCAClE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;6BACxD;yBACF;qBACF;yBAAM;wBACL,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;qBACzG;iBACF;YACH,CAAC,CAAC;YAEF,iHAAiH;YACzG,iBAAY,GAAG,CAAO,MAAqB,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;gBAClF,MAAM;gBACJ,iCAAiC;gBACjC,YAAY,EAAE,qFAAqF;gBACnG,WAAW,EAAE,0DAA0D;gBAEvE,wDAAwD;gBACxD,cAAc,EACd,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,WAAW,GACZ,GAAG,MAAM,CAAC;gBAEX,iGAAiG;gBACjG,MAAM,OAAO,GAAG,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACtD,wDAAwD;gBACxD,IAAI,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;gBAEnC,8GAA8G;gBAC9G,uFAAuF;gBACvF,IACE,OAAO,CAAC,QAAQ;oBAChB,OAAO,CAAC,QAAQ,CAAC,OAAO;oBACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI;oBAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAC7B;oBACA,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;iBACjD;gBAED,gCAAgC;gBAChC,0EAA0E;gBAC1E,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBAEhE,yBAAyB;gBACzB,oHAAoH;gBACpH,gGAAgG;gBAChG,MAAM,cAAc,GAAG,qBAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBAEzD,mEAAmE;gBACnE,MAAM,sBAAsB,GAA6B;oBACvD,WAAW;oBACX,cAAc;oBACd,IAAI;oBACJ,WAAW;oBACX,QAAQ;oBACR,YAAY;iBACb,CAAC;gBACF,MAAM,IAAI,CAAC,uBAAuB,CAChC,OAAO,EACP,cAAc,EACd,OAAO,EACP,OAAO,CAAC,EAAE,EACV,WAAW,EACX,KAAK,EACL,WAAW,EACX,sBAAsB,CACvB,CAAC;YACJ,CAAC,CAAA,CAAC;YAEF;;+GAEmG;YACnG,YAAO,GAAG,CAAO,MAAqB,EAAE,OAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;gBAC9E,MAAM;gBACJ,iCAAiC;gBACjC,WAAW,EAAE,0DAA0D;gBAEvE,wDAAwD;gBACxD,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,WAAW,GACZ,GAAG,MAAM,CAAC;gBAEX,kCAAkC;gBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;gBAEzB,sCAAsC;gBACtC,MAAM,KAAK,GAAG,SAAI,EAAE,CAAC;gBAErB,gDAAgD;gBAChD,MAAM,WAAW,GAAG,aAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAElE,gCAAgC;gBAChC,IAAI,CAAC,WAAW,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBAC3C,qCAAqC;gBACrC,MAAM,QAAQ,GAAG;oBACf,MAAM,EAAE,GAAG;oBACX,MAAM,EAAE;wBACN,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,IAAI,IAAI,EAAE;wBAChB,OAAO,EAAE,0BAA0B;wBACnC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;wBAChC,OAAO,EAAE,QAAQ,CAAC,OAAO;qBAC1B;iBACF,CAAC;gBACF,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAEpD,IAAI;oBACF,uCAAuC;oBACvC,IAAI,CAAC,WAAW,EAAE;wBAChB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;qBACrF;oBACD,IAAI,CAAC,QAAQ,EAAE;wBACb,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;qBAClF;oBAED,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;iBACxD;gBAAC,OAAO,GAAG,EAAE;oBACZ,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,IAAI,GAAG,YAAY,KAAK,EAAE;wBACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;qBACpC;yBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;wBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC5C;yBAAM;wBACL,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBAC5B;oBAED,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;oBACtB,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAExE,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,kBAAI,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAK,QAAQ,CAAC,MAAM,EAAG,CAAC;oBAC9F,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;oBACpD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;iBAC3B;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAA,CAAC;YAEF,cAAS,GAAG,CAAO,MAAqB,EAAE,OAAoB,EAAE,IAAI,EAAE,EAAE;gBACtE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;gBACvC,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;gBACzB,uBAAuB;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACzD,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;qBAAM;oBACL,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;oBAC1D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACtB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,oBAAO,OAAO,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC;qBACjE;oBACD,OAAO;wBACL,MAAM,EAAE,GAAG;wBACX,MAAM,EAAE;4BACN,OAAO,EAAE,mBAAmB;yBAC7B;qBACF,CAAC;iBACH;YACH,CAAC,CAAA,CAAC;YAEF,YAAO,GAAG,CAAO,MAAqB,EAAE,OAAoB,EAAE,IAAI,EAAE,EAAE;gBACpE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;gBACvC,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;gBACzB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACnD,CAAC,CAAA,CAAC;YAxZA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;YACxE,IAAI,eAAe,EAAE;gBACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC5B;YACD,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,aAAa,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,gBAAM,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAC3C,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC7B,CAAC;QAsBD,iIAAiI;QACjI,iFAAiF;QACjF,iIAAiI;QACnH,mBAAmB;;gBAC/B,IAAI,MAAM,qBAAU,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;oBAC1C,IAAI,CAAC,SAAS,GAAG,MAAM,mBAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;iBACvD;YACH,CAAC;SAAA;QAoED;;;WAGG;QACW,OAAO,CAAC,WAAmB;;gBACvC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBACtD,MAAM,mBAAQ,CAAC,UAAU,CAAC,CAAC;gBAC3B,MAAM,gBAAK,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;SAAA;KAmSF;IAED,MAAM,YAAY,GAAG,IAAI,cAAc,EAAE,CAAC;IAC1C,MAAM,qBAAqB,GAAG,IAAI,cAAc,CAC9C,gBAAgB,EAChB,uBAAuB,EACvB,0CAA0C,CAC3C,CAAC;IAEF,MAAM,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;AACzD,CAAC,CAAA,CAAC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/luis.d.ts b/Composer/plugins/azurePublish/lib/luis.d.ts deleted file mode 100644 index 50720c9ce0..0000000000 --- a/Composer/plugins/azurePublish/lib/luis.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ILuisConfig } from '@bfc/shared'; -export interface LuisPublishConfig { - logger: (string: any) => any; - [key: string]: any; -} -export declare class LuisPublish { - private logger; - constructor(config: LuisPublishConfig); - /*******************************************************************************************************************************/ - /** - * return an array of all the files in a given directory - * @param dir - */ - private getFiles; - private notEmptyLuisModel; - /** - * Helper function to get the appropriate account out of a list of accounts - * @param accounts - * @param filter - */ - private getAccount; - publishLuis(workingFolder: string, name: string, environment: string, accessToken: string, language: string, luisSettings: ILuisConfig, luisResource?: string): Promise; -} diff --git a/Composer/plugins/azurePublish/lib/luis.js b/Composer/plugins/azurePublish/lib/luis.js deleted file mode 100644 index 36baf23629..0000000000 --- a/Composer/plugins/azurePublish/lib/luis.js +++ /dev/null @@ -1,194 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LuisPublish = void 0; -const path = __importStar(require("path")); -const util_1 = require("util"); -const fs = __importStar(require("fs-extra")); -const rp = __importStar(require("request-promise")); -const botProjectLoggerType_1 = require("./botProjectLoggerType"); -const luBuild = require('@microsoft/bf-lu/lib/parser/lubuild/builder.js'); -const readdir = util_1.promisify(fs.readdir); -class LuisPublish { - constructor(config) { - this.logger = config.logger; - } - /*******************************************************************************************************************************/ - /* This section has to do with publishing LU files to LUIS - /*******************************************************************************************************************************/ - /** - * return an array of all the files in a given directory - * @param dir - */ - getFiles(dir) { - return __awaiter(this, void 0, void 0, function* () { - const dirents = yield readdir(dir, { withFileTypes: true }); - const files = yield Promise.all(dirents.map((dirent) => { - const res = path.resolve(dir, dirent.name); - return dirent.isDirectory() ? this.getFiles(res) : res; - })); - return Array.prototype.concat(...files); - }); - } - notEmptyLuisModel(file) { - return fs.readFileSync(file).length > 0; - } - /** - * Helper function to get the appropriate account out of a list of accounts - * @param accounts - * @param filter - */ - getAccount(accounts, filter) { - for (const account of accounts) { - if (account.AccountName === filter) { - return account; - } - } - } - // Run through the lubuild process - // This happens in the build folder, NOT in the original source folder - publishLuis(workingFolder, name, environment, accessToken, language, luisSettings, luisResource) { - var _a, _b, _c, _d; - return __awaiter(this, void 0, void 0, function* () { - const { authoringKey: luisAuthoringKey, authoringRegion: luisAuthoringRegion } = luisSettings; - let { endpoint: luisEndpoint, authoringEndpoint: luisAuthoringEndpoint } = luisSettings; - if (luisAuthoringKey && luisAuthoringRegion) { - // Get a list of all the .lu files that are not empty - const botFiles = yield this.getFiles(workingFolder); - const modelFiles = botFiles.filter((name) => { - return name.endsWith('.lu') && this.notEmptyLuisModel(name); - }); - // Identify the generated folder - const generatedFolder = path.join(workingFolder, 'ComposerDialogs/generated'); - // Identify the deployment settings file - // const deploymentSettingsPath = path.join(workingFolder, 'appsettings.deployment.json'); - // Ensure the generated folder exists - if (!(yield fs.pathExists(generatedFolder))) { - yield fs.mkdir(generatedFolder); - } - // Instantiate the LuBuild object from the LU parsing library - // This object is responsible for parsing the LU files and sending them to LUIS - const builder = new luBuild.Builder((msg) => this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: msg, - })); - // Pass in the list of the non-empty LU files we got above... - const loadResult = yield builder.loadContents(modelFiles, language || 'en-us', environment || '', luisAuthoringRegion || ''); - // set the default endpoint - if (!luisEndpoint) { - luisEndpoint = `https://${luisAuthoringRegion}.api.cognitive.microsoft.com`; - } - // if not specified, set the authoring endpoint - if (!luisAuthoringEndpoint) { - luisAuthoringEndpoint = luisEndpoint; - } - // Perform the Lubuild process - // This will create new luis apps for each of the luis models represented in the LU files - const buildResult = yield builder.build(loadResult.luContents, loadResult.recognizers, luisAuthoringKey, luisAuthoringEndpoint, name, environment, language, true, false, loadResult.multiRecognizers, loadResult.settings); - // Write the generated files to the generated folder - yield builder.writeDialogAssets(buildResult, true, generatedFolder); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: `lubuild succeed`, - }); - // Find any files that contain the name 'luis.settings' in them - // These are generated by the LuBuild process and placed in the generated folder - // These contain dialog-to-luis app id mapping - const luisConfigFiles = (yield this.getFiles(workingFolder)).filter((filename) => filename.includes('luis.settings')); - const luisAppIds = {}; - // Read in all the luis app id mappings - for (const luisConfigFile of luisConfigFiles) { - const luisSettings = yield fs.readJson(luisConfigFile); - Object.assign(luisAppIds, luisSettings.luis); - } - // In order for the bot to use the LUIS models, we need to assign a LUIS key to the endpoint of each app - // First step is to get a list of all the accounts available based on the given luisAuthoringKey. - let accountList; - try { - // Make a call to the azureaccounts api - // DOCS HERE: https://westus.dev.cognitive.microsoft.com/docs/services/5890b47c39e2bb17b84a55ff/operations/5be313cec181ae720aa2b26c - // This returns a list of azure account information objects with AzureSubscriptionID, ResourceGroup, AccountName for each. - const getAccountUri = `${luisEndpoint}/luis/api/v2.0/azureaccounts`; - const options = { - headers: { Authorization: `Bearer ${accessToken}`, 'Ocp-Apim-Subscription-Key': luisAuthoringKey }, - }; - const response = yield rp.get(getAccountUri, options); - // this should include an array of account info objects - accountList = JSON.parse(response); - } - catch (err) { - // handle the token invalid - const error = JSON.parse(err.error); - if (((_a = error === null || error === void 0 ? void 0 : error.error) === null || _a === void 0 ? void 0 : _a.message) && ((_b = error === null || error === void 0 ? void 0 : error.error) === null || _b === void 0 ? void 0 : _b.message.indexOf('access token expiry')) > 0) { - throw new Error(`Type: ${(_c = error === null || error === void 0 ? void 0 : error.error) === null || _c === void 0 ? void 0 : _c.code}, Message: ${(_d = error === null || error === void 0 ? void 0 : error.error) === null || _d === void 0 ? void 0 : _d.message}, run az account get-access-token, then replace the accessToken in your configuration`); - } - else { - throw err; - } - } - // Extract the accoutn object that matches the expected resource name. - // This is the name that would appear in the azure portal associated with the luis endpoint key. - const account = this.getAccount(accountList, luisResource ? luisResource : `${name}-${environment}-luis`); - // Assign the appropriate account to each of the applicable LUIS apps for this bot. - // DOCS HERE: https://westus.dev.cognitive.microsoft.com/docs/services/5890b47c39e2bb17b84a55ff/operations/5be32228e8473de116325515 - for (const dialogKey in luisAppIds) { - const luisAppId = luisAppIds[dialogKey]; - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: `Assigning to luis app id: ${luisAppId}`, - }); - const luisAssignEndpoint = `${luisEndpoint}/luis/api/v2.0/apps/${luisAppId}/azureaccounts`; - const options = { - body: account, - json: true, - headers: { Authorization: `Bearer ${accessToken}`, 'Ocp-Apim-Subscription-Key': luisAuthoringKey }, - }; - const response = yield rp.post(luisAssignEndpoint, options); - // TODO: Add some error handling on this API call. As it is, errors will just throw by default and be caught by the catch all try/catch in the deploy method - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: response, - }); - } - // The process has now completed. - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: 'Luis Publish Success! ...', - }); - // return the new settings that need to be added to the main settings file. - return luisAppIds; - } - }); - } -} -exports.LuisPublish = LuisPublish; -//# sourceMappingURL=luis.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/luis.js.map b/Composer/plugins/azurePublish/lib/luis.js.map deleted file mode 100644 index 63e19f7bb1..0000000000 --- a/Composer/plugins/azurePublish/lib/luis.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"luis.js","sourceRoot":"","sources":["../src/luis.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElC,2CAA6B;AAC7B,+BAAiC;AAEjC,6CAA+B;AAC/B,oDAAsC;AAGtC,iEAAoE;AAEpE,MAAM,OAAO,GAAG,OAAO,CAAC,gDAAgD,CAAC,CAAC;AAC1E,MAAM,OAAO,GAAQ,gBAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAQ3C,MAAa,WAAW;IAGtB,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,iIAAiI;IACjI;qIACiI;IAEjI;;;OAGG;IACW,QAAQ,CAAC,GAAW;;YAChC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACzD,CAAC,CAAC,CACH,CAAC;YACF,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEO,iBAAiB,CAAC,IAAY;QACpC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACK,UAAU,CAAC,QAAa,EAAE,MAAc;QAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,OAAO,CAAC,WAAW,KAAK,MAAM,EAAE;gBAClC,OAAO,OAAO,CAAC;aAChB;SACF;IACH,CAAC;IAED,kCAAkC;IAClC,sEAAsE;IACzD,WAAW,CACtB,aAAqB,EACrB,IAAY,EACZ,WAAmB,EACnB,WAAmB,EACnB,QAAgB,EAChB,YAAyB,EACzB,YAAqB;;;YAErB,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC;YAC9F,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,GAAG,YAAY,CAAC;YAExF,IAAI,gBAAgB,IAAI,mBAAmB,EAAE;gBAC3C,qDAAqD;gBACrD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;gBAEH,gCAAgC;gBAChC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;gBAE9E,wCAAwC;gBACxC,0FAA0F;gBAE1F,qCAAqC;gBACrC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE;oBAC3C,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;iBACjC;gBAED,6DAA6D;gBAC7D,+EAA+E;gBAC/E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1C,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;oBAC9C,OAAO,EAAE,GAAG;iBACb,CAAC,CACH,CAAC;gBAEF,6DAA6D;gBAC7D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,CAC3C,UAAU,EACV,QAAQ,IAAI,OAAO,EACnB,WAAW,IAAI,EAAE,EACjB,mBAAmB,IAAI,EAAE,CAC1B,CAAC;gBAEF,2BAA2B;gBAC3B,IAAI,CAAC,YAAY,EAAE;oBACjB,YAAY,GAAG,WAAW,mBAAmB,8BAA8B,CAAC;iBAC7E;gBAED,+CAA+C;gBAC/C,IAAI,CAAC,qBAAqB,EAAE;oBAC1B,qBAAqB,GAAG,YAAY,CAAC;iBACtC;gBAED,8BAA8B;gBAC9B,yFAAyF;gBACzF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CACrC,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,WAAW,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,UAAU,CAAC,gBAAgB,EAC3B,UAAU,CAAC,QAAQ,CACpB,CAAC;gBAEF,oDAAoD;gBACpD,MAAM,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;gBAEpE,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;oBAC9C,OAAO,EAAE,iBAAiB;iBAC3B,CAAC,CAAC;gBAEH,+DAA+D;gBAC/D,gFAAgF;gBAChF,8CAA8C;gBAC9C,MAAM,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/E,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CACnC,CAAC;gBACF,MAAM,UAAU,GAAQ,EAAE,CAAC;gBAE3B,uCAAuC;gBACvC,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;oBAC5C,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;oBACvD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;iBAC9C;gBAED,wGAAwG;gBACxG,iGAAiG;gBACjG,IAAI,WAAW,CAAC;gBAChB,IAAI;oBACF,uCAAuC;oBACvC,mIAAmI;oBACnI,0HAA0H;oBAC1H,MAAM,aAAa,GAAG,GAAG,YAAY,8BAA8B,CAAC;oBACpE,MAAM,OAAO,GAAG;wBACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE,2BAA2B,EAAE,gBAAgB,EAAE;qBACvE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;oBAEtD,uDAAuD;oBACvD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;iBACpC;gBAAC,OAAO,GAAG,EAAE;oBACZ,2BAA2B;oBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACpC,IAAI,OAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,OAAO,KAAI,OAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,OAAO,CAAC,OAAO,CAAC,qBAAqB,KAAI,CAAC,EAAE;wBACrF,MAAM,IAAI,KAAK,CACb,SAAS,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,IAAI,cAAc,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,OAAO,uFAAuF,CACtJ,CAAC;qBACH;yBAAM;wBACL,MAAM,GAAG,CAAC;qBACX;iBACF;gBACD,sEAAsE;gBACtE,gGAAgG;gBAChG,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,WAAW,OAAO,CAAC,CAAC;gBAE1G,mFAAmF;gBACnF,mIAAmI;gBACnI,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;oBAClC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,CAAC,MAAM,CAAC;wBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;wBAC9C,OAAO,EAAE,6BAA6B,SAAS,EAAE;qBAClD,CAAC,CAAC;oBAEH,MAAM,kBAAkB,GAAG,GAAG,YAAY,uBAAuB,SAAS,gBAAgB,CAAC;oBAC3F,MAAM,OAAO,GAAG;wBACd,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE,2BAA2B,EAAE,gBAAgB,EAAE;qBACvE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;oBAE5D,4JAA4J;oBAE5J,IAAI,CAAC,MAAM,CAAC;wBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;wBAC9C,OAAO,EAAE,QAAQ;qBAClB,CAAC,CAAC;iBACJ;gBAED,iCAAiC;gBACjC,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;oBAC9C,OAAO,EAAE,2BAA2B;iBACrC,CAAC,CAAC;gBAEH,2EAA2E;gBAC3E,OAAO,UAAU,CAAC;aACnB;;KACF;CACF;AA7MD,kCA6MC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/luisAndQnA.d.ts b/Composer/plugins/azurePublish/lib/luisAndQnA.d.ts deleted file mode 100644 index 4ede244b67..0000000000 --- a/Composer/plugins/azurePublish/lib/luisAndQnA.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { ILuisConfig, IQnAConfig } from '@bfc/shared'; -export interface PublishConfig { - logger: (string: any) => any; - projPath: string; - [key: string]: any; -} -export declare class LuisAndQnaPublish { - private logger; - private remoteBotPath; - private generatedFolder; - private interruptionFolderPath; - private crossTrainConfig; - constructor(config: PublishConfig); - /*******************************************************************************************************************************/ - /** - * return an array of all the files in a given directory - * @param dir - */ - private getFiles; - /** - * Helper function to get the appropriate account out of a list of accounts - * @param accounts - * @param filter - */ - private getAccount; - private notEmptyModel; - private createGeneratedDir; - private setCrossTrainConfig; - private writeCrossTrainFiles; - private crossTrain; - private cleanCrossTrain; - private getInterruptionFiles; - private publishLuis; - private buildLuis; - private buildQna; - publishLuisAndQna(name: string, environment: string, accessToken: string, language: string, luisSettings: ILuisConfig, qnaSettings: IQnAConfig, luisResource?: string): Promise<{ - luisAppIds: {}; - qnaConfig: any; - }>; -} diff --git a/Composer/plugins/azurePublish/lib/luisAndQnA.js b/Composer/plugins/azurePublish/lib/luisAndQnA.js deleted file mode 100644 index b48f4c5816..0000000000 --- a/Composer/plugins/azurePublish/lib/luisAndQnA.js +++ /dev/null @@ -1,359 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LuisAndQnaPublish = void 0; -const path = __importStar(require("path")); -const util_1 = require("util"); -const fs = __importStar(require("fs-extra")); -const rp = __importStar(require("request-promise")); -const crossTrainUtil_1 = require("./utils/crossTrainUtil"); -const botProjectLoggerType_1 = require("./botProjectLoggerType"); -const crossTrainer = require('@microsoft/bf-lu/lib/parser/cross-train/crossTrainer.js'); -const luBuild = require('@microsoft/bf-lu/lib/parser/lubuild/builder.js'); -const qnaBuild = require('@microsoft/bf-lu/lib/parser/qnabuild/builder.js'); -const readdir = util_1.promisify(fs.readdir); -const INTERUPTION = 'interuption'; -class LuisAndQnaPublish { - constructor(config) { - this.logger = config.logger; - // path to the ready to deploy generated folder - this.remoteBotPath = path.join(config.projPath, 'ComposerDialogs'); - this.generatedFolder = path.join(this.remoteBotPath, 'generated'); - this.interruptionFolderPath = path.join(this.generatedFolder, INTERUPTION); - // Cross Train config - this.crossTrainConfig = { - rootIds: [], - triggerRules: {}, - intentName: '_Interruption', - verbose: true, - botName: '', - }; - } - /*******************************************************************************************************************************/ - /* This section has to do with publishing LU files to LUIS - /*******************************************************************************************************************************/ - /** - * return an array of all the files in a given directory - * @param dir - */ - getFiles(dir) { - return __awaiter(this, void 0, void 0, function* () { - const dirents = yield readdir(dir, { withFileTypes: true }); - const files = yield Promise.all(dirents.map((dirent) => { - const res = path.resolve(dir, dirent.name); - return dirent.isDirectory() ? this.getFiles(res) : res; - })); - return Array.prototype.concat(...files); - }); - } - /** - * Helper function to get the appropriate account out of a list of accounts - * @param accounts - * @param filter - */ - getAccount(accounts, filter) { - for (const account of accounts) { - if (account.AccountName === filter) { - return account; - } - } - } - notEmptyModel(file) { - return fs.readFileSync(file).length > 0; - } - createGeneratedDir() { - return __awaiter(this, void 0, void 0, function* () { - if (!(yield fs.pathExists(this.generatedFolder))) { - yield fs.mkdir(this.generatedFolder); - } - }); - } - setCrossTrainConfig(botName, dialogFiles, luFiles) { - return __awaiter(this, void 0, void 0, function* () { - const dialogs = []; - for (const dialog of dialogFiles) { - dialogs.push({ - id: dialog.substring(dialog.lastIndexOf('\\') + 1, dialog.length), - isRoot: dialog.indexOf(path.join(this.remoteBotPath, 'dialogs')) === -1, - content: fs.readJSONSync(dialog), - }); - } - const luFileInfos = luFiles.map((luFile) => { - const fileStats = fs.statSync(luFile); - return { - name: luFile.substring(luFile.lastIndexOf('\\') + 1), - content: fs.readFileSync(luFile, 'utf-8'), - lastModified: fileStats.mtime.toString(), - path: luFile, - relativePath: luFile.substring(luFile.lastIndexOf(this.remoteBotPath) + 1), - }; - }); - this.crossTrainConfig = crossTrainUtil_1.createCrossTrainConfig(dialogs, luFileInfos); - }); - } - writeCrossTrainFiles(crossTrainResult) { - return __awaiter(this, void 0, void 0, function* () { - if (!(yield fs.pathExists(this.interruptionFolderPath))) { - yield fs.mkdir(this.interruptionFolderPath); - } - yield Promise.all([...crossTrainResult.keys()].map((key) => __awaiter(this, void 0, void 0, function* () { - const fileName = path.basename(key); - const newFileId = path.join(this.interruptionFolderPath, fileName); - yield fs.writeFile(newFileId, crossTrainResult.get(key).Content); - }))); - }); - } - crossTrain(luFiles, qnaFiles) { - return __awaiter(this, void 0, void 0, function* () { - const luContents = []; - const qnaContents = []; - for (const luFile of luFiles) { - luContents.push({ - content: fs.readFileSync(luFile, { encoding: 'utf-8' }), - id: luFile.substring(luFile.lastIndexOf('\\') + 1), - }); - } - for (const qnaFile of qnaFiles) { - qnaContents.push({ - content: fs.readFileSync(qnaFile, { encoding: 'utf-8' }), - id: qnaFile.substring(qnaFile.lastIndexOf('\\') + 1), - }); - } - const result = yield crossTrainer.crossTrain(luContents, qnaContents, this.crossTrainConfig); - yield this.writeCrossTrainFiles(result.luResult); - yield this.writeCrossTrainFiles(result.qnaResult); - }); - } - cleanCrossTrain() { - return __awaiter(this, void 0, void 0, function* () { - fs.rmdirSync(this.interruptionFolderPath, { recursive: true }); - }); - } - getInterruptionFiles() { - return __awaiter(this, void 0, void 0, function* () { - const files = yield this.getFiles(this.interruptionFolderPath); - const interruptionLuFiles = []; - const interruptionQnaFiles = []; - files.forEach((file) => { - if (file.endsWith('qna')) { - interruptionQnaFiles.push(file); - } - else if (file.endsWith('lu')) { - interruptionLuFiles.push(file); - } - }); - return { interruptionLuFiles, interruptionQnaFiles }; - }); - } - publishLuis(name, environment, accessToken, language, luisSettings, interruptionLuFiles, luisResource) { - var _a, _b, _c, _d; - return __awaiter(this, void 0, void 0, function* () { - const { authoringKey: luisAuthoringKey, endpoint: luisEndpoint } = luisSettings; - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: 'start publish luis', - }); - // Find any files that contain the name 'luis.settings' in them - // These are generated by the LuBuild process and placed in the generated folder - // These contain dialog-to-luis app id mapping - const luisConfigFiles = (yield this.getFiles(this.remoteBotPath)).filter((filename) => filename.includes('luis.settings')); - const luisAppIds = {}; - // Read in all the luis app id mappings - for (const luisConfigFile of luisConfigFiles) { - const luisSettings = yield fs.readJson(luisConfigFile); - Object.assign(luisAppIds, luisSettings.luis); - } - // In order for the bot to use the LUIS models, we need to assign a LUIS key to the endpoint of each app - // First step is to get a list of all the accounts available based on the given luisAuthoringKey. - let accountList; - try { - // Make a call to the azureaccounts api - // DOCS HERE: https://westus.dev.cognitive.microsoft.com/docs/services/5890b47c39e2bb17b84a55ff/operations/5be313cec181ae720aa2b26c - // This returns a list of azure account information objects with AzureSubscriptionID, ResourceGroup, AccountName for each. - const getAccountUri = `${luisEndpoint}/luis/api/v2.0/azureaccounts`; - const options = { - headers: { Authorization: `Bearer ${accessToken}`, 'Ocp-Apim-Subscription-Key': luisAuthoringKey }, - }; - const response = yield rp.get(getAccountUri, options); - // this should include an array of account info objects - accountList = JSON.parse(response); - } - catch (err) { - // handle the token invalid - const error = JSON.parse(err.error); - if (((_a = error === null || error === void 0 ? void 0 : error.error) === null || _a === void 0 ? void 0 : _a.message) && ((_b = error === null || error === void 0 ? void 0 : error.error) === null || _b === void 0 ? void 0 : _b.message.indexOf('access token expiry')) > 0) { - throw new Error(`Type: ${(_c = error === null || error === void 0 ? void 0 : error.error) === null || _c === void 0 ? void 0 : _c.code}, Message: ${(_d = error === null || error === void 0 ? void 0 : error.error) === null || _d === void 0 ? void 0 : _d.message}, run az account get-access-token, then replace the accessToken in your configuration`); - } - else { - throw err; - } - } - // Extract the accoutn object that matches the expected resource name. - // This is the name that would appear in the azure portal associated with the luis endpoint key. - const account = this.getAccount(accountList, luisResource ? luisResource : `${name}-${environment}-luis`); - // Assign the appropriate account to each of the applicable LUIS apps for this bot. - // DOCS HERE: https://westus.dev.cognitive.microsoft.com/docs/services/5890b47c39e2bb17b84a55ff/operations/5be32228e8473de116325515 - for (const dialogKey in luisAppIds) { - const luisAppId = luisAppIds[dialogKey]; - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: `Assigning to luis app id: ${luisAppId}`, - }); - const luisAssignEndpoint = `${luisEndpoint}/luis/api/v2.0/apps/${luisAppId}/azureaccounts`; - const options = { - body: account, - json: true, - headers: { Authorization: `Bearer ${accessToken}`, 'Ocp-Apim-Subscription-Key': luisAuthoringKey }, - }; - const response = yield rp.post(luisAssignEndpoint, options); - // TODO: Add some error handling on this API call. As it is, errors will just throw by default and be caught by the catch all try/catch in the deploy method - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: response, - }); - } - // The process has now completed. - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: 'Luis Publish Success! ...', - }); - // return the new settings that need to be added to the main settings file. - return luisAppIds; - }); - } - // Run through the lubuild process - // This happens in the build folder, NOT in the original source folder - buildLuis(name, environment, language, luisSettings, interruptionLuFiles) { - return __awaiter(this, void 0, void 0, function* () { - const { authoringKey: luisAuthoringKey, authoringRegion: luisAuthoringRegion } = luisSettings; - // Instantiate the LuBuild object from the LU parsing library - // This object is responsible for parsing the LU files and sending them to LUIS - const builder = new luBuild.Builder((msg) => this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: msg, - })); - // Pass in the list of the non-empty LU files we got above... - const loadResult = yield builder.loadContents(interruptionLuFiles, language || 'en-us', environment || '', luisAuthoringRegion || ''); - // set the default endpoint - if (!luisSettings.endpoint) { - luisSettings.endpoint = `https://${luisAuthoringRegion}.api.cognitive.microsoft.com`; - } - // if not specified, set the authoring endpoint - if (!luisSettings.authoringEndpoint) { - luisSettings.authoringEndpoint = luisSettings.endpoint; - } - // Perform the Lubuild process - // This will create new luis apps for each of the luis models represented in the LU files - const buildResult = yield builder.build(loadResult.luContents, loadResult.recognizers, luisAuthoringKey, luisSettings.authoringEndpoint, name, environment, language, true, false, loadResult.multiRecognizers, loadResult.settings, loadResult.crosstrainedRecognizers, 'crosstrained'); - // Write the generated files to the generated folder - yield builder.writeDialogAssets(buildResult, true, this.generatedFolder); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: `lubuild succeed`, - }); - }); - } - buildQna(name, environment, language, qnaSettings, interruptionQnaFiles) { - return __awaiter(this, void 0, void 0, function* () { - // eslint-disable-next-line prefer-const - let { subscriptionKey } = qnaSettings; - const authoringRegion = 'westus'; - // publishing luis - const builder = new qnaBuild.Builder((msg) => this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: msg, - })); - const loadResult = yield builder.loadContents(interruptionQnaFiles, name, environment || '', authoringRegion || '', language || ''); - const endpoint = `https://${authoringRegion}.api.cognitive.microsoft.com/qnamaker/v4.0`; - const buildResult = yield builder.build(loadResult.qnaContents, loadResult.recognizers, subscriptionKey, endpoint, name, environment, language, loadResult.multiRecognizers, loadResult.settings, loadResult.crosstrainedRecognizers, 'crosstrained'); - yield builder.writeDialogAssets(buildResult, true, this.generatedFolder); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.DEPLOY_INFO, - message: `qnabuild succeed`, - }); - // Find any files that contain the name 'qnamaker.settings' in them - // These are generated by the LuBuild process and placed in the generated folder - // These contain dialog-to-luis app id mapping - const qnaConfigFile = (yield this.getFiles(this.remoteBotPath)).find((filename) => filename.includes('qnamaker.settings')); - const qna = {}; - // Read the qna settings - if (qnaConfigFile) { - const qnaConfig = yield fs.readJson(qnaConfigFile); - const endpointKey = yield builder.getEndpointKeys(subscriptionKey, endpoint); - Object.assign(qna, qnaConfig.qna, { endpointKey: endpointKey.primaryEndpointKey }); - } - return qna; - }); - } - // Run through the build process - // This happens in the build folder, NOT in the original source folder - publishLuisAndQna(name, environment, accessToken, language, luisSettings, qnaSettings, luisResource) { - return __awaiter(this, void 0, void 0, function* () { - const { authoringKey, authoringRegion } = luisSettings; - const { subscriptionKey } = qnaSettings; - const botFiles = yield this.getFiles(this.remoteBotPath); - const luFiles = botFiles.filter((name) => { - return name.endsWith('.lu'); - }); - const qnaFiles = botFiles.filter((name) => { - return name.endsWith('.qna'); - }); - // check content - const notEmptyLuFiles = luFiles.some((name) => this.notEmptyModel(name)); - const notEmptyQnaFiles = qnaFiles.some((name) => this.notEmptyModel(name)); - if (notEmptyLuFiles && !(authoringKey && authoringRegion)) { - throw Error('Should have luis authoringKey and authoringRegion when lu file not empty'); - } - if (notEmptyQnaFiles && !subscriptionKey) { - throw Error('Should have qna subscriptionKey when qna file not empty'); - } - const dialogFiles = botFiles.filter((name) => { - return name.endsWith('.dialog') && this.notEmptyModel(name); - }); - yield this.setCrossTrainConfig(name, dialogFiles, luFiles); - yield this.createGeneratedDir(); - yield this.crossTrain(luFiles, qnaFiles); - const { interruptionLuFiles, interruptionQnaFiles } = yield this.getInterruptionFiles(); - yield this.buildLuis(name, environment, language, luisSettings, interruptionLuFiles); - let luisAppIds = {}; - // publish luis only when Lu files not empty - if (notEmptyLuFiles) { - luisAppIds = yield this.publishLuis(name, environment, accessToken, language, luisSettings, interruptionLuFiles, luisResource); - } - const qnaConfig = yield this.buildQna(name, environment, language, qnaSettings, interruptionQnaFiles); - yield this.cleanCrossTrain(); - return { luisAppIds, qnaConfig }; - }); - } -} -exports.LuisAndQnaPublish = LuisAndQnaPublish; -//# sourceMappingURL=luisAndQnA.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/luisAndQnA.js.map b/Composer/plugins/azurePublish/lib/luisAndQnA.js.map deleted file mode 100644 index 8364a87a43..0000000000 --- a/Composer/plugins/azurePublish/lib/luisAndQnA.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"luisAndQnA.js","sourceRoot":"","sources":["../src/luisAndQnA.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElC,2CAA6B;AAC7B,+BAAiC;AAEjC,6CAA+B;AAC/B,oDAAsC;AAGtC,2DAAmF;AACnF,iEAAoE;AAEpE,MAAM,YAAY,GAAG,OAAO,CAAC,yDAAyD,CAAC,CAAC;AACxF,MAAM,OAAO,GAAG,OAAO,CAAC,gDAAgD,CAAC,CAAC;AAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,iDAAiD,CAAC,CAAC;AAC5E,MAAM,OAAO,GAAQ,gBAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAS3C,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,MAAa,iBAAiB;IAO5B,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,+CAA+C;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACnE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAClE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAE3E,qBAAqB;QACrB,IAAI,CAAC,gBAAgB,GAAG;YACtB,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,eAAe;YAC3B,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,iIAAiI;IACjI;qIACiI;IAEjI;;;OAGG;IACW,QAAQ,CAAC,GAAW;;YAChC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACzD,CAAC,CAAC,CACH,CAAC;YACF,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;QAC1C,CAAC;KAAA;IAED;;;;OAIG;IACK,UAAU,CAAC,QAAa,EAAE,MAAc;QAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,OAAO,CAAC,WAAW,KAAK,MAAM,EAAE;gBAClC,OAAO,OAAO,CAAC;aAChB;SACF;IACH,CAAC;IAEO,aAAa,CAAC,IAAY;QAChC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEa,kBAAkB;;YAC9B,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE;gBAChD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACtC;QACH,CAAC;KAAA;IAEa,mBAAmB,CAAC,OAAe,EAAE,WAAqB,EAAE,OAAiB;;YACzF,MAAM,OAAO,GAA6B,EAAE,CAAC;YAC7C,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE;gBAChC,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;oBACjE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;oBACvE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;iBACjC,CAAC,CAAC;aACJ;YACD,MAAM,WAAW,GAAe,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACrD,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtC,OAAO;oBACL,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpD,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;oBACzC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE;oBACxC,IAAI,EAAE,MAAM;oBACZ,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;iBAC3E,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,GAAG,uCAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACvE,CAAC;KAAA;IACa,oBAAoB,CAAC,gBAAgB;;YACjD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE;gBACvD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;aAC7C;YAED,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAO,GAAW,EAAE,EAAE;gBACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACpC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;gBACnE,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC,CAAA,CAAC,CACH,CAAC;QACJ,CAAC;KAAA;IAEa,UAAU,CAAC,OAAiB,EAAE,QAAkB;;YAC5D,MAAM,UAAU,GAA6B,EAAE,CAAC;YAChD,MAAM,WAAW,GAA6B,EAAE,CAAC;YACjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,UAAU,CAAC,IAAI,CAAC;oBACd,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;oBACvD,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACnD,CAAC,CAAC;aACJ;YACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,WAAW,CAAC,IAAI,CAAC;oBACf,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;oBACxD,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACrD,CAAC,CAAC;aACJ;YACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAE7F,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;KAAA;IAEa,eAAe;;YAC3B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;KAAA;IACa,oBAAoB;;YAChC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC/D,MAAM,mBAAmB,GAAa,EAAE,CAAC;YACzC,MAAM,oBAAoB,GAAa,EAAE,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;oBACxB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACjC;qBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC9B,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAChC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC;QACvD,CAAC;KAAA;IAEa,WAAW,CACvB,IAAY,EACZ,WAAmB,EACnB,WAAmB,EACnB,QAAgB,EAChB,YAAyB,EACzB,mBAA6B,EAC7B,YAAqB;;;YAErB,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;YAEhF,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;gBAC9C,OAAO,EAAE,oBAAoB;aAC9B,CAAC,CAAC;YAEH,+DAA+D;YAC/D,gFAAgF;YAChF,8CAA8C;YAC9C,MAAM,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpF,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CACnC,CAAC;YACF,MAAM,UAAU,GAAQ,EAAE,CAAC;YAE3B,uCAAuC;YACvC,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;gBAC5C,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACvD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;aAC9C;YAED,wGAAwG;YACxG,iGAAiG;YACjG,IAAI,WAAW,CAAC;YAChB,IAAI;gBACF,uCAAuC;gBACvC,mIAAmI;gBACnI,0HAA0H;gBAC1H,MAAM,aAAa,GAAG,GAAG,YAAY,8BAA8B,CAAC;gBACpE,MAAM,OAAO,GAAG;oBACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE,2BAA2B,EAAE,gBAAgB,EAAE;iBACvE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBAEtD,uDAAuD;gBACvD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aACpC;YAAC,OAAO,GAAG,EAAE;gBACZ,2BAA2B;gBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,OAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,OAAO,KAAI,OAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,OAAO,CAAC,OAAO,CAAC,qBAAqB,KAAI,CAAC,EAAE;oBACrF,MAAM,IAAI,KAAK,CACb,SAAS,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,IAAI,cAAc,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,OAAO,uFAAuF,CACtJ,CAAC;iBACH;qBAAM;oBACL,MAAM,GAAG,CAAC;iBACX;aACF;YACD,sEAAsE;YACtE,gGAAgG;YAChG,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,WAAW,OAAO,CAAC,CAAC;YAE1G,mFAAmF;YACnF,mIAAmI;YACnI,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBAClC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;oBAC9C,OAAO,EAAE,6BAA6B,SAAS,EAAE;iBAClD,CAAC,CAAC;gBAEH,MAAM,kBAAkB,GAAG,GAAG,YAAY,uBAAuB,SAAS,gBAAgB,CAAC;gBAC3F,MAAM,OAAO,GAAG;oBACd,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,IAAI;oBACV,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE,2BAA2B,EAAE,gBAAgB,EAAE;iBACvE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBAE5D,4JAA4J;gBAE5J,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;oBAC9C,OAAO,EAAE,QAAQ;iBAClB,CAAC,CAAC;aACJ;YAED,iCAAiC;YACjC,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;gBAC9C,OAAO,EAAE,2BAA2B;aACrC,CAAC,CAAC;YAEH,2EAA2E;YAC3E,OAAO,UAAU,CAAC;;KACnB;IAED,kCAAkC;IAClC,sEAAsE;IACxD,SAAS,CACrB,IAAY,EACZ,WAAmB,EACnB,QAAgB,EAChB,YAAyB,EACzB,mBAA6B;;YAE7B,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC;YAE9F,6DAA6D;YAC7D,+EAA+E;YAC/E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1C,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;gBAC9C,OAAO,EAAE,GAAG;aACb,CAAC,CACH,CAAC;YAEF,6DAA6D;YAC7D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,CAC3C,mBAAmB,EACnB,QAAQ,IAAI,OAAO,EACnB,WAAW,IAAI,EAAE,EACjB,mBAAmB,IAAI,EAAE,CAC1B,CAAC;YAEF,2BAA2B;YAC3B,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;gBAC1B,YAAY,CAAC,QAAQ,GAAG,WAAW,mBAAmB,8BAA8B,CAAC;aACtF;YAED,+CAA+C;YAC/C,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;gBACnC,YAAY,CAAC,iBAAiB,GAAG,YAAY,CAAC,QAAQ,CAAC;aACxD;YAED,8BAA8B;YAC9B,yFAAyF;YACzF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CACrC,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,WAAW,EACtB,gBAAgB,EAChB,YAAY,CAAC,iBAAiB,EAC9B,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,UAAU,CAAC,gBAAgB,EAC3B,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,uBAAuB,EAClC,cAAc,CACf,CAAC;YAEF,oDAAoD;YACpD,MAAM,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAEzE,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;gBAC9C,OAAO,EAAE,iBAAiB;aAC3B,CAAC,CAAC;QACL,CAAC;KAAA;IAEa,QAAQ,CACpB,IAAY,EACZ,WAAmB,EACnB,QAAgB,EAChB,WAAuB,EACvB,oBAA8B;;YAE9B,wCAAwC;YACxC,IAAI,EAAE,eAAe,EAAE,GAAG,WAAW,CAAC;YACtC,MAAM,eAAe,GAAG,QAAQ,CAAC;YACjC,kBAAkB;YAClB,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3C,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;gBAC9C,OAAO,EAAE,GAAG;aACb,CAAC,CACH,CAAC;YAEF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,CAC3C,oBAAoB,EACpB,IAAI,EACJ,WAAW,IAAI,EAAE,EACjB,eAAe,IAAI,EAAE,EACrB,QAAQ,IAAI,EAAE,CACf,CAAC;YAEF,MAAM,QAAQ,GAAG,WAAW,eAAe,4CAA4C,CAAC;YAExF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CACrC,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,WAAW,EACtB,eAAe,EACf,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,UAAU,CAAC,gBAAgB,EAC3B,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,uBAAuB,EAClC,cAAc,CACf,CAAC;YACF,MAAM,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAEzE,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,WAAW;gBAC9C,OAAO,EAAE,kBAAkB;aAC5B,CAAC,CAAC;YAEH,mEAAmE;YACnE,gFAAgF;YAChF,8CAA8C;YAC9C,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAChF,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CACvC,CAAC;YACF,MAAM,GAAG,GAAQ,EAAE,CAAC;YAEpB,wBAAwB;YACxB,IAAI,aAAa,EAAE;gBACjB,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACnD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;gBAC7E,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC;aACpF;YACD,OAAO,GAAG,CAAC;QACb,CAAC;KAAA;IAED,gCAAgC;IAChC,sEAAsE;IACzD,iBAAiB,CAC5B,IAAY,EACZ,WAAmB,EACnB,WAAmB,EACnB,QAAgB,EAChB,YAAyB,EACzB,WAAuB,EACvB,YAAqB;;YAErB,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC;YACvD,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,gBAAgB;YAChB,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YACzE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YAE3E,IAAI,eAAe,IAAI,CAAC,CAAC,YAAY,IAAI,eAAe,CAAC,EAAE;gBACzD,MAAM,KAAK,CAAC,0EAA0E,CAAC,CAAC;aACzF;YACD,IAAI,gBAAgB,IAAI,CAAC,eAAe,EAAE;gBACxC,MAAM,KAAK,CAAC,yDAAyD,CAAC,CAAC;aACxE;YACD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACzC,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAExF,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;YACrF,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,4CAA4C;YAC5C,IAAI,eAAe,EAAE;gBACnB,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CACjC,IAAI,EACJ,WAAW,EACX,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,YAAY,CACb,CAAC;aACH;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;YACtG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACnC,CAAC;KAAA;CACF;AAvaD,8CAuaC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/mergeDeep.d.ts b/Composer/plugins/azurePublish/lib/mergeDeep.d.ts deleted file mode 100644 index 7a22fdae29..0000000000 --- a/Composer/plugins/azurePublish/lib/mergeDeep.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Originally found on Stack Overflow: - * https://stackoverflow.com/questions/27936772/how-to-deep-merge-instead-of-shallow-merge * - */ -/** - * Simple object check. - * @param item - * @returns {boolean} - */ -export declare function isObject(item: any): boolean; -export declare function mergeDeep(target: any, ...sources: any[]): any; diff --git a/Composer/plugins/azurePublish/lib/mergeDeep.js b/Composer/plugins/azurePublish/lib/mergeDeep.js deleted file mode 100644 index 0b32786ac8..0000000000 --- a/Composer/plugins/azurePublish/lib/mergeDeep.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.mergeDeep = exports.isObject = void 0; -/** - * Originally found on Stack Overflow: - * https://stackoverflow.com/questions/27936772/how-to-deep-merge-instead-of-shallow-merge * - */ -/** - * Simple object check. - * @param item - * @returns {boolean} - */ -function isObject(item) { - return item && typeof item === 'object' && !Array.isArray(item); -} -exports.isObject = isObject; -function mergeDeep(target, ...sources) { - if (!sources.length) - return target; - const source = sources.shift(); - if (isObject(target) && isObject(source)) { - for (const key in source) { - if (isObject(source[key])) { - if (!target[key]) - Object.assign(target, { [key]: {} }); - mergeDeep(target[key], source[key]); - } - else { - Object.assign(target, { [key]: source[key] }); - } - } - } - return mergeDeep(target, ...sources); -} -exports.mergeDeep = mergeDeep; -//# sourceMappingURL=mergeDeep.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/mergeDeep.js.map b/Composer/plugins/azurePublish/lib/mergeDeep.js.map deleted file mode 100644 index 860a32bda4..0000000000 --- a/Composer/plugins/azurePublish/lib/mergeDeep.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mergeDeep.js","sourceRoot":"","sources":["../src/mergeDeep.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;;GAGG;AAEH;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,IAAI;IAC3B,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAFD,4BAEC;AAED,SAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,OAAO;IAC1C,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAE/B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;QACxC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACxB,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;oBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvD,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aACrC;iBAAM;gBACL,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC/C;SACF;KACF;IAED,OAAO,SAAS,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;AACvC,CAAC;AAhBD,8BAgBC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/provision.d.ts b/Composer/plugins/azurePublish/lib/provision.d.ts deleted file mode 100644 index abb1491b89..0000000000 --- a/Composer/plugins/azurePublish/lib/provision.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { BotProjectDeployConfig } from './botProjectDeployConfig'; -export declare class BotProjectProvision { - private subId; - private accessToken; - private creds; - private projPath; - private templatePath; - private logger; - private tenantId; - constructor(config: BotProjectDeployConfig); - /*******************************************************************************************************************************/ - /** - * Write updated settings back to the settings file - */ - private updateDeploymentJsonFile; - private getErrorMesssage; - private pack; - private unpackObject; - /** - * Format the parameters - */ - private getDeploymentTemplateParam; - private readTemplateFile; - /*********************************************************************************************** - * Azure API accessors - **********************************************************************************************/ - /** - * Use the Azure API to create a new resource group - */ - private createResourceGroup; - /** - * Validate the deployment using the Azure API - */ - private validateDeployment; - /** - * Using an ARM template, provision a bunch of resources - */ - private createDeployment; - private createApp; - /** - * For more information about this api, please refer to this doc: https://docs.microsoft.com/en-us/rest/api/resources/Tenants/List - */ - private getTenantId; - /** - * Provision a set of Azure resources for use with a bot - */ - create(name: string, location: string, environment: string, appPassword: string, createLuisResource?: boolean, createLuisAuthoringResource?: boolean, createCosmosDb?: boolean, createStorage?: boolean, createAppInsights?: boolean): Promise; -} diff --git a/Composer/plugins/azurePublish/lib/provision.js b/Composer/plugins/azurePublish/lib/provision.js deleted file mode 100644 index b40b3dff9d..0000000000 --- a/Composer/plugins/azurePublish/lib/provision.js +++ /dev/null @@ -1,479 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BotProjectProvision = void 0; -const path = __importStar(require("path")); -const arm_resources_1 = require("@azure/arm-resources"); -const arm_appinsights_1 = require("@azure/arm-appinsights"); -const arm_botservice_1 = require("@azure/arm-botservice"); -const graph_1 = require("@azure/graph"); -const ms_rest_nodeauth_1 = require("@azure/ms-rest-nodeauth"); -const fs = __importStar(require("fs-extra")); -const rp = __importStar(require("request-promise")); -const botProjectLoggerType_1 = require("./botProjectLoggerType"); -class BotProjectProvision { - constructor(config) { - var _a; - // Will be assigned by create or deploy - this.tenantId = ''; - this.subId = config.subId; - this.logger = config.logger; - this.accessToken = config.accessToken; - this.creds = config.creds; - this.projPath = config.projPath; - // path to the ARM template - // this is currently expected to live in the code project - this.templatePath = (_a = config.templatePath) !== null && _a !== void 0 ? _a : path.join(this.projPath, 'DeploymentTemplates', 'template-with-preexisting-rg.json'); - } - /*******************************************************************************************************************************/ - /* This section has to do with creating new Azure resources - /*******************************************************************************************************************************/ - /** - * Write updated settings back to the settings file - */ - updateDeploymentJsonFile(client, resourceGroupName, deployName, appId, appPwd) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const outputs = yield client.deployments.get(resourceGroupName, deployName); - if ((_a = outputs === null || outputs === void 0 ? void 0 : outputs.properties) === null || _a === void 0 ? void 0 : _a.outputs) { - const outputResult = outputs.properties.outputs; - const applicationResult = { - MicrosoftAppId: appId, - MicrosoftAppPassword: appPwd, - }; - const outputObj = this.unpackObject(outputResult); - const result = {}; - Object.assign(result, outputObj, applicationResult); - return result; - } - else { - return null; - } - }); - } - getErrorMesssage(err) { - if (err.body) { - if (err.body.error) { - if (err.body.error.details) { - const details = err.body.error.details; - let errMsg = ''; - for (const detail of details) { - errMsg += detail.message; - } - return errMsg; - } - else { - return err.body.error.message; - } - } - else { - return JSON.stringify(err.body, null, 2); - } - } - else { - return JSON.stringify(err, null, 2); - } - } - pack(scope) { - return { - value: scope, - }; - } - unpackObject(output) { - const unpacked = {}; - for (const key in output) { - const objValue = output[key]; - if (objValue.value) { - unpacked[key] = objValue.value; - } - } - return unpacked; - } - /** - * Format the parameters - */ - getDeploymentTemplateParam(appId, appPwd, location, name, shouldCreateAuthoringResource, shouldCreateLuisResource, useAppInsights, useCosmosDb, useStorage) { - return { - appId: this.pack(appId), - appSecret: this.pack(appPwd), - appServicePlanLocation: this.pack(location), - botId: this.pack(name), - shouldCreateAuthoringResource: this.pack(shouldCreateAuthoringResource), - shouldCreateLuisResource: this.pack(shouldCreateLuisResource), - useAppInsights: this.pack(useAppInsights), - useCosmosDb: this.pack(useCosmosDb), - useStorage: this.pack(useStorage), - }; - } - readTemplateFile(templatePath) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - fs.readFile(templatePath, { encoding: 'utf-8' }, (err, data) => { - if (err) { - reject(err); - } - resolve(data); - }); - }); - }); - } - /*********************************************************************************************** - * Azure API accessors - **********************************************************************************************/ - /** - * Use the Azure API to create a new resource group - */ - createResourceGroup(client, location, resourceGroupName) { - return __awaiter(this, void 0, void 0, function* () { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Creating resource group ...`, - }); - const param = { - location: location, - }; - return yield client.resourceGroups.createOrUpdate(resourceGroupName, param); - }); - } - /** - * Validate the deployment using the Azure API - */ - validateDeployment(client, templatePath, location, resourceGroupName, deployName, templateParam) { - return __awaiter(this, void 0, void 0, function* () { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Validating Azure deployment ...', - }); - const templateFile = yield this.readTemplateFile(templatePath); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - return yield client.deployments.validate(resourceGroupName, deployName, deployParam); - }); - } - /** - * Using an ARM template, provision a bunch of resources - */ - createDeployment(client, templatePath, location, resourceGroupName, deployName, templateParam) { - return __awaiter(this, void 0, void 0, function* () { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Deploying Azure services (this could take a while)...`, - }); - const templateFile = yield this.readTemplateFile(templatePath); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - return yield client.deployments.createOrUpdate(resourceGroupName, deployName, deployParam); - }); - } - createApp(graphClient, displayName, appPassword) { - return __awaiter(this, void 0, void 0, function* () { - const createRes = yield graphClient.applications.create({ - displayName: displayName, - passwordCredentials: [ - { - value: appPassword, - startDate: new Date(), - endDate: new Date(new Date().setFullYear(new Date().getFullYear() + 2)), - }, - ], - availableToOtherTenants: true, - replyUrls: ['https://token.botframework.com/.auth/web/redirect'], - }); - return createRes; - }); - } - /** - * For more information about this api, please refer to this doc: https://docs.microsoft.com/en-us/rest/api/resources/Tenants/List - */ - getTenantId() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.accessToken) { - throw new Error('Error: Missing access token. Please provide a non-expired Azure access token. Tokens can be obtained by running az account get-access-token'); - } - if (!this.subId) { - throw new Error(`Error: Missing subscription Id. Please provide a valid Azure subscription id.`); - } - try { - const tenantUrl = `https://management.azure.com/subscriptions/${this.subId}?api-version=2020-01-01`; - const options = { - headers: { Authorization: `Bearer ${this.accessToken}` }, - }; - const response = yield rp.get(tenantUrl, options); - const jsonRes = JSON.parse(response); - if (jsonRes.tenantId === undefined) { - throw new Error(`No tenants found in the account.`); - } - return jsonRes.tenantId; - } - catch (err) { - throw new Error(`Get Tenant Id Failed, details: ${this.getErrorMesssage(err)}`); - } - }); - } - /** - * Provision a set of Azure resources for use with a bot - */ - create(name, location, environment, appPassword, createLuisResource = true, createLuisAuthoringResource = true, createCosmosDb = true, createStorage = true, createAppInsights = true) { - return __awaiter(this, void 0, void 0, function* () { - if (!this.tenantId) { - this.tenantId = yield this.getTenantId(); - } - const graphCreds = new ms_rest_nodeauth_1.DeviceTokenCredentials(this.creds.clientId, this.tenantId, this.creds.username, 'graph', this.creds.environment, this.creds.tokenCache); - const graphClient = new graph_1.GraphRbacManagementClient(graphCreds, this.tenantId, { - baseUri: 'https://graph.windows.net', - }); - const settings = {}; - // Validate settings - let appId = settings.MicrosoftAppId; - // If the appId is not specified, create one - if (!appId) { - // this requires an app password. if one not specified, fail. - if (!appPassword) { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: `App password is required`, - }); - throw new Error(`App password is required`); - } - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Creating App Registration ...', - }); - // create the app registration - const appCreated = yield this.createApp(graphClient, name, appPassword); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: appCreated, - }); - // use the newly created app - appId = appCreated.appId; - } - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Create App Id Success! ID: ${appId}`, - }); - const resourceGroupName = `${name}-${environment}`; - // timestamp will be used as deployment name - const timeStamp = new Date().getTime().toString(); - const client = new arm_resources_1.ResourceManagementClient(this.creds, this.subId); - // Create a resource group to contain the new resources - const rpres = yield this.createResourceGroup(client, location, resourceGroupName); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: rpres, - }); - // Caste the parameters into the right format - const deploymentTemplateParam = this.getDeploymentTemplateParam(appId, appPassword, location, name, createLuisAuthoringResource, createLuisResource, createAppInsights, createCosmosDb, createStorage); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: deploymentTemplateParam, - }); - // Validate the deployment using the Azure API - const validation = yield this.validateDeployment(client, this.templatePath, location, resourceGroupName, timeStamp, deploymentTemplateParam); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: validation, - }); - // Handle validation errors - if (validation.error) { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Template is not valid with provided parameters. Review the log for more information.`, - }); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error.message}`, - }); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS, - message: validation.error.details, - }); - throw new Error(`! Error: ${validation.error.message}`); - } - // Create the entire stack of resources inside the new resource group - // this is controlled by an ARM template identified in this.templatePath - const deployment = yield this.createDeployment(client, this.templatePath, location, resourceGroupName, timeStamp, deploymentTemplateParam); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: deployment, - }); - // Handle errors - // eslint-disable-next-line no-underscore-dangle - if (deployment._response.status != 200) { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Template is not valid with provided parameters. Review the log for more information.`, - }); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error}`, - }); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - throw new Error(`! Error: ${validation.error}`); - } - // If application insights created, update the application insights settings in azure bot service - if (createAppInsights) { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Linking Application Insights settings to Bot Service ...`, - }); - const appinsightsClient = new arm_appinsights_1.ApplicationInsightsManagementClient(this.creds, this.subId); - const appComponents = yield appinsightsClient.components.get(resourceGroupName, resourceGroupName); - const appinsightsId = appComponents.appId; - const appinsightsInstrumentationKey = appComponents.instrumentationKey; - const apiKeyOptions = { - name: `${resourceGroupName}-provision-${timeStamp}`, - linkedReadProperties: [ - `/subscriptions/${this.subId}/resourceGroups/${resourceGroupName}/providers/microsoft.insights/components/${resourceGroupName}/api`, - `/subscriptions/${this.subId}/resourceGroups/${resourceGroupName}/providers/microsoft.insights/components/${resourceGroupName}/agentconfig`, - ], - linkedWriteProperties: [ - `/subscriptions/${this.subId}/resourceGroups/${resourceGroupName}/providers/microsoft.insights/components/${resourceGroupName}/annotations`, - ], - }; - const appinsightsApiKeyResponse = yield appinsightsClient.aPIKeys.create(resourceGroupName, resourceGroupName, apiKeyOptions); - const appinsightsApiKey = appinsightsApiKeyResponse.apiKey; - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: `> AppInsights AppId: ${appinsightsId} ...`, - }); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: `> AppInsights InstrumentationKey: ${appinsightsInstrumentationKey} ...`, - }); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: `> AppInsights ApiKey: ${appinsightsApiKey} ...`, - }); - if (appinsightsId && appinsightsInstrumentationKey && appinsightsApiKey) { - const botServiceClient = new arm_botservice_1.AzureBotService(this.creds, this.subId); - const botCreated = yield botServiceClient.bots.get(resourceGroupName, name); - if (botCreated.properties) { - botCreated.properties.developerAppInsightKey = appinsightsInstrumentationKey; - botCreated.properties.developerAppInsightsApiKey = appinsightsApiKey; - botCreated.properties.developerAppInsightsApplicationId = appinsightsId; - const botUpdateResult = yield botServiceClient.bots.update(resourceGroupName, name, botCreated); - // eslint-disable-next-line no-underscore-dangle - if (botUpdateResult._response.status != 200) { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Something went wrong while trying to link Application Insights settings to Bot Service Result: ${JSON.stringify(botUpdateResult)}`, - }); - throw new Error(`Linking Application Insights Failed.`); - } - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Linking Application Insights settings to Bot Service Success!`, - }); - } - else { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_WARNING, - message: `! The Bot doesn't have a keys properties to update.`, - }); - } - } - } - // Validate that everything was successfully created. - // Then, update the settings file with information about the new resources - const updateResult = yield this.updateDeploymentJsonFile(client, resourceGroupName, timeStamp, appId, appPassword); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_INFO, - message: updateResult, - }); - // Handle errors - if (!updateResult) { - const operations = yield client.deploymentOperations.list(resourceGroupName, timeStamp); - if (operations) { - const failedOperations = operations.filter((value) => { var _a; return ((_a = value === null || value === void 0 ? void 0 : value.properties) === null || _a === void 0 ? void 0 : _a.statusMessage.error) !== null; }); - if (failedOperations) { - failedOperations.forEach((operation) => { - var _a, _b, _c, _d, _e, _f, _g; - switch ((_a = operation === null || operation === void 0 ? void 0 : operation.properties) === null || _a === void 0 ? void 0 : _a.statusMessage.error.code) { - case 'MissingRegistrationForLocation': - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${(_c = (_b = operation === null || operation === void 0 ? void 0 : operation.properties) === null || _b === void 0 ? void 0 : _b.targetResource) === null || _c === void 0 ? void 0 : _c.resourceType}. This resource is not avaliable in the location provided.`, - }); - break; - default: - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${(_e = (_d = operation === null || operation === void 0 ? void 0 : operation.properties) === null || _d === void 0 ? void 0 : _d.targetResource) === null || _e === void 0 ? void 0 : _e.resourceType}.`, - }); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Code: ${(_f = operation === null || operation === void 0 ? void 0 : operation.properties) === null || _f === void 0 ? void 0 : _f.statusMessage.error.code}.`, - }); - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Message: ${(_g = operation === null || operation === void 0 ? void 0 : operation.properties) === null || _g === void 0 ? void 0 : _g.statusMessage.error.message}.`, - }); - break; - } - }); - } - } - else { - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed. Please refer to the log file for more information.`, - }); - } - } - this.logger({ - status: botProjectLoggerType_1.BotProjectDeployLoggerType.PROVISION_SUCCESS, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return updateResult; - }); - } -} -exports.BotProjectProvision = BotProjectProvision; -//# sourceMappingURL=provision.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/provision.js.map b/Composer/plugins/azurePublish/lib/provision.js.map deleted file mode 100644 index 2c828851ed..0000000000 --- a/Composer/plugins/azurePublish/lib/provision.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"provision.js","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElC,2CAA6B;AAE7B,wDAAgE;AAChE,4DAA6E;AAC7E,0DAAwD;AAQxD,wCAAyD;AACzD,8DAAiE;AACjE,6CAA+B;AAC/B,oDAAsC;AAGtC,iEAAoE;AAEpE,MAAa,mBAAmB;IAW9B,YAAY,MAA8B;;QAH1C,uCAAuC;QAC/B,aAAQ,GAAG,EAAE,CAAC;QAGpB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEhC,2BAA2B;QAC3B,yDAAyD;QACzD,IAAI,CAAC,YAAY,SACf,MAAM,CAAC,YAAY,mCAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,mCAAmC,CAAC,CAAC;IAChH,CAAC;IAED,iIAAiI;IACjI;qIACiI;IAEjI;;OAEG;IACW,wBAAwB,CACpC,MAAgC,EAChC,iBAAyB,EACzB,UAAkB,EAClB,KAAa,EACb,MAAc;;;YAEd,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;YAC5E,UAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,0CAAE,OAAO,EAAE;gBAChC,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;gBAChD,MAAM,iBAAiB,GAAG;oBACxB,cAAc,EAAE,KAAK;oBACrB,oBAAoB,EAAE,MAAM;iBAC7B,CAAC;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAElD,MAAM,MAAM,GAAG,EAAE,CAAC;gBAClB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;gBACpD,OAAO,MAAM,CAAC;aACf;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;;KACF;IAEO,gBAAgB,CAAC,GAAG;QAC1B,IAAI,GAAG,CAAC,IAAI,EAAE;YACZ,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;gBAClB,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBACvC,IAAI,MAAM,GAAG,EAAE,CAAC;oBAChB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;wBAC5B,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC;qBAC1B;oBACD,OAAO,MAAM,CAAC;iBACf;qBAAM;oBACL,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;iBAC/B;aACF;iBAAM;gBACL,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;aAC1C;SACF;aAAM;YACL,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SACrC;IACH,CAAC;IAEO,IAAI,CAAC,KAAU;QACrB,OAAO;YACL,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,MAAW;QAC9B,MAAM,QAAQ,GAAQ,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;YACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,QAAQ,CAAC,KAAK,EAAE;gBAClB,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;aAChC;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,0BAA0B,CAChC,KAAa,EACb,MAAc,EACd,QAAgB,EAChB,IAAY,EACZ,6BAAsC,EACtC,wBAAiC,EACjC,cAAuB,EACvB,WAAoB,EACpB,UAAmB;QAEnB,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACvB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5B,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC3C,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,6BAA6B,EAAE,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC;YACvE,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC;YAC7D,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YACzC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACnC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;SAClC,CAAC;IACJ,CAAC;IAEa,gBAAgB,CAAC,YAAoB;;YACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC7D,IAAI,GAAG,EAAE;wBACP,MAAM,CAAC,GAAG,CAAC,CAAC;qBACb;oBACD,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;oGAEgG;IAEhG;;OAEG;IACW,mBAAmB,CAC/B,MAAgC,EAChC,QAAgB,EAChB,iBAAyB;;YAEzB,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;gBACjD,OAAO,EAAE,+BAA+B;aACzC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG;gBACZ,QAAQ,EAAE,QAAQ;aACF,CAAC;YAEnB,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAC9E,CAAC;KAAA;IAED;;OAEG;IACW,kBAAkB,CAC9B,MAAgC,EAChC,YAAoB,EACpB,QAAgB,EAChB,iBAAyB,EACzB,UAAkB,EAClB,aAAkB;;YAElB,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;gBACjD,OAAO,EAAE,mCAAmC;aAC7C,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG;gBAClB,UAAU,EAAE;oBACV,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;oBAClC,UAAU,EAAE,aAAa;oBACzB,IAAI,EAAE,aAAa;iBACpB;aACY,CAAC;YAChB,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACvF,CAAC;KAAA;IAED;;OAEG;IACW,gBAAgB,CAC5B,MAAgC,EAChC,YAAoB,EACpB,QAAgB,EAChB,iBAAyB,EACzB,UAAkB,EAClB,aAAkB;;YAElB,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;gBACjD,OAAO,EAAE,yDAAyD;aACnE,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG;gBAClB,UAAU,EAAE;oBACV,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;oBAClC,UAAU,EAAE,aAAa;oBACzB,IAAI,EAAE,aAAa;iBACpB;aACY,CAAC;YAEhB,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC7F,CAAC;KAAA;IAEa,SAAS,CAAC,WAAsC,EAAE,WAAmB,EAAE,WAAmB;;YACtG,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;gBACtD,WAAW,EAAE,WAAW;gBACxB,mBAAmB,EAAE;oBACnB;wBACE,KAAK,EAAE,WAAW;wBAClB,SAAS,EAAE,IAAI,IAAI,EAAE;wBACrB,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;qBACxE;iBACF;gBACD,uBAAuB,EAAE,IAAI;gBAC7B,SAAS,EAAE,CAAC,mDAAmD,CAAC;aACjE,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;KAAA;IAED;;OAEG;IACW,WAAW;;YACvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,MAAM,IAAI,KAAK,CACb,6IAA6I,CAC9I,CAAC;aACH;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;aAClG;YACD,IAAI;gBACF,MAAM,SAAS,GAAG,8CAA8C,IAAI,CAAC,KAAK,yBAAyB,CAAC;gBACpG,MAAM,OAAO,GAAG;oBACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;iBAC7B,CAAC;gBAC9B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACrC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;oBAClC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;iBACrD;gBACD,OAAO,OAAO,CAAC,QAAQ,CAAC;aACzB;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACjF;QACH,CAAC;KAAA;IAED;;OAEG;IACU,MAAM,CACjB,IAAY,EACZ,QAAgB,EAChB,WAAmB,EACnB,WAAmB,EACnB,kBAAkB,GAAG,IAAI,EACzB,2BAA2B,GAAG,IAAI,EAClC,cAAc,GAAG,IAAI,EACrB,aAAa,GAAG,IAAI,EACpB,iBAAiB,GAAG,IAAI;;YAExB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;aAC1C;YACD,MAAM,UAAU,GAAG,IAAI,yCAAsB,CAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,OAAO,EACP,IAAI,CAAC,KAAK,CAAC,WAAW,EACtB,IAAI,CAAC,KAAK,CAAC,UAAU,CACtB,CAAC;YACF,MAAM,WAAW,GAAG,IAAI,iCAAyB,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE;gBAC3E,OAAO,EAAE,2BAA2B;aACrC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAQ,EAAE,CAAC;YAEzB,oBAAoB;YACpB,IAAI,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC;YAEpC,4CAA4C;YAC5C,IAAI,CAAC,KAAK,EAAE;gBACV,6DAA6D;gBAC7D,IAAI,CAAC,WAAW,EAAE;oBAChB,IAAI,CAAC,MAAM,CAAC;wBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;wBACjD,OAAO,EAAE,0BAA0B;qBACpC,CAAC,CAAC;oBACH,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;iBAC7C;gBACD,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;oBACjD,OAAO,EAAE,iCAAiC;iBAC3C,CAAC,CAAC;gBAEH,8BAA8B;gBAC9B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;gBACxE,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;oBACjD,OAAO,EAAE,UAAU;iBACpB,CAAC,CAAC;gBAEH,4BAA4B;gBAC5B,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;aAC1B;YAED,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;gBACjD,OAAO,EAAE,gCAAgC,KAAK,EAAE;aACjD,CAAC,CAAC;YAEH,MAAM,iBAAiB,GAAG,GAAG,IAAI,IAAI,WAAW,EAAE,CAAC;YAEnD,4CAA4C;YAC5C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,wCAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpE,uDAAuD;YACvD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YAClF,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;gBACjD,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,6CAA6C;YAC7C,MAAM,uBAAuB,GAAG,IAAI,CAAC,0BAA0B,CAC7D,KAAK,EACL,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,2BAA2B,EAC3B,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,aAAa,CACd,CAAC;YACF,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;gBACjD,OAAO,EAAE,uBAAuB;aACjC,CAAC,CAAC;YAEH,8CAA8C;YAC9C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC9C,MAAM,EACN,IAAI,CAAC,YAAY,EACjB,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,uBAAuB,CACxB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;gBACjD,OAAO,EAAE,UAAU;aACpB,CAAC,CAAC;YAEH,2BAA2B;YAC3B,IAAI,UAAU,CAAC,KAAK,EAAE;gBACpB,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;oBAClD,OAAO,EAAE,wFAAwF;iBAClG,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;oBAClD,OAAO,EAAE,YAAY,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE;iBAChD,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;oBAClD,OAAO,EAAE,4DAA4D,iBAAiB,aAAa;iBACpG,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,uBAAuB;oBAC1D,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO;iBAClC,CAAC,CAAC;gBAEH,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;aACzD;YAED,qEAAqE;YACrE,wEAAwE;YACxE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC5C,MAAM,EACN,IAAI,CAAC,YAAY,EACjB,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,uBAAuB,CACxB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;gBACjD,OAAO,EAAE,UAAU;aACpB,CAAC,CAAC;YAEH,gBAAgB;YAChB,gDAAgD;YAChD,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,GAAG,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;oBAClD,OAAO,EAAE,wFAAwF;iBAClG,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;oBAClD,OAAO,EAAE,YAAY,UAAU,CAAC,KAAK,EAAE;iBACxC,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;oBAClD,OAAO,EAAE,4DAA4D,iBAAiB,aAAa;iBACpG,CAAC,CAAC;gBAEH,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;aACjD;YAED,iGAAiG;YACjG,IAAI,iBAAiB,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;oBACjD,OAAO,EAAE,4DAA4D;iBACtE,CAAC,CAAC;gBAEH,MAAM,iBAAiB,GAAG,IAAI,qDAAmC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1F,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;gBACnG,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;gBAC1C,MAAM,6BAA6B,GAAG,aAAa,CAAC,kBAAkB,CAAC;gBACvE,MAAM,aAAa,GAAG;oBACpB,IAAI,EAAE,GAAG,iBAAiB,cAAc,SAAS,EAAE;oBACnD,oBAAoB,EAAE;wBACpB,kBAAkB,IAAI,CAAC,KAAK,mBAAmB,iBAAiB,4CAA4C,iBAAiB,MAAM;wBACnI,kBAAkB,IAAI,CAAC,KAAK,mBAAmB,iBAAiB,4CAA4C,iBAAiB,cAAc;qBAC5I;oBACD,qBAAqB,EAAE;wBACrB,kBAAkB,IAAI,CAAC,KAAK,mBAAmB,iBAAiB,4CAA4C,iBAAiB,cAAc;qBAC5I;iBACF,CAAC;gBACF,MAAM,yBAAyB,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,MAAM,CACtE,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,CACd,CAAC;gBACF,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,MAAM,CAAC;gBAE3D,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;oBACjD,OAAO,EAAE,wBAAwB,aAAa,MAAM;iBACrD,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;oBACjD,OAAO,EAAE,qCAAqC,6BAA6B,MAAM;iBAClF,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC;oBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;oBACjD,OAAO,EAAE,yBAAyB,iBAAiB,MAAM;iBAC1D,CAAC,CAAC;gBAEH,IAAI,aAAa,IAAI,6BAA6B,IAAI,iBAAiB,EAAE;oBACvE,MAAM,gBAAgB,GAAG,IAAI,gCAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrE,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;oBAC5E,IAAI,UAAU,CAAC,UAAU,EAAE;wBACzB,UAAU,CAAC,UAAU,CAAC,sBAAsB,GAAG,6BAA6B,CAAC;wBAC7E,UAAU,CAAC,UAAU,CAAC,0BAA0B,GAAG,iBAAiB,CAAC;wBACrE,UAAU,CAAC,UAAU,CAAC,iCAAiC,GAAG,aAAa,CAAC;wBACxE,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;wBAEhG,gDAAgD;wBAChD,IAAI,eAAe,CAAC,SAAS,CAAC,MAAM,IAAI,GAAG,EAAE;4BAC3C,IAAI,CAAC,MAAM,CAAC;gCACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;gCAClD,OAAO,EAAE,oGAAoG,IAAI,CAAC,SAAS,CACzH,eAAe,CAChB,EAAE;6BACJ,CAAC,CAAC;4BACH,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;yBACzD;wBACD,IAAI,CAAC,MAAM,CAAC;4BACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;4BACjD,OAAO,EAAE,iEAAiE;yBAC3E,CAAC,CAAC;qBACJ;yBAAM;wBACL,IAAI,CAAC,MAAM,CAAC;4BACV,MAAM,EAAE,iDAA0B,CAAC,iBAAiB;4BACpD,OAAO,EAAE,qDAAqD;yBAC/D,CAAC,CAAC;qBACJ;iBACF;aACF;YAED,qDAAqD;YACrD,0EAA0E;YAC1E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YACnH,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,cAAc;gBACjD,OAAO,EAAE,YAAY;aACtB,CAAC,CAAC;YAEH,gBAAgB;YAChB,IAAI,CAAC,YAAY,EAAE;gBACjB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;gBACxF,IAAI,UAAU,EAAE;oBACd,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,WAAC,OAAA,OAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAE,aAAa,CAAC,KAAK,MAAK,IAAI,CAAA,EAAA,CAAC,CAAC;oBACvG,IAAI,gBAAgB,EAAE;wBACpB,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;;4BACrC,cAAQ,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,0CAAE,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE;gCACvD,KAAK,gCAAgC;oCACnC,IAAI,CAAC,MAAM,CAAC;wCACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;wCAClD,OAAO,EAAE,4CAA4C,YAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,0CAAE,cAAc,0CAAE,YAAY,4DAA4D;qCACrK,CAAC,CAAC;oCACH,MAAM;gCACR;oCACE,IAAI,CAAC,MAAM,CAAC;wCACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;wCAClD,OAAO,EAAE,4CAA4C,YAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,0CAAE,cAAc,0CAAE,YAAY,GAAG;qCAC5G,CAAC,CAAC;oCACH,IAAI,CAAC,MAAM,CAAC;wCACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;wCAClD,OAAO,EAAE,WAAW,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,0CAAE,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG;qCACvE,CAAC,CAAC;oCACH,IAAI,CAAC,MAAM,CAAC;wCACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;wCAClD,OAAO,EAAE,cAAc,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,0CAAE,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG;qCAC7E,CAAC,CAAC;oCACH,MAAM;6BACT;wBACH,CAAC,CAAC,CAAC;qBACJ;iBACF;qBAAM;oBACL,IAAI,CAAC,MAAM,CAAC;wBACV,MAAM,EAAE,iDAA0B,CAAC,eAAe;wBAClD,OAAO,EAAE,yEAAyE;qBACnF,CAAC,CAAC;iBACJ;aACF;YACD,IAAI,CAAC,MAAM,CAAC;gBACV,MAAM,EAAE,iDAA0B,CAAC,iBAAiB;gBACpD,OAAO,EAAE,4DAA4D,iBAAiB,aAAa;aACpG,CAAC,CAAC;YACH,OAAO,YAAY,CAAC;QACtB,CAAC;KAAA;CACF;AA7hBD,kDA6hBC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/schema.d.ts b/Composer/plugins/azurePublish/lib/schema.d.ts deleted file mode 100644 index 65b76a36af..0000000000 --- a/Composer/plugins/azurePublish/lib/schema.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { JSONSchema7 } from '@bfc/extension'; -declare const schema: JSONSchema7; -export default schema; diff --git a/Composer/plugins/azurePublish/lib/schema.js b/Composer/plugins/azurePublish/lib/schema.js deleted file mode 100644 index fe1588b78f..0000000000 --- a/Composer/plugins/azurePublish/lib/schema.js +++ /dev/null @@ -1,138 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const schema = { - type: 'object', - properties: { - accessToken: { - type: 'string', - }, - name: { - type: 'string', - title: 'name', - }, - environment: { - type: 'string', - title: 'Environment', - }, - hostname: { - type: 'string', - title: 'Custom webapp hostname (if not -)', - }, - luisResource: { - type: 'string', - title: 'Custom luis resource name (if not --luis)', - }, - language: { - type: 'string', - title: 'Language for luis - default to en-us', - }, - settings: { - type: 'object', - title: 'Settings for Azure resources', - properties: { - applicationInsights: { - type: 'object', - properties: { - InstrumentationKey: { - type: 'string', - }, - }, - }, - cosmosDb: { - type: 'object', - properties: { - cosmosDBEndpoint: { - type: 'string', - }, - authKey: { - type: 'string', - }, - databaseId: { - type: 'string', - }, - collectionId: { - type: 'string', - }, - containerId: { - type: 'string', - }, - }, - required: ['cosmosDBEndpoint', 'authKey', 'databaseId', 'collectionId', 'containerId'], - }, - blobStorage: { - type: 'object', - properties: { - connectionString: { - type: 'string', - }, - container: { - type: 'string', - }, - }, - required: ['connectionString', 'container'], - }, - luis: { - type: 'object', - properties: { - endpoint: { - type: 'string', - }, - authoringEndpoint: { - type: 'string', - }, - endpointKey: { - type: 'string', - }, - authoringKey: { - type: 'string', - }, - region: { - type: 'string', - }, - }, - required: ['endpointKey', 'authoringKey', 'region'], - }, - MicrosoftAppId: { - type: 'string', - }, - MicrosoftAppPassword: { - type: 'string', - }, - }, - required: ['MicrosoftAppId', 'MicrosoftAppPassword'], - }, - }, - required: ['subscriptionID', 'publishName', 'provision', 'accessToken'], - default: { - accessToken: '', - name: '', - environment: 'dev', - settings: { - applicationInsights: { - InstrumentationKey: '', - }, - cosmosDb: { - cosmosDBEndpoint: '', - authKey: '', - databaseId: 'botstate-db', - collectionId: 'botstate-collection', - containerId: 'botstate-container', - }, - blobStorage: { - connectionString: '', - container: '', - }, - luis: { - authoringKey: '', - authoringEndpoint: '', - endpointKey: '', - endpoint: '', - region: 'westus', - }, - MicrosoftAppId: '', - MicrosoftAppPassword: '', - }, - }, -}; -exports.default = schema; -//# sourceMappingURL=schema.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/schema.js.map b/Composer/plugins/azurePublish/lib/schema.js.map deleted file mode 100644 index c70866d7cd..0000000000 --- a/Composer/plugins/azurePublish/lib/schema.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":";;AAGA,MAAM,MAAM,GAAgB;IAC1B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;SACf;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,MAAM;SACd;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,aAAa;SACrB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,8CAA8C;SACtD;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,sDAAsD;SAC9D;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,sCAAsC;SAC9C;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,8BAA8B;YACrC,UAAU,EAAE;gBACV,mBAAmB,EAAE;oBACnB,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,kBAAkB,EAAE;4BAClB,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,gBAAgB,EAAE;4BAChB,IAAI,EAAE,QAAQ;yBACf;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;yBACf;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,QAAQ;yBACf;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,QAAQ;yBACf;wBACD,WAAW,EAAE;4BACX,IAAI,EAAE,QAAQ;yBACf;qBACF;oBACD,QAAQ,EAAE,CAAC,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC;iBACvF;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,gBAAgB,EAAE;4BAChB,IAAI,EAAE,QAAQ;yBACf;wBACD,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;yBACf;qBACF;oBACD,QAAQ,EAAE,CAAC,kBAAkB,EAAE,WAAW,CAAC;iBAC5C;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;yBACf;wBACD,iBAAiB,EAAE;4BACjB,IAAI,EAAE,QAAQ;yBACf;wBACD,WAAW,EAAE;4BACX,IAAI,EAAE,QAAQ;yBACf;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,QAAQ;yBACf;wBACD,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;yBACf;qBACF;oBACD,QAAQ,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,QAAQ,CAAC;iBACpD;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,QAAQ;iBACf;gBACD,oBAAoB,EAAE;oBACpB,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;SACrD;KACF;IACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC;IACvE,OAAO,EAAE;QACP,WAAW,EAAE,iDAAiD;QAC9D,IAAI,EAAE,oCAAoC;QAC1C,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE;YACR,mBAAmB,EAAE;gBACnB,kBAAkB,EAAE,uBAAuB;aAC5C;YACD,QAAQ,EAAE;gBACR,gBAAgB,EAAE,gBAAgB;gBAClC,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,aAAa;gBACzB,YAAY,EAAE,qBAAqB;gBACnC,WAAW,EAAE,oBAAoB;aAClC;YACD,WAAW,EAAE;gBACX,gBAAgB,EAAE,qBAAqB;gBACvC,SAAS,EAAE,aAAa;aACzB;YACD,IAAI,EAAE;gBACJ,YAAY,EAAE,iBAAiB;gBAC/B,iBAAiB,EAAE,EAAE;gBACrB,WAAW,EAAE,gBAAgB;gBAC7B,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,QAAQ;aACjB;YACD,cAAc,EAAE,0CAA0C;YAC1D,oBAAoB,EAAE,gDAAgD;SACvE;KACF;CACF,CAAC;AACF,kBAAe,MAAM,CAAC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/utils/crossTrainUtil.d.ts b/Composer/plugins/azurePublish/lib/utils/crossTrainUtil.d.ts deleted file mode 100644 index 96150f10b9..0000000000 --- a/Composer/plugins/azurePublish/lib/utils/crossTrainUtil.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { LuFile, DialogInfo, FileInfo } from '@bfc/shared'; -export declare function getReferredLuFiles(luFiles: LuFile[], dialogs: DialogInfo[], checkContent?: boolean): LuFile[]; -export interface ICrossTrainConfig { - rootIds: string[]; - triggerRules: { - [key: string]: any; - }; - intentName: string; - verbose: boolean; - botName: string; -} -export declare function createCrossTrainConfig(dialogs: any[], luFilesInfo: FileInfo[], luFeatures?: {}): ICrossTrainConfig; diff --git a/Composer/plugins/azurePublish/lib/utils/crossTrainUtil.js b/Composer/plugins/azurePublish/lib/utils/crossTrainUtil.js deleted file mode 100644 index cdb1cf126e..0000000000 --- a/Composer/plugins/azurePublish/lib/utils/crossTrainUtil.js +++ /dev/null @@ -1,190 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createCrossTrainConfig = exports.getReferredLuFiles = void 0; -/** - * luUtil.ts is a single place use lu-parser handle lu file operation. - * it's designed have no state, input text file, output text file. - * for more usage detail, please check client/__tests__/utils/luUtil.test.ts - */ -const keys_1 = __importDefault(require("lodash/keys")); -const shared_1 = require("@bfc/shared"); -const indexers_1 = require("@bfc/indexers"); -const fileUtil_1 = require("./fileUtil"); -const jsonWalk_1 = require("./jsonWalk"); -function getReferredLuFiles(luFiles, dialogs, checkContent = true) { - return luFiles.filter((file) => { - const idWithOutLocale = fileUtil_1.getBaseName(file.id); - return dialogs.some((dialog) => dialog.luFile === idWithOutLocale && ((checkContent && !!file.content) || !checkContent)); - }); -} -exports.getReferredLuFiles = getReferredLuFiles; -function ExtractAllBeginDialogs(value) { - const dialogs = []; - const visitor = (path, value) => { - if ((value === null || value === void 0 ? void 0 : value.$kind) === shared_1.SDKKinds.BeginDialog && (value === null || value === void 0 ? void 0 : value.dialog)) { - dialogs.push(value.dialog); - return true; - } - return false; - }; - jsonWalk_1.JsonWalk('$', value, visitor); - return dialogs; -} -// find out all properties from given dialog -function ExtractIntentTriggers(value) { - const intentTriggers = []; - const triggers = value === null || value === void 0 ? void 0 : value[shared_1.FieldNames.Events]; - if (triggers && triggers.length) { - for (const trigger of triggers) { - const dialogs = ExtractAllBeginDialogs(trigger); - if (trigger.$kind === shared_1.SDKKinds.OnIntent && trigger.intent) { - intentTriggers.push({ intent: trigger.intent, dialogs }); - } - else if (trigger.$kind !== shared_1.SDKKinds.OnIntent && dialogs.length) { - const emptyIntent = intentTriggers.find((e) => e.intent === ''); - if (emptyIntent) { - //remove the duplication dialogs - const all = new Set([...emptyIntent.dialogs, ...dialogs]); - emptyIntent.dialogs = Array.from(all); - } - else { - intentTriggers.push({ intent: '', dialogs }); - } - } - } - } - return intentTriggers; -} -function createConfigId(fileId) { - return `${fileId}.lu`; -} -function getLuFilesByDialogId(dialogId, luFiles) { - return luFiles.filter((lu) => fileUtil_1.getBaseName(lu.id) === dialogId).map((lu) => createConfigId(lu.id)); -} -function getFileLocale(fileName) { - //file name = 'a.en-us.lu' - return fileUtil_1.getExtension(fileUtil_1.getBaseName(fileName)); -} -//replace the dialogId with luFile's name -function addLocaleToConfig(config, luFiles) { - const { rootIds, triggerRules } = config; - config.rootIds = rootIds.reduce((result, id) => { - return [...result, ...getLuFilesByDialogId(id, luFiles)]; - }, []); - config.triggerRules = keys_1.default(triggerRules).reduce((result, key) => { - const fileNames = getLuFilesByDialogId(key, luFiles); - return Object.assign(Object.assign({}, result), fileNames.reduce((result, name) => { - const locale = getFileLocale(name); - const triggers = triggerRules[key]; - keys_1.default(triggers).forEach((trigger) => { - if (!result[name]) - result[name] = {}; - const ids = triggers[trigger]; - if (Array.isArray(ids)) { - result[name][trigger] = ids.map((id) => (id ? `${id}.${locale}.lu` : id)); - } - else { - result[name][trigger] = ids ? `${ids}.${locale}.lu` : ids; - } - }); - return result; - }, {})); - }, {}); - return config; -} -function parse(dialog) { - const { id, content, isRoot } = dialog; - const luFile = typeof content.recognizer === 'string' ? fileUtil_1.getBaseName(id) : ''; - const qnaFile = typeof content.recognizer === 'string' ? fileUtil_1.getBaseName(id) : ''; - return { - id: fileUtil_1.getBaseName(id), - isRoot: isRoot, - content, - luFile: luFile, - qnaFile: qnaFile, - intentTriggers: ExtractIntentTriggers(content), - }; -} -//generate the cross-train config without locale -/* the config is like - { - rootIds: [ - 'main.en-us.lu', - 'main.fr-fr.lu' - ], - triggerRules: { - 'main.en-us.lu': { - 'dia1_trigger': 'dia1.en-us.lu', - 'dia2_trigger': 'dia2.en-us.lu' - }, - 'dia2.en-us.lu': { - 'dia3_trigger': 'dia3.en-us.lu', - 'dia4_trigger': 'dia4.en-us.lu' - }, - 'main.fr-fr.lu': { - 'dia1_trigger': 'dia1.fr-fr.lu' - } - }, - intentName: '_Interruption', - verbose: true - } - */ -function createCrossTrainConfig(dialogs, luFilesInfo, luFeatures = {}) { - const triggerRules = {}; - const countMap = {}; - const wrapDialogs = []; - for (const dialog of dialogs) { - wrapDialogs.push(parse(dialog)); - } - const luFiles = indexers_1.luIndexer.index(luFilesInfo, luFeatures); - //map all referred lu files - luFiles.forEach((file) => { - countMap[fileUtil_1.getBaseName(file.id)] = 1; - }); - let rootId = ''; - let botName = ''; - wrapDialogs.forEach((dialog) => { - if (dialog.isRoot) { - rootId = dialog.id; - botName = dialog.content.$designer.name; - } - if (luFiles.find((luFile) => fileUtil_1.getBaseName(luFile.id) === dialog.luFile)) { - const { intentTriggers } = dialog; - const fileId = dialog.id; - //find the trigger's dialog that use a recognizer - intentTriggers.forEach((item) => { - //find all dialogs in trigger that has a luis recognizer - const used = item.dialogs.filter((dialog) => !!countMap[dialog]); - const deduped = Array.from(new Set(used)); - const result = {}; - if (deduped.length === 1) { - result[item.intent] = deduped[0]; - } - else if (deduped.length) { - result[item.intent] = deduped; - } - else { - result[item.intent] = ''; - } - triggerRules[fileId] = Object.assign(Object.assign({}, triggerRules[fileId]), result); - }); - } - }); - const crossTrainConfig = { - botName: botName, - rootIds: [], - triggerRules: {}, - intentName: '_Interruption', - verbose: true, - }; - crossTrainConfig.rootIds = keys_1.default(countMap).filter((key) => (countMap[key] === 0 || key === rootId) && triggerRules[key]); - crossTrainConfig.triggerRules = triggerRules; - return addLocaleToConfig(crossTrainConfig, luFiles); -} -exports.createCrossTrainConfig = createCrossTrainConfig; -//# sourceMappingURL=crossTrainUtil.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/utils/crossTrainUtil.js.map b/Composer/plugins/azurePublish/lib/utils/crossTrainUtil.js.map deleted file mode 100644 index f179af70b0..0000000000 --- a/Composer/plugins/azurePublish/lib/utils/crossTrainUtil.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"crossTrainUtil.js","sourceRoot":"","sources":["../../src/utils/crossTrainUtil.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAElC;;;;GAIG;AACH,uDAA+B;AAC/B,wCAAiG;AACjG,4CAA0C;AAE1C,yCAAuD;AACvD,yCAAmD;AAEnD,SAAgB,kBAAkB,CAAC,OAAiB,EAAE,OAAqB,EAAE,YAAY,GAAG,IAAI;IAC9F,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,MAAM,eAAe,GAAG,sBAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,eAAe,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CACrG,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAPD,gDAOC;AAED,SAAS,sBAAsB,CAAC,KAAU;IACxC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,OAAO,GAAgB,CAAC,IAAY,EAAE,KAAU,EAAW,EAAE;QACjE,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,MAAK,iBAAQ,CAAC,WAAW,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA,EAAE;YAC1D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,mBAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAE9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4CAA4C;AAC5C,SAAS,qBAAqB,CAAC,KAAU;IACvC,MAAM,cAAc,GAAqB,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,mBAAU,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAEhD,IAAI,OAAO,CAAC,KAAK,KAAK,iBAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;gBACzD,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;aAC1D;iBAAM,IAAI,OAAO,CAAC,KAAK,KAAK,iBAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;gBAChE,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;gBAChE,IAAI,WAAW,EAAE;oBACf,gCAAgC;oBAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;oBAClE,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACvC;qBAAM;oBACL,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;iBAC9C;aACF;SACF;KACF;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,cAAc,CAAC,MAAM;IAC5B,OAAO,GAAG,MAAM,KAAK,CAAC;AACxB,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB,EAAE,OAAiB;IAC/D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,sBAAW,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,0BAA0B;IAC1B,OAAO,uBAAY,CAAC,sBAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,yCAAyC;AACzC,SAAS,iBAAiB,CAAC,MAAyB,EAAE,OAAiB;IACrE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACzC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAgB,EAAE,EAAU,EAAE,EAAE;QAC/D,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,oBAAoB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,CAAC,YAAY,GAAG,cAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QAC9D,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACrD,uCACK,MAAM,GACN,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACnC,cAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACtB,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC3E;qBAAM;oBACL,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;iBAC3D;YACH,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC,EAAE,EAAE,CAAC,EACN;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,KAAK,CAAC,MAAM;IACnB,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACvC,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9E,OAAO;QACL,EAAE,EAAE,sBAAW,CAAC,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM;QACd,OAAO;QACP,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,OAAO;QAChB,cAAc,EAAE,qBAAqB,CAAC,OAAO,CAAC;KAC/C,CAAC;AACJ,CAAC;AASD,gDAAgD;AAChD;;;;;;;;;;;;;;;;;;;;;;IAsBI;AACJ,SAAgB,sBAAsB,CAAC,OAAc,EAAE,WAAuB,EAAE,UAAU,GAAG,EAAE;IAC7F,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,WAAW,GAA6B,EAAE,CAAC;IACjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;KACjC;IAED,MAAM,OAAO,GAAG,oBAAS,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAEzD,2BAA2B;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACvB,QAAQ,CAAC,sBAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC7B,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;YACnB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;SACzC;QAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE;YACtE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;YACzB,iDAAiD;YACjD,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9B,wDAAwD;gBACxD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAEjE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAS,IAAI,CAAC,CAAC,CAAC;gBAElD,MAAM,MAAM,GAAG,EAAE,CAAC;gBAClB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;iBAClC;qBAAM,IAAI,OAAO,CAAC,MAAM,EAAE;oBACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;iBAC/B;qBAAM;oBACL,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;iBAC1B;gBAED,YAAY,CAAC,MAAM,CAAC,mCAAQ,YAAY,CAAC,MAAM,CAAC,GAAK,MAAM,CAAE,CAAC;YAChE,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAsB;QAC1C,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,eAAe;QAC3B,OAAO,EAAE,IAAI;KACd,CAAC;IACF,gBAAgB,CAAC,OAAO,GAAG,cAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC9C,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CACtE,CAAC;IACF,gBAAgB,CAAC,YAAY,GAAG,YAAY,CAAC;IAC7C,OAAO,iBAAiB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AA3DD,wDA2DC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/utils/fileUtil.d.ts b/Composer/plugins/azurePublish/lib/utils/fileUtil.d.ts deleted file mode 100644 index 4d103f5aa0..0000000000 --- a/Composer/plugins/azurePublish/lib/utils/fileUtil.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function getExtension(filename?: string): string | any; -export declare function getBaseName(filename: string, sep?: string): string | any; diff --git a/Composer/plugins/azurePublish/lib/utils/fileUtil.js b/Composer/plugins/azurePublish/lib/utils/fileUtil.js deleted file mode 100644 index d5998748e9..0000000000 --- a/Composer/plugins/azurePublish/lib/utils/fileUtil.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getBaseName = exports.getExtension = void 0; -function getExtension(filename) { - if (typeof filename !== 'string') - return filename; - return filename.substring(filename.lastIndexOf('.') + 1, filename.length) || filename; -} -exports.getExtension = getExtension; -function getBaseName(filename, sep) { - if (sep) - return filename.substr(0, filename.lastIndexOf(sep)); - return filename.substring(0, filename.lastIndexOf('.')) || filename; -} -exports.getBaseName = getBaseName; -//# sourceMappingURL=fileUtil.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/utils/fileUtil.js.map b/Composer/plugins/azurePublish/lib/utils/fileUtil.js.map deleted file mode 100644 index 8827b72579..0000000000 --- a/Composer/plugins/azurePublish/lib/utils/fileUtil.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fileUtil.js","sourceRoot":"","sources":["../../src/utils/fileUtil.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,SAAgB,YAAY,CAAC,QAAiB;IAC5C,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAClD,OAAO,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;AACxF,CAAC;AAHD,oCAGC;AAED,SAAgB,WAAW,CAAC,QAAgB,EAAE,GAAY;IACxD,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC;AACtE,CAAC;AAHD,kCAGC"} \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/utils/jsonWalk.d.ts b/Composer/plugins/azurePublish/lib/utils/jsonWalk.d.ts deleted file mode 100644 index 0388a0f2eb..0000000000 --- a/Composer/plugins/azurePublish/lib/utils/jsonWalk.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * visitor function used by JsonWalk - * @param path jsonPath string - * @param value current node value - * @return boolean, true to stop walk deep - */ -export interface VisitorFunc { - (path: string, value: any): boolean; -} -/** - * - * @param path jsonPath string - * @param value current node value - * @param visitor - */ -export declare const JsonWalk: (path: string, value: any, visitor: VisitorFunc) => void; diff --git a/Composer/plugins/azurePublish/lib/utils/jsonWalk.js b/Composer/plugins/azurePublish/lib/utils/jsonWalk.js deleted file mode 100644 index acbd5bf615..0000000000 --- a/Composer/plugins/azurePublish/lib/utils/jsonWalk.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.JsonWalk = void 0; -/** - * - * @param path jsonPath string - * @param value current node value - * @param visitor - */ -exports.JsonWalk = (path, value, visitor) => { - const stop = visitor(path, value); - if (stop === true) - return; - // extract array - if (Array.isArray(value)) { - value.forEach((child, index) => { - exports.JsonWalk(`${path}[${index}]`, child, visitor); - }); - // extract object - } - else if (typeof value === 'object' && value) { - Object.keys(value).forEach((key) => { - exports.JsonWalk(`${path}.${key}`, value[key], visitor); - }); - } -}; -//# sourceMappingURL=jsonWalk.js.map \ No newline at end of file diff --git a/Composer/plugins/azurePublish/lib/utils/jsonWalk.js.map b/Composer/plugins/azurePublish/lib/utils/jsonWalk.js.map deleted file mode 100644 index 067fc23222..0000000000 --- a/Composer/plugins/azurePublish/lib/utils/jsonWalk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jsonWalk.js","sourceRoot":"","sources":["../../src/utils/jsonWalk.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAYlC;;;;;GAKG;AAEU,QAAA,QAAQ,GAAG,CAAC,IAAY,EAAE,KAAU,EAAE,OAAoB,EAAE,EAAE;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO;IAE1B,gBAAgB;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7B,gBAAQ,CAAC,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,iBAAiB;KAClB;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,EAAE;QAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,gBAAQ,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;KACJ;AACH,CAAC,CAAC"} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/.gitignore b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.csproj b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.csproj deleted file mode 100644 index b5d04ce19b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.csproj +++ /dev/null @@ -1,45 +0,0 @@ - - - - netcoreapp3.1 - c0ae7296-be6a-4575-b416-d54bd230ee9e - - - - - - - - - - Always - - - - BotProject.ruleset - - - BotProject.ruleset - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.ruleset b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.sln b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.sln deleted file mode 100644 index db73c02cd8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotProject.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.136 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotProject", "BotProject.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotSettings.cs deleted file mode 100644 index b88a4a7127..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/BotSettings.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class BotSettings - { - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration AppInsights { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerBot.cs deleted file mode 100644 index 9897a59593..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerBot.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, string rootDialog) - { - HostContext.Current.Set(skillClient); - HostContext.Current.Set(conversationIdFactory); - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - LoadRootDialogAsync(); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/emptybot-0.dialog b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/emptybot-0.dialog deleted file mode 100644 index 1cf9118194..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/emptybot-0.dialog +++ /dev/null @@ -1,59 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "$designer": { - "name": "EmptyBot-0", - "id": "l65s2P" - } - }, - "autoEndDialog": "true", - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.Foreach", - "$designer": { - "id": "518944", - "name": "Loop: for each item" - }, - "itemsProperty": "turn.Activity.membersAdded", - "actions": [ - { - "$kind": "Microsoft.IfCondition", - "$designer": { - "id": "641773", - "name": "Branch: if/else" - }, - "condition": "string(dialog.foreach.value.id) != string(turn.Activity.Recipient.id)", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "_0u2Zg" - }, - "activity": "${bfdactivity-_0u2Zg()}" - } - ], - "elseActions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "xMOeCq" - }, - "activity": "${bfdactivity-xMOeCq()}" - } - ] - } - ] - } - ] - } - ], - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema", - "generator": "emptybot-0.lg" -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-generation/en-us/common.en-us.lg deleted file mode 100644 index 4bc41c5efc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,8 +0,0 @@ - -# Template() -[HeroCard - title=Cheese gromit! - subtitle=title - text=This is some text describing the card, it's cool because it's cool - buttons=Option 1| Option 2| Option 3 -] \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-generation/en-us/emptybot-0.en-us.lg b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-generation/en-us/emptybot-0.en-us.lg deleted file mode 100644 index 02445d0e9d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-generation/en-us/emptybot-0.en-us.lg +++ /dev/null @@ -1,9 +0,0 @@ -[import](common.lg) - - - -# bfdactivity-_0u2Zg() -- ${Template()} - -# bfdactivity-xMOeCq() -- ${Template()} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-understanding/en-us/emptybot-0.en-us.lu b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/language-understanding/en-us/emptybot-0.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/settings/appsettings.json b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/settings/appsettings.json deleted file mode 100644 index 4f742339ad..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/ComposerDialogs/settings/appsettings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "MicrosoftAppId": "", - "luis": { - "name": "", - "authoringRegion": "westus", - "defaultLanguage": "en-us", - "environment": "composer" - }, - "qna": { - "knowledgebaseid": "", - "endpointkey": "", - "hostname": "" - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Controllers/BotController.cs deleted file mode 100644 index 5085705abb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Controllers/SkillController.cs deleted file mode 100644 index 62b6390dd6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Controllers/SkillController.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.Bot.Builder.TestBot.Json.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index 183586e08f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,363 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - } - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - } - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - } - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/LuisConfig.cs deleted file mode 100644 index 506d52e343..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/LuisConfigAdaptor.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/LuisConfigAdaptor.cs deleted file mode 100644 index 6f23086f3b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/LuisConfigAdaptor.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public static class LuisConfigAdaptor - { - public static IConfigurationBuilder UseLuisConfigAdaptor(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var settings = new Dictionary(); - settings["environment"] = configuration.GetValue("luis:environment"); - settings["region"] = configuration.GetValue("luis:authoringRegion"); - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/NuGet.Config b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Program.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Program.cs deleted file mode 100644 index 434f5a21d2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Program.cs +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - builder.AddJsonFile($"ComposerDialogs/settings/appsettings.json", optional: true, reloadOnChange: true) - .AddJsonFile("appsetting.json", optional: true, reloadOnChange: true) - .UseLuisConfigAdaptor() - .UseLuisSettings(); - - if (env.IsDevelopment()) - { - // Local Debug - builder.AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true); - } - else - { - //Azure Deploy - builder.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - } - - if (!env.IsDevelopment()) - { - builder.AddUserSecrets(); - } - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/README.md b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/README.md deleted file mode 100644 index b096ecf323..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/README.md +++ /dev/null @@ -1,22 +0,0 @@ -## Bot Project -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -## Instructions for setting up the Bot Project runtime -The Bot Project is a regular Bot Framework SDK V4 project. Before you can launch it from the emulator, you need to make sure you can run the bot. - -### Prerequisite: -* Install .Netcore 3.1 - -### Commands: - -* from root folder -* cd BotProject -* cd Templates/CSharp -* dotnet user-secrets init // init the user secret id -* dotnet build // build -* dotnet run // start the bot -* It will start a web server and listening at http://localhost:3979. - -### Test bot -* You can set you emulator to connect to http://localhost:3979/api/messages. - diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Schemas/sdk.schema deleted file mode 100644 index 536286332d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Schemas/sdk.schema +++ /dev/null @@ -1,12321 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/master/schemas/component.schema", - "$id": "sdk.schema", - "type": "object", - "title": "Component kinds", - "description": "These are all of the kinds that can be created by the loader.", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.LanguagePolicy", - "description": "This represents a policy map for locales lookups to use for language", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnClearProperty", - "description": "Actions to take when a property needs to be cleared.", - "$ref": "#/definitions/Microsoft.OnClearProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "$ref": "#/definitions/Microsoft.Test.Script" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - } - ], - "definitions": { - "Microsoft.ActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft ActivityTemplate", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to use to create the activity", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveCardRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AdaptiveCardRecognizer" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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.Recognizer", - "title": "Recognizer", - "description": "Input recognizer that interprets user input into intent and entities.", - "$ref": "#/definitions/Microsoft.Recognizer" - }, - "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.ITriggerCondition", - "$ref": "#/definitions/Microsoft.ITriggerCondition" - } - }, - "schema": { - "anyOf": [ - { - "title": "The schema to be filled in.", - "type": "object", - "additionalProperties": true - }, - { - "type": "string", - "title": "Reference to JSON schema", - "description": "Reference to JSON schema .dialog file." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SkillDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a skill dialog", - "description": "Begin a remote skill dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SkillDialog" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the skill dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - }, - "botId": { - "$role": "expression", - "type": "string", - "title": "Skill host bot ID", - "description": "The Microsoft App ID that will be calling the skill.", - "default": "=settings.MicrosoftAppId" - }, - "skillHostEndpoint": { - "$role": "expression", - "type": "string", - "title": "Skill host", - "description": "The callback Url for the skill host.", - "default": "=settings.skillHostEndpoint", - "examples": [ - "https://mybot.contoso.com/api/skills/" - ] - }, - "skillAppId": { - "$role": "expression", - "type": "string", - "title": "Skill App ID", - "description": "The Microsoft App ID for the skill." - }, - "skillEndpoint": { - "$role": "expression", - "type": "string", - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AgeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Ask": { - "$role": "implements(Microsoft.IDialog)", - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "expectedProperties": { - "$role": "expression", - "title": "Expected Properties", - "description": "Properties expected to be filled by entities from the user", - "oneOf": [ - { - "type": "array", - "items": { - "type": "string", - "title": "string" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AttachmentInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Attachment input dialog", - "description": "Collect information - Ask for a file or image.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "all", - "first" - ], - "title": "Output format", - "description": "Attachment output format.", - "default": "first" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BeginDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a dialog", - "description": "Begin another dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$role": "expression", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "type": "object", - "title": "object", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BreakLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Break Loop", - "description": "Stop executing this loop", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit." - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional).", - "additionalProperties": true - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ChoiceInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "value", - "index" - ], - "title": "Output format", - "description": "Choice output format.", - "default": "value" - }, - "choices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "type": "string", - "title": "string" - } - ], - "title": "array" - }, - { - "type": "array", - "items": [ - { - "title": "Choice", - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - } - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression" - } - ] - }, - "appendChoices": { - "type": "boolean", - "title": "Append choices", - "description": "Compose an output activity containing a set of choices", - "default": "true" - }, - "defaultLocale": { - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when 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 - } - } - }, - "recognizerOptions": { - "type": "object", - "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 the choices action.title field will NOT be searched over", - "default": false - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConditionalSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Condtional Trigger Selector", - "description": "Use a rule selector based on a condition", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "ifTrue": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "ifFalse": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "ifTrue", - "ifFalse", - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Confirm input dialog", - "description": "Collect information - Ask for confirmation (yes or no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the confirm output.", - "examples": [ - "=concat('confirmation:', this.value)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "$role": "expression", - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "$role": "expression", - "oneOf": [ - { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when their are only 2 choices", - "default": " or " - }, - "inlineOrMore": { - "type": "string", - "title": "Inline or more", - "description": "Separator inserted between the last 2 choices when their are more than 2 choices.", - "default": ", or " - }, - "includeNumbers": { - "type": "boolean", - "title": "Include numbers", - "description": "If true, inline and list style choices will be prefixed with the index of the choice.", - "default": true - } - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "confirmChoices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - }, - "title": "object" - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmationEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ContinueLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Continune Loop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the datetime output.", - "examples": [ - "this.value[0].Value" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Properties", - "description": "Delete multiple properties and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "properties", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "$kind" - ] - } - ] - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to the array in memory.", - "enum": [ - "push", - "pop", - "take", - "remove", - "clear" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array to update." - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result Property", - "description": "Property to store the result of this action." - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "'milk'", - "dialog.favColor", - "dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "itemsProperty", - "$kind" - ] - } - ] - }, - "Microsoft.EmailEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$role": "expression", - "title": "Bubble event", - "description": "If true this event is passed on to parent dialogs.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "eventName", - "$kind" - ] - } - ] - }, - "Microsoft.EndDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "End dialog", - "description": "End this dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EntityRecognizers": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Union of components which derive from EntityRecognizer abstract class.", - "type": "object", - "oneOf": [ - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - }, - { - "type": "string", - "title": "Reference to Microsoft.EntityRecognizers", - "description": "Reference to Microsoft.EntityRecognizers .dialog file." - } - ] - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.ForeachPage": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each page", - "description": "Execute actions on each page (collection of items) in an array.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "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" - } - }, - "pageSize": { - "$role": "expression", - "title": "Page size", - "description": "Number of items in each page.", - "oneOf": [ - { - "type": "integer", - "default": 10, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GetConversationMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actionId": { - "$role": "expression", - "type": "string", - "title": "Action Id", - "description": "Action Id to execute next" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actionId", - "$kind" - ] - } - ] - }, - "Microsoft.GuidEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$role": "expression", - "type": "string", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result property", - "description": "Property to store the result of this action. The result includes 4 properties from the http response: statusCode, reasonPhrase, content and headers. If the content is json it will be a deserialized object.", - "examples": [ - "dialog.contosodata" - ] - }, - "contentType": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "type": "string" - } - }, - "responseType": { - "$role": "expression", - "type": "string", - "title": "Response type", - "description": "Defines the type of HTTP response. Automatically calls the 'Send a response' action if set to 'Activity' or 'Activities'.", - "enum": [ - "None", - "Json", - "Activity", - "Activities" - ], - "default": "Json" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "url", - "method", - "$kind" - ] - } - ] - }, - "Microsoft.IActivityTemplate": { - "title": "Microsoft ActivityTemplates", - "description": "Components which are IActivityTemplates", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.IDialog": { - "title": "Microsoft Dialogs", - "description": "Union of components which implement the Dialog contract", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ILanguageGenerator": { - "title": "Microsoft ILanguageGenerator", - "description": "Union of components which implement the ILanguageGenerator interface", - "$role": "interface", - "oneOf": [ - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Union of components which implement the TextTemplate", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITriggerCondition": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Union of components which implement the OnCondition", - "oneOf": [ - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnClearProperty", - "description": "Actions to take when a property needs to be cleared.", - "$ref": "#/definitions/Microsoft.OnClearProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerCondition", - "description": "Reference to Microsoft.ITriggerCondition .dialog file." - } - ] - }, - "Microsoft.ITriggerSelector": { - "$role": "interface", - "title": "Selectors", - "description": "Union of components which are trigger selectors", - "oneOf": [ - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerSelector", - "description": "Reference to Microsoft.ITriggerSelector .dialog file." - } - ] - }, - "Microsoft.IfCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "If condition", - "description": "Two-way branch the conversation flow based on a condition.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evaluate.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.IpEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Information to log." - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "traceActivity": { - "$role": "expression", - "title": "Send Trace Activity", - "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator).", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.LuisRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "LUIS Recognizer", - "description": "LUIS recognizer.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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": { - "type": "string", - "title": "LUIS Application ID", - "description": "Application ID for your model from the LUIS service.", - "$role": "expression" - }, - "endpoint": { - "type": "string", - "title": "LUIS Endpoint", - "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com.", - "$role": "expression" - }, - "endpointKey": { - "type": "string", - "title": "LUIS prediction key", - "description": "LUIS prediction key used to call endpoint.", - "$role": "expression" - }, - "externalEntityRecognizer": { - "title": "External Entity Recognizer", - "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.", - "$kind": "Microsoft.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - }, - "dynamicLists": { - "$role": "expression", - "title": "Dynamic lists", - "description": "Runtime defined entity lists.", - "oneOf": [ - { - "type": "array", - "items": { - "title": "Entity list", - "description": "Lists of canonical values and synonyms for an entity.", - "type": "object", - "properties": { - "entity": { - "title": "Entity", - "description": "Entity to extend with a dynamic list.", - "type": "string" - }, - "list": { - "title": "Dynamic list", - "description": "List of canonical forms and synonyms.", - "type": "array", - "items": { - "type": "object", - "properties": { - "canonicalForm": { - "title": "Canonical form", - "description": "Resolution if any synonym matches.", - "type": "string" - }, - "synonyms": { - "title": "Synonyms", - "description": "List of synonyms for a canonical form.", - "type": "array", - "items": { - "type": "string", - "title": "string" - } - } - }, - "title": "object" - } - } - } - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "predictionOptions": { - "type": "object", - "properties": { - "includeAllIntents": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "applicationId", - "endpoint", - "endpointKey", - "$kind" - ] - } - ] - }, - "Microsoft.MentionEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the number output.", - "examples": [ - "=this.value", - "=int(this.text)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberRangeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection name", - "description": "The connection name configured in Azure Web App Bot OAuth settings.", - "examples": [ - "msgraphOAuthConnection" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Text shown in the OAuth signin card.", - "examples": [ - "Please sign in. " - ] - }, - "title": { - "$role": "expression", - "type": "string", - "title": "Title", - "description": "Title shown in the OAuth signin card.", - "examples": [ - "Login" - ] - }, - "timeout": { - "$role": "expression", - "title": "Timeout", - "description": "Time out setting for the OAuth signin card.", - "oneOf": [ - { - "type": "integer", - "default": "900000", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "examples": [ - 3 - ], - "oneOf": [ - { - "type": "integer", - "default": 3, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "Expression to examine on each turn of the conversation as possible value to the property.", - "examples": [ - "@token" - ] - }, - "allowInterruptions": { - "$role": "expression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "examples": [ - "true" - ], - "oneOf": [ - { - "type": "boolean", - "default": "true", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "connectionName", - "$kind" - ] - } - ] - }, - "Microsoft.OnActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On activity", - "description": "Actions to perform on receipt of a generic activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "type": { - "type": "string", - "title": "Activity type", - "description": "The Activity.Type to match" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "type", - "$kind" - ] - } - ] - }, - "Microsoft.OnAssignEntity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On entity assignment", - "description": "Actions to take when an entity should be assigned to a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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 to use for assigning entity" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnBeginDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On begin dialog", - "description": "Actions to perform when this dialog begins.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCancelDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseEntity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On choose entity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseIntent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On ambigious intent", - "description": "Actions to perform on when an intent is ambigious.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intents": { - "type": "array", - "title": "Intents", - "description": "Intents that must be in the ChooseIntent result for this condition to trigger.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseProperty": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On choose property", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "entities": { - "type": "array", - "title": "Possible properties", - "description": "Entities being assigned", - "items": { - "type": "string", - "title": "Entity name" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnClearProperty": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On clear property", - "description": "Actions to take when a property needs to be cleared.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnClearProperty" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "property": { - "type": "string", - "title": "Property", - "description": "Property that will be cleared" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCondition": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On condition", - "description": "Actions to perform when specified condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnConversationUpdateActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On ConversationUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCustomEvent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On custom event", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnCustomEvent" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Custom event name", - "description": "Name of the custom event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnDialogEvent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On dialog event", - "description": "Actions to perform when a specific dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Dialog event name", - "description": "Name of dialog event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfActions": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On end of actions", - "description": "Actions to take when there are no more actions in the current dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfConversationActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On EndOfConversation activity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnError": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Error", - "description": "Action to perform when an 'Error' dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEventActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Event activity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnHandoffActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Handoff activity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnIntent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On intent recognition", - "description": "Actions to perform when specified intent is recognized.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intent": { - "type": "string", - "title": "Intent", - "description": "Name of intent." - }, - "entities": { - "type": "array", - "title": "Entities", - "description": "Required entities.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnInvokeActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Invoke activity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Message activity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageDeleteActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageDelete activity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageReactionActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageReaction activity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageUpdateActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnQnAMatch": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On QnAMaker Match", - "description": "Actions to perform on when an match from QnAMaker is found.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnRepromptDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On RepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnTypingActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Typing activity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnUnknownIntent": { - "title": "On unknown intent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "type": "object", - "$role": "implements(Microsoft.ITriggerCondition)", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "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": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "activeLearningCardTitle": { - "$role": "expression", - "type": "string", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "enum": [ - "Default", - "QuestionOnly", - "AutoSuggestQuestion" - ], - "default": "Default" - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "threshold": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "strictFilters": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "$role": "expression", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "rankerType": { - "$role": "expression", - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "default": "Default" - }, - "includeDialogNameInMetadata": { - "$role": "expression", - "title": "Include Dialog Name", - "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "metadata": { - "$role": "expression", - "title": "value to ", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "type": "string", - "title": "Value" - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "context": { - "$role": "expression", - "title": "QnARequestContext", - "oneOf": [ - { - "type": "object", - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "qnaId": { - "$role": "expression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API.", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "seed": { - "type": "integer" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Recognizer": { - "title": "Microsoft Recognizer", - "description": "Union of components which implement the Recognizer abstract class", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.RegExEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "name", - "pattern", - "$kind" - ] - } - ] - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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", - "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.EntityRecognizers", - "$ref": "#/definitions/Microsoft.EntityRecognizers" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "intents", - "$kind" - ] - } - ] - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ReplaceDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Replace dialog", - "description": "Replace current dialog with another dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "$role": "expression", - "type": "string", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "$ref": "#/definitions/Microsoft.IDialog" - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SetProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set one or more property values.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "properties": { - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assignments", - "$kind" - ] - } - ] - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection Name", - "description": "Connection name that was used with OAuthInput to log a user in." - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.StaticActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft Static Activity Template", - "description": "This allows you to define a static Activity object", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "title": "Activity", - "Description": "A static Activity to used" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.SwitchCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Switch condition", - "description": "Execute different actions based on the value of a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "type": "string", - "title": "Condition", - "description": "Property to evaluate.", - "examples": [ - "user.favColor" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "cases": { - "type": "array", - "title": "Cases", - "desc": "Actions for each possible condition.", - "items": { - "type": "object", - "required": [ - "value", - "case" - ], - "properties": { - "value": { - "type": [ - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Value.", - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "$kind" - ] - } - ] - }, - "Microsoft.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Temperature Entity Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Assert Condition", - "description": "Assert condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertCondition" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evalute", - "examples": [ - "user.age > 10" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of what the condition is testing" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReply": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply", - "description": "Asserts that a reply text is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReply" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Reply Text", - "description": "Expected reply text" - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply Activity", - "description": "Asserts that a reply activity is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assertions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyOneOf": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply OneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyOneOf" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "array", - "title": "Replies", - "description": "Expected replies (one of which must match", - "items": { - "type": "string" - } - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "replies", - "$kind" - ] - } - ] - }, - "Microsoft.Test.ITestAction": { - "title": "Microsoft Test ITestAction", - "description": "Union of components which implement the Test.ITestAction interface", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "type": "string", - "title": "Reference to Microsoft.Test.ITestAction", - "description": "Reference to Microsoft.Test.ITestAction .dialog file." - } - ] - }, - "Microsoft.Test.Script": { - "title": "Test Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.Script" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "title": "Dialog", - "description": "The root dialog to execute the test script against.", - "$ref": "#/definitions/Microsoft.IDialog" - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of the test script" - }, - "script": { - "type": "array", - "description": "Sequence of test actions to execute.", - "items": { - "$kind": "Microsoft.Test.ITestAction", - "$ref": "#/definitions/Microsoft.Test.ITestAction" - } - }, - "locale": { - "type": "string", - "title": "Locale", - "description": "Set the locale for the user utterances in the script.", - "default": "en-us" - }, - "enableTrace": { - "type": "boolean", - "title": "Enable Trace Activity", - "description": "Enable trace activities in the unit test (default is false)", - "default": false - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "dialog", - "testActions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Activity", - "description": "Sends activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "additionalProperties": true - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserConversationUpdate": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send ConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserConversationUpdate" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "membersAdded": { - "type": "array", - "title": "Members Added", - "description": "Names of the members to add", - "items": { - "type": "string" - } - }, - "membersRemoved": { - "type": "array", - "title": "Members Removed", - "description": "Names of the members to remove", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserDelay": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Delay Execution", - "description": "Delays text script for time period.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserDelay" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "timespan": { - "type": "number", - "title": "Timespan", - "description": "The amount of time in milliseconds to delay the execution of the test script" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "timespan", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserSays": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "User Text", - "description": "Sends text to the bot from the user.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserSays" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Text", - "description": "Text to send to the bot." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserTyping": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Typing", - "description": "Sends typing activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserTyping" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextInput": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the output.", - "examples": [ - "=toUpper(this.value)", - "${toUpper(this.value)}" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextTemplate": { - "$role": "implements(Microsoft.ITextTemplate)", - "title": "Microsoft TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to evaluate to create the text", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "name": { - "$role": "expression", - "type": "string", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$role": "expression", - "type": "string", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Property that holds the value to send as trace activity." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "Activity Id", - "dDescription": "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UrlEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Url Entity Recognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/build_runtime.ps1 b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/build_runtime.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -if ((dotnet --version) -lt '3.1.0') { - throw "! dotnet core 3.1 is required, please refer following documents for help. https://dotnet.microsoft.com/download/dotnet-core/3.1" - Break -} - -# This command need dotnet core more than 3.0 -dotnet user-secrets init - -# Merge all streams into stdout -$result = dotnet build *>&1 -# Evaluate success/failure -if($LASTEXITCODE -ne 0) -{ - # Failed, you can reconstruct stderr strings with: - $ErrorString = $result -join [System.Environment]::NewLine - throw $ErrorString -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/build_runtime.sh b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/build_runtime.sh +++ /dev/null @@ -1,11 +0,0 @@ -versionString=`dotnet --version` -function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } -if version_lt $versionString "3.1.0"; -then - echo "! dotnet core 3.1 is required, please refer following documents for help. -https://dotnet.microsoft.com/download/dotnet-core/3.1" - exit 1 -else - dotnet user-secrets init - dotnet build -fi diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/create.ps1 b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/create.ps1 +++ /dev/null @@ -1,211 +0,0 @@ -Param( - [string] $name, - [string] $location, - [string] $appId, - [string] $appPassword, - [string] $environment, - [string] $luisAuthoringKey, - [string] $projDir = $(Get-Location), - [string] $logFile = $(Join-Path $PSScriptRoot .. "create_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6){ - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -if (-not (Test-Path (Join-Path $projDir 'appsettings.deployment.json'))) -{ - Write-Host "! Could not find an 'appsettings.deployment.json' file in the current directory." -ForegroundColor DarkRed - Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" -} - -if (-not $environment) -{ - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $location) { - $location = Read-Host "? Azure resource group region" -} - -if (-not $appPassword) { - $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" -} - -if (-not $appId) { - # Create app registration - $app = (az ad app create ` - --display-name $name ` - --password `"$($appPassword)`" ` - --available-to-other-tenants ` - --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` - --output json) - - # Retrieve AppId - if ($app) { - $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId - } - - if(-not $appId) { - Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta - Break - } -} - -$shouldCreateAuthoringResource = $true - -# Use pre-exsisting luis authoring key -if ($luisAuthoringKey) { - $shouldCreateAuthoringResource = $false -} - -$resourceGroup = "$name-$environment" -$servicePlanName = "$name-$environment" - -# Get timestamp -$timestamp = Get-Date -f MMddyyyyHHmmss - -# Create resource group -Write-Host "> Creating resource group ..." -(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null - -# Deploy Azure services -Write-Host "> Validating Azure deployment ..." -$validation = az group deployment validate ` - --resource-group $resourcegroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - -if ($validation) { - $validation >> $logFile - $validation = $validation | ConvertFrom-Json - - if (-not $validation.error) { - Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow - $deployment = az group deployment create ` - --name $timestamp ` - --resource-group $resourceGroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - } - else { - Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - if ($validation.error.details -and $validation.error.details[0].code -eq "CanNotCreateMultipleFreeAccounts") - { - Write-Host "! The subscription is exceeding the maximum number of allowed LuisAuthoringAccounts. You already have a luis authoring resource created, please get your luis authoring key and retry with the following command:" -ForegroundColor DarkRed - Write-Host "pwsh ./Scripts/create.ps1 -name $name -environment $environment -location $location -appPassword $appPassword -luisAuthoringKey [YourLuisAuthoringKey]" -ForegroundColor Green - } - - Break - } -} - - -# Get deployment outputs -$outputs = (az group deployment show ` - --name $timestamp ` - --resource-group $resourceGroup ` - --output json) 2>> $logFile - -# If it succeeded then we perform the remainder of the steps -if ($outputs) -{ - # Log and convert to JSON - $outputs >> $logFile - $outputs = $outputs | ConvertFrom-Json - if ($outputs.properties.error) { - Write-Host "! Deployment failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($outputs.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - Break - } - - $outputs = $outputs.properties.outputs - $outputMap = @{} - $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } - - # Update appsettings.deployment.json - Write-Host "> Updating appsettings.deployment.json ..." - if (Test-Path $(Join-Path $projDir appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $projDir appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppId' -Value $appId - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppPassword' -Value $appPassword - - $settings | Add-Member -Type NoteProperty -Force -Name 'bot' -Value "ComposerDialogs" - - foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.deployment.json) - - Write-Host "> Done." - Write-Host "- App Id: $appId" - Write-Host "- App Password: $appPassword" - Write-Host "- Resource Group: $resourceGroup" - Write-Host "- ServicePlan: $servicePlanName" - Write-Host "- Bot Name: $name" - Write-Host "- Web App Name : $name" -} -else -{ - # Check for failed deployments - $operations = az group deployment operation list -g $resourceGroup -n $timestamp --output json 2>> $logFile | Out-Null - - if ($operations) { - $operations = $operations | ConvertFrom-Json - $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } - if ($failedOperations) { - foreach ($operation in $failedOperations) { - switch ($operation.properties.statusmessage.error.code) { - "MissingRegistrationForLocation" { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed - Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta - } - default { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." - Write-Host "! Code: $($operation.properties.statusMessage.error.code)." - Write-Host "! Message: $($operation.properties.statusMessage.error.message)." - } - } - } - } - } - else { - Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } - - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - Break -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/deploy.ps1 deleted file mode 100644 index 9d649810b0..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Scripts/deploy.ps1 +++ /dev/null @@ -1,253 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path BotProject.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Init user secret id -dotnet user-secrets init - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -$localBotPath = $(Join-Path $projFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - -if ($botPath) { - Write-Host "Publishing dialogs from external bot project: $($botPath)" - Copy-Item -Path $botPath -Recurse -Destination $remoteBotPath -Container -Force -} -else { - Copy-Item -Path $localBotPath -Recurse -Destination $publishFolder -Container -Force -} - -# Try to get luis config from appsettings -$settings = Get-Content $(Join-Path $projFolder appsettings.deployment.json) | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisEndpointKey) { - $luisEndpointKey = $luisSettings.endpointKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - - Set-Location -Path $remoteBotPath - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - $noneEmptyModels = [System.Collections.ArrayList]@() - - foreach ($model in $models) { - $stringContent = Get-Content $model | Out-String - if ($stringContent.Length -gt 0) { - $noneEmptyModels.Add($model) - } - } - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $noneEmptyModels - } - - $luString = $noneEmptyModels | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # Execute bf luis:build command - if (Get-Command bf -errorAction SilentlyContinue) { - $customizedSettings = Get-Content $(Join-Path $remoteBotPath settings appsettings.json) | ConvertFrom-Json - $customizedEnv = $customizedSettings.luis.environment - - # create generated folder if not exists - if (!(Test-Path generated)) { - New-Item -ItemType Directory -Force -Path generated - } - - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog --out .\generated --suffix $customizedEnv -f --region $luisAuthoringRegion - } - else { - Write-Host "bf luis:build does not exist, use the following command to install:" - Write-Host "1. npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/" - Write-Host "2. npm install -g @microsoft/botframework-cli" - Write-Host "3. npm config set registry http://registry.npmjs.org" - Break - } - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - # change setting file in publish folder - if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - $luisConfig["endpointKey"] = $luisEndpointKey - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/SkillConversationIdFactory.cs deleted file mode 100644 index 0e2f78ada8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/SkillConversationIdFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Newtonsoft.Json; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - /// - /// A that uses an in memory - /// to store and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly ConcurrentDictionary _conversationRefs = new ConcurrentDictionary(); - - public override Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - var skillConversationReference = new SkillConversationReference - { - ConversationReference = options.Activity.GetConversationReference(), - OAuthScope = options.FromBotOAuthScope - }; - var key = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{skillConversationReference.ConversationReference.Conversation.Id}-{skillConversationReference.ConversationReference.ChannelId}-skillconvo"; - _conversationRefs.GetOrAdd(key, JsonConvert.SerializeObject(skillConversationReference)); - return Task.FromResult(key); - } - - public override Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - var conversationReference = JsonConvert.DeserializeObject(_conversationRefs[skillConversationId]); - return Task.FromResult(conversationReference); - } - - public override Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - _conversationRefs.TryRemove(skillConversationId, out _); - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Startup.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Startup.cs deleted file mode 100644 index 2d920c023b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Startup.cs +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - IStorage storage = null; - - // Configure storage for deployment - if (!string.IsNullOrEmpty(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - Console.WriteLine("The settings of CosmosDbStorage is incomplete, please check following settings: settings.CosmosDb"); - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - - var botDir = Configuration.GetSection("bot").Get(); - - // manage all bot resources - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - services.AddSingleton(userState); - services.AddSingleton(conversationState); - services.AddSingleton(resourceExplorer); - - services.AddSingleton((s) => - { - HostContext.Current.Set(Configuration); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - adapter - .UseStorage(storage) - .UseState(userState, conversationState); - - if (!string.IsNullOrEmpty(settings.BlobStorage.ConnectionString) && !string.IsNullOrEmpty(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - else - { - Console.WriteLine("The settings of TranscriptLoggerMiddleware is incomplete, please check following settings: settings.BlobStorage.ConnectionString, settings.BlobStorage.Container"); - } - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - }); - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseWebSockets(); - - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ActionsTests.cs deleted file mode 100644 index 513ff1190c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ActionsTests.cs +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - [Ignore] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); ; - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ControllingConversationTests.cs deleted file mode 100644 index f76dc985c9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ControllingConversationTests.cs +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/InputsTests.cs deleted file mode 100644 index 8a7064016d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/InputsTests.cs +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License.// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/MessageTests.cs deleted file mode 100644 index fec22e7348..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/MessageTests.cs +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Builder.LanguageGeneration; -using Microsoft.Bot.Builder.ComposerBot.Json; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/Tests.csproj b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/Tests.csproj deleted file mode 100644 index 28a2c36621..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/Tests.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ToDoBotTests.cs deleted file mode 100644 index df21505518..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/Tests/ToDoBotTests.cs +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.Deployment.json deleted file mode 100644 index ad81c7da80..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "MicrosoftAppId": "bc95067e-5821-4baa-963f-78c076ea8546", - "MicrosoftAppPassword": "so=kOXbWOsjRidJGfcQ?kN5:e1EdW05-" -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.Development.json deleted file mode 100644 index 0db3279e44..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.Development.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.json b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.json deleted file mode 100644 index cc17071455..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/appsettings.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "microsoftAppId": "", - "bot": "ComposerDialogs", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/packages/packages.json b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/1469.6275444402218/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/1469.6275444402218/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/.gitignore b/Composer/plugins/localPublish/hostedBots/15667.573629219556/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.csproj b/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.csproj deleted file mode 100644 index cbe7c4956f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.csproj +++ /dev/null @@ -1,42 +0,0 @@ - - - - netcoreapp3.1 - 06fbd694-52af-46c4-ac40-12c87f5940cd - - - - - - - - - - Always - - - - BotProject.ruleset - - - BotProject.ruleset - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.ruleset b/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.sln b/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.sln deleted file mode 100644 index db73c02cd8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotProject.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.136 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotProject", "BotProject.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotSettings.cs deleted file mode 100644 index b88a4a7127..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/BotSettings.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class BotSettings - { - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration AppInsights { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerBot.cs deleted file mode 100644 index 9897a59593..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerBot.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, string rootDialog) - { - HostContext.Current.Set(skillClient); - HostContext.Current.Set(conversationIdFactory); - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - LoadRootDialogAsync(); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/echobot-0.dialog b/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/echobot-0.dialog deleted file mode 100644 index 86c9bcb371..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/echobot-0.dialog +++ /dev/null @@ -1,54 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "id": "433224", - "name": "EchoBot-0" - }, - "autoEndDialog": true, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnUnknownIntent", - "$designer": { - "id": "821845" - }, - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "003038" - }, - "activity": "${bfdactivity-003038()}" - } - ] - }, - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.Foreach", - "$designer": { - "id": "518944", - "name": "Loop: for each item" - }, - "itemsProperty": "turn.Activity.membersAdded", - "actions": [ - { - "$kind": "Microsoft.IfCondition", - "$designer": { - "id": "641773", - "name": "Branch: if/else" - }, - "condition": "string(dialog.foreach.value.id) != string(turn.Activity.Recipient.id)" - } - ] - } - ] - } - ], - "generator": "echobot-0.lg", - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema" -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-generation/en-us/common.en-us.lg deleted file mode 100644 index f0158826ed..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,15 +0,0 @@ - -# T() -[HeroCard - title=Cheese gromit! - subtitle=title - text=This is some text describing the card, it's cool because it's cool - buttons=${button()} -] - -# button -[CardAction - Title = More information - Value = https://www.microsoft.com - type = openUrl -] diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-generation/en-us/echobot-0.en-us.lg b/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-generation/en-us/echobot-0.en-us.lg deleted file mode 100644 index f6e288dd85..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-generation/en-us/echobot-0.en-us.lg +++ /dev/null @@ -1,4 +0,0 @@ -[import](common.lg) - -# bfdactivity-003038() -- ${T()} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-understanding/en-us/echobot-0.en-us.lu b/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/language-understanding/en-us/echobot-0.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/settings/appsettings.json b/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/settings/appsettings.json deleted file mode 100644 index 4f742339ad..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/ComposerDialogs/settings/appsettings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "MicrosoftAppId": "", - "luis": { - "name": "", - "authoringRegion": "westus", - "defaultLanguage": "en-us", - "environment": "composer" - }, - "qna": { - "knowledgebaseid": "", - "endpointkey": "", - "hostname": "" - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Controllers/BotController.cs deleted file mode 100644 index 5085705abb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Controllers/SkillController.cs deleted file mode 100644 index 62b6390dd6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Controllers/SkillController.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.Bot.Builder.TestBot.Json.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index 183586e08f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,363 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - } - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - } - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - } - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/LuisConfig.cs deleted file mode 100644 index 506d52e343..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/LuisConfigAdaptor.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/LuisConfigAdaptor.cs deleted file mode 100644 index 6f23086f3b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/LuisConfigAdaptor.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public static class LuisConfigAdaptor - { - public static IConfigurationBuilder UseLuisConfigAdaptor(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var settings = new Dictionary(); - settings["environment"] = configuration.GetValue("luis:environment"); - settings["region"] = configuration.GetValue("luis:authoringRegion"); - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/NuGet.Config b/Composer/plugins/localPublish/hostedBots/15667.573629219556/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Program.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Program.cs deleted file mode 100644 index 434f5a21d2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Program.cs +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - builder.AddJsonFile($"ComposerDialogs/settings/appsettings.json", optional: true, reloadOnChange: true) - .AddJsonFile("appsetting.json", optional: true, reloadOnChange: true) - .UseLuisConfigAdaptor() - .UseLuisSettings(); - - if (env.IsDevelopment()) - { - // Local Debug - builder.AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true); - } - else - { - //Azure Deploy - builder.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - } - - if (!env.IsDevelopment()) - { - builder.AddUserSecrets(); - } - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/README.md b/Composer/plugins/localPublish/hostedBots/15667.573629219556/README.md deleted file mode 100644 index b096ecf323..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/README.md +++ /dev/null @@ -1,22 +0,0 @@ -## Bot Project -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -## Instructions for setting up the Bot Project runtime -The Bot Project is a regular Bot Framework SDK V4 project. Before you can launch it from the emulator, you need to make sure you can run the bot. - -### Prerequisite: -* Install .Netcore 3.1 - -### Commands: - -* from root folder -* cd BotProject -* cd Templates/CSharp -* dotnet user-secrets init // init the user secret id -* dotnet build // build -* dotnet run // start the bot -* It will start a web server and listening at http://localhost:3979. - -### Test bot -* You can set you emulator to connect to http://localhost:3979/api/messages. - diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Schemas/sdk.schema deleted file mode 100644 index 536286332d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Schemas/sdk.schema +++ /dev/null @@ -1,12321 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/master/schemas/component.schema", - "$id": "sdk.schema", - "type": "object", - "title": "Component kinds", - "description": "These are all of the kinds that can be created by the loader.", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.LanguagePolicy", - "description": "This represents a policy map for locales lookups to use for language", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnClearProperty", - "description": "Actions to take when a property needs to be cleared.", - "$ref": "#/definitions/Microsoft.OnClearProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "$ref": "#/definitions/Microsoft.Test.Script" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - } - ], - "definitions": { - "Microsoft.ActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft ActivityTemplate", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to use to create the activity", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveCardRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AdaptiveCardRecognizer" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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.Recognizer", - "title": "Recognizer", - "description": "Input recognizer that interprets user input into intent and entities.", - "$ref": "#/definitions/Microsoft.Recognizer" - }, - "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.ITriggerCondition", - "$ref": "#/definitions/Microsoft.ITriggerCondition" - } - }, - "schema": { - "anyOf": [ - { - "title": "The schema to be filled in.", - "type": "object", - "additionalProperties": true - }, - { - "type": "string", - "title": "Reference to JSON schema", - "description": "Reference to JSON schema .dialog file." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SkillDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a skill dialog", - "description": "Begin a remote skill dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SkillDialog" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the skill dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - }, - "botId": { - "$role": "expression", - "type": "string", - "title": "Skill host bot ID", - "description": "The Microsoft App ID that will be calling the skill.", - "default": "=settings.MicrosoftAppId" - }, - "skillHostEndpoint": { - "$role": "expression", - "type": "string", - "title": "Skill host", - "description": "The callback Url for the skill host.", - "default": "=settings.skillHostEndpoint", - "examples": [ - "https://mybot.contoso.com/api/skills/" - ] - }, - "skillAppId": { - "$role": "expression", - "type": "string", - "title": "Skill App ID", - "description": "The Microsoft App ID for the skill." - }, - "skillEndpoint": { - "$role": "expression", - "type": "string", - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AgeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Ask": { - "$role": "implements(Microsoft.IDialog)", - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "expectedProperties": { - "$role": "expression", - "title": "Expected Properties", - "description": "Properties expected to be filled by entities from the user", - "oneOf": [ - { - "type": "array", - "items": { - "type": "string", - "title": "string" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AttachmentInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Attachment input dialog", - "description": "Collect information - Ask for a file or image.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "all", - "first" - ], - "title": "Output format", - "description": "Attachment output format.", - "default": "first" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BeginDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a dialog", - "description": "Begin another dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$role": "expression", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "type": "object", - "title": "object", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BreakLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Break Loop", - "description": "Stop executing this loop", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit." - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional).", - "additionalProperties": true - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ChoiceInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "value", - "index" - ], - "title": "Output format", - "description": "Choice output format.", - "default": "value" - }, - "choices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "type": "string", - "title": "string" - } - ], - "title": "array" - }, - { - "type": "array", - "items": [ - { - "title": "Choice", - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - } - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression" - } - ] - }, - "appendChoices": { - "type": "boolean", - "title": "Append choices", - "description": "Compose an output activity containing a set of choices", - "default": "true" - }, - "defaultLocale": { - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when 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 - } - } - }, - "recognizerOptions": { - "type": "object", - "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 the choices action.title field will NOT be searched over", - "default": false - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConditionalSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Condtional Trigger Selector", - "description": "Use a rule selector based on a condition", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "ifTrue": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "ifFalse": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "ifTrue", - "ifFalse", - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Confirm input dialog", - "description": "Collect information - Ask for confirmation (yes or no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the confirm output.", - "examples": [ - "=concat('confirmation:', this.value)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "$role": "expression", - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "$role": "expression", - "oneOf": [ - { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when their are only 2 choices", - "default": " or " - }, - "inlineOrMore": { - "type": "string", - "title": "Inline or more", - "description": "Separator inserted between the last 2 choices when their are more than 2 choices.", - "default": ", or " - }, - "includeNumbers": { - "type": "boolean", - "title": "Include numbers", - "description": "If true, inline and list style choices will be prefixed with the index of the choice.", - "default": true - } - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "confirmChoices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - }, - "title": "object" - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmationEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ContinueLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Continune Loop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the datetime output.", - "examples": [ - "this.value[0].Value" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Properties", - "description": "Delete multiple properties and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "properties", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "$kind" - ] - } - ] - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to the array in memory.", - "enum": [ - "push", - "pop", - "take", - "remove", - "clear" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array to update." - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result Property", - "description": "Property to store the result of this action." - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "'milk'", - "dialog.favColor", - "dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "itemsProperty", - "$kind" - ] - } - ] - }, - "Microsoft.EmailEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$role": "expression", - "title": "Bubble event", - "description": "If true this event is passed on to parent dialogs.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "eventName", - "$kind" - ] - } - ] - }, - "Microsoft.EndDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "End dialog", - "description": "End this dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EntityRecognizers": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Union of components which derive from EntityRecognizer abstract class.", - "type": "object", - "oneOf": [ - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - }, - { - "type": "string", - "title": "Reference to Microsoft.EntityRecognizers", - "description": "Reference to Microsoft.EntityRecognizers .dialog file." - } - ] - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.ForeachPage": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each page", - "description": "Execute actions on each page (collection of items) in an array.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "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" - } - }, - "pageSize": { - "$role": "expression", - "title": "Page size", - "description": "Number of items in each page.", - "oneOf": [ - { - "type": "integer", - "default": 10, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GetConversationMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actionId": { - "$role": "expression", - "type": "string", - "title": "Action Id", - "description": "Action Id to execute next" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actionId", - "$kind" - ] - } - ] - }, - "Microsoft.GuidEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$role": "expression", - "type": "string", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result property", - "description": "Property to store the result of this action. The result includes 4 properties from the http response: statusCode, reasonPhrase, content and headers. If the content is json it will be a deserialized object.", - "examples": [ - "dialog.contosodata" - ] - }, - "contentType": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "type": "string" - } - }, - "responseType": { - "$role": "expression", - "type": "string", - "title": "Response type", - "description": "Defines the type of HTTP response. Automatically calls the 'Send a response' action if set to 'Activity' or 'Activities'.", - "enum": [ - "None", - "Json", - "Activity", - "Activities" - ], - "default": "Json" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "url", - "method", - "$kind" - ] - } - ] - }, - "Microsoft.IActivityTemplate": { - "title": "Microsoft ActivityTemplates", - "description": "Components which are IActivityTemplates", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.IDialog": { - "title": "Microsoft Dialogs", - "description": "Union of components which implement the Dialog contract", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ILanguageGenerator": { - "title": "Microsoft ILanguageGenerator", - "description": "Union of components which implement the ILanguageGenerator interface", - "$role": "interface", - "oneOf": [ - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Union of components which implement the TextTemplate", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITriggerCondition": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Union of components which implement the OnCondition", - "oneOf": [ - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnClearProperty", - "description": "Actions to take when a property needs to be cleared.", - "$ref": "#/definitions/Microsoft.OnClearProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerCondition", - "description": "Reference to Microsoft.ITriggerCondition .dialog file." - } - ] - }, - "Microsoft.ITriggerSelector": { - "$role": "interface", - "title": "Selectors", - "description": "Union of components which are trigger selectors", - "oneOf": [ - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerSelector", - "description": "Reference to Microsoft.ITriggerSelector .dialog file." - } - ] - }, - "Microsoft.IfCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "If condition", - "description": "Two-way branch the conversation flow based on a condition.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evaluate.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.IpEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Information to log." - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "traceActivity": { - "$role": "expression", - "title": "Send Trace Activity", - "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator).", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.LuisRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "LUIS Recognizer", - "description": "LUIS recognizer.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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": { - "type": "string", - "title": "LUIS Application ID", - "description": "Application ID for your model from the LUIS service.", - "$role": "expression" - }, - "endpoint": { - "type": "string", - "title": "LUIS Endpoint", - "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com.", - "$role": "expression" - }, - "endpointKey": { - "type": "string", - "title": "LUIS prediction key", - "description": "LUIS prediction key used to call endpoint.", - "$role": "expression" - }, - "externalEntityRecognizer": { - "title": "External Entity Recognizer", - "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.", - "$kind": "Microsoft.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - }, - "dynamicLists": { - "$role": "expression", - "title": "Dynamic lists", - "description": "Runtime defined entity lists.", - "oneOf": [ - { - "type": "array", - "items": { - "title": "Entity list", - "description": "Lists of canonical values and synonyms for an entity.", - "type": "object", - "properties": { - "entity": { - "title": "Entity", - "description": "Entity to extend with a dynamic list.", - "type": "string" - }, - "list": { - "title": "Dynamic list", - "description": "List of canonical forms and synonyms.", - "type": "array", - "items": { - "type": "object", - "properties": { - "canonicalForm": { - "title": "Canonical form", - "description": "Resolution if any synonym matches.", - "type": "string" - }, - "synonyms": { - "title": "Synonyms", - "description": "List of synonyms for a canonical form.", - "type": "array", - "items": { - "type": "string", - "title": "string" - } - } - }, - "title": "object" - } - } - } - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "predictionOptions": { - "type": "object", - "properties": { - "includeAllIntents": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "applicationId", - "endpoint", - "endpointKey", - "$kind" - ] - } - ] - }, - "Microsoft.MentionEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the number output.", - "examples": [ - "=this.value", - "=int(this.text)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberRangeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection name", - "description": "The connection name configured in Azure Web App Bot OAuth settings.", - "examples": [ - "msgraphOAuthConnection" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Text shown in the OAuth signin card.", - "examples": [ - "Please sign in. " - ] - }, - "title": { - "$role": "expression", - "type": "string", - "title": "Title", - "description": "Title shown in the OAuth signin card.", - "examples": [ - "Login" - ] - }, - "timeout": { - "$role": "expression", - "title": "Timeout", - "description": "Time out setting for the OAuth signin card.", - "oneOf": [ - { - "type": "integer", - "default": "900000", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "examples": [ - 3 - ], - "oneOf": [ - { - "type": "integer", - "default": 3, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "Expression to examine on each turn of the conversation as possible value to the property.", - "examples": [ - "@token" - ] - }, - "allowInterruptions": { - "$role": "expression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "examples": [ - "true" - ], - "oneOf": [ - { - "type": "boolean", - "default": "true", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "connectionName", - "$kind" - ] - } - ] - }, - "Microsoft.OnActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On activity", - "description": "Actions to perform on receipt of a generic activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "type": { - "type": "string", - "title": "Activity type", - "description": "The Activity.Type to match" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "type", - "$kind" - ] - } - ] - }, - "Microsoft.OnAssignEntity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On entity assignment", - "description": "Actions to take when an entity should be assigned to a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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 to use for assigning entity" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnBeginDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On begin dialog", - "description": "Actions to perform when this dialog begins.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCancelDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseEntity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On choose entity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseIntent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On ambigious intent", - "description": "Actions to perform on when an intent is ambigious.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intents": { - "type": "array", - "title": "Intents", - "description": "Intents that must be in the ChooseIntent result for this condition to trigger.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseProperty": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On choose property", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "entities": { - "type": "array", - "title": "Possible properties", - "description": "Entities being assigned", - "items": { - "type": "string", - "title": "Entity name" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnClearProperty": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On clear property", - "description": "Actions to take when a property needs to be cleared.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnClearProperty" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "property": { - "type": "string", - "title": "Property", - "description": "Property that will be cleared" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCondition": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On condition", - "description": "Actions to perform when specified condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnConversationUpdateActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On ConversationUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCustomEvent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On custom event", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnCustomEvent" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Custom event name", - "description": "Name of the custom event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnDialogEvent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On dialog event", - "description": "Actions to perform when a specific dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Dialog event name", - "description": "Name of dialog event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfActions": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On end of actions", - "description": "Actions to take when there are no more actions in the current dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfConversationActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On EndOfConversation activity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnError": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Error", - "description": "Action to perform when an 'Error' dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEventActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Event activity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnHandoffActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Handoff activity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnIntent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On intent recognition", - "description": "Actions to perform when specified intent is recognized.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intent": { - "type": "string", - "title": "Intent", - "description": "Name of intent." - }, - "entities": { - "type": "array", - "title": "Entities", - "description": "Required entities.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnInvokeActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Invoke activity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Message activity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageDeleteActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageDelete activity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageReactionActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageReaction activity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageUpdateActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnQnAMatch": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On QnAMaker Match", - "description": "Actions to perform on when an match from QnAMaker is found.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnRepromptDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On RepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnTypingActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Typing activity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnUnknownIntent": { - "title": "On unknown intent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "type": "object", - "$role": "implements(Microsoft.ITriggerCondition)", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "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": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "activeLearningCardTitle": { - "$role": "expression", - "type": "string", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "enum": [ - "Default", - "QuestionOnly", - "AutoSuggestQuestion" - ], - "default": "Default" - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "threshold": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "strictFilters": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "$role": "expression", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "rankerType": { - "$role": "expression", - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "default": "Default" - }, - "includeDialogNameInMetadata": { - "$role": "expression", - "title": "Include Dialog Name", - "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "metadata": { - "$role": "expression", - "title": "value to ", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "type": "string", - "title": "Value" - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "context": { - "$role": "expression", - "title": "QnARequestContext", - "oneOf": [ - { - "type": "object", - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "qnaId": { - "$role": "expression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API.", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "seed": { - "type": "integer" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Recognizer": { - "title": "Microsoft Recognizer", - "description": "Union of components which implement the Recognizer abstract class", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.RegExEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "name", - "pattern", - "$kind" - ] - } - ] - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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", - "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.EntityRecognizers", - "$ref": "#/definitions/Microsoft.EntityRecognizers" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "intents", - "$kind" - ] - } - ] - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ReplaceDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Replace dialog", - "description": "Replace current dialog with another dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "$role": "expression", - "type": "string", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "$ref": "#/definitions/Microsoft.IDialog" - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SetProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set one or more property values.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "properties": { - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assignments", - "$kind" - ] - } - ] - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection Name", - "description": "Connection name that was used with OAuthInput to log a user in." - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.StaticActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft Static Activity Template", - "description": "This allows you to define a static Activity object", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "title": "Activity", - "Description": "A static Activity to used" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.SwitchCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Switch condition", - "description": "Execute different actions based on the value of a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "type": "string", - "title": "Condition", - "description": "Property to evaluate.", - "examples": [ - "user.favColor" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "cases": { - "type": "array", - "title": "Cases", - "desc": "Actions for each possible condition.", - "items": { - "type": "object", - "required": [ - "value", - "case" - ], - "properties": { - "value": { - "type": [ - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Value.", - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "$kind" - ] - } - ] - }, - "Microsoft.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Temperature Entity Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Assert Condition", - "description": "Assert condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertCondition" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evalute", - "examples": [ - "user.age > 10" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of what the condition is testing" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReply": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply", - "description": "Asserts that a reply text is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReply" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Reply Text", - "description": "Expected reply text" - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply Activity", - "description": "Asserts that a reply activity is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assertions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyOneOf": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply OneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyOneOf" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "array", - "title": "Replies", - "description": "Expected replies (one of which must match", - "items": { - "type": "string" - } - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "replies", - "$kind" - ] - } - ] - }, - "Microsoft.Test.ITestAction": { - "title": "Microsoft Test ITestAction", - "description": "Union of components which implement the Test.ITestAction interface", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "type": "string", - "title": "Reference to Microsoft.Test.ITestAction", - "description": "Reference to Microsoft.Test.ITestAction .dialog file." - } - ] - }, - "Microsoft.Test.Script": { - "title": "Test Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.Script" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "title": "Dialog", - "description": "The root dialog to execute the test script against.", - "$ref": "#/definitions/Microsoft.IDialog" - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of the test script" - }, - "script": { - "type": "array", - "description": "Sequence of test actions to execute.", - "items": { - "$kind": "Microsoft.Test.ITestAction", - "$ref": "#/definitions/Microsoft.Test.ITestAction" - } - }, - "locale": { - "type": "string", - "title": "Locale", - "description": "Set the locale for the user utterances in the script.", - "default": "en-us" - }, - "enableTrace": { - "type": "boolean", - "title": "Enable Trace Activity", - "description": "Enable trace activities in the unit test (default is false)", - "default": false - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "dialog", - "testActions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Activity", - "description": "Sends activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "additionalProperties": true - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserConversationUpdate": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send ConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserConversationUpdate" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "membersAdded": { - "type": "array", - "title": "Members Added", - "description": "Names of the members to add", - "items": { - "type": "string" - } - }, - "membersRemoved": { - "type": "array", - "title": "Members Removed", - "description": "Names of the members to remove", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserDelay": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Delay Execution", - "description": "Delays text script for time period.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserDelay" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "timespan": { - "type": "number", - "title": "Timespan", - "description": "The amount of time in milliseconds to delay the execution of the test script" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "timespan", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserSays": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "User Text", - "description": "Sends text to the bot from the user.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserSays" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Text", - "description": "Text to send to the bot." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserTyping": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Typing", - "description": "Sends typing activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserTyping" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextInput": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the output.", - "examples": [ - "=toUpper(this.value)", - "${toUpper(this.value)}" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextTemplate": { - "$role": "implements(Microsoft.ITextTemplate)", - "title": "Microsoft TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to evaluate to create the text", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "name": { - "$role": "expression", - "type": "string", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$role": "expression", - "type": "string", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Property that holds the value to send as trace activity." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "Activity Id", - "dDescription": "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UrlEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Url Entity Recognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/build_runtime.ps1 b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/build_runtime.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -if ((dotnet --version) -lt '3.1.0') { - throw "! dotnet core 3.1 is required, please refer following documents for help. https://dotnet.microsoft.com/download/dotnet-core/3.1" - Break -} - -# This command need dotnet core more than 3.0 -dotnet user-secrets init - -# Merge all streams into stdout -$result = dotnet build *>&1 -# Evaluate success/failure -if($LASTEXITCODE -ne 0) -{ - # Failed, you can reconstruct stderr strings with: - $ErrorString = $result -join [System.Environment]::NewLine - throw $ErrorString -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/build_runtime.sh b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/build_runtime.sh +++ /dev/null @@ -1,11 +0,0 @@ -versionString=`dotnet --version` -function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } -if version_lt $versionString "3.1.0"; -then - echo "! dotnet core 3.1 is required, please refer following documents for help. -https://dotnet.microsoft.com/download/dotnet-core/3.1" - exit 1 -else - dotnet user-secrets init - dotnet build -fi diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/create.ps1 b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/create.ps1 +++ /dev/null @@ -1,211 +0,0 @@ -Param( - [string] $name, - [string] $location, - [string] $appId, - [string] $appPassword, - [string] $environment, - [string] $luisAuthoringKey, - [string] $projDir = $(Get-Location), - [string] $logFile = $(Join-Path $PSScriptRoot .. "create_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6){ - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -if (-not (Test-Path (Join-Path $projDir 'appsettings.deployment.json'))) -{ - Write-Host "! Could not find an 'appsettings.deployment.json' file in the current directory." -ForegroundColor DarkRed - Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" -} - -if (-not $environment) -{ - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $location) { - $location = Read-Host "? Azure resource group region" -} - -if (-not $appPassword) { - $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" -} - -if (-not $appId) { - # Create app registration - $app = (az ad app create ` - --display-name $name ` - --password `"$($appPassword)`" ` - --available-to-other-tenants ` - --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` - --output json) - - # Retrieve AppId - if ($app) { - $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId - } - - if(-not $appId) { - Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta - Break - } -} - -$shouldCreateAuthoringResource = $true - -# Use pre-exsisting luis authoring key -if ($luisAuthoringKey) { - $shouldCreateAuthoringResource = $false -} - -$resourceGroup = "$name-$environment" -$servicePlanName = "$name-$environment" - -# Get timestamp -$timestamp = Get-Date -f MMddyyyyHHmmss - -# Create resource group -Write-Host "> Creating resource group ..." -(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null - -# Deploy Azure services -Write-Host "> Validating Azure deployment ..." -$validation = az group deployment validate ` - --resource-group $resourcegroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - -if ($validation) { - $validation >> $logFile - $validation = $validation | ConvertFrom-Json - - if (-not $validation.error) { - Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow - $deployment = az group deployment create ` - --name $timestamp ` - --resource-group $resourceGroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - } - else { - Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - if ($validation.error.details -and $validation.error.details[0].code -eq "CanNotCreateMultipleFreeAccounts") - { - Write-Host "! The subscription is exceeding the maximum number of allowed LuisAuthoringAccounts. You already have a luis authoring resource created, please get your luis authoring key and retry with the following command:" -ForegroundColor DarkRed - Write-Host "pwsh ./Scripts/create.ps1 -name $name -environment $environment -location $location -appPassword $appPassword -luisAuthoringKey [YourLuisAuthoringKey]" -ForegroundColor Green - } - - Break - } -} - - -# Get deployment outputs -$outputs = (az group deployment show ` - --name $timestamp ` - --resource-group $resourceGroup ` - --output json) 2>> $logFile - -# If it succeeded then we perform the remainder of the steps -if ($outputs) -{ - # Log and convert to JSON - $outputs >> $logFile - $outputs = $outputs | ConvertFrom-Json - if ($outputs.properties.error) { - Write-Host "! Deployment failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($outputs.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - Break - } - - $outputs = $outputs.properties.outputs - $outputMap = @{} - $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } - - # Update appsettings.deployment.json - Write-Host "> Updating appsettings.deployment.json ..." - if (Test-Path $(Join-Path $projDir appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $projDir appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppId' -Value $appId - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppPassword' -Value $appPassword - - $settings | Add-Member -Type NoteProperty -Force -Name 'bot' -Value "ComposerDialogs" - - foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.deployment.json) - - Write-Host "> Done." - Write-Host "- App Id: $appId" - Write-Host "- App Password: $appPassword" - Write-Host "- Resource Group: $resourceGroup" - Write-Host "- ServicePlan: $servicePlanName" - Write-Host "- Bot Name: $name" - Write-Host "- Web App Name : $name" -} -else -{ - # Check for failed deployments - $operations = az group deployment operation list -g $resourceGroup -n $timestamp --output json 2>> $logFile | Out-Null - - if ($operations) { - $operations = $operations | ConvertFrom-Json - $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } - if ($failedOperations) { - foreach ($operation in $failedOperations) { - switch ($operation.properties.statusmessage.error.code) { - "MissingRegistrationForLocation" { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed - Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta - } - default { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." - Write-Host "! Code: $($operation.properties.statusMessage.error.code)." - Write-Host "! Message: $($operation.properties.statusMessage.error.message)." - } - } - } - } - } - else { - Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } - - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - Break -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/deploy.ps1 deleted file mode 100644 index 9d649810b0..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Scripts/deploy.ps1 +++ /dev/null @@ -1,253 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path BotProject.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Init user secret id -dotnet user-secrets init - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -$localBotPath = $(Join-Path $projFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - -if ($botPath) { - Write-Host "Publishing dialogs from external bot project: $($botPath)" - Copy-Item -Path $botPath -Recurse -Destination $remoteBotPath -Container -Force -} -else { - Copy-Item -Path $localBotPath -Recurse -Destination $publishFolder -Container -Force -} - -# Try to get luis config from appsettings -$settings = Get-Content $(Join-Path $projFolder appsettings.deployment.json) | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisEndpointKey) { - $luisEndpointKey = $luisSettings.endpointKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - - Set-Location -Path $remoteBotPath - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - $noneEmptyModels = [System.Collections.ArrayList]@() - - foreach ($model in $models) { - $stringContent = Get-Content $model | Out-String - if ($stringContent.Length -gt 0) { - $noneEmptyModels.Add($model) - } - } - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $noneEmptyModels - } - - $luString = $noneEmptyModels | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # Execute bf luis:build command - if (Get-Command bf -errorAction SilentlyContinue) { - $customizedSettings = Get-Content $(Join-Path $remoteBotPath settings appsettings.json) | ConvertFrom-Json - $customizedEnv = $customizedSettings.luis.environment - - # create generated folder if not exists - if (!(Test-Path generated)) { - New-Item -ItemType Directory -Force -Path generated - } - - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog --out .\generated --suffix $customizedEnv -f --region $luisAuthoringRegion - } - else { - Write-Host "bf luis:build does not exist, use the following command to install:" - Write-Host "1. npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/" - Write-Host "2. npm install -g @microsoft/botframework-cli" - Write-Host "3. npm config set registry http://registry.npmjs.org" - Break - } - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - # change setting file in publish folder - if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - $luisConfig["endpointKey"] = $luisEndpointKey - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/SkillConversationIdFactory.cs deleted file mode 100644 index 0e2f78ada8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/SkillConversationIdFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Newtonsoft.Json; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - /// - /// A that uses an in memory - /// to store and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly ConcurrentDictionary _conversationRefs = new ConcurrentDictionary(); - - public override Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - var skillConversationReference = new SkillConversationReference - { - ConversationReference = options.Activity.GetConversationReference(), - OAuthScope = options.FromBotOAuthScope - }; - var key = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{skillConversationReference.ConversationReference.Conversation.Id}-{skillConversationReference.ConversationReference.ChannelId}-skillconvo"; - _conversationRefs.GetOrAdd(key, JsonConvert.SerializeObject(skillConversationReference)); - return Task.FromResult(key); - } - - public override Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - var conversationReference = JsonConvert.DeserializeObject(_conversationRefs[skillConversationId]); - return Task.FromResult(conversationReference); - } - - public override Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - _conversationRefs.TryRemove(skillConversationId, out _); - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Startup.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Startup.cs deleted file mode 100644 index 2d920c023b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Startup.cs +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - IStorage storage = null; - - // Configure storage for deployment - if (!string.IsNullOrEmpty(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - Console.WriteLine("The settings of CosmosDbStorage is incomplete, please check following settings: settings.CosmosDb"); - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - - var botDir = Configuration.GetSection("bot").Get(); - - // manage all bot resources - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - services.AddSingleton(userState); - services.AddSingleton(conversationState); - services.AddSingleton(resourceExplorer); - - services.AddSingleton((s) => - { - HostContext.Current.Set(Configuration); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - adapter - .UseStorage(storage) - .UseState(userState, conversationState); - - if (!string.IsNullOrEmpty(settings.BlobStorage.ConnectionString) && !string.IsNullOrEmpty(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - else - { - Console.WriteLine("The settings of TranscriptLoggerMiddleware is incomplete, please check following settings: settings.BlobStorage.ConnectionString, settings.BlobStorage.Container"); - } - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - }); - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseWebSockets(); - - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ActionsTests.cs deleted file mode 100644 index 513ff1190c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ActionsTests.cs +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - [Ignore] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); ; - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ControllingConversationTests.cs deleted file mode 100644 index f76dc985c9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ControllingConversationTests.cs +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/InputsTests.cs deleted file mode 100644 index 8a7064016d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/InputsTests.cs +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License.// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/MessageTests.cs deleted file mode 100644 index fec22e7348..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/MessageTests.cs +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Builder.LanguageGeneration; -using Microsoft.Bot.Builder.ComposerBot.Json; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/Tests.csproj b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/Tests.csproj deleted file mode 100644 index 28a2c36621..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/Tests.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ToDoBotTests.cs deleted file mode 100644 index df21505518..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/Tests/ToDoBotTests.cs +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.Deployment.json deleted file mode 100644 index 0db3279e44..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.Deployment.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.Development.json deleted file mode 100644 index 0db3279e44..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.Development.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.json b/Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.json deleted file mode 100644 index cc17071455..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/appsettings.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "microsoftAppId": "", - "bot": "ComposerDialogs", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/packages/packages.json b/Composer/plugins/localPublish/hostedBots/15667.573629219556/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/15667.573629219556/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/15667.573629219556/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/15667.573629219556/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/.gitignore b/Composer/plugins/localPublish/hostedBots/23804.454040430723/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.csproj b/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.csproj deleted file mode 100644 index 4f356d3584..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.csproj +++ /dev/null @@ -1,45 +0,0 @@ - - - - netcoreapp3.1 - 2746fe7e-1e66-4105-a8e6-e95b0fa6796e - - - - - - - - - - Always - - - - BotProject.ruleset - - - BotProject.ruleset - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.ruleset b/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.sln b/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.sln deleted file mode 100644 index db73c02cd8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotProject.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.136 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotProject", "BotProject.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotSettings.cs deleted file mode 100644 index b88a4a7127..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/BotSettings.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class BotSettings - { - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration AppInsights { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerBot.cs deleted file mode 100644 index 9897a59593..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerBot.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, string rootDialog) - { - HostContext.Current.Set(skillClient); - HostContext.Current.Set(conversationIdFactory); - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - LoadRootDialogAsync(); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/echobot-1.dialog b/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/echobot-1.dialog deleted file mode 100644 index b71cb53f7a..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/echobot-1.dialog +++ /dev/null @@ -1,54 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "id": "433224", - "name": "EchoBot-1" - }, - "autoEndDialog": true, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnUnknownIntent", - "$designer": { - "id": "821845" - }, - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "003038" - }, - "activity": "${bfdactivity-003038()}" - } - ] - }, - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.Foreach", - "$designer": { - "id": "518944", - "name": "Loop: for each item" - }, - "itemsProperty": "turn.Activity.membersAdded", - "actions": [ - { - "$kind": "Microsoft.IfCondition", - "$designer": { - "id": "641773", - "name": "Branch: if/else" - }, - "condition": "string(dialog.foreach.value.id) != string(turn.Activity.Recipient.id)" - } - ] - } - ] - } - ], - "generator": "echobot-1.lg", - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema" -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-generation/en-us/common.en-us.lg deleted file mode 100644 index 35d2ce38ec..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,14 +0,0 @@ -# T() -[HeroCard - title=Cheese gromit! - subtitle=title - text=This is some text describing the card, it's cool because it's cool - buttons=${button()} -] - -# button -[CardAction - Title = More information - Value = https://www.microsoft.com - type = openUrl -] diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-generation/en-us/echobot-1.en-us.lg b/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-generation/en-us/echobot-1.en-us.lg deleted file mode 100644 index f6e288dd85..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-generation/en-us/echobot-1.en-us.lg +++ /dev/null @@ -1,4 +0,0 @@ -[import](common.lg) - -# bfdactivity-003038() -- ${T()} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-understanding/en-us/echobot-1.en-us.lu b/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/language-understanding/en-us/echobot-1.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/settings/appsettings.json b/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/settings/appsettings.json deleted file mode 100644 index 4f742339ad..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/ComposerDialogs/settings/appsettings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "MicrosoftAppId": "", - "luis": { - "name": "", - "authoringRegion": "westus", - "defaultLanguage": "en-us", - "environment": "composer" - }, - "qna": { - "knowledgebaseid": "", - "endpointkey": "", - "hostname": "" - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Controllers/BotController.cs deleted file mode 100644 index 5085705abb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Controllers/SkillController.cs deleted file mode 100644 index 62b6390dd6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Controllers/SkillController.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.Bot.Builder.TestBot.Json.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index 183586e08f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,363 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - } - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - } - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - } - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/LuisConfig.cs deleted file mode 100644 index 506d52e343..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/LuisConfigAdaptor.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/LuisConfigAdaptor.cs deleted file mode 100644 index 6f23086f3b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/LuisConfigAdaptor.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public static class LuisConfigAdaptor - { - public static IConfigurationBuilder UseLuisConfigAdaptor(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var settings = new Dictionary(); - settings["environment"] = configuration.GetValue("luis:environment"); - settings["region"] = configuration.GetValue("luis:authoringRegion"); - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/NuGet.Config b/Composer/plugins/localPublish/hostedBots/23804.454040430723/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Program.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Program.cs deleted file mode 100644 index 434f5a21d2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Program.cs +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - builder.AddJsonFile($"ComposerDialogs/settings/appsettings.json", optional: true, reloadOnChange: true) - .AddJsonFile("appsetting.json", optional: true, reloadOnChange: true) - .UseLuisConfigAdaptor() - .UseLuisSettings(); - - if (env.IsDevelopment()) - { - // Local Debug - builder.AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true); - } - else - { - //Azure Deploy - builder.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - } - - if (!env.IsDevelopment()) - { - builder.AddUserSecrets(); - } - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/README.md b/Composer/plugins/localPublish/hostedBots/23804.454040430723/README.md deleted file mode 100644 index b096ecf323..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/README.md +++ /dev/null @@ -1,22 +0,0 @@ -## Bot Project -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -## Instructions for setting up the Bot Project runtime -The Bot Project is a regular Bot Framework SDK V4 project. Before you can launch it from the emulator, you need to make sure you can run the bot. - -### Prerequisite: -* Install .Netcore 3.1 - -### Commands: - -* from root folder -* cd BotProject -* cd Templates/CSharp -* dotnet user-secrets init // init the user secret id -* dotnet build // build -* dotnet run // start the bot -* It will start a web server and listening at http://localhost:3979. - -### Test bot -* You can set you emulator to connect to http://localhost:3979/api/messages. - diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Schemas/sdk.schema deleted file mode 100644 index 536286332d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Schemas/sdk.schema +++ /dev/null @@ -1,12321 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/master/schemas/component.schema", - "$id": "sdk.schema", - "type": "object", - "title": "Component kinds", - "description": "These are all of the kinds that can be created by the loader.", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.LanguagePolicy", - "description": "This represents a policy map for locales lookups to use for language", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnClearProperty", - "description": "Actions to take when a property needs to be cleared.", - "$ref": "#/definitions/Microsoft.OnClearProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "$ref": "#/definitions/Microsoft.Test.Script" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - } - ], - "definitions": { - "Microsoft.ActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft ActivityTemplate", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to use to create the activity", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveCardRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AdaptiveCardRecognizer" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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.Recognizer", - "title": "Recognizer", - "description": "Input recognizer that interprets user input into intent and entities.", - "$ref": "#/definitions/Microsoft.Recognizer" - }, - "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.ITriggerCondition", - "$ref": "#/definitions/Microsoft.ITriggerCondition" - } - }, - "schema": { - "anyOf": [ - { - "title": "The schema to be filled in.", - "type": "object", - "additionalProperties": true - }, - { - "type": "string", - "title": "Reference to JSON schema", - "description": "Reference to JSON schema .dialog file." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SkillDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a skill dialog", - "description": "Begin a remote skill dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SkillDialog" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the skill dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - }, - "botId": { - "$role": "expression", - "type": "string", - "title": "Skill host bot ID", - "description": "The Microsoft App ID that will be calling the skill.", - "default": "=settings.MicrosoftAppId" - }, - "skillHostEndpoint": { - "$role": "expression", - "type": "string", - "title": "Skill host", - "description": "The callback Url for the skill host.", - "default": "=settings.skillHostEndpoint", - "examples": [ - "https://mybot.contoso.com/api/skills/" - ] - }, - "skillAppId": { - "$role": "expression", - "type": "string", - "title": "Skill App ID", - "description": "The Microsoft App ID for the skill." - }, - "skillEndpoint": { - "$role": "expression", - "type": "string", - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AgeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Ask": { - "$role": "implements(Microsoft.IDialog)", - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "expectedProperties": { - "$role": "expression", - "title": "Expected Properties", - "description": "Properties expected to be filled by entities from the user", - "oneOf": [ - { - "type": "array", - "items": { - "type": "string", - "title": "string" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AttachmentInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Attachment input dialog", - "description": "Collect information - Ask for a file or image.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "all", - "first" - ], - "title": "Output format", - "description": "Attachment output format.", - "default": "first" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BeginDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a dialog", - "description": "Begin another dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$role": "expression", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "type": "object", - "title": "object", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BreakLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Break Loop", - "description": "Stop executing this loop", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit." - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional).", - "additionalProperties": true - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ChoiceInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "value", - "index" - ], - "title": "Output format", - "description": "Choice output format.", - "default": "value" - }, - "choices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "type": "string", - "title": "string" - } - ], - "title": "array" - }, - { - "type": "array", - "items": [ - { - "title": "Choice", - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - } - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression" - } - ] - }, - "appendChoices": { - "type": "boolean", - "title": "Append choices", - "description": "Compose an output activity containing a set of choices", - "default": "true" - }, - "defaultLocale": { - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when 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 - } - } - }, - "recognizerOptions": { - "type": "object", - "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 the choices action.title field will NOT be searched over", - "default": false - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConditionalSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Condtional Trigger Selector", - "description": "Use a rule selector based on a condition", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "ifTrue": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "ifFalse": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "ifTrue", - "ifFalse", - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Confirm input dialog", - "description": "Collect information - Ask for confirmation (yes or no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the confirm output.", - "examples": [ - "=concat('confirmation:', this.value)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "$role": "expression", - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "$role": "expression", - "oneOf": [ - { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when their are only 2 choices", - "default": " or " - }, - "inlineOrMore": { - "type": "string", - "title": "Inline or more", - "description": "Separator inserted between the last 2 choices when their are more than 2 choices.", - "default": ", or " - }, - "includeNumbers": { - "type": "boolean", - "title": "Include numbers", - "description": "If true, inline and list style choices will be prefixed with the index of the choice.", - "default": true - } - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "confirmChoices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - }, - "title": "object" - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmationEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ContinueLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Continune Loop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the datetime output.", - "examples": [ - "this.value[0].Value" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Properties", - "description": "Delete multiple properties and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "properties", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "$kind" - ] - } - ] - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to the array in memory.", - "enum": [ - "push", - "pop", - "take", - "remove", - "clear" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array to update." - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result Property", - "description": "Property to store the result of this action." - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "'milk'", - "dialog.favColor", - "dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "itemsProperty", - "$kind" - ] - } - ] - }, - "Microsoft.EmailEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$role": "expression", - "title": "Bubble event", - "description": "If true this event is passed on to parent dialogs.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "eventName", - "$kind" - ] - } - ] - }, - "Microsoft.EndDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "End dialog", - "description": "End this dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EntityRecognizers": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Union of components which derive from EntityRecognizer abstract class.", - "type": "object", - "oneOf": [ - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - }, - { - "type": "string", - "title": "Reference to Microsoft.EntityRecognizers", - "description": "Reference to Microsoft.EntityRecognizers .dialog file." - } - ] - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.ForeachPage": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each page", - "description": "Execute actions on each page (collection of items) in an array.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "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" - } - }, - "pageSize": { - "$role": "expression", - "title": "Page size", - "description": "Number of items in each page.", - "oneOf": [ - { - "type": "integer", - "default": 10, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GetConversationMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actionId": { - "$role": "expression", - "type": "string", - "title": "Action Id", - "description": "Action Id to execute next" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actionId", - "$kind" - ] - } - ] - }, - "Microsoft.GuidEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$role": "expression", - "type": "string", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result property", - "description": "Property to store the result of this action. The result includes 4 properties from the http response: statusCode, reasonPhrase, content and headers. If the content is json it will be a deserialized object.", - "examples": [ - "dialog.contosodata" - ] - }, - "contentType": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "type": "string" - } - }, - "responseType": { - "$role": "expression", - "type": "string", - "title": "Response type", - "description": "Defines the type of HTTP response. Automatically calls the 'Send a response' action if set to 'Activity' or 'Activities'.", - "enum": [ - "None", - "Json", - "Activity", - "Activities" - ], - "default": "Json" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "url", - "method", - "$kind" - ] - } - ] - }, - "Microsoft.IActivityTemplate": { - "title": "Microsoft ActivityTemplates", - "description": "Components which are IActivityTemplates", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.IDialog": { - "title": "Microsoft Dialogs", - "description": "Union of components which implement the Dialog contract", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ILanguageGenerator": { - "title": "Microsoft ILanguageGenerator", - "description": "Union of components which implement the ILanguageGenerator interface", - "$role": "interface", - "oneOf": [ - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Union of components which implement the TextTemplate", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITriggerCondition": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Union of components which implement the OnCondition", - "oneOf": [ - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnClearProperty", - "description": "Actions to take when a property needs to be cleared.", - "$ref": "#/definitions/Microsoft.OnClearProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerCondition", - "description": "Reference to Microsoft.ITriggerCondition .dialog file." - } - ] - }, - "Microsoft.ITriggerSelector": { - "$role": "interface", - "title": "Selectors", - "description": "Union of components which are trigger selectors", - "oneOf": [ - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerSelector", - "description": "Reference to Microsoft.ITriggerSelector .dialog file." - } - ] - }, - "Microsoft.IfCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "If condition", - "description": "Two-way branch the conversation flow based on a condition.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evaluate.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.IpEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Information to log." - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "traceActivity": { - "$role": "expression", - "title": "Send Trace Activity", - "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator).", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.LuisRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "LUIS Recognizer", - "description": "LUIS recognizer.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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": { - "type": "string", - "title": "LUIS Application ID", - "description": "Application ID for your model from the LUIS service.", - "$role": "expression" - }, - "endpoint": { - "type": "string", - "title": "LUIS Endpoint", - "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com.", - "$role": "expression" - }, - "endpointKey": { - "type": "string", - "title": "LUIS prediction key", - "description": "LUIS prediction key used to call endpoint.", - "$role": "expression" - }, - "externalEntityRecognizer": { - "title": "External Entity Recognizer", - "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.", - "$kind": "Microsoft.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - }, - "dynamicLists": { - "$role": "expression", - "title": "Dynamic lists", - "description": "Runtime defined entity lists.", - "oneOf": [ - { - "type": "array", - "items": { - "title": "Entity list", - "description": "Lists of canonical values and synonyms for an entity.", - "type": "object", - "properties": { - "entity": { - "title": "Entity", - "description": "Entity to extend with a dynamic list.", - "type": "string" - }, - "list": { - "title": "Dynamic list", - "description": "List of canonical forms and synonyms.", - "type": "array", - "items": { - "type": "object", - "properties": { - "canonicalForm": { - "title": "Canonical form", - "description": "Resolution if any synonym matches.", - "type": "string" - }, - "synonyms": { - "title": "Synonyms", - "description": "List of synonyms for a canonical form.", - "type": "array", - "items": { - "type": "string", - "title": "string" - } - } - }, - "title": "object" - } - } - } - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "predictionOptions": { - "type": "object", - "properties": { - "includeAllIntents": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "applicationId", - "endpoint", - "endpointKey", - "$kind" - ] - } - ] - }, - "Microsoft.MentionEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the number output.", - "examples": [ - "=this.value", - "=int(this.text)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberRangeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection name", - "description": "The connection name configured in Azure Web App Bot OAuth settings.", - "examples": [ - "msgraphOAuthConnection" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Text shown in the OAuth signin card.", - "examples": [ - "Please sign in. " - ] - }, - "title": { - "$role": "expression", - "type": "string", - "title": "Title", - "description": "Title shown in the OAuth signin card.", - "examples": [ - "Login" - ] - }, - "timeout": { - "$role": "expression", - "title": "Timeout", - "description": "Time out setting for the OAuth signin card.", - "oneOf": [ - { - "type": "integer", - "default": "900000", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "examples": [ - 3 - ], - "oneOf": [ - { - "type": "integer", - "default": 3, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "Expression to examine on each turn of the conversation as possible value to the property.", - "examples": [ - "@token" - ] - }, - "allowInterruptions": { - "$role": "expression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "examples": [ - "true" - ], - "oneOf": [ - { - "type": "boolean", - "default": "true", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "connectionName", - "$kind" - ] - } - ] - }, - "Microsoft.OnActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On activity", - "description": "Actions to perform on receipt of a generic activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "type": { - "type": "string", - "title": "Activity type", - "description": "The Activity.Type to match" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "type", - "$kind" - ] - } - ] - }, - "Microsoft.OnAssignEntity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On entity assignment", - "description": "Actions to take when an entity should be assigned to a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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 to use for assigning entity" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnBeginDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On begin dialog", - "description": "Actions to perform when this dialog begins.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCancelDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseEntity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On choose entity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseIntent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On ambigious intent", - "description": "Actions to perform on when an intent is ambigious.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intents": { - "type": "array", - "title": "Intents", - "description": "Intents that must be in the ChooseIntent result for this condition to trigger.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseProperty": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On choose property", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "entities": { - "type": "array", - "title": "Possible properties", - "description": "Entities being assigned", - "items": { - "type": "string", - "title": "Entity name" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnClearProperty": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On clear property", - "description": "Actions to take when a property needs to be cleared.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnClearProperty" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "property": { - "type": "string", - "title": "Property", - "description": "Property that will be cleared" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCondition": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On condition", - "description": "Actions to perform when specified condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnConversationUpdateActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On ConversationUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCustomEvent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On custom event", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnCustomEvent" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Custom event name", - "description": "Name of the custom event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnDialogEvent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On dialog event", - "description": "Actions to perform when a specific dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Dialog event name", - "description": "Name of dialog event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfActions": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On end of actions", - "description": "Actions to take when there are no more actions in the current dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfConversationActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On EndOfConversation activity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnError": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Error", - "description": "Action to perform when an 'Error' dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEventActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Event activity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnHandoffActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Handoff activity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnIntent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On intent recognition", - "description": "Actions to perform when specified intent is recognized.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intent": { - "type": "string", - "title": "Intent", - "description": "Name of intent." - }, - "entities": { - "type": "array", - "title": "Entities", - "description": "Required entities.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnInvokeActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Invoke activity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Message activity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageDeleteActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageDelete activity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageReactionActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageReaction activity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageUpdateActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnQnAMatch": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On QnAMaker Match", - "description": "Actions to perform on when an match from QnAMaker is found.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnRepromptDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On RepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnTypingActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Typing activity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnUnknownIntent": { - "title": "On unknown intent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "type": "object", - "$role": "implements(Microsoft.ITriggerCondition)", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "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": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "activeLearningCardTitle": { - "$role": "expression", - "type": "string", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "enum": [ - "Default", - "QuestionOnly", - "AutoSuggestQuestion" - ], - "default": "Default" - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "threshold": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "strictFilters": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "$role": "expression", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "rankerType": { - "$role": "expression", - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "default": "Default" - }, - "includeDialogNameInMetadata": { - "$role": "expression", - "title": "Include Dialog Name", - "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "metadata": { - "$role": "expression", - "title": "value to ", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "type": "string", - "title": "Value" - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "context": { - "$role": "expression", - "title": "QnARequestContext", - "oneOf": [ - { - "type": "object", - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "qnaId": { - "$role": "expression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API.", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "seed": { - "type": "integer" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Recognizer": { - "title": "Microsoft Recognizer", - "description": "Union of components which implement the Recognizer abstract class", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.RegExEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "name", - "pattern", - "$kind" - ] - } - ] - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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", - "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.EntityRecognizers", - "$ref": "#/definitions/Microsoft.EntityRecognizers" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "intents", - "$kind" - ] - } - ] - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ReplaceDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Replace dialog", - "description": "Replace current dialog with another dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "$role": "expression", - "type": "string", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "$ref": "#/definitions/Microsoft.IDialog" - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SetProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set one or more property values.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "properties": { - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assignments", - "$kind" - ] - } - ] - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection Name", - "description": "Connection name that was used with OAuthInput to log a user in." - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.StaticActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft Static Activity Template", - "description": "This allows you to define a static Activity object", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "title": "Activity", - "Description": "A static Activity to used" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.SwitchCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Switch condition", - "description": "Execute different actions based on the value of a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "type": "string", - "title": "Condition", - "description": "Property to evaluate.", - "examples": [ - "user.favColor" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "cases": { - "type": "array", - "title": "Cases", - "desc": "Actions for each possible condition.", - "items": { - "type": "object", - "required": [ - "value", - "case" - ], - "properties": { - "value": { - "type": [ - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Value.", - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "$kind" - ] - } - ] - }, - "Microsoft.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Temperature Entity Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Assert Condition", - "description": "Assert condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertCondition" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evalute", - "examples": [ - "user.age > 10" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of what the condition is testing" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReply": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply", - "description": "Asserts that a reply text is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReply" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Reply Text", - "description": "Expected reply text" - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply Activity", - "description": "Asserts that a reply activity is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assertions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyOneOf": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply OneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyOneOf" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "array", - "title": "Replies", - "description": "Expected replies (one of which must match", - "items": { - "type": "string" - } - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "replies", - "$kind" - ] - } - ] - }, - "Microsoft.Test.ITestAction": { - "title": "Microsoft Test ITestAction", - "description": "Union of components which implement the Test.ITestAction interface", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "type": "string", - "title": "Reference to Microsoft.Test.ITestAction", - "description": "Reference to Microsoft.Test.ITestAction .dialog file." - } - ] - }, - "Microsoft.Test.Script": { - "title": "Test Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.Script" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "title": "Dialog", - "description": "The root dialog to execute the test script against.", - "$ref": "#/definitions/Microsoft.IDialog" - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of the test script" - }, - "script": { - "type": "array", - "description": "Sequence of test actions to execute.", - "items": { - "$kind": "Microsoft.Test.ITestAction", - "$ref": "#/definitions/Microsoft.Test.ITestAction" - } - }, - "locale": { - "type": "string", - "title": "Locale", - "description": "Set the locale for the user utterances in the script.", - "default": "en-us" - }, - "enableTrace": { - "type": "boolean", - "title": "Enable Trace Activity", - "description": "Enable trace activities in the unit test (default is false)", - "default": false - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "dialog", - "testActions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Activity", - "description": "Sends activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "additionalProperties": true - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserConversationUpdate": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send ConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserConversationUpdate" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "membersAdded": { - "type": "array", - "title": "Members Added", - "description": "Names of the members to add", - "items": { - "type": "string" - } - }, - "membersRemoved": { - "type": "array", - "title": "Members Removed", - "description": "Names of the members to remove", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserDelay": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Delay Execution", - "description": "Delays text script for time period.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserDelay" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "timespan": { - "type": "number", - "title": "Timespan", - "description": "The amount of time in milliseconds to delay the execution of the test script" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "timespan", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserSays": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "User Text", - "description": "Sends text to the bot from the user.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserSays" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Text", - "description": "Text to send to the bot." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserTyping": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Typing", - "description": "Sends typing activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserTyping" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextInput": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the output.", - "examples": [ - "=toUpper(this.value)", - "${toUpper(this.value)}" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextTemplate": { - "$role": "implements(Microsoft.ITextTemplate)", - "title": "Microsoft TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to evaluate to create the text", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "name": { - "$role": "expression", - "type": "string", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$role": "expression", - "type": "string", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Property that holds the value to send as trace activity." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "Activity Id", - "dDescription": "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UrlEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Url Entity Recognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/build_runtime.ps1 b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/build_runtime.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -if ((dotnet --version) -lt '3.1.0') { - throw "! dotnet core 3.1 is required, please refer following documents for help. https://dotnet.microsoft.com/download/dotnet-core/3.1" - Break -} - -# This command need dotnet core more than 3.0 -dotnet user-secrets init - -# Merge all streams into stdout -$result = dotnet build *>&1 -# Evaluate success/failure -if($LASTEXITCODE -ne 0) -{ - # Failed, you can reconstruct stderr strings with: - $ErrorString = $result -join [System.Environment]::NewLine - throw $ErrorString -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/build_runtime.sh b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/build_runtime.sh +++ /dev/null @@ -1,11 +0,0 @@ -versionString=`dotnet --version` -function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } -if version_lt $versionString "3.1.0"; -then - echo "! dotnet core 3.1 is required, please refer following documents for help. -https://dotnet.microsoft.com/download/dotnet-core/3.1" - exit 1 -else - dotnet user-secrets init - dotnet build -fi diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/create.ps1 b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/create.ps1 +++ /dev/null @@ -1,211 +0,0 @@ -Param( - [string] $name, - [string] $location, - [string] $appId, - [string] $appPassword, - [string] $environment, - [string] $luisAuthoringKey, - [string] $projDir = $(Get-Location), - [string] $logFile = $(Join-Path $PSScriptRoot .. "create_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6){ - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -if (-not (Test-Path (Join-Path $projDir 'appsettings.deployment.json'))) -{ - Write-Host "! Could not find an 'appsettings.deployment.json' file in the current directory." -ForegroundColor DarkRed - Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" -} - -if (-not $environment) -{ - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $location) { - $location = Read-Host "? Azure resource group region" -} - -if (-not $appPassword) { - $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" -} - -if (-not $appId) { - # Create app registration - $app = (az ad app create ` - --display-name $name ` - --password `"$($appPassword)`" ` - --available-to-other-tenants ` - --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` - --output json) - - # Retrieve AppId - if ($app) { - $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId - } - - if(-not $appId) { - Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta - Break - } -} - -$shouldCreateAuthoringResource = $true - -# Use pre-exsisting luis authoring key -if ($luisAuthoringKey) { - $shouldCreateAuthoringResource = $false -} - -$resourceGroup = "$name-$environment" -$servicePlanName = "$name-$environment" - -# Get timestamp -$timestamp = Get-Date -f MMddyyyyHHmmss - -# Create resource group -Write-Host "> Creating resource group ..." -(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null - -# Deploy Azure services -Write-Host "> Validating Azure deployment ..." -$validation = az group deployment validate ` - --resource-group $resourcegroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - -if ($validation) { - $validation >> $logFile - $validation = $validation | ConvertFrom-Json - - if (-not $validation.error) { - Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow - $deployment = az group deployment create ` - --name $timestamp ` - --resource-group $resourceGroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - } - else { - Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - if ($validation.error.details -and $validation.error.details[0].code -eq "CanNotCreateMultipleFreeAccounts") - { - Write-Host "! The subscription is exceeding the maximum number of allowed LuisAuthoringAccounts. You already have a luis authoring resource created, please get your luis authoring key and retry with the following command:" -ForegroundColor DarkRed - Write-Host "pwsh ./Scripts/create.ps1 -name $name -environment $environment -location $location -appPassword $appPassword -luisAuthoringKey [YourLuisAuthoringKey]" -ForegroundColor Green - } - - Break - } -} - - -# Get deployment outputs -$outputs = (az group deployment show ` - --name $timestamp ` - --resource-group $resourceGroup ` - --output json) 2>> $logFile - -# If it succeeded then we perform the remainder of the steps -if ($outputs) -{ - # Log and convert to JSON - $outputs >> $logFile - $outputs = $outputs | ConvertFrom-Json - if ($outputs.properties.error) { - Write-Host "! Deployment failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($outputs.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - Break - } - - $outputs = $outputs.properties.outputs - $outputMap = @{} - $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } - - # Update appsettings.deployment.json - Write-Host "> Updating appsettings.deployment.json ..." - if (Test-Path $(Join-Path $projDir appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $projDir appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppId' -Value $appId - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppPassword' -Value $appPassword - - $settings | Add-Member -Type NoteProperty -Force -Name 'bot' -Value "ComposerDialogs" - - foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.deployment.json) - - Write-Host "> Done." - Write-Host "- App Id: $appId" - Write-Host "- App Password: $appPassword" - Write-Host "- Resource Group: $resourceGroup" - Write-Host "- ServicePlan: $servicePlanName" - Write-Host "- Bot Name: $name" - Write-Host "- Web App Name : $name" -} -else -{ - # Check for failed deployments - $operations = az group deployment operation list -g $resourceGroup -n $timestamp --output json 2>> $logFile | Out-Null - - if ($operations) { - $operations = $operations | ConvertFrom-Json - $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } - if ($failedOperations) { - foreach ($operation in $failedOperations) { - switch ($operation.properties.statusmessage.error.code) { - "MissingRegistrationForLocation" { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed - Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta - } - default { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." - Write-Host "! Code: $($operation.properties.statusMessage.error.code)." - Write-Host "! Message: $($operation.properties.statusMessage.error.message)." - } - } - } - } - } - else { - Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } - - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - Break -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/deploy.ps1 deleted file mode 100644 index 9d649810b0..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Scripts/deploy.ps1 +++ /dev/null @@ -1,253 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path BotProject.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Init user secret id -dotnet user-secrets init - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -$localBotPath = $(Join-Path $projFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - -if ($botPath) { - Write-Host "Publishing dialogs from external bot project: $($botPath)" - Copy-Item -Path $botPath -Recurse -Destination $remoteBotPath -Container -Force -} -else { - Copy-Item -Path $localBotPath -Recurse -Destination $publishFolder -Container -Force -} - -# Try to get luis config from appsettings -$settings = Get-Content $(Join-Path $projFolder appsettings.deployment.json) | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisEndpointKey) { - $luisEndpointKey = $luisSettings.endpointKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - - Set-Location -Path $remoteBotPath - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - $noneEmptyModels = [System.Collections.ArrayList]@() - - foreach ($model in $models) { - $stringContent = Get-Content $model | Out-String - if ($stringContent.Length -gt 0) { - $noneEmptyModels.Add($model) - } - } - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $noneEmptyModels - } - - $luString = $noneEmptyModels | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # Execute bf luis:build command - if (Get-Command bf -errorAction SilentlyContinue) { - $customizedSettings = Get-Content $(Join-Path $remoteBotPath settings appsettings.json) | ConvertFrom-Json - $customizedEnv = $customizedSettings.luis.environment - - # create generated folder if not exists - if (!(Test-Path generated)) { - New-Item -ItemType Directory -Force -Path generated - } - - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog --out .\generated --suffix $customizedEnv -f --region $luisAuthoringRegion - } - else { - Write-Host "bf luis:build does not exist, use the following command to install:" - Write-Host "1. npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/" - Write-Host "2. npm install -g @microsoft/botframework-cli" - Write-Host "3. npm config set registry http://registry.npmjs.org" - Break - } - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - # change setting file in publish folder - if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - $luisConfig["endpointKey"] = $luisEndpointKey - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/SkillConversationIdFactory.cs deleted file mode 100644 index 0e2f78ada8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/SkillConversationIdFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Newtonsoft.Json; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - /// - /// A that uses an in memory - /// to store and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly ConcurrentDictionary _conversationRefs = new ConcurrentDictionary(); - - public override Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - var skillConversationReference = new SkillConversationReference - { - ConversationReference = options.Activity.GetConversationReference(), - OAuthScope = options.FromBotOAuthScope - }; - var key = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{skillConversationReference.ConversationReference.Conversation.Id}-{skillConversationReference.ConversationReference.ChannelId}-skillconvo"; - _conversationRefs.GetOrAdd(key, JsonConvert.SerializeObject(skillConversationReference)); - return Task.FromResult(key); - } - - public override Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - var conversationReference = JsonConvert.DeserializeObject(_conversationRefs[skillConversationId]); - return Task.FromResult(conversationReference); - } - - public override Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - _conversationRefs.TryRemove(skillConversationId, out _); - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Startup.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Startup.cs deleted file mode 100644 index 2d920c023b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Startup.cs +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - IStorage storage = null; - - // Configure storage for deployment - if (!string.IsNullOrEmpty(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - Console.WriteLine("The settings of CosmosDbStorage is incomplete, please check following settings: settings.CosmosDb"); - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - - var botDir = Configuration.GetSection("bot").Get(); - - // manage all bot resources - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - services.AddSingleton(userState); - services.AddSingleton(conversationState); - services.AddSingleton(resourceExplorer); - - services.AddSingleton((s) => - { - HostContext.Current.Set(Configuration); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - adapter - .UseStorage(storage) - .UseState(userState, conversationState); - - if (!string.IsNullOrEmpty(settings.BlobStorage.ConnectionString) && !string.IsNullOrEmpty(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - else - { - Console.WriteLine("The settings of TranscriptLoggerMiddleware is incomplete, please check following settings: settings.BlobStorage.ConnectionString, settings.BlobStorage.Container"); - } - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - }); - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseWebSockets(); - - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ActionsTests.cs deleted file mode 100644 index 513ff1190c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ActionsTests.cs +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - [Ignore] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); ; - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ControllingConversationTests.cs deleted file mode 100644 index f76dc985c9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ControllingConversationTests.cs +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/InputsTests.cs deleted file mode 100644 index 8a7064016d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/InputsTests.cs +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License.// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/MessageTests.cs deleted file mode 100644 index fec22e7348..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/MessageTests.cs +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Builder.LanguageGeneration; -using Microsoft.Bot.Builder.ComposerBot.Json; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/Tests.csproj b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/Tests.csproj deleted file mode 100644 index 28a2c36621..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/Tests.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ToDoBotTests.cs deleted file mode 100644 index df21505518..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/Tests/ToDoBotTests.cs +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.Deployment.json deleted file mode 100644 index 1797133380..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.Deployment.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.Development.json deleted file mode 100644 index 0db3279e44..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.Development.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.json b/Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.json deleted file mode 100644 index cc17071455..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/appsettings.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "microsoftAppId": "", - "bot": "ComposerDialogs", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/packages/packages.json b/Composer/plugins/localPublish/hostedBots/23804.454040430723/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/23804.454040430723/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/23804.454040430723/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/23804.454040430723/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/.gitignore b/Composer/plugins/localPublish/hostedBots/46828.36760693736/.gitignore deleted file mode 100644 index b658b87ba9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# prevent appsettings.json get checked in -**/appsettings.json \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/README.md b/Composer/plugins/localPublish/hostedBots/46828.36760693736/README.md deleted file mode 100644 index ba48ee2802..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/README.md +++ /dev/null @@ -1,73 +0,0 @@ -This folder contains a Bot Project created with Bot Framework Composer. - -The full documentation for Composer lives here: -https://github.com/microsoft/botframework-composer - -To test this bot locally, open this folder in Composer, then click "Start Bot" - -## Provision Azure Resources to Host Bot - -This project includes a script that can be used to provision the resources necessary to run your bot in the Azure cloud. Running this script will create all of the necessary resources and return a publishing profile in the form of a JSON object. This JSON object can be imported into Composer's "Publish" tab and used to deploy the bot. - -* From this project folder, navigate to the scripts/ folder -* Run `npm install` -* Run `node provisionComposer.js --subscriptionId= --name= --appPassword= --environment=` -* You will be asked to login to the Azure portal in your browser. -* You will see progress indicators as the provision process runs. Note that it will take roughly 10 minutes to fully provision the resources. - -It will look like this: -``` -{ - "accessToken": "", - "name": "", - "environment": "", - "settings": { - "applicationInsights": { - "InstrumentationKey": "" - }, - "cosmosDb": { - "cosmosDBEndpoint": "", - "authKey": "", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - }, - "luis": { - "endpointKey": "", - "authoringKey": "", - "region": "westus" - }, - "MicrosoftAppId": "", - "MicrosoftAppPassword": "" - } -}``` - -When completed, you will see a message with a JSON "publishing profile" and instructions for using it in Composer. - - -## Publish bot to Azure - -To publish your bot to a Azure resources provisioned using the process above: - -* Open your bot in Composer -* Navigate to the "Publish" tab -* Select "Add new profile" from the toolbar -* In the resulting dialog box, choose "azurePublish" from the "Publish Destination Type" dropdown -* Paste in the profile you received from the provisioning script - -When you are ready to publish your bot to Azure, select the newly created profile from the sidebar and click "Publish to selected profile" in the toolbar. - -## Refresh your Azure Token - -When publishing, you may encounter an error about your access token being expired. This happens when the access token used to provision your bot expires. - -To get a new token: - -* Open a terminal window -* Run `az account get-access-token` -* This will result in a JSON object printed to the console, containing a new `accessToken` field. -* Copy the value of the accessToken from the terminal and into the publish `accessToken` field in the profile in Composer. diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/echobot-2.botproj b/Composer/plugins/localPublish/hostedBots/46828.36760693736/echobot-2.botproj deleted file mode 100644 index 8626260eb8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/echobot-2.botproj +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/main/Composer/packages/server/schemas/botproject.schema", - "name": "echobot-2", - "workspace": "file:///C:/Users/hond/EchoBot-2", - "skills": {} -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/echobot-2.dialog b/Composer/plugins/localPublish/hostedBots/46828.36760693736/echobot-2.dialog deleted file mode 100644 index 5f7d2f10c0..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/echobot-2.dialog +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "id": "433224", - "description": "", - "name": "EchoBot-2" - }, - "autoEndDialog": true, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnUnknownIntent", - "$designer": { - "id": "821845" - }, - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "003038" - }, - "activity": "${SendActivity_003038()}" - } - ] - }, - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.Foreach", - "$designer": { - "id": "518944", - "name": "Loop: for each item" - }, - "itemsProperty": "turn.Activity.membersAdded", - "actions": [ - { - "$kind": "Microsoft.IfCondition", - "$designer": { - "id": "641773", - "name": "Branch: if/else" - }, - "condition": "string(dialog.foreach.value.id) != string(turn.Activity.Recipient.id)", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "859266", - "name": "Send a response" - }, - "activity": "${SendActivity_Welcome()}" - } - ] - } - ] - } - ] - } - ], - "generator": "echobot-2.lg", - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema", - "id": "EchoBot-2", - "recognizer": "echobot-2.lu.qna" -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/generated/echobot-2.lu.qna.dialog b/Composer/plugins/localPublish/hostedBots/46828.36760693736/generated/echobot-2.lu.qna.dialog deleted file mode 100644 index 967f1534c9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/generated/echobot-2.lu.qna.dialog +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$kind": "Microsoft.CrossTrainedRecognizerSet", - "recognizers": [] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/knowledge-base/en-us/echobot-2.en-us.qna b/Composer/plugins/localPublish/hostedBots/46828.36760693736/knowledge-base/en-us/echobot-2.en-us.qna deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/46828.36760693736/language-generation/en-us/common.en-us.lg deleted file mode 100644 index e6d48bfb3b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,2 +0,0 @@ -# WelcomeUser -- Welcome to the EchoBot sample diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/language-generation/en-us/echobot-2.en-us.lg b/Composer/plugins/localPublish/hostedBots/46828.36760693736/language-generation/en-us/echobot-2.en-us.lg deleted file mode 100644 index 25c38553a9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/language-generation/en-us/echobot-2.en-us.lg +++ /dev/null @@ -1,7 +0,0 @@ -[import](common.lg) - -# SendActivity_Welcome -- ${WelcomeUser()} - -# SendActivity_003038 -- You said '${turn.activity.text}' diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/language-understanding/en-us/echobot-2.en-us.lu b/Composer/plugins/localPublish/hostedBots/46828.36760693736/language-understanding/en-us/echobot-2.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/.gitignore b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/.gitignore deleted file mode 100644 index 2ad42ca00c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/.gitignore +++ /dev/null @@ -1,360 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*[.json, .xml, .info] - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/ComposerRuntime.sln b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/ComposerRuntime.sln deleted file mode 100644 index c0ee8d1a38..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/ComposerRuntime.sln +++ /dev/null @@ -1,49 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29920.165 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.WebApp", "azurewebapp\Microsoft.BotFramework.Composer.WebApp.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Tests", "tests\Microsoft.BotFramework.Composer.Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Core", "core\Microsoft.BotFramework.Composer.Core.csproj", "{35E20444-438D-4241-833C-804A24E9CB4F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Functions", "azurefunctions\Microsoft.BotFramework.Composer.Functions.csproj", "{9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.CustomAction", "customaction\Microsoft.BotFramework.Composer.CustomAction.csproj", "{EE58DDD7-DE91-4DB0-A6C6-D8182523896B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.Build.0 = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.Build.0 = Release|Any CPU - {EE58DDD7-DE91-4DB0-A6C6-D8182523896B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EE58DDD7-DE91-4DB0-A6C6-D8182523896B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EE58DDD7-DE91-4DB0-A6C6-D8182523896B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EE58DDD7-DE91-4DB0-A6C6-D8182523896B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/NuGet.Config b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/README.md b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/README.md deleted file mode 100644 index f41b1a16da..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# DotNet bot runtime - -# Folder structure - -- **core**: Includes all core JavaScript runtime logic, independent of hosting technology. -- **technology specific folders**: Each hosting technology has one folder in this directory. For example, for Azure Functions, there is an `azurefunction` folder - - **tests**: Javascript runtime tests diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/.gitignore b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/.gitignore deleted file mode 100644 index ff5b00c506..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/.gitignore +++ /dev/null @@ -1,264 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# Azure Functions localsettings file -local.settings.json - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -project.fragment.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -#*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/MessagesTrigger.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/MessagesTrigger.cs deleted file mode 100644 index abb88495f5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/MessagesTrigger.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Extensions.Logging; -using System; -using System.Net; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class MessagesTrigger - { - private readonly IBotFrameworkHttpAdapter _adapter; - private readonly IBot _bot; - - public MessagesTrigger(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter ?? throw new ArgumentNullException(nameof(adapter)); - this._bot = bot ?? throw new ArgumentNullException(nameof(bot)); - } - - [FunctionName("messages")] - public async Task Run( - [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, - ILogger log) - { - log.LogInformation($"Messages endpoint triggered."); - - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await _adapter.ProcessAsync(req, req.HttpContext.Response, _bot); - - if (req.HttpContext.Response.StatusCode == (int) HttpStatusCode.OK || req.HttpContext.Response.StatusCode == (int)HttpStatusCode.Accepted) - { - return new OkResult(); - } - else - { - return new ContentResult() - { - StatusCode = req.HttpContext.Response.StatusCode, - Content = $"Bot execution failed with status code: {req.HttpContext.Response.StatusCode}" - }; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj deleted file mode 100644 index 88a550947e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj deleted file mode 100644 index 23b45287f8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj +++ /dev/null @@ -1,56 +0,0 @@ - - - - netcoreapp3.1 - v3 - 2eb1c70c-5cd2-4c08-8aab-df989c347067 - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - Always - - - Always - - - Always - - - Always - - - diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs deleted file mode 100644 index 645665ecaa..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Rest.Serialization; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace Microsoft.BotFramework.Composer.Functions.Settings -{ - internal class ActivitySerializationSettings - { - internal static readonly JsonSerializerSettings Default = new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Ignore, - Formatting = Formatting.Indented, - DateFormatHandling = DateFormatHandling.IsoDateFormat, - DateTimeZoneHandling = DateTimeZoneHandling.Utc, - ReferenceLoopHandling = ReferenceLoopHandling.Serialize, - ContractResolver = new ReadOnlyJsonContractResolver(), - Converters = new List { new Iso8601TimeSpanConverter() } - }; - - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/SkillsTrigger.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/SkillsTrigger.cs deleted file mode 100644 index 30528b4cf3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/SkillsTrigger.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder; -using System.Web.Http; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Microsoft.BotFramework.Composer.Functions.Settings; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class SkillsTrigger - { - private readonly SkillHandler _skillHandler; - - public SkillsTrigger(SkillHandler skillHandler) - { - this._skillHandler = skillHandler ?? throw new ArgumentNullException(nameof(skillHandler)); - } - - [FunctionName("skills")] - public async Task ReplyToActivityAsync( - [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities/{activityId}")] HttpRequest req, - string conversationId, string activityId, ILogger log) - { - log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - var body = await req.ReadAsStringAsync(); - var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - var result = await _skillHandler.HandleReplyToActivityAsync(req.Headers["Authorization"], conversationId, activityId, activity); - - return new JsonResult(result, ActivitySerializationSettings.Default); - } - - - //[FunctionName("skills")] - //public async Task SendToConversationAsync( - // [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities")] HttpRequest req, - // string conversationId, string activityId, ILogger log) - //{ - // log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - // var body = await req.ReadAsStringAsync(); - // var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - // var result = await _skillHandler.HandleSendToConversationAsync(req.Headers["Authorization"], conversationId, activity); - - // return new JsonResult(result, ActivitySerializationSettings.Default); - //} - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Startup.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Startup.cs deleted file mode 100644 index 7b9d6c9264..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/Startup.cs +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Http; -using Microsoft.Azure.Functions.Extensions.DependencyInjection; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; - -//using Microsoft.BotFramework.Composer.CustomAction; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Reflection; -using System.Text; - -[assembly: FunctionsStartup(typeof(Microsoft.BotFramework.Composer.Functions.Startup))] - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class Startup : FunctionsStartup - { - private IConfigurationRoot BuildConfiguration(string rootDirectory) - { - var config = new ConfigurationBuilder(); - - // Config precedence 1: root app.settings - config.SetBasePath(rootDirectory); - - // Config precedence 2: ComposerDialogs/settings settings which are injected by the composer publish - // Hard code the settings path to 'ComposerDialogs' for deployment - - var configFile = Path.GetFullPath(Path.Combine(rootDirectory, @"ComposerDialogs/settings/appsettings.json")); - config.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - config.UseComposerSettings(); - - if (!Debugger.IsAttached) - { - config.AddUserSecrets(); - } - - config.AddEnvironmentVariables(); - - return config.Build(); - } - - public override void Configure(IFunctionsHostBuilder builder) - { - var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - var rootDirectory = Directory.GetParent(binDirectory).FullName; - - var rootConfiguration = BuildConfiguration(rootDirectory); - - var settings = new BotSettings(); - rootConfiguration.Bind(settings); - - var services = builder.Services; - - services.AddSingleton(rootConfiguration); - - services.AddLogging(); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Adaptive component registration - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // This is for custom action component registration. - //ComponentRegistration.Add(new CustomActionComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings?.ApplicationInsights?.InstrumentationKey ?? string.Empty); - - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings?.Telemetry?.LogPersonalInformation ?? false); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings?.Telemetry?.LogActivities ?? false); - }); - - // Storage - IStorage storage; - if (ConfigSectionValid(settings?.CosmosDb?.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings?.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Resource explorer to track declarative assets - var resourceExplorer = new ResourceExplorer().AddFolder(Path.Combine(rootDirectory, settings?.Bot ?? ".")); - services.AddSingleton(resourceExplorer); - - // Adapter - services.AddSingleton(s => - { - // Retrieve required dependencies - //IConfiguration configuration = s.GetService(); - IStorage storage = s.GetService(); - UserState userState = s.GetService(); - ConversationState conversationState = s.GetService(); - TelemetryInitializerMiddleware telemetryInitializerMiddleware = s.GetService(); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(rootConfiguration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(rootConfiguration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, s); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - - return adapter; - }); - - var defaultLocale = rootConfiguration.GetValue("defaultLanguage") ?? "en-us"; - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - // Bot - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - GetRootDialog(Path.Combine(rootDirectory, settings.Bot)), - defaultLocale, - removeRecipientMention)); - } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings?.BlobStorage?.ConnectionString) && ConfigSectionValid(settings?.BlobStorage?.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings?.BlobStorage?.ConnectionString, settings?.BlobStorage?.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings?.Feature?.UseShowTypingMiddleware == true) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IServiceProvider s) - { - if (settings?.Feature?.UseInspectionMiddleware == true) - { - adapter.Use(s.GetService()); - } - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - - private bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/host.json b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/host.json deleted file mode 100644 index 903482d949..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurefunctions/host.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "2.0" -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/.gitignore b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Authorization/AllowedCallersClaimsValidator.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Authorization/AllowedCallersClaimsValidator.cs deleted file mode 100644 index 71b7a191f6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Authorization/AllowedCallersClaimsValidator.cs +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Security.Claims; -using System.Threading.Tasks; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core.Settings; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Authorization -{ - public class AllowedCallersClaimsValidator : ClaimsValidator - { - private readonly List _allowedCallers; - - public AllowedCallersClaimsValidator(BotSkillConfiguration settings) - { - // skillConfiguration.allowedCallers is the setting in the appsettings.json file - // that consists of the list of parent bot IDs that are allowed to access the skill. - // To add a new parent bot, simply edit the AllowedCallers and add - // the parent bot's Microsoft app ID to the list. - // In this sample, we allow all callers if AllowedCallers contains an "*". - if (settings?.AllowedCallers == null || settings.AllowedCallers.Length == 0) - { - throw new ArgumentException($"skill.allowedCallers has to be defined, e.g. ['*'] or ['callerAppId']"); - } - - _allowedCallers = new List(settings.AllowedCallers); - } - - public override Task ValidateClaimsAsync(IList claims) - { - // If _allowedCallers contains an "*", we allow all callers. - if (SkillValidation.IsSkillClaim(claims) && - !_allowedCallers.Contains("*")) - { - // Check that the appId claim in the skill request is in the list of callers configured for this bot. - var appId = JwtTokenValidation.GetAppIdFromClaims(claims); - if (!_allowedCallers.Contains(appId)) - { - throw new UnauthorizedAccessException( - $"Received a request from a bot with an app ID of \"{appId}\". To enable requests from this caller, add the app ID to your configuration file."); - } - } - - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Controllers/BotController.cs deleted file mode 100644 index daaba0d810..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Controllers/SkillController.cs deleted file mode 100644 index a8853db745..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Controllers/SkillController.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj deleted file mode 100644 index 75bfac3d20..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj +++ /dev/null @@ -1,42 +0,0 @@ - - - - netcoreapp3.1 - OutOfProcess - b381040b-e2c4-4842-b164-074614d0c724 - - - - Always - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Program.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Program.cs deleted file mode 100644 index f601df0e60..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Program.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.IO; -using Microsoft.AspNetCore.Hosting; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - // Use Composer bot path adapter - builder.UseBotPathConverter(env.IsDevelopment()); - - var configuration = builder.Build(); - - // Hard code the settings path to 'ComposerDialogs' while deployment - var botRoot = configuration.GetValue("bot") ?? "ComposerDialogs"; - var configFile = Path.GetFullPath(Path.Combine(botRoot, @"settings/appsettings.json")); - - builder.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - // Use Composer luis and qna settings extensions - builder.UseComposerSettings(); - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/README.md b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/README.md deleted file mode 100644 index 0139518b13..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/README.md +++ /dev/null @@ -1,19 +0,0 @@ -## Bot Project - -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -### CI/CD Deployment - -You can deploy your bot to an Azure Web App with the following script from an Azure pipeline or GitHub workflow using an [Azure CLI task](https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-cli). - -```bash -./scripts/deploy.ps1 -name my-bot -environment prod -luisAuthoringKey XXXXXXXXX -luisAuthoringRegion westeurope -``` - -The Azure CLI task needs contribution permission to the corresponding resource group. Follow this [article](https://docs.microsoft.com/en-us/azure/devops/pipelines/library/connect-to-azure) to setup a service connection between Azure DevOps and your Azure Subscription. - -Initially you can provision the resources with the provisionComposer.js script, which you can find in the boot root folder under scripts. - -The environment, bot name and authoring region must match the arguments, that you used for for the provisioning with the provisionComposer.js script. - -For security reasons we don't deploy any settings or secrets from the bot project. Please ensure that required settings for your bit are configured in the [Azure Web App configuration](https://docs.microsoft.com/en-us/azure/app-service/configure-common), for example "MicrosoftAppPassword", "luis\_\_endpointKey", "cosmosDB\_\_authKey", ... diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/readme.md b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/readme.md deleted file mode 100644 index 3c4d35b3b8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/readme.md +++ /dev/null @@ -1,124 +0,0 @@ -# How to update the schema file - -Once the bot has been setup with Composer and we wish to make changes to the schema, the first step in this process is to eject the runtime through the `Runtime Config` in Composer. The ejected runtime folder will broadly have the following structure - -``` -bot - /bot.dialog - /language-generation - /language-understanding - /dialogs - /customized-dialogs - /runtime - /azurewebapp - /azurefunctions - /schemas - sdk.schema -``` - -##### Prequisites - -Botframework CLI > 4.10 - -``` -npm i -g @microsoft/botframework-cli -``` - -> NOTE: Previous versions of botframework-cli required you to install @microsoft/bf-plugin. You will need to uninstall for 4.10 and above. -> -> ``` -> bf plugins:uninstall @microsoft/bf-dialog -> ``` - -## Adding Custom Actions to your Composer bot - -**NOTE: These steps assume you are using azurewebapp as your deployment solution. Replicating it on azurefunctions would be similar -** - -- In this tutorial, we will be going over the steps to include a custom action `MultiplyDialog` that multiplies two numbers passed as inputs. Note that the ejected runtime should contain a `customaction` folder that has this sample. - -- Navigate to the csproj file inside the `runtime` folder (bot/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj) and include a project reference to the customaction project like ``. - -- Then Uncomment line 28 and 139 in azurewebapp/Startup.cs file so as to register this action. - -``` - -using Microsoft.BotFramework.Composer.CustomAction; -// This is for custom action component registration. -ComponentRegistration.Add(new CustomActionComponentRegistration()); - -``` - -- Run the command `dotnet build` on the azurewebapp project to verify if it passes build after adding custom actions to it. - -- Navigate to to the `schemas (bot/schemas)` folder. This folder contains a Powershell script and a bash script. Run either of these scripts `./update-schema.ps1 -runtime azurewebapp` or `sh ./update-schema.sh -runtime azurewebapp`. The runtime `azurewebapp` is chosen by default if no argument is passed. - -- Validate that the partial schema (MultiplyDialog.schema inside customaction/Schema) has been appended to the default sdk.schema file to generate one single consolidated sdk.schema file. - -The above steps should have generated a new sdk.schema file inside `schemas` folder for Composer to use. Reload the bot and you should be able to include your new custom action! - -## Customizing Composer using the UI Schema - -Composer's UI can be customized using the UI Schema. You can either customize one of your custom actions or override Composer defaults. - -There are 2 ways to do this. - -1. **Component UI Schema File** - -To customize a specific component, simply create a `.uischema` file inside of the `/schemas` directory with the same name as the component, These files will be merged into a single `.uischema` file when running the `update-schema` script. - -Example: - -```json -// Microsoft.SendActivity.uischema -{ - "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", - "form": { - "label": "A custom label" - } -} -``` - -2. **UI Schema Override File** - -This approach allows you to co-locate all of your UI customizations into a single file. This will not be merged into the `sdk.uischema`, instead it will be loaded by Composer and applied as overrides. - -Example: - -```json -{ - "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", - "Microsoft.SendActivity": { - "form": { - "label": "A custom label" - } - } -} -``` - -#### UI Customization Options - -##### Form - -| **Property** | **Description** | **Type** | **Default** | -| ------------ | -------------------------------------------------------------------------------------- | ------------------- | -------------------- | -| description | Text used in tooltips. | `string` | `schema.description` | -| helpLink | URI to component or property documentation. Used in tooltips. | `string` | | -| hidden | An array of property names to hide in the UI. | `string[]` | | -| label | Label override. Can either be a string or false to hide the label. | `string` \| `false` | `schema.title` | -| order | Set the order of fields. Use "\_" for all other fields. ex. ["foo", "_", "bar"] | `string[]` | `[*]` | -| placeholder | Placeholder override. | `string` | `schema.examples` | -| properties | A map of component property names to UI options with customizations for each property. | `object` | | -| subtitle | Subtitle rendered in form title. | `string` | `schema.$kind` | -| widget | Override default field widget. See list of widgets below. | `enum` | | - -###### Widgets - -- checkbox -- date -- datetime -- input -- number -- radio -- select -- textarea diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/sdk.schema deleted file mode 100644 index 77500788d1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/sdk.schema +++ /dev/null @@ -1,9489 +0,0 @@ -{ - "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", - "type": "object", - "title": "Component kinds", - "description": "These are all of the kinds that can be created by the loader.", - "oneOf": [ - { - "$ref": "#/definitions/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.ChoiceInput" - }, - { - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$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.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.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - } - ], - "definitions": { - "Microsoft.ActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft ActivityTemplate", - "type": "object", - "required": [ - "template", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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.IEntityRecognizer)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.IEntityRecognizer)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.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.10.5" - }, - "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.10.5" - }, - "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.IEntityRecognizer)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.IEntityRecognizer)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.IEntityRecognizer)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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": "Enum", - "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.IEntityRecognizer)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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": "ActivityId", - "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 Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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.IEntityRecognizer)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.IEntityRecognizer)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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.10.5" - } - }, - "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.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" - }, - { - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginSkill" - }, - { - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "$ref": "#/definitions/Microsoft.CancelDialog" - }, - { - "$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.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - } - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.10.5" - } - }, - "Microsoft.IEntityRecognizer": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Components which derive from EntityRecognizer.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - } - }, - "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" - } - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.10.5" - } - }, - "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.10.5" - } - }, - "Microsoft.ITrigger": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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." - }, - "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": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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.IEntityRecognizer)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.IEntityRecognizer)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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.IEntityRecognizer)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.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.10.5" - }, - "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.IEntityRecognizer)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.IEntityRecognizer)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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" - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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.10.5" - }, - "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": "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" - ] - }, - "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": "IsTest", - "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" - } - ] - }, - "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": "QnARequestContext", - "description": "Context to use for ranking." - }, - "qnaId": { - "$ref": "#/definitions/integerExpression", - "title": "QnAId", - "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.10.5" - }, - "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.10.5" - }, - "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.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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.IEntityRecognizer)", - "title": "Temperature Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.10.5" - }, - "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.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.10.5" - }, - "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.10.5" - }, - "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": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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.IEntityRecognizer)", - "title": "Confirmation Url Recognizer", - "description": "Recognizer which recognizes urls.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.5" - }, - "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": [ - "=..." - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/sdk.uischema b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/sdk.uischema deleted file mode 100644 index 142495f58f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/sdk.uischema +++ /dev/null @@ -1,568 +0,0 @@ -{ - "$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", - "*" - ], - "subtitle": "Begin Dialog" - } - }, - "Microsoft.BeginSkill": { - "form": { - "helpLink": "https://aka.ms/bf-composer-docs-connect-skill", - "label": "Connect to a skill", - "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", - "subtitle": "Delete Properties" - } - }, - "Microsoft.DeleteProperty": { - "form": { - "helpLink": "https://aka.ms/bfc-using-memory", - "label": "Delete a property", - "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", - "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", - "*" - ], - "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", - "*" - ], - "subtitle": "For Each Page" - } - }, - "Microsoft.HttpRequest": { - "form": { - "helpLink": "https://aka.ms/bfc-using-http", - "label": "Send an HTTP request", - "order": [ - "method", - "url", - "body", - "headers", - "*" - ], - "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/bfc-debugging-bots", - "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", - "subtitle": "Set Properties" - } - }, - "Microsoft.SetProperty": { - "form": { - "helpLink": "https://aka.ms/bfc-using-memory", - "label": "Set a property", - "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" - ] - } - }, - "subtitle": "Switch Condition" - } - }, - "Microsoft.TraceActivity": { - "form": { - "helpLink": "https://aka.ms/bfc-debugging-bots", - "label": "Emit a trace event", - "subtitle": "Trace Activity" - } - }, - "Microsoft.AttachmentInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a file or an attachment", - "subtitle": "Attachment Input" - } - }, - "Microsoft.ChoiceInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt with multi-choice", - "subtitle": "Choice Input" - } - }, - "Microsoft.ConfirmInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for confirmation", - "subtitle": "Confirm Input" - } - }, - "Microsoft.DateTimeInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a date or a time", - "subtitle": "Date Time Input" - } - }, - "Microsoft.NumberInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a number", - "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", - "subtitle": "Text Input" - } - }, - "Microsoft.RegexRecognizer": { - "form": { - "hidden": [ - "entities" - ] - } - }, - "Microsoft.OnActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Activities", - "order": [ - "condition", - "*" - ], - "subtitle": "Activity received" - } - }, - "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.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.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.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" - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/update-schema.ps1 b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/update-schema.ps1 deleted file mode 100644 index f25721e80a..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/update-schema.ps1 +++ /dev/null @@ -1,30 +0,0 @@ -param ( - [string]$runtime = "azurewebapp" -) -$SCHEMA_FILE="sdk.schema" -$UISCHEMA_FILE="sdk.uischema" -$BACKUP_SCHEMA_FILE="sdk-backup.schema" -$BACKUP_UISCHEMA_FILE="sdk-backup.uischema" - -Write-Host "Running schema merge on $runtime runtime." - -if (Test-Path $SCHEMA_FILE -PathType leaf) { Move-Item -Force -Path $SCHEMA_FILE -Destination $BACKUP_SCHEMA_FILE } -if (Test-Path $UISCHEMA_FILE -PathType leaf) { Move-Item -Force -Path $UISCHEMA_FILE -Destination $BACKUP_UISCHEMA_FILE } - -bf dialog:merge "*.schema" "!sdk-backup.schema" "*.uischema" "!sdk-backup.uischema" "!sdk.override.uischema" "../runtime/$runtime/*.csproj" -o $SCHEMA_FILE - -if (Test-Path $SCHEMA_FILE -PathType leaf) -{ - if (Test-Path $BACKUP_SCHEMA_FILE -PathType leaf) { Remove-Item -Force -Path $BACKUP_SCHEMA_FILE } - if (Test-Path $BACKUP_UISCHEMA_FILE -PathType leaf) { Remove-Item -Force -Path $BACKUP_UISCHEMA_FILE } - - Write-Host "Schema merged succesfully." - if (Test-Path $SCHEMA_FILE -PathType leaf) { Write-Host " Schema: $SCHEMA_FILE" } - if (Test-Path $UISCHEMA_FILE -PathType leaf) { Write-Host " UI Schema: $UISCHEMA_FILE" } -} -else -{ - Write-Host "Schema merge failed. Restoring previous versions." - if (Test-Path $BACKUP_SCHEMA_FILE -PathType leaf) { Move-Item -Force -Path $BACKUP_SCHEMA_FILE -Destination $SCHEMA_FILE } - if (Test-Path $BACKUP_UISCHEMA_FILE -PathType leaf) { Move-Item -Force -Path $BACKUP_UISCHEMA_FILE -Destination $UISCHEMA_FILE } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/update-schema.sh b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/update-schema.sh deleted file mode 100644 index 9d0f900012..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Schemas/update-schema.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -runtime=${runtime:-azurewebapp} -SCHEMA_FILE=sdk.schema -UISCHEMA_FILE=sdk.uischema -BACKUP_SCHEMA_FILE=sdk-backup.schema -BACKUP_UISCHEMA_FILE=sdk-backup.uischema - -while [ $# -gt 0 ]; do - if [[ $1 == *"-"* ]]; then - param="${1/-/}" - declare $param="$2" - fi - shift -done - -echo "Running schema merge on $runtime runtime." -[ -f "$SCHEMA_FILE" ] && mv "./$SCHEMA_FILE" "./$BACKUP_SCHEMA_FILE" -[ -f "$UISCHEMA_FILE" ] && mv "./$UISCHEMA_FILE" "./$BACKUP_UISCHEMA_FILE" - -bf dialog:merge "*.schema" "!sdk-backup.schema" "*.uischema" "!sdk-backup.uischema" "!sdk.override.uischema" "../runtime/$runtime/*.csproj" -o $SCHEMA_FILE - -if [ -f "$SCHEMA_FILE" ]; then - rm -rf "./$BACKUP_SCHEMA_FILE" - rm -rf "./$BACKUP_UISCHEMA_FILE" - echo "Schema merged succesfully." - [ -f "$SCHEMA_FILE" ] && echo " Schema: $SCHEMA_FILE" - [ -f "$UISCHEMA_FILE" ] && echo " UI Schema: $UISCHEMA_FILE" -else - echo "Schema merge failed. Restoring previous versions." - [ -f "$BACKUP_SCHEMA_FILE" ] && mv "./$BACKUP_SCHEMA_FILE" "./$SCHEMA_FILE" - [ -f "$BACKUP_UISCHEMA_FILE" ] && mv "./$BACKUP_UISCHEMA_FILE" "./$UISCHEMA_FILE" -fi diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Scripts/deploy.ps1 deleted file mode 100644 index bb6dc8aaaa..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Scripts/deploy.ps1 +++ /dev/null @@ -1,241 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path Microsoft.BotFramework.Composer.WebApp.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - -if (-not $botPath) { - # If don't provide bot path, then try to copy all dialogs except the runtime folder in parent folder to the publishing folder (bin\Realse\ Folder) - $botPath = '../..' -} - -$botPath = $(Join-Path $botPath '*') -Write-Host "Publishing dialogs from external bot project: $($botPath)" -Copy-Item -Path (Get-Item -Path $botPath -Exclude ('runtime', 'generated')).FullName -Destination $remoteBotPath -Recurse -Force -Container - -# Try to get luis config from appsettings -$settingsPath = $(Join-Path $remoteBotPath settings appsettings.json) -$settings = Get-Content $settingsPath | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# set feature configuration -$featureConfig = @{ } -if ($settings.feature) { - $featureConfig = $settings.feature -} -else { - # Enable all features to true by default - $featureConfig["UseTelementryLoggerMiddleware"] = $true - $featureConfig["UseTranscriptLoggerMiddleware"] = $true - $featureConfig["UseShowTypingMiddleware"] = $true - $featureConfig["UseInspectionMiddleware"] = $true - $featureConfig["UseCosmosDb"] = $true -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - Set-Location -Path $remoteBotPath - - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $models - } - - $luString = $models | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # create generated folder if not - if (!(Test-Path generated)) { - $null = New-Item -ItemType Directory -Force -Path generated - } - - # ensure bot cli is installed - if (Get-Command bf -errorAction SilentlyContinue) {} - else { - Write-Host "bf luis:build does not exist. Start installation..." - npm i -g @microsoft/botframework-cli - Write-Host "successfully" - } - - # Execute bf luis:build command - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog crosstrained --out ./generated --suffix $environment -f --region $luisAuthoringRegion - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - $settings = New-Object PSObject - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -$settings | Add-Member -Type NoteProperty -Force -Name 'feature' -Value $featureConfig -$settings | ConvertTo-Json -depth 100 | Out-File $settingsPath - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Startup.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Startup.cs deleted file mode 100644 index c7a52195cc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/Startup.cs +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Adaptive.Conditions; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; -using Microsoft.BotFramework.Composer.WebAppTemplates.Authorization; - -//using Microsoft.BotFramework.Composer.CustomAction; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings?.BlobStorage?.ConnectionString) && ConfigSectionValid(settings?.BlobStorage?.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings?.BlobStorage?.ConnectionString, settings?.BlobStorage?.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings?.Feature?.UseShowTypingMiddleware == true) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IStorage storage) - { - if (settings?.Feature?.UseInspectionMiddleware == true) - { - adapter.Use(new InspectionMiddleware(new InspectionState(storage))); - } - } - - public IStorage ConfigureStorage(BotSettings settings) - { - IStorage storage; - if (ConfigSectionValid(settings?.CosmosDb?.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings?.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - return storage; - } - - public bool IsSkill(BotSettings settings) - { - return settings?.SkillConfiguration?.IsSkill == true; - } - - public BotFrameworkHttpAdapter GetBotAdapter(IStorage storage, BotSettings settings, UserState userState, ConversationState conversationState, IServiceProvider s, TelemetryInitializerMiddleware telemetryInitializerMiddleware) - { - var adapter = IsSkill(settings) ? new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration), s.GetService()) : new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(Configuration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, storage); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation for skills. - if (IsSkill(settings)) - { - services.AddSingleton(sp => new AuthenticationConfiguration { ClaimsValidator = new AllowedCallersClaimsValidator(settings.SkillConfiguration) }); - } - else - { - services.AddSingleton(sp => new AuthenticationConfiguration()); - } - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // This is for custom action component registration. - //ComponentRegistration.Add(new CustomActionComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings?.ApplicationInsights?.InstrumentationKey ?? string.Empty); - - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings?.Telemetry?.LogPersonalInformation ?? false); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings?.Telemetry?.LogActivities ?? false); - }); - - var storage = ConfigureStorage(settings); - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Configure bot loading path - var botDir = settings.Bot; - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - var defaultLocale = Configuration.GetValue("defaultLanguage") ?? "en-us"; - - services.AddSingleton(resourceExplorer); - - resourceExplorer.RegisterType("Microsoft.OnQnAMatch"); - - services.AddSingleton((s) => GetBotAdapter(storage, settings, userState, conversationState, s, s.GetService())); - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog, - defaultLocale, - removeRecipientMention)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseNamedPipes(System.Environment.GetEnvironmentVariable("APPSETTING_WEBSITE_SITE_NAME") + ".directline"); - app.UseWebSockets(); - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private static bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/packages/packages.json b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/azurewebapp/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/.gitignore b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerBot.cs deleted file mode 100644 index caecd82ba5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerBot.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Security.Claims; -using System.Security.Principal; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - private readonly IBotTelemetryClient telemetryClient; - private readonly string defaultLocale; - private readonly bool removeRecipientMention; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, IBotTelemetryClient telemetryClient, string rootDialog, string defaultLocale, bool removeRecipientMention = false) - { - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - this.defaultLocale = defaultLocale; - this.telemetryClient = telemetryClient; - this.removeRecipientMention = removeRecipientMention; - - LoadRootDialogAsync(); - this.dialogManager.InitialTurnState.Set(skillClient); - this.dialogManager.InitialTurnState.Set(conversationIdFactory); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - AdaptiveDialog rootDialog = (AdaptiveDialog)this.dialogManager.RootDialog; - if (turnContext.TurnState.Get(BotAdapter.BotIdentityKey) is ClaimsIdentity claimIdentity && SkillValidation.IsSkillClaim(claimIdentity.Claims)) - { - rootDialog.AutoEndDialog = true; - } - - if (this.removeRecipientMention && turnContext?.Activity?.Type == "message") - { - turnContext.Activity.RemoveRecipientMention(); - } - - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration() - .UseLanguagePolicy(new LanguagePolicy(defaultLocale)); - - if (telemetryClient != null) - { - dialogManager.UseTelemetry(this.telemetryClient); - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerBotPathExtensions.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerBotPathExtensions.cs deleted file mode 100644 index f2d2e953fc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerBotPathExtensions.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Extensions.Configuration; -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.Core -{ - /// - /// Bot path adapter, for development environment, use '../../' as the bot path, for deployment and production environment, use 'ComposerDialogs' as bot path - /// - public static class ComposerBotPathExtensions - { - public static IConfigurationBuilder UseBotPathConverter(this IConfigurationBuilder builder, bool isDevelopment = true) - { - var settings = new Dictionary(); - if (isDevelopment) - { - settings["bot"] = "../../"; - } - else - { - settings["bot"] = "ComposerDialogs"; - } - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerSettingsExtensions.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerSettingsExtensions.cs deleted file mode 100644 index d827eaf60b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/ComposerSettingsExtensions.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Extensions.Configuration; -using System; -using System.Collections.Generic; -using System.IO; - -namespace Microsoft.BotFramework.Composer.Core -{ - public static class ComposerSettingsExtensions - { - /// - /// Setup configuration to utilize the settings file generated by bf luis:build and qna:build. This is a luis and qnamaker settings extensions adapter aligning with Composer customized settings. - /// - /// - /// This will pick up LUIS_AUTHORING_REGION or --region settings as the setting to target. - /// This will pick up --environment as the environment to target. If environment is Development it will use the name of the logged in user. - /// This will pick up --root as the root folder to run in. - /// - /// Configuration builder to modify. - /// Modified configuration builder. - public static IConfigurationBuilder UseComposerSettings(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var botRoot = configuration.GetValue("bot") ?? "."; - var luisRegion = configuration.GetValue("LUIS_AUTHORING_REGION") ?? configuration.GetValue("luis:authoringRegion") ?? configuration.GetValue("luis:region") ?? "westus"; - var qnaRegion = configuration.GetValue("qna:qnaRegion") ?? "westus"; - var environment = configuration.GetValue("luis:environment") ?? Environment.UserName; - var settings = new Dictionary(); - var luisEndpoint = configuration.GetValue("luis:endpoint"); - if (String.IsNullOrWhiteSpace(luisEndpoint)) - { - luisEndpoint = $"https://{luisRegion}.api.cognitive.microsoft.com"; - } - settings["luis:endpoint"] = luisEndpoint; - settings["BotRoot"] = botRoot; - builder.AddInMemoryCollection(settings); - if (environment == "Development") - { - environment = Environment.UserName; - } - - var luisSettingsPath = Path.GetFullPath(Path.Combine(botRoot, "generated", $"luis.settings.{environment.ToLower()}.{luisRegion}.json")); - var luisSettingsFile = new FileInfo(luisSettingsPath); - if (luisSettingsFile.Exists) - { - builder.AddJsonFile(luisSettingsFile.FullName, optional: false, reloadOnChange: true); - } - - var qnaSettingsPath = Path.GetFullPath(Path.Combine(botRoot, "generated", $"qnamaker.settings.{environment.ToLower()}.{qnaRegion}.json")); - var qnaSettingsFile = new FileInfo(qnaSettingsPath); - if (qnaSettingsFile.Exists) - { - builder.AddJsonFile(qnaSettingsFile.FullName, optional: false, reloadOnChange: true); - } - - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/LuisConfig.cs deleted file mode 100644 index bc2ff6c834..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Microsoft.BotFramework.Composer.Core.csproj b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Microsoft.BotFramework.Composer.Core.csproj deleted file mode 100644 index 397bc4a18a..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Microsoft.BotFramework.Composer.Core.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - netstandard2.0 - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BlobStorageConfiguration.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BlobStorageConfiguration.cs deleted file mode 100644 index e6ab40402f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BlobStorageConfiguration.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotFeatureSettings.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotFeatureSettings.cs deleted file mode 100644 index 1073ae5786..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotFeatureSettings.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotFeatureSettings - { - // Use ShowTypingMiddleware - public bool UseShowTypingMiddleware { get; set; } - - // Use InspectionMiddleware - public bool UseInspectionMiddleware { get; set; } - - // Use RemoveRecipientMention Activity Extensions - public bool RemoveRecipientMention { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotSettings.cs deleted file mode 100644 index c706a087e6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotSettings.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotSettings - { - public BotFeatureSettings Feature { get; set; } - - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration ApplicationInsights { get; set; } - - public AdditionalTelemetryConfiguration Telemetry { get; set; } - - public string Bot { get; set; } - - public BotSkillConfiguration SkillConfiguration { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - - public class AdditionalTelemetryConfiguration - { - public bool LogPersonalInformation { get; set; } - - public bool LogActivities { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotSkillConfiguration.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotSkillConfiguration.cs deleted file mode 100644 index 7f78a46d22..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/Settings/BotSkillConfiguration.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotSkillConfiguration - { - // Is skill - public bool IsSkill { get; set; } - public string[] AllowedCallers { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/SkillConversationIdFactory.cs deleted file mode 100644 index dd4a5ed612..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/core/SkillConversationIdFactory.cs +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Skills; -using Newtonsoft.Json.Linq; - -namespace Microsoft.BotFramework.Composer.Core -{ - /// - /// A that uses to store - /// and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly IStorage _storage; - - public SkillConversationIdFactory(IStorage storage) - { - _storage = storage ?? throw new ArgumentNullException(nameof(storage)); - } - - public override async Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - - // Create the storage key based on the SkillConversationIdFactoryOptions. - var conversationReference = options.Activity.GetConversationReference(); - var skillConversationId = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{conversationReference.Conversation.Id}-{conversationReference.ChannelId}-skillconvo"; - - // Create the SkillConversationReference instance. - var skillConversationReference = new SkillConversationReference - { - ConversationReference = conversationReference, - OAuthScope = options.FromBotOAuthScope - }; - - // Store the SkillConversationReference using the skillConversationId as a key. - var skillConversationInfo = new Dictionary { { skillConversationId, JObject.FromObject(skillConversationReference) } }; - await _storage.WriteAsync(skillConversationInfo, cancellationToken).ConfigureAwait(false); - - // Return the generated skillConversationId (that will be also used as the conversation ID to call the skill). - return skillConversationId; - } - - public override async Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - if (string.IsNullOrWhiteSpace(skillConversationId)) - { - throw new ArgumentNullException(nameof(skillConversationId)); - } - - // Get the SkillConversationReference from storage for the given skillConversationId. - var skillConversationInfo = await _storage.ReadAsync(new[] { skillConversationId }, cancellationToken).ConfigureAwait(false); - if (skillConversationInfo.Any()) - { - var conversationInfo = ((JObject)skillConversationInfo[skillConversationId]).ToObject(); - return conversationInfo; - } - - return null; - } - - public override async Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - // Delete the SkillConversationReference from storage. - await _storage.DeleteAsync(new[] { skillConversationId }, cancellationToken).ConfigureAwait(false); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Action/MultiplyDialog.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Action/MultiplyDialog.cs deleted file mode 100644 index 81768d1b48..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Action/MultiplyDialog.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Threading; -using System.Threading.Tasks; -using AdaptiveExpressions.Properties; -using Microsoft.Bot.Builder.Dialogs; -using Newtonsoft.Json; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - /// - /// Custom command which takes takes 2 data bound arguments (arg1 and arg2) and multiplies them returning that as a databound result. - /// - public class MultiplyDialog : Dialog - { - [JsonConstructor] - public MultiplyDialog([CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) - : base() - { - // enable instances of this command as debug break point - this.RegisterSourceLocation(sourceFilePath, sourceLineNumber); - } - - [JsonProperty("$kind")] - public const string Kind = "MultiplyDialog"; - - /// - /// Gets or sets memory path to bind to arg1 (ex: conversation.width). - /// - /// - /// Memory path to bind to arg1 (ex: conversation.width). - /// - [JsonProperty("arg1")] - public NumberExpression Arg1 { get; set; } - - /// - /// Gets or sets memory path to bind to arg2 (ex: conversation.height). - /// - /// - /// Memory path to bind to arg2 (ex: conversation.height). - /// - [JsonProperty("arg2")] - public NumberExpression Arg2 { get; set; } - - /// - /// Gets or sets caller's memory path to store the result of this step in (ex: conversation.area). - /// - /// - /// Caller's memory path to store the result of this step in (ex: conversation.area). - /// - [JsonProperty("resultProperty")] - public StringExpression ResultProperty { get; set; } - - public override Task BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken)) - { - var arg1 = Arg1.GetValue(dc.State); - var arg2 = Arg2.GetValue(dc.State); - - var result = Convert.ToInt32(arg1) * Convert.ToInt32(arg2); - if (this.ResultProperty != null) - { - dc.State.SetValue(this.ResultProperty.GetValue(dc.State), result); - } - - return dc.EndDialogAsync(result: result, cancellationToken: cancellationToken); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/CustomAction.sln b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/CustomAction.sln deleted file mode 100644 index 1b2af1c93b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/CustomAction.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30011.22 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "customaction", "Microsoft.BotFramework.Composer.CustomAction.csproj", "{2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {83C7CDB7-7F32-4E64-9D6D-7752806C37D6} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/CustomActionComponentRegistration.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/CustomActionComponentRegistration.cs deleted file mode 100644 index d14abbe6b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/CustomActionComponentRegistration.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Newtonsoft.Json; -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - public class CustomActionComponentRegistration : ComponentRegistration, IComponentDeclarativeTypes - { - public IEnumerable GetDeclarativeTypes(ResourceExplorer resourceExplorer) - { - // Actions - yield return new DeclarativeType(MultiplyDialog.Kind); - } - - public IEnumerable GetConverters(ResourceExplorer resourceExplorer, SourceContext sourceContext) - { - yield break; - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj deleted file mode 100644 index da040a1bb4..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Library - netcoreapp3.1 - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Schemas/MultiplyDialog.schema b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Schemas/MultiplyDialog.schema deleted file mode 100644 index e8e651e601..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/customaction/Schemas/MultiplyDialog.schema +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/component.schema", - "$role": "implements(Microsoft.IDialog)", - "title": "Multiply", - "description": "This will return the result of arg1*arg2", - "type": "object", - "additionalProperties": false, - "properties": { - "arg1": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg1", - "description": "Value from callers memory to use as arg 1" - }, - "arg2": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg2", - "description": "Value from callers memory to use as arg 2" - }, - "resultProperty": { - "$ref": "schema:#/definitions/stringExpression", - "title": "Result", - "description": "Value from callers memory to store the result" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ActionsTests.cs deleted file mode 100644 index 0767f86d7e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ActionsTests.cs +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/AllowedCallersClaimsValidationTests.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/AllowedCallersClaimsValidationTests.cs deleted file mode 100644 index ac123eb05f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/AllowedCallersClaimsValidationTests.cs +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Security.Claims; -using System.Threading.Tasks; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core.Settings; -using Microsoft.BotFramework.Composer.WebAppTemplates.Authorization; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace Tests -{ - [TestClass] - public class AllowedCallersClaimsValidationTests - { - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void WhenAllowedCallersIsNullThrowException() - { - var unused = new AllowedCallersClaimsValidator(new BotSkillConfiguration()); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void WhenAllowedCallersIsEmptyThrowException() - { - var unused = new AllowedCallersClaimsValidator(new BotSkillConfiguration() - { - AllowedCallers = new string[0] - }); - } - - [TestMethod] - public async Task AllowAnyCaller() - { - var validator = new AllowedCallersClaimsValidator(new BotSkillConfiguration() - { - AllowedCallers = new string[]{"*"} - }); - var callerAppId = "BE3F9920-D42D-4D3A-9BDF-DBA62DAE3A00"; - var claims = CreateCallerClaims(callerAppId); - - await validator.ValidateClaimsAsync(claims); - } - - [TestMethod] - public async Task AllowedCaller() - { - const string callerAppId = "BE3F9920-D42D-4D3A-9BDF-DBA62DAE3A00"; - var validator = new AllowedCallersClaimsValidator(new BotSkillConfiguration() - { - AllowedCallers = new string[]{callerAppId} - }); - - var claims = CreateCallerClaims(callerAppId); - - await validator.ValidateClaimsAsync(claims); - } - - [TestMethod] - public async Task AllowedCallers() - { - const string callerAppId = "BE3F9920-D42D-4D3A-9BDF-DBA62DAE3A00"; - var validator = new AllowedCallersClaimsValidator(new BotSkillConfiguration() - { - AllowedCallers = new string[]{"anotherId", callerAppId} - }); - - var claims = CreateCallerClaims(callerAppId); - - await validator.ValidateClaimsAsync(claims); - } - - [TestMethod] - [ExpectedException(typeof(UnauthorizedAccessException))] - public async Task NonAllowedCallerShouldThrowException() - { - var callerAppId = "BE3F9920-D42D-4D3A-9BDF-DBA62DAE3A00"; - var validator = new AllowedCallersClaimsValidator(new BotSkillConfiguration() - { - AllowedCallers = new string[]{callerAppId} - }); - - var claims = CreateCallerClaims("I'm not allowed"); - - await validator.ValidateClaimsAsync(claims); - } - - private List CreateCallerClaims(string appId) - { - return new List() - { - new Claim(AuthenticationConstants.AppIdClaim, appId), - new Claim(AuthenticationConstants.VersionClaim, "1.0"), - new Claim(AuthenticationConstants.AudienceClaim, "5BA599BD-F9E9-48D3-B98D-377BB2A0EAE9"), - }; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ControllingConversationTests.cs deleted file mode 100644 index 8922c9b099..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ControllingConversationTests.cs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .Send("08") - .AssertReply("In continue loop, which only outputs dual.") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 3 value: 4") - .AssertReply("index: 5 value: 6") - .AssertReply("In break loop, which breaks when index > 2") - .AssertReply("index: 0 value: 1") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 2 value: 3") - .AssertReply("done") - .Send("09") - .AssertReply("counter: 1") - .AssertReply("counter: 2") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/InputsTests.cs deleted file mode 100644 index f22f7c83bf..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/InputsTests.cs +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st 2019") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/MessageTests.cs deleted file mode 100644 index 09b27ca711..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/MessageTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj deleted file mode 100644 index e444ece921..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/SkillConversationIdFactoryTests.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/SkillConversationIdFactoryTests.cs deleted file mode 100644 index 2bbc8aaedd..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/SkillConversationIdFactoryTests.cs +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Schema; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Claims; -using System.Threading; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class SkillConversationIdFactoryTests - { - private readonly SkillConversationIdFactory _idFactory = new SkillConversationIdFactory(new MemoryStorage()); - private string _botId = Guid.NewGuid().ToString("N"); - private string _skillId = Guid.NewGuid().ToString("N"); - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - } - - [TestMethod] - public async Task ShouldCreateCorrectConversationId() - { - var claimsIdentity = new ClaimsIdentity(); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AudienceClaim, _botId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AppIdClaim, _skillId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.ServiceUrlClaim, "http://testbot.com/api/messages")); - var conversationReference = new ConversationReference - { - Conversation = new ConversationAccount(id: Guid.NewGuid().ToString("N")), - ServiceUrl = "http://testbot.com/api/messages" - }; - - var activity = (Activity)Activity.CreateMessageActivity(); - activity.ApplyConversationReference(conversationReference); - var skill = new BotFrameworkSkill() - { - AppId = _skillId, - Id = "skill", - SkillEndpoint = new Uri("http://testbot.com/api/messages") - }; - - var options = new SkillConversationIdFactoryOptions - { - FromBotOAuthScope = _botId, - FromBotId = _botId, - Activity = activity, - BotFrameworkSkill = skill - }; - - var conversationId = await _idFactory.CreateSkillConversationIdAsync(options, CancellationToken.None); - Assert.IsNotNull(conversationId); - } - - [TestMethod] - public async Task ShouldGetConversationReferenceFromConversationId() - { - var claimsIdentity = new ClaimsIdentity(); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AudienceClaim, _botId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AppIdClaim, _skillId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.ServiceUrlClaim, "http://testbot.com/api/messages")); - var conversationReference = new ConversationReference - { - Conversation = new ConversationAccount(id: Guid.NewGuid().ToString("N")), - ServiceUrl = "http://testbot.com/api/messages" - }; - - var activity = (Activity)Activity.CreateMessageActivity(); - activity.ApplyConversationReference(conversationReference); - var skill = new BotFrameworkSkill() - { - AppId = _skillId, - Id = "skill", - SkillEndpoint = new Uri("http://testbot.com/api/messages") - }; - - var options = new SkillConversationIdFactoryOptions - { - FromBotOAuthScope = _botId, - FromBotId = _botId, - Activity = activity, - BotFrameworkSkill = skill - }; - - var conversationId = await _idFactory.CreateSkillConversationIdAsync(options, CancellationToken.None); - Assert.IsNotNull(conversationId); - - var skillConversationRef = await _idFactory.GetSkillConversationReferenceAsync(conversationId, CancellationToken.None); - Assert.IsTrue(RefEquals(skillConversationRef.ConversationReference, conversationReference)); - } - - [TestMethod] - public async Task ShouldNotGetReferenceAfterDeleted() - { - var claimsIdentity = new ClaimsIdentity(); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AudienceClaim, _botId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AppIdClaim, _skillId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.ServiceUrlClaim, "http://testbot.com/api/messages")); - var conversationReference = new ConversationReference - { - Conversation = new ConversationAccount(id: Guid.NewGuid().ToString("N")), - ServiceUrl = "http://testbot.com/api/messages" - }; - - var activity = (Activity)Activity.CreateMessageActivity(); - activity.ApplyConversationReference(conversationReference); - var skill = new BotFrameworkSkill() - { - AppId = _skillId, - Id = "skill", - SkillEndpoint = new Uri("http://testbot.com/api/messages") - }; - - var options = new SkillConversationIdFactoryOptions - { - FromBotOAuthScope = _botId, - FromBotId = _botId, - Activity = activity, - BotFrameworkSkill = skill - }; - - var conversationId = await _idFactory.CreateSkillConversationIdAsync(options, CancellationToken.None); - Assert.IsNotNull(conversationId); - - var skillConversationRef = await _idFactory.GetSkillConversationReferenceAsync(conversationId, CancellationToken.None); - Assert.IsTrue(RefEquals(skillConversationRef.ConversationReference, conversationReference)); - - await _idFactory.DeleteConversationReferenceAsync(conversationId, CancellationToken.None); - - var skillConversationRefAfterDeleted = await _idFactory.GetSkillConversationReferenceAsync(conversationId, CancellationToken.None); - Assert.IsNull(skillConversationRefAfterDeleted); - } - - private bool RefEquals(ConversationReference ref1, ConversationReference ref2) - { - return ref1.Conversation.Id == ref2.Conversation.Id && ref1.ServiceUrl == ref2.ServiceUrl; - } - } -} - diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ToDoBotTests.cs deleted file mode 100644 index 00660fc3b5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/runtime/tests/ToDoBotTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json deleted file mode 100644 index 86871bc405..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "functionapp", - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "kind": "functionapp", - "httpsOnly": true - }, - "resources": [ - { - "name": "appsettings", - "type": "config", - "apiVersion": "2015-08-01", - "dependsOn": [ - "[concat('Microsoft.Web/Sites/', variables('webAppName'))]" - ], - "properties": { - "FUNCTIONS_EXTENSION_VERSION": "~3", - "FUNCTIONS_WORKER_RUNTIME": "dotnet", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components/', parameters('appInsightsName')), '2015-05-01').InstrumentationKey]", - "MicrosoftAppId": "[parameters('appId')]", - "MicrosoftAppPassword": "[parameters('appSecret')]" - } - } - ] - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/qna-template.json b/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/qna-template.json deleted file mode 100644 index 511420d5d8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/qna-template.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "qnaMakerServiceName": { - "type": "string", - "defaultValue": "[concat(parameters('name'), '-qna')]" - }, - "qnaMakerServiceSku": { - "type": "string", - "defaultValue": "S0" - }, - "qnaMakerServiceLocation": { - "type": "string", - "defaultValue": "westus" - }, - "qnaMakerSearchName": { - "type": "string", - "defaultValue": "[concat(parameters('name'), '-search')]" - }, - "qnaMakerSearchSku": { - "type": "string", - "defaultValue": "standard" - }, - "qnaMakerSearchLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "qnaMakerWebAppName": { - "type": "string", - "defaultValue": "[concat(parameters('name'), '-qnahost')]" - }, - "qnaMakerWebAppLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "qnaMakerSearchName": "[toLower(replace(parameters('qnaMakerSearchName'), '_', ''))]", - "qnaMakerWebAppName": "[replace(parameters('qnaMakerWebAppName'), '_', '')]" - }, - "resources": [ - { - "apiVersion": "2018-02-01", - "name": "1d41002f-62a1-49f3-bd43-2f3f32a19cbb", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - } - }, - { - "comments": "Cognitive service key for all QnA Maker knowledgebases.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "QnAMaker", - "apiVersion": "2017-04-18", - "name": "[parameters('qnaMakerServiceName')]", - "location": "[parameters('qnaMakerServiceLocation')]", - "sku": { - "name": "[parameters('qnaMakerServiceSku')]" - }, - "properties": { - "apiProperties": { - "qnaRuntimeEndpoint": "[concat('https://',reference(resourceId('Microsoft.Web/sites', variables('qnaMakerWebAppName'))).hostNames[0])]" - } - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/Sites', variables('qnaMakerWebAppName'))]", - "[resourceId('Microsoft.Search/searchServices/', variables('qnaMakerSearchName'))]", - "[resourceId('microsoft.insights/components/', parameters('appInsightsName'))]" - ] - }, - { - "comments": "Search service for QnA Maker service.", - "type": "Microsoft.Search/searchServices", - "apiVersion": "2015-08-19", - "name": "[variables('qnaMakerSearchName')]", - "location": "[parameters('qnaMakerSearchLocation')]", - "sku": { - "name": "[parameters('qnaMakerSearchSku')]" - }, - "properties": { - "replicaCount": 1, - "partitionCount": 1, - "hostingMode": "default" - } - }, - { - "comments": "Web app for QnA Maker service.", - "type": "Microsoft.Web/sites", - "apiVersion": "2016-08-01", - "name": "[variables('qnaMakerWebAppName')]", - "location": "[parameters('qnaMakerWebAppLocation')]", - "properties": { - "enabled": true, - "name": "[variables('qnaMakerWebAppName')]", - "hostingEnvironment": "", - "serverFarmId": "[concat('/subscriptions/', Subscription().SubscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('servicePlanName'))]", - "siteConfig": { - "cors": { - "allowedOrigins": [ - "*" - ] - } - } - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "resources": [ - { - "apiVersion": "2016-08-01", - "name": "appsettings", - "type": "config", - "dependsOn": [ - "[resourceId('Microsoft.Web/Sites', variables('qnaMakerWebAppName'))]", - "[resourceId('Microsoft.Insights/components', parameters('appInsightsName'))]", - "[resourceId('Microsoft.Search/searchServices/', variables('qnaMakerSearchName'))]" - ], - "properties": { - "AzureSearchName": "[variables('qnaMakerSearchName')]", - "AzureSearchAdminKey": "[listAdminKeys(resourceId('Microsoft.Search/searchServices/', variables('qnaMakerSearchName')), '2015-08-19').primaryKey]", - "UserAppInsightsKey": "[reference(resourceId('Microsoft.Insights/components/', parameters('appInsightsName')), '2015-05-01').InstrumentationKey]", - "UserAppInsightsName": "[parameters('appInsightsName')]", - "UserAppInsightsAppId": "[reference(resourceId('Microsoft.Insights/components/', parameters('appInsightsName')), '2015-05-01').AppId]", - "PrimaryEndpointKey": "[concat(variables('qnaMakerWebAppName'), '-PrimaryEndpointKey')]", - "SecondaryEndpointKey": "[concat(variables('qnaMakerWebAppName'), '-SecondaryEndpointKey')]", - "DefaultAnswer": "No good match found in KB.", - "QNAMAKER_EXTENSION_VERSION": "latest" - } - } - ] - } - ], - "outputs": { - "qna": { - "type": "object", - "value": { - "endpoint": "[concat('https://', reference(resourceId('Microsoft.Web/sites', variables('qnaMakerWebAppName'))).hostNames[0])]", - "subscriptionKey": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('qnaMakerServiceName')),'2017-04-18').key1]" - } - } - } - } - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index 81c8531adc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,390 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "apiVersion": "2018-02-01", - "name": "1d41002f-62a1-49f3-bd43-2f3f32a19cbb", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]", - "endpoint": "[if(parameters('shouldCreateLuisResource'), reference(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName'))).endpoint, '')]", - "authoringEndpoint": "[if(parameters('shouldCreateAuthoringResource'), reference(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName'))).endpoint, '')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/package.json b/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/package.json deleted file mode 100644 index 13b5294de5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "azure_provision", - "version": "1.0.0", - "description": "provision to azure cloud", - "main": "provisionComposer.js", - "license": "MIT", - "scripts": { - "start": "node provisionComposer.js" - }, - "dependencies": { - "@azure/arm-appinsights": "^2.1.0", - "@azure/arm-botservice": "^1.0.0", - "@azure/arm-resources": "^2.1.0", - "@azure/graph": "^5.0.1", - "@azure/ms-rest-nodeauth": "^3.0.3", - "@types/fs-extra": "^8.1.0", - "chalk": "^4.0.0", - "fs-extra": "^8.1.0", - "minimist": "^1.2.5", - "ora": "^4.0.4", - "request-promise": "^4.2.5" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/provisionComposer.js b/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/provisionComposer.js deleted file mode 100644 index fbf4f2bdd9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/46828.36760693736/scripts/provisionComposer.js +++ /dev/null @@ -1,812 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const chalk = require('chalk'); -const fs = require('fs-extra'); -const msRestNodeAuth = require('@azure/ms-rest-nodeauth'); -const argv = require('minimist')(process.argv.slice(2)); -const path = require('path'); -const rp = require('request-promise'); -const { promisify } = require('util'); -const { GraphRbacManagementClient } = require('@azure/graph'); -const { ApplicationInsightsManagementClient } = require('@azure/arm-appinsights'); -const { AzureBotService } = require('@azure/arm-botservice'); -const { ResourceManagementClient } = require('@azure/arm-resources'); -const readFile = promisify(fs.readFile); -const ora = require('ora'); - -const logger = (msg) => { - if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR) { - console.log(chalk.red(msg.message)); - } else if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS) { - console.log(chalk.white(msg.message)); - } else { - console.log(chalk.green(msg.message)); - } -}; - -const usage = () => { - const options = [ - ['subscriptionId', 'Azure Subscription Id'], - ['name', 'Project Name'], - ['appPassword', '16 character password'], - ['environment', 'Environment name (Defaults to dev)'], - ['location', 'Azure Region (Defaults to westus)'], - ['appId', 'Microsoft App ID (Will create if absent)'], - ['tenantId', 'ID of your tenant if required (will choose first in list by default)'], - ['createLuisResource', 'Create a LUIS resource? Default true'], - ['createLuisAuthoringResource', 'Create a LUIS authoring resource? Default true'], - ['createCosmosDb', 'Create a CosmosDB? Default true'], - ['createStorage', 'Create a storage account? Default true'], - ['createAppInsights', 'Create an AppInsights resource? Default true'], - ['createQnAResource', 'Create a QnA resource? Default true'], - [ - 'customArmTemplate', - 'Path to runtime ARM template. By default it will use an Azure WebApp template. Pass `DeploymentTemplates/function-template-with-preexisting-rg.json` for Azure Functions or your own template for a custom deployment.', - ], - [ - 'qnaTemplate', - 'Path to qna template. By default it will use `DeploymentTemplates/qna-template.json`' - ] - ]; - - const instructions = [ - ``, - chalk.bold('Provision Azure resources for use with Bot Framework Composer bots'), - `* This script will create a new resource group and the necessary Azure resources needed to operate a Bot Framework bot in the cloud.`, - `* Use this to create a publishing profile used in Composer's "Publish" toolbar.`, - ``, - chalk.bold(`Basic Usage:`), - chalk.greenBright(`node provisionComposer --subscriptionId=`) + - chalk.yellow('') + - chalk.greenBright(' --name=') + - chalk.yellow('') + - chalk.greenBright(' --appPassword=') + - chalk.yellow('<16 character password>'), - ``, - chalk.bold(`All options:`), - ...options.map((option) => { - return chalk.greenBright('--' + option[0]) + '\t' + chalk.yellow(option[1]); - }), - ]; - - console.log(instructions.join('\n')); -}; - -// check for required parameters -if (Object.keys(argv).length === 0) { - return usage(); -} - -if (!argv.name || !argv.subscriptionId || !argv.appPassword) { - return usage(); -} - -// Get required fields from the arguments -const subId = argv.subscriptionId; -const name = argv.name.toString(); -const appPassword = argv.appPassword; - -// Get optional fields from the arguments -const environment = argv.environment || 'dev'; -const location = argv.location || 'westus'; -const appId = argv.appId; // MicrosoftAppId - generated if left blank - -// Get option flags -const createLuisResource = argv.createLuisResource == 'false' ? false : true; -const createLuisAuthoringResource = argv.createLuisAuthoringResource == 'false' ? false : true; -const createCosmosDb = argv.createCosmosDb == 'false' ? false : true; -const createStorage = argv.createStorage == 'false' ? false : true; -const createAppInsights = argv.createAppInsights == 'false' ? false : true; -const createQnAResource = argv.createQnAResource == 'false' ? false : true; -var tenantId = argv.tenantId ? argv.tenantId : ''; - -const templatePath = - argv.customArmTemplate || path.join(__dirname, 'DeploymentTemplates', 'template-with-preexisting-rg.json'); -const qnaTemplatePath = - argv.qnaTemplate || path.join(__dirname, 'DeploymentTemplates', 'qna-template.json'); - -const BotProjectDeployLoggerType = { - // Logger Type for Provision - PROVISION_INFO: 'PROVISION_INFO', - PROVISION_ERROR: 'PROVISION_ERROR', - PROVISION_WARNING: 'PROVISION_WARNING', - PROVISION_SUCCESS: 'PROVISION_SUCCESS', - PROVISION_ERROR_DETAILS: 'PROVISION_ERROR_DETAILS', -}; - -/** - * Create a Bot Framework registration - * @param {} graphClient - * @param {*} displayName - * @param {*} appPassword - */ -const createApp = async (graphClient, displayName, appPassword) => { - try { - const createRes = await graphClient.applications.create({ - displayName: displayName, - passwordCredentials: [ - { - value: appPassword, - startDate: new Date(), - endDate: new Date(new Date().setFullYear(new Date().getFullYear() + 2)), - }, - ], - availableToOtherTenants: true, - replyUrls: ['https://token.botframework.com/.auth/web/redirect'], - }); - return createRes; - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: err.body.message, - }); - return false; - } -}; - -/** - * Create an Azure resources group - * @param {} client - * @param {*} location - * @param {*} resourceGroupName - */ -const createResourceGroup = async (client, location, resourceGroupName) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Creating resource group ...`, - }); - const param = { - location: location, - }; - - return await client.resourceGroups.createOrUpdate(resourceGroupName, param); -}; - -/** - * Format parameters - * @param {} scope - */ -const pack = (scope) => { - return { - value: scope, - }; -}; - -const unpackObject = (output) => { - const unpacked = {}; - for (const key in output) { - const objValue = output[key]; - if (objValue.value) { - unpacked[key] = objValue.value; - } - } - return unpacked; -}; - -/** - * For more information about this api, please refer to this doc: https://docs.microsoft.com/en-us/rest/api/resources/Tenants/List - * @param {*} accessToken - */ -const getTenantId = async (accessToken) => { - if (!accessToken) { - throw new Error( - 'Error: Missing access token. Please provide a non-expired Azure access token. Tokens can be obtained by running az account get-access-token' - ); - } - if (!subId) { - throw new Error(`Error: Missing subscription Id. Please provide a valid Azure subscription id.`); - } - try { - const tenantUrl = `https://management.azure.com/subscriptions/${subId}?api-version=2020-01-01`; - const options = { - headers: { Authorization: `Bearer ${accessToken}` }, - }; - const response = await rp.get(tenantUrl, options); - const jsonRes = JSON.parse(response); - if (jsonRes.tenantId === undefined) { - throw new Error(`No tenants found in the account.`); - } - return jsonRes.tenantId; - } catch (err) { - throw new Error(`Get Tenant Id Failed, details: ${getErrorMesssage(err)}`); - } -}; - -/** - * - * @param {*} appId the appId of application registration - * @param {*} appPwd the app password of application registration - * @param {*} location the locaiton of all resources - * @param {*} name the name of resource group - * @param {*} shouldCreateAuthoringResource - * @param {*} shouldCreateLuisResource - * @param {*} useAppInsights - * @param {*} useCosmosDb - * @param {*} useStorage - */ -const getDeploymentTemplateParam = ( - appId, - appPwd, - location, - name, - shouldCreateAuthoringResource, - shouldCreateLuisResource, - useAppInsights, - useCosmosDb, - useStorage -) => { - return { - appId: pack(appId), - appSecret: pack(appPwd), - appServicePlanLocation: pack(location), - botId: pack(name), - shouldCreateAuthoringResource: pack(shouldCreateAuthoringResource), - shouldCreateLuisResource: pack(shouldCreateLuisResource), - useAppInsights: pack(useAppInsights), - useCosmosDb: pack(useCosmosDb), - useStorage: pack(useStorage), - }; -}; - -/** - * Get QnA template param - */ -const getQnaTemplateParam = ( - location, - name -) => { - return { - appServicePlanLocation: pack(location), - name: pack(name) - }; -}; - -/** - * Validate the qna template and the qna template param - */ -const validateQnADeployment = async (client, resourceGroupName, deployName, templateParam) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Validating QnA deployment ...', - }); - - const templateFile = await readFile(qnaTemplatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - return await client.deployments.validate(resourceGroupName, deployName, deployParam); -}; - -/** - * Create a QnA resource deployment - * @param {*} client - * @param {*} resourceGroupName - * @param {*} deployName - * @param {*} templateParam - */ -const createQnADeployment = async (client, resourceGroupName, deployName, templateParam) => { - const templateFile = await readFile(qnaTemplatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - - return await client.deployments.createOrUpdate(resourceGroupName, deployName, deployParam); -}; - -/** - * Validate the deployment using the Azure API - */ -const validateDeployment = async (client, resourceGroupName, deployName, templateParam) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Validating Azure deployment ...', - }); - - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - return await client.deployments.validate(resourceGroupName, deployName, deployParam); -}; - -/** - * Using an ARM template, provision a bunch of resources - */ -const createDeployment = async (client, resourceGroupName, deployName, templateParam) => { - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - - return await client.deployments.createOrUpdate(resourceGroupName, deployName, deployParam); -}; - -/** - * Format the results into the expected shape - */ -const updateDeploymentJsonFile = async (client, resourceGroupName, deployName, appId, appPwd) => { - const outputs = await client.deployments.get(resourceGroupName, deployName); - if (outputs && outputs.properties && outputs.properties.outputs) { - const outputResult = outputs.properties.outputs; - const applicationResult = { - MicrosoftAppId: appId, - MicrosoftAppPassword: appPwd, - }; - const outputObj = unpackObject(outputResult); - - if (!createAppInsights) { - delete outputObj.applicationInsights; - } - if (!createCosmosDb) { - delete outputObj.cosmosDb; - } - if (!createLuisAuthoringResource && !createLuisResource) { - delete outputObj.luis; - } - if (!createStorage) { - delete outputObj.blobStorage; - } - const result = {}; - Object.assign(result, outputObj, applicationResult); - return result; - } else { - return null; - } -}; - -const provisionFailed = (msg) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: chalk.bold('** Provision failed **'), - }); -}; - -const getErrorMesssage = (err) => { - if (err.body) { - if (err.body.error) { - if (err.body.error.details) { - const details = err.body.error.details; - let errMsg = ''; - for (let detail of details) { - errMsg += detail.message; - } - return errMsg; - } else { - return err.body.error.message; - } - } else { - return JSON.stringify(err.body, null, 2); - } - } else { - return JSON.stringify(err, null, 2); - } -}; - -/** - * Provision a set of Azure resources for use with a bot - */ -const create = async ( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource = true, - createLuisAuthoringResource = true, - createQnAResource = true, - createCosmosDb = true, - createStorage = true, - createAppInsights = true -) => { - - // App insights is a dependency of QnA - if (createQnAResource) { - createAppInsights = true; - } - - // If tenantId is empty string, get tenanId from API - if (!tenantId) { - const token = await creds.getToken(); - const accessToken = token.accessToken; - // the returned access token will almost surely have a tenantId. - // use this as the default if one isn't specified. - if (token.tenantId) { - tenantId = token.tenantId; - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Using Tenant ID: ${tenantId}`, - }); - } else { - tenantId = await getTenantId(accessToken); - } - } - - const graphCreds = new msRestNodeAuth.DeviceTokenCredentials( - creds.clientId, - tenantId, - creds.username, - 'graph', - creds.environment, - creds.tokenCache - ); - const graphClient = new GraphRbacManagementClient(graphCreds, tenantId, { - baseUri: 'https://graph.windows.net', - }); - - // If the appId is not specified, create one - if (!appId) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Creating App Registration ...', - }); - - // create the app registration - const appCreated = await createApp(graphClient, name, appPassword); - if (appCreated === false) { - return provisionFailed(); - } - - // use the newly created app - appId = appCreated.appId; - } - - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Create App Id Success! ID: ${appId}`, - }); - - const resourceGroupName = `${name}-${environment}`; - - // timestamp will be used as deployment name - const timeStamp = new Date().getTime().toString(); - const client = new ResourceManagementClient(creds, subId); - - // Create a resource group to contain the new resources - try { - const rpres = await createResourceGroup(client, location, resourceGroupName); - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err), - }); - return provisionFailed(); - } - - // Caste the parameters into the right format - const deploymentTemplateParam = getDeploymentTemplateParam( - appId, - appPassword, - location, - name, - createLuisAuthoringResource, - createLuisResource, - createAppInsights, - createCosmosDb, - createStorage - ); - - // Validate the deployment using the Azure API - const validation = await validateDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - - // Handle validation errors - if (validation.error) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error.message}`, - }); - if (validation.error.details) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS, - message: JSON.stringify(validation.error.details, null, 2), - }); - } - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - - // Create the entire stack of resources inside the new resource group - // this is controlled by an ARM template identified in templatePath - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Deploying Azure services (this could take a while)...`, - }); - const spinner = ora().start(); - try { - const deployment = await createDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - // Handle errors - if (deployment._response.status != 200) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Template is not valid with provided parameters. Review the log for more information.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error}`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - } catch (err) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err), - }); - return provisionFailed(); - } - - var qnaResult = null; - - // Create qna resources, the reason why seperate the qna resources from others: https://github.com/Azure/azure-sdk-for-js/issues/10186 - if (createQnAResource) { - const qnaDeployName = new Date().getTime().toString(); - const qnaDeploymentTemplateParam = getQnaTemplateParam( - location, - name - ); - const qnaValidation = await validateQnADeployment(client, resourceGroupName, qnaDeployName, qnaDeploymentTemplateParam); - if (qnaValidation.error) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${qnaValidation.error.message}`, - }); - if (qnaValidation.error.details) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS, - message: JSON.stringify(qnaValidation.error.details, null, 2), - }); - } - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - - // Create qna deloyment - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Deploying QnA Resources (this could take a while)...`, - }); - const spinner = ora().start(); - try { - const qnaDeployment = await createQnADeployment(client, resourceGroupName, qnaDeployName, qnaDeploymentTemplateParam); - // Handle errors - if (qnaDeployment._response.status != 200) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! QnA Template is not valid with provided parameters. Review the log for more information.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${qnaValidation.error}`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - } catch (err) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err), - }); - return provisionFailed(); - } - - const qnaDeploymentOutput = await client.deployments.get(resourceGroupName, qnaDeployName); - if (qnaDeploymentOutput && qnaDeploymentOutput.properties && qnaDeploymentOutput.properties.outputs) { - const qnaOutputResult = qnaDeploymentOutput.properties.outputs; - qnaResult = unpackObject(qnaOutputResult); - } - } - - // If application insights created, update the application insights settings in azure bot service - if (createAppInsights) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Linking Application Insights settings to Bot Service ...`, - }); - - const appinsightsClient = new ApplicationInsightsManagementClient(creds, subId); - const appComponents = await appinsightsClient.components.get(resourceGroupName, resourceGroupName); - const appinsightsId = appComponents.appId; - const appinsightsInstrumentationKey = appComponents.instrumentationKey; - const apiKeyOptions = { - name: `${resourceGroupName}-provision-${timeStamp}`, - linkedReadProperties: [ - `/subscriptions/${subId}/resourceGroups/${resourceGroupName}/providers/microsoft.insights/components/${resourceGroupName}/api`, - `/subscriptions/${subId}/resourceGroups/${resourceGroupName}/providers/microsoft.insights/components/${resourceGroupName}/agentconfig`, - ], - linkedWriteProperties: [ - `/subscriptions/${subId}/resourceGroups/${resourceGroupName}/providers/microsoft.insights/components/${resourceGroupName}/annotations`, - ], - }; - const appinsightsApiKeyResponse = await appinsightsClient.aPIKeys.create( - resourceGroupName, - resourceGroupName, - apiKeyOptions - ); - const appinsightsApiKey = appinsightsApiKeyResponse.apiKey; - - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> AppInsights AppId: ${appinsightsId} ...`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> AppInsights InstrumentationKey: ${appinsightsInstrumentationKey} ...`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> AppInsights ApiKey: ${appinsightsApiKey} ...`, - }); - - if (appinsightsId && appinsightsInstrumentationKey && appinsightsApiKey) { - const botServiceClient = new AzureBotService(creds, subId); - const botCreated = await botServiceClient.bots.get(resourceGroupName, name); - if (botCreated.properties) { - botCreated.properties.developerAppInsightKey = appinsightsInstrumentationKey; - botCreated.properties.developerAppInsightsApiKey = appinsightsApiKey; - botCreated.properties.developerAppInsightsApplicationId = appinsightsId; - const botUpdateResult = await botServiceClient.bots.update(resourceGroupName, name, botCreated); - - if (botUpdateResult._response.status != 200) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Something went wrong while trying to link Application Insights settings to Bot Service Result: ${JSON.stringify( - botUpdateResult - )}`, - }); - throw new Error(`Linking Application Insights Failed.`); - } - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Linking Application Insights settings to Bot Service Success!`, - }); - } else { - logger({ - status: BotProjectDeployLoggerType.PROVISION_WARNING, - message: `! The Bot doesn't have a keys properties to update.`, - }); - } - } - } - - spinner.succeed('Success!'); - - // Validate that everything was successfully created. - // Then, update the settings file with information about the new resources - const updateResult = await updateDeploymentJsonFile(client, resourceGroupName, timeStamp, appId, appPassword); - - // Handle errors - if (!updateResult) { - const operations = await client.deploymentOperations.list(resourceGroupName, timeStamp); - if (operations) { - const failedOperations = operations.filter( - (value) => value && value.properties && value.properties.statusMessage.error !== null - ); - if (failedOperations) { - failedOperations.forEach((operation) => { - switch ( - operation && - operation.properties && - operation.properties.statusMessage.error.code && - operation.properties.targetResource - ) { - case 'MissingRegistrationForLocation': - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}. This resource is not avaliable in the location provided.`, - }); - break; - default: - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Code: ${operation.properties.statusMessage.error.code}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Message: ${operation.properties.statusMessage.error.message}.`, - }); - break; - } - }); - } - } else { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed. Please refer to the log file for more information.`, - }); - } - } - - // Merge qna outputs with other resources' outputs - if (createQnAResource) { - if (qnaResult) { - Object.assign(updateResult, qnaResult); - } - } - - return updateResult; -}; - -console.log(chalk.bold('Login to Azure:')); -msRestNodeAuth - .interactiveLogin({ domain: tenantId }) - .then(async (creds) => { - const createResult = await create( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource, - createLuisAuthoringResource, - createQnAResource, - createCosmosDb, - createStorage, - createAppInsights - ); - - if (createResult) { - console.log(''); - console.log( - chalk.bold( - `Your Azure hosting environment has been created! Copy paste the following configuration into a new profile in Composer's Publishing tab.` - ) - ); - console.log(''); - - const token = await creds.getToken(); - const profile = { - accessToken: token.accessToken, - name: name, - environment: environment, - hostname: `${name}-${environment}`, - luisResource: `${name}-${environment}-luis`, - settings: createResult, - }; - - console.log(chalk.white(JSON.stringify(profile, null, 2))); - - console.log(''); - } - }) - .catch((err) => { - console.error(err); - }); diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/.gitignore b/Composer/plugins/localPublish/hostedBots/58177.92879852568/.gitignore deleted file mode 100644 index b658b87ba9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# prevent appsettings.json get checked in -**/appsettings.json \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/README.md b/Composer/plugins/localPublish/hostedBots/58177.92879852568/README.md deleted file mode 100644 index ba48ee2802..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/README.md +++ /dev/null @@ -1,73 +0,0 @@ -This folder contains a Bot Project created with Bot Framework Composer. - -The full documentation for Composer lives here: -https://github.com/microsoft/botframework-composer - -To test this bot locally, open this folder in Composer, then click "Start Bot" - -## Provision Azure Resources to Host Bot - -This project includes a script that can be used to provision the resources necessary to run your bot in the Azure cloud. Running this script will create all of the necessary resources and return a publishing profile in the form of a JSON object. This JSON object can be imported into Composer's "Publish" tab and used to deploy the bot. - -* From this project folder, navigate to the scripts/ folder -* Run `npm install` -* Run `node provisionComposer.js --subscriptionId= --name= --appPassword= --environment=` -* You will be asked to login to the Azure portal in your browser. -* You will see progress indicators as the provision process runs. Note that it will take roughly 10 minutes to fully provision the resources. - -It will look like this: -``` -{ - "accessToken": "", - "name": "", - "environment": "", - "settings": { - "applicationInsights": { - "InstrumentationKey": "" - }, - "cosmosDb": { - "cosmosDBEndpoint": "", - "authKey": "", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - }, - "luis": { - "endpointKey": "", - "authoringKey": "", - "region": "westus" - }, - "MicrosoftAppId": "", - "MicrosoftAppPassword": "" - } -}``` - -When completed, you will see a message with a JSON "publishing profile" and instructions for using it in Composer. - - -## Publish bot to Azure - -To publish your bot to a Azure resources provisioned using the process above: - -* Open your bot in Composer -* Navigate to the "Publish" tab -* Select "Add new profile" from the toolbar -* In the resulting dialog box, choose "azurePublish" from the "Publish Destination Type" dropdown -* Paste in the profile you received from the provisioning script - -When you are ready to publish your bot to Azure, select the newly created profile from the sidebar and click "Publish to selected profile" in the toolbar. - -## Refresh your Azure Token - -When publishing, you may encounter an error about your access token being expired. This happens when the access token used to provision your bot expires. - -To get a new token: - -* Open a terminal window -* Run `az account get-access-token` -* This will result in a JSON object printed to the console, containing a new `accessToken` field. -* Copy the value of the accessToken from the terminal and into the publish `accessToken` field in the profile in Composer. diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/echobot-0.dialog b/Composer/plugins/localPublish/hostedBots/58177.92879852568/echobot-0.dialog deleted file mode 100644 index 81f88b7890..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/echobot-0.dialog +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "id": "433224", - "description": "", - "name": "EchoBot-0" - }, - "autoEndDialog": true, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnUnknownIntent", - "$designer": { - "id": "821845" - }, - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "003038" - }, - "activity": "${SendActivity_003038()}" - } - ] - }, - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.Foreach", - "$designer": { - "id": "518944", - "name": "Loop: for each item" - }, - "itemsProperty": "turn.Activity.membersAdded", - "actions": [ - { - "$kind": "Microsoft.IfCondition", - "$designer": { - "id": "641773", - "name": "Branch: if/else" - }, - "condition": "string(dialog.foreach.value.id) != string(turn.Activity.Recipient.id)", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "859266", - "name": "Send a response" - }, - "activity": "${SendActivity_Welcome()}" - } - ] - } - ] - } - ] - } - ], - "generator": "echobot-0.lg", - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema", - "id": "EchoBot-0", - "recognizer": "echobot-0.lu.qna" -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/generated/echobot-0.lu.qna.dialog b/Composer/plugins/localPublish/hostedBots/58177.92879852568/generated/echobot-0.lu.qna.dialog deleted file mode 100644 index 967f1534c9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/generated/echobot-0.lu.qna.dialog +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$kind": "Microsoft.CrossTrainedRecognizerSet", - "recognizers": [] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/knowledge-base/en-us/echobot-0.en-us.qna b/Composer/plugins/localPublish/hostedBots/58177.92879852568/knowledge-base/en-us/echobot-0.en-us.qna deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/58177.92879852568/language-generation/en-us/common.en-us.lg deleted file mode 100644 index e6d48bfb3b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,2 +0,0 @@ -# WelcomeUser -- Welcome to the EchoBot sample diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/language-generation/en-us/echobot-0.en-us.lg b/Composer/plugins/localPublish/hostedBots/58177.92879852568/language-generation/en-us/echobot-0.en-us.lg deleted file mode 100644 index 37a89b432f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/language-generation/en-us/echobot-0.en-us.lg +++ /dev/null @@ -1,25 +0,0 @@ -[import](common.lg) - -# SendActivity_Welcome -- ${WelcomeUser()} - -# SendActivity_003038() -- {abc} - - - - - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/language-understanding/en-us/echobot-0.en-us.lu b/Composer/plugins/localPublish/hostedBots/58177.92879852568/language-understanding/en-us/echobot-0.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/.gitignore b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/.gitignore deleted file mode 100644 index 2ad42ca00c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/.gitignore +++ /dev/null @@ -1,360 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*[.json, .xml, .info] - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/ComposerRuntime.sln b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/ComposerRuntime.sln deleted file mode 100644 index c0ee8d1a38..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/ComposerRuntime.sln +++ /dev/null @@ -1,49 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29920.165 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.WebApp", "azurewebapp\Microsoft.BotFramework.Composer.WebApp.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Tests", "tests\Microsoft.BotFramework.Composer.Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Core", "core\Microsoft.BotFramework.Composer.Core.csproj", "{35E20444-438D-4241-833C-804A24E9CB4F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Functions", "azurefunctions\Microsoft.BotFramework.Composer.Functions.csproj", "{9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.CustomAction", "customaction\Microsoft.BotFramework.Composer.CustomAction.csproj", "{EE58DDD7-DE91-4DB0-A6C6-D8182523896B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.Build.0 = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.Build.0 = Release|Any CPU - {EE58DDD7-DE91-4DB0-A6C6-D8182523896B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EE58DDD7-DE91-4DB0-A6C6-D8182523896B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EE58DDD7-DE91-4DB0-A6C6-D8182523896B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EE58DDD7-DE91-4DB0-A6C6-D8182523896B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/NuGet.Config b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/README.md b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/README.md deleted file mode 100644 index f41b1a16da..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# DotNet bot runtime - -# Folder structure - -- **core**: Includes all core JavaScript runtime logic, independent of hosting technology. -- **technology specific folders**: Each hosting technology has one folder in this directory. For example, for Azure Functions, there is an `azurefunction` folder - - **tests**: Javascript runtime tests diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/.gitignore b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/.gitignore deleted file mode 100644 index ff5b00c506..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/.gitignore +++ /dev/null @@ -1,264 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# Azure Functions localsettings file -local.settings.json - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -project.fragment.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -#*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/MessagesTrigger.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/MessagesTrigger.cs deleted file mode 100644 index abb88495f5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/MessagesTrigger.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Extensions.Logging; -using System; -using System.Net; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class MessagesTrigger - { - private readonly IBotFrameworkHttpAdapter _adapter; - private readonly IBot _bot; - - public MessagesTrigger(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter ?? throw new ArgumentNullException(nameof(adapter)); - this._bot = bot ?? throw new ArgumentNullException(nameof(bot)); - } - - [FunctionName("messages")] - public async Task Run( - [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, - ILogger log) - { - log.LogInformation($"Messages endpoint triggered."); - - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await _adapter.ProcessAsync(req, req.HttpContext.Response, _bot); - - if (req.HttpContext.Response.StatusCode == (int) HttpStatusCode.OK || req.HttpContext.Response.StatusCode == (int)HttpStatusCode.Accepted) - { - return new OkResult(); - } - else - { - return new ContentResult() - { - StatusCode = req.HttpContext.Response.StatusCode, - Content = $"Bot execution failed with status code: {req.HttpContext.Response.StatusCode}" - }; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj deleted file mode 100644 index 88a550947e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj deleted file mode 100644 index 34bd530c0f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj +++ /dev/null @@ -1,56 +0,0 @@ - - - - netcoreapp3.1 - v3 - 2eb1c70c-5cd2-4c08-8aab-df989c347067 - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - Always - - - Always - - - Always - - - Always - - - diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs deleted file mode 100644 index 645665ecaa..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Rest.Serialization; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace Microsoft.BotFramework.Composer.Functions.Settings -{ - internal class ActivitySerializationSettings - { - internal static readonly JsonSerializerSettings Default = new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Ignore, - Formatting = Formatting.Indented, - DateFormatHandling = DateFormatHandling.IsoDateFormat, - DateTimeZoneHandling = DateTimeZoneHandling.Utc, - ReferenceLoopHandling = ReferenceLoopHandling.Serialize, - ContractResolver = new ReadOnlyJsonContractResolver(), - Converters = new List { new Iso8601TimeSpanConverter() } - }; - - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/SkillsTrigger.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/SkillsTrigger.cs deleted file mode 100644 index 30528b4cf3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/SkillsTrigger.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder; -using System.Web.Http; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Microsoft.BotFramework.Composer.Functions.Settings; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class SkillsTrigger - { - private readonly SkillHandler _skillHandler; - - public SkillsTrigger(SkillHandler skillHandler) - { - this._skillHandler = skillHandler ?? throw new ArgumentNullException(nameof(skillHandler)); - } - - [FunctionName("skills")] - public async Task ReplyToActivityAsync( - [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities/{activityId}")] HttpRequest req, - string conversationId, string activityId, ILogger log) - { - log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - var body = await req.ReadAsStringAsync(); - var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - var result = await _skillHandler.HandleReplyToActivityAsync(req.Headers["Authorization"], conversationId, activityId, activity); - - return new JsonResult(result, ActivitySerializationSettings.Default); - } - - - //[FunctionName("skills")] - //public async Task SendToConversationAsync( - // [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities")] HttpRequest req, - // string conversationId, string activityId, ILogger log) - //{ - // log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - // var body = await req.ReadAsStringAsync(); - // var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - // var result = await _skillHandler.HandleSendToConversationAsync(req.Headers["Authorization"], conversationId, activity); - - // return new JsonResult(result, ActivitySerializationSettings.Default); - //} - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Startup.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Startup.cs deleted file mode 100644 index 7b9d6c9264..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/Startup.cs +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Http; -using Microsoft.Azure.Functions.Extensions.DependencyInjection; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; - -//using Microsoft.BotFramework.Composer.CustomAction; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Reflection; -using System.Text; - -[assembly: FunctionsStartup(typeof(Microsoft.BotFramework.Composer.Functions.Startup))] - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class Startup : FunctionsStartup - { - private IConfigurationRoot BuildConfiguration(string rootDirectory) - { - var config = new ConfigurationBuilder(); - - // Config precedence 1: root app.settings - config.SetBasePath(rootDirectory); - - // Config precedence 2: ComposerDialogs/settings settings which are injected by the composer publish - // Hard code the settings path to 'ComposerDialogs' for deployment - - var configFile = Path.GetFullPath(Path.Combine(rootDirectory, @"ComposerDialogs/settings/appsettings.json")); - config.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - config.UseComposerSettings(); - - if (!Debugger.IsAttached) - { - config.AddUserSecrets(); - } - - config.AddEnvironmentVariables(); - - return config.Build(); - } - - public override void Configure(IFunctionsHostBuilder builder) - { - var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - var rootDirectory = Directory.GetParent(binDirectory).FullName; - - var rootConfiguration = BuildConfiguration(rootDirectory); - - var settings = new BotSettings(); - rootConfiguration.Bind(settings); - - var services = builder.Services; - - services.AddSingleton(rootConfiguration); - - services.AddLogging(); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Adaptive component registration - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // This is for custom action component registration. - //ComponentRegistration.Add(new CustomActionComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings?.ApplicationInsights?.InstrumentationKey ?? string.Empty); - - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings?.Telemetry?.LogPersonalInformation ?? false); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings?.Telemetry?.LogActivities ?? false); - }); - - // Storage - IStorage storage; - if (ConfigSectionValid(settings?.CosmosDb?.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings?.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Resource explorer to track declarative assets - var resourceExplorer = new ResourceExplorer().AddFolder(Path.Combine(rootDirectory, settings?.Bot ?? ".")); - services.AddSingleton(resourceExplorer); - - // Adapter - services.AddSingleton(s => - { - // Retrieve required dependencies - //IConfiguration configuration = s.GetService(); - IStorage storage = s.GetService(); - UserState userState = s.GetService(); - ConversationState conversationState = s.GetService(); - TelemetryInitializerMiddleware telemetryInitializerMiddleware = s.GetService(); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(rootConfiguration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(rootConfiguration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, s); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - - return adapter; - }); - - var defaultLocale = rootConfiguration.GetValue("defaultLanguage") ?? "en-us"; - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - // Bot - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - GetRootDialog(Path.Combine(rootDirectory, settings.Bot)), - defaultLocale, - removeRecipientMention)); - } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings?.BlobStorage?.ConnectionString) && ConfigSectionValid(settings?.BlobStorage?.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings?.BlobStorage?.ConnectionString, settings?.BlobStorage?.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings?.Feature?.UseShowTypingMiddleware == true) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IServiceProvider s) - { - if (settings?.Feature?.UseInspectionMiddleware == true) - { - adapter.Use(s.GetService()); - } - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - - private bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/host.json b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/host.json deleted file mode 100644 index 903482d949..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurefunctions/host.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "2.0" -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/.gitignore b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Controllers/BotController.cs deleted file mode 100644 index daaba0d810..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Controllers/SkillController.cs deleted file mode 100644 index a8853db745..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Controllers/SkillController.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj deleted file mode 100644 index f51ffa2615..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj +++ /dev/null @@ -1,42 +0,0 @@ - - - - netcoreapp3.1 - OutOfProcess - 060251cd-e6f6-437c-bf5e-e9324ea20aac - - - - Always - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Program.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Program.cs deleted file mode 100644 index f601df0e60..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Program.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.IO; -using Microsoft.AspNetCore.Hosting; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - // Use Composer bot path adapter - builder.UseBotPathConverter(env.IsDevelopment()); - - var configuration = builder.Build(); - - // Hard code the settings path to 'ComposerDialogs' while deployment - var botRoot = configuration.GetValue("bot") ?? "ComposerDialogs"; - var configFile = Path.GetFullPath(Path.Combine(botRoot, @"settings/appsettings.json")); - - builder.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - // Use Composer luis and qna settings extensions - builder.UseComposerSettings(); - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/README.md b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/README.md deleted file mode 100644 index 0139518b13..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/README.md +++ /dev/null @@ -1,19 +0,0 @@ -## Bot Project - -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -### CI/CD Deployment - -You can deploy your bot to an Azure Web App with the following script from an Azure pipeline or GitHub workflow using an [Azure CLI task](https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-cli). - -```bash -./scripts/deploy.ps1 -name my-bot -environment prod -luisAuthoringKey XXXXXXXXX -luisAuthoringRegion westeurope -``` - -The Azure CLI task needs contribution permission to the corresponding resource group. Follow this [article](https://docs.microsoft.com/en-us/azure/devops/pipelines/library/connect-to-azure) to setup a service connection between Azure DevOps and your Azure Subscription. - -Initially you can provision the resources with the provisionComposer.js script, which you can find in the boot root folder under scripts. - -The environment, bot name and authoring region must match the arguments, that you used for for the provisioning with the provisionComposer.js script. - -For security reasons we don't deploy any settings or secrets from the bot project. Please ensure that required settings for your bit are configured in the [Azure Web App configuration](https://docs.microsoft.com/en-us/azure/app-service/configure-common), for example "MicrosoftAppPassword", "luis\_\_endpointKey", "cosmosDB\_\_authKey", ... diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/readme.md b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/readme.md deleted file mode 100644 index 3c4d35b3b8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/readme.md +++ /dev/null @@ -1,124 +0,0 @@ -# How to update the schema file - -Once the bot has been setup with Composer and we wish to make changes to the schema, the first step in this process is to eject the runtime through the `Runtime Config` in Composer. The ejected runtime folder will broadly have the following structure - -``` -bot - /bot.dialog - /language-generation - /language-understanding - /dialogs - /customized-dialogs - /runtime - /azurewebapp - /azurefunctions - /schemas - sdk.schema -``` - -##### Prequisites - -Botframework CLI > 4.10 - -``` -npm i -g @microsoft/botframework-cli -``` - -> NOTE: Previous versions of botframework-cli required you to install @microsoft/bf-plugin. You will need to uninstall for 4.10 and above. -> -> ``` -> bf plugins:uninstall @microsoft/bf-dialog -> ``` - -## Adding Custom Actions to your Composer bot - -**NOTE: These steps assume you are using azurewebapp as your deployment solution. Replicating it on azurefunctions would be similar -** - -- In this tutorial, we will be going over the steps to include a custom action `MultiplyDialog` that multiplies two numbers passed as inputs. Note that the ejected runtime should contain a `customaction` folder that has this sample. - -- Navigate to the csproj file inside the `runtime` folder (bot/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj) and include a project reference to the customaction project like ``. - -- Then Uncomment line 28 and 139 in azurewebapp/Startup.cs file so as to register this action. - -``` - -using Microsoft.BotFramework.Composer.CustomAction; -// This is for custom action component registration. -ComponentRegistration.Add(new CustomActionComponentRegistration()); - -``` - -- Run the command `dotnet build` on the azurewebapp project to verify if it passes build after adding custom actions to it. - -- Navigate to to the `schemas (bot/schemas)` folder. This folder contains a Powershell script and a bash script. Run either of these scripts `./update-schema.ps1 -runtime azurewebapp` or `sh ./update-schema.sh -runtime azurewebapp`. The runtime `azurewebapp` is chosen by default if no argument is passed. - -- Validate that the partial schema (MultiplyDialog.schema inside customaction/Schema) has been appended to the default sdk.schema file to generate one single consolidated sdk.schema file. - -The above steps should have generated a new sdk.schema file inside `schemas` folder for Composer to use. Reload the bot and you should be able to include your new custom action! - -## Customizing Composer using the UI Schema - -Composer's UI can be customized using the UI Schema. You can either customize one of your custom actions or override Composer defaults. - -There are 2 ways to do this. - -1. **Component UI Schema File** - -To customize a specific component, simply create a `.uischema` file inside of the `/schemas` directory with the same name as the component, These files will be merged into a single `.uischema` file when running the `update-schema` script. - -Example: - -```json -// Microsoft.SendActivity.uischema -{ - "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", - "form": { - "label": "A custom label" - } -} -``` - -2. **UI Schema Override File** - -This approach allows you to co-locate all of your UI customizations into a single file. This will not be merged into the `sdk.uischema`, instead it will be loaded by Composer and applied as overrides. - -Example: - -```json -{ - "$schema": "https://schemas.botframework.com/schemas/ui/v1.0/ui.schema", - "Microsoft.SendActivity": { - "form": { - "label": "A custom label" - } - } -} -``` - -#### UI Customization Options - -##### Form - -| **Property** | **Description** | **Type** | **Default** | -| ------------ | -------------------------------------------------------------------------------------- | ------------------- | -------------------- | -| description | Text used in tooltips. | `string` | `schema.description` | -| helpLink | URI to component or property documentation. Used in tooltips. | `string` | | -| hidden | An array of property names to hide in the UI. | `string[]` | | -| label | Label override. Can either be a string or false to hide the label. | `string` \| `false` | `schema.title` | -| order | Set the order of fields. Use "\_" for all other fields. ex. ["foo", "_", "bar"] | `string[]` | `[*]` | -| placeholder | Placeholder override. | `string` | `schema.examples` | -| properties | A map of component property names to UI options with customizations for each property. | `object` | | -| subtitle | Subtitle rendered in form title. | `string` | `schema.$kind` | -| widget | Override default field widget. See list of widgets below. | `enum` | | - -###### Widgets - -- checkbox -- date -- datetime -- input -- number -- radio -- select -- textarea diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/sdk.schema deleted file mode 100644 index 478c0864b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/sdk.schema +++ /dev/null @@ -1,9538 +0,0 @@ -{ - "$schema": "https://schemas.botframework.com/schemas/component/v1.0/component.schema", - "type": "object", - "title": "Component kinds", - "description": "These are all of the kinds that can be created by the loader.", - "oneOf": [ - { - "$ref": "#/definitions/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.ChoiceInput" - }, - { - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$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.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.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - } - ], - "definitions": { - "Microsoft.ActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft ActivityTemplate", - "type": "object", - "required": [ - "template", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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": [ - { - "$ref": "#/definitions/schema" - }, - { - "type": "string", - "title": "Reference to JSON schema", - "description": "Reference to JSON schema .dialog file." - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AdaptiveDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AgeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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.10.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/botframework.json/definitions/Attachment", - "title": "Object", - "description": "Attachment object." - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "value": { - "$role": "expression", - "title": "Value", - "description": "'Property' will be set to the object or the result of this expression unless it evaluates to null.", - "oneOf": [ - { - "$ref": "#/definitions/botframework.json/definitions/Attachment", - "title": "Object", - "description": "Attachment object." - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "outputFormat": { - "$role": "expression", - "title": "Output format", - "description": "Attachment output format.", - "oneOf": [ - { - "type": "string", - "title": "Standard format", - "description": "Standard output formats.", - "enum": [ - "all", - "first" - ], - "default": "first" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "default": false, - "examples": [ - false, - "=user.isVip" - ] - }, - "prompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Initial prompt", - "description": "Message to send to collect information.", - "examples": [ - "What is your birth date?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "unrecognizedPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Unrecognized prompt", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "invalidPrompt": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression.", - "examples": [ - "Sorry, '{this.value}' does not work. I need a number between 1-150. What is your age?" - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "defaultValueResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value.", - "examples": [ - "Sorry, I'm having trouble understanding you. I will just use {this.options.defaultValue} for now. You can say 'I'm 36 years old' to change it." - ], - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "maxTurnCount": { - "$ref": "#/definitions/integerExpression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "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.10.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.10.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": "schema:#/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.10.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.10.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.10.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.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.10.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/botframework.json/definitions/CardAction", - "title": "Action", - "description": "Card action for the choice." - }, - "synonyms": { - "type": "array", - "title": "Synonyms", - "description": "List of synonyms to recognize in addition to the value (optional).", - "items": { - "type": "string", - "title": "Synonym", - "description": "Synonym for value." - } - } - } - } - ] - }, - { - "$ref": "#/definitions/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.10.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.10.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/botframework.json/definitions/CardAction", - "title": "Action", - "description": "Card action for the choice." - }, - "synonyms": { - "type": "array", - "title": "Synonyms", - "description": "List of synonyms to recognize in addition to the value (optional).", - "items": { - "type": "string", - "title": "Synonym", - "description": "Synonym for choice." - } - } - } - } - ] - }, - { - "$ref": "#/definitions/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.IEntityRecognizer)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.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.10.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.10.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.IEntityRecognizer)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.IEntityRecognizer)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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.10.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.10.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.10.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.10.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.IEntityRecognizer)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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.10.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": "Enum", - "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.IEntityRecognizer)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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": "ActivityId", - "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 Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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.IEntityRecognizer)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.IEntityRecognizer)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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" - }, - { - "$ref": "#/definitions/botframework.json/definitions/Activity", - "required": [ - "type" - ] - }, - { - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - } - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.10.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.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.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.10.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.10.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.10.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" - } - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.10.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.10.0" - } - }, - "Microsoft.ITrigger": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.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.10.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.10.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.10.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.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.10.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.10.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.10.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.10.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." - }, - "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": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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.IEntityRecognizer)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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.10.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.IEntityRecognizer)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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.IEntityRecognizer)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.10.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.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.10.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.IEntityRecognizer)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.IEntityRecognizer)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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" - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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.10.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": "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" - ] - }, - "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": "IsTest", - "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" - } - ] - }, - "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": "QnARequestContext", - "description": "Context to use for ranking." - }, - "qnaId": { - "$ref": "#/definitions/integerExpression", - "title": "QnAId", - "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.10.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.10.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.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.10.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.10.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.10.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.10.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.10.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.10.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/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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.10.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.10.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.10.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.10.0" - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "activity": { - "$ref": "#/definitions/botframework.json/definitions/Activity", - "title": "Activity", - "description": "A static Activity to used.", - "required": [ - "type" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.StaticActivityTemplate" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SwitchCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Switch condition", - "description": "Execute different actions based on the value of a property.", - "type": "object", - "required": [ - "condition", - "$kind" - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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.IEntityRecognizer)", - "title": "Temperature Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.10.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.10.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.10.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.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.10.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.10.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": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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.IEntityRecognizer)", - "title": "Confirmation Url Recognizer", - "description": "Recognizer which recognizes urls.", - "type": "object", - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.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": [ - "=..." - ] - } - ] - }, - "schema": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/definitions/schema" - } - }, - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "type": "integer", - "minimum": 0, - "default": 0 - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "uniqueItems": true, - "default": [], - "items": { - "type": "string" - } - } - }, - "type": [ - "object", - "boolean" - ], - "default": true, - "properties": { - "$schema": { - "type": "string", - "format": "uri" - }, - "$ref": { - "type": "string", - "format": "uri-reference" - }, - "$comment": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": true, - "readOnly": { - "type": "boolean", - "default": false - }, - "writeOnly": { - "type": "boolean", - "default": false - }, - "examples": { - "type": "array", - "items": true - }, - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { - "$ref": "#/definitions/schema/definitions/nonNegativeInteger" - }, - "minLength": { - "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" - }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { - "$ref": "#/definitions/schema" - }, - "items": { - "anyOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "$ref": "#/definitions/schema/definitions/schemaArray" - } - ], - "default": true - }, - "maxItems": { - "$ref": "#/definitions/schema/definitions/nonNegativeInteger" - }, - "minItems": { - "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" - }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "contains": { - "$ref": "#/definitions/schema" - }, - "maxProperties": { - "$ref": "#/definitions/schema/definitions/nonNegativeInteger" - }, - "minProperties": { - "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" - }, - "required": { - "$ref": "#/definitions/schema/definitions/stringArray" - }, - "additionalProperties": { - "$ref": "#/definitions/schema" - }, - "definitions": { - "type": "object", - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/schema" - } - }, - "properties": { - "type": "object", - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/schema" - } - }, - "patternProperties": { - "type": "object", - "propertyNames": { - "format": "regex" - }, - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/schema" - } - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "$ref": "#/definitions/schema/definitions/stringArray" - } - ] - } - }, - "propertyNames": { - "$ref": "#/definitions/schema" - }, - "const": true, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": true - }, - "type": { - "anyOf": [ - { - "$ref": "#/definitions/schema/definitions/simpleTypes" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/schema/definitions/simpleTypes" - }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { - "type": "string" - }, - "contentMediaType": { - "type": "string" - }, - "contentEncoding": { - "type": "string" - }, - "if": { - "$ref": "#/definitions/schema" - }, - "then": { - "$ref": "#/definitions/schema" - }, - "else": { - "$ref": "#/definitions/schema" - }, - "allOf": { - "$ref": "#/definitions/schema/definitions/schemaArray" - }, - "anyOf": { - "$ref": "#/definitions/schema/definitions/schemaArray" - }, - "oneOf": { - "$ref": "#/definitions/schema/definitions/schemaArray" - }, - "not": { - "$ref": "#/definitions/schema" - } - } - }, - "botframework.json": { - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "ChannelAccount": { - "description": "Channel account information needed to route a message", - "title": "ChannelAccount", - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", - "type": "string", - "title": "id" - }, - "name": { - "description": "Display friendly name", - "type": "string", - "title": "name" - }, - "aadObjectId": { - "description": "This account's object ID within Azure Active Directory (AAD)", - "type": "string", - "title": "aadObjectId" - }, - "role": { - "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", - "type": "string", - "title": "role" - } - } - }, - "ConversationAccount": { - "description": "Channel account information for a conversation", - "title": "ConversationAccount", - "type": "object", - "required": [ - "conversationType", - "id", - "isGroup", - "name" - ], - "properties": { - "isGroup": { - "description": "Indicates whether the conversation contains more than two participants at the time the\nactivity was generated", - "type": "boolean", - "title": "isGroup" - }, - "conversationType": { - "description": "Indicates the type of the conversation in channels that distinguish between conversation types", - "type": "string", - "title": "conversationType" - }, - "id": { - "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", - "type": "string", - "title": "id" - }, - "name": { - "description": "Display friendly name", - "type": "string", - "title": "name" - }, - "aadObjectId": { - "description": "This account's object ID within Azure Active Directory (AAD)", - "type": "string", - "title": "aadObjectId" - }, - "role": { - "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", - "enum": [ - "bot", - "user" - ], - "type": "string", - "title": "role" - } - } - }, - "MessageReaction": { - "description": "Message reaction object", - "title": "MessageReaction", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "Message reaction type. Possible values include: 'like', 'plusOne'", - "type": "string", - "title": "type" - } - } - }, - "CardAction": { - "description": "A clickable action", - "title": "CardAction", - "type": "object", - "required": [ - "title", - "type", - "value" - ], - "properties": { - "type": { - "description": "The type of action implemented by this button. Possible values include: 'openUrl', 'imBack',\n'postBack', 'playAudio', 'playVideo', 'showImage', 'downloadFile', 'signin', 'call',\n'payment', 'messageBack'", - "type": "string", - "title": "type" - }, - "title": { - "description": "Text description which appears on the button", - "type": "string", - "title": "title" - }, - "image": { - "description": "Image URL which will appear on the button, next to text label", - "type": "string", - "title": "image" - }, - "text": { - "description": "Text for this action", - "type": "string", - "title": "text" - }, - "displayText": { - "description": "(Optional) text to display in the chat feed if the button is clicked", - "type": "string", - "title": "displayText" - }, - "value": { - "description": "Supplementary parameter for action. Content of this property depends on the ActionType", - "title": "value" - }, - "channelData": { - "description": "Channel-specific data associated with this action", - "title": "channelData" - } - } - }, - "SuggestedActions": { - "description": "SuggestedActions that can be performed", - "title": "SuggestedActions", - "type": "object", - "required": [ - "actions", - "to" - ], - "properties": { - "to": { - "description": "Ids of the recipients that the actions should be shown to. These Ids are relative to the\nchannelId and a subset of all recipients of the activity", - "type": "array", - "title": "to", - "items": { - "title": "Id", - "description": "Id of recipient.", - "type": "string" - } - }, - "actions": { - "description": "Actions that can be shown to the user", - "type": "array", - "title": "actions", - "items": { - "$ref": "#/definitions/botframework.json/definitions/CardAction" - } - } - } - }, - "Attachment": { - "description": "An attachment within an activity", - "title": "Attachment", - "type": "object", - "required": [ - "contentType" - ], - "properties": { - "contentType": { - "description": "mimetype/Contenttype for the file", - "type": "string", - "title": "contentType" - }, - "contentUrl": { - "description": "Content Url", - "type": "string", - "title": "contentUrl" - }, - "content": { - "type": "object", - "description": "Embedded content", - "title": "content" - }, - "name": { - "description": "(OPTIONAL) The name of the attachment", - "type": "string", - "title": "name" - }, - "thumbnailUrl": { - "description": "(OPTIONAL) Thumbnail associated with attachment", - "type": "string", - "title": "thumbnailUrl" - } - } - }, - "Entity": { - "description": "Metadata object pertaining to an activity", - "title": "Entity", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "Type of this entity (RFC 3987 IRI)", - "type": "string", - "title": "type" - } - } - }, - "ConversationReference": { - "description": "An object relating to a particular point in a conversation", - "title": "ConversationReference", - "type": "object", - "required": [ - "bot", - "channelId", - "conversation", - "serviceUrl" - ], - "properties": { - "activityId": { - "description": "(Optional) ID of the activity to refer to", - "type": "string", - "title": "activityId" - }, - "user": { - "description": "(Optional) User participating in this conversation", - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "title": "user" - }, - "bot": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "description": "Bot participating in this conversation", - "title": "bot" - }, - "conversation": { - "$ref": "#/definitions/botframework.json/definitions/ConversationAccount", - "description": "Conversation reference", - "title": "conversation" - }, - "channelId": { - "description": "Channel ID", - "type": "string", - "title": "channelId" - }, - "serviceUrl": { - "description": "Service endpoint where operations concerning the referenced conversation may be performed", - "type": "string", - "title": "serviceUrl" - } - } - }, - "TextHighlight": { - "description": "Refers to a substring of content within another field", - "title": "TextHighlight", - "type": "object", - "required": [ - "occurrence", - "text" - ], - "properties": { - "text": { - "description": "Defines the snippet of text to highlight", - "type": "string", - "title": "text" - }, - "occurrence": { - "description": "Occurrence of the text field within the referenced text, if multiple exist.", - "type": "number", - "title": "occurrence" - } - } - }, - "SemanticAction": { - "description": "Represents a reference to a programmatic action", - "title": "SemanticAction", - "type": "object", - "required": [ - "entities", - "id" - ], - "properties": { - "id": { - "description": "ID of this action", - "type": "string", - "title": "id" - }, - "entities": { - "description": "Entities associated with this action", - "type": "object", - "title": "entities", - "additionalProperties": { - "$ref": "#/definitions/botframework.json/definitions/Entity" - } - } - } - }, - "Activity": { - "description": "An Activity is the basic communication type for the Bot Framework 3.0 protocol.", - "title": "Activity", - "type": "object", - "properties": { - "type": { - "description": "Contains the activity type. Possible values include: 'message', 'contactRelationUpdate',\n'conversationUpdate', 'typing', 'endOfConversation', 'event', 'invoke', 'deleteUserData',\n'messageUpdate', 'messageDelete', 'installationUpdate', 'messageReaction', 'suggestion',\n'trace', 'handoff'", - "type": "string", - "title": "type" - }, - "id": { - "description": "Contains an ID that uniquely identifies the activity on the channel.", - "type": "string", - "title": "id" - }, - "timestamp": { - "description": "Contains the date and time that the message was sent, in UTC, expressed in ISO-8601 format.", - "type": "string", - "format": "date-time", - "title": "timestamp" - }, - "localTimestamp": { - "description": "Contains the date and time that the message was sent, in local time, expressed in ISO-8601\nformat.\nFor example, 2016-09-23T13:07:49.4714686-07:00.", - "type": "string", - "format": "date-time", - "title": "localTimestamp" - }, - "localTimezone": { - "description": "Contains the name of the timezone in which the message, in local time, expressed in IANA Time\nZone database format.\nFor example, America/Los_Angeles.", - "type": "string", - "title": "localTimezone" - }, - "serviceUrl": { - "description": "Contains the URL that specifies the channel's service endpoint. Set by the channel.", - "type": "string", - "title": "serviceUrl" - }, - "channelId": { - "description": "Contains an ID that uniquely identifies the channel. Set by the channel.", - "type": "string", - "title": "channelId" - }, - "from": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "description": "Identifies the sender of the message.", - "title": "from" - }, - "conversation": { - "$ref": "#/definitions/botframework.json/definitions/ConversationAccount", - "description": "Identifies the conversation to which the activity belongs.", - "title": "conversation" - }, - "recipient": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "description": "Identifies the recipient of the message.", - "title": "recipient" - }, - "textFormat": { - "description": "Format of text fields Default:markdown. Possible values include: 'markdown', 'plain', 'xml'", - "type": "string", - "title": "textFormat" - }, - "attachmentLayout": { - "description": "The layout hint for multiple attachments. Default: list. Possible values include: 'list',\n'carousel'", - "type": "string", - "title": "attachmentLayout" - }, - "membersAdded": { - "description": "The collection of members added to the conversation.", - "type": "array", - "title": "membersAdded", - "items": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount" - } - }, - "membersRemoved": { - "description": "The collection of members removed from the conversation.", - "type": "array", - "title": "membersRemoved", - "items": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount" - } - }, - "reactionsAdded": { - "description": "The collection of reactions added to the conversation.", - "type": "array", - "title": "reactionsAdded", - "items": { - "$ref": "#/definitions/botframework.json/definitions/MessageReaction" - } - }, - "reactionsRemoved": { - "description": "The collection of reactions removed from the conversation.", - "type": "array", - "title": "reactionsRemoved", - "items": { - "$ref": "#/definitions/botframework.json/definitions/MessageReaction" - } - }, - "topicName": { - "description": "The updated topic name of the conversation.", - "type": "string", - "title": "topicName" - }, - "historyDisclosed": { - "description": "Indicates whether the prior history of the channel is disclosed.", - "type": "boolean", - "title": "historyDisclosed" - }, - "locale": { - "description": "A locale name for the contents of the text field.\nThe locale name is a combination of an ISO 639 two- or three-letter culture code associated\nwith a language\nand an ISO 3166 two-letter subculture code associated with a country or region.\nThe locale name can also correspond to a valid BCP-47 language tag.", - "type": "string", - "title": "locale" - }, - "text": { - "description": "The text content of the message.", - "type": "string", - "title": "text" - }, - "speak": { - "description": "The text to speak.", - "type": "string", - "title": "speak" - }, - "inputHint": { - "description": "Indicates whether your bot is accepting,\nexpecting, or ignoring user input after the message is delivered to the client. Possible\nvalues include: 'acceptingInput', 'ignoringInput', 'expectingInput'", - "type": "string", - "title": "inputHint" - }, - "summary": { - "description": "The text to display if the channel cannot render cards.", - "type": "string", - "title": "summary" - }, - "suggestedActions": { - "description": "The suggested actions for the activity.", - "$ref": "#/definitions/botframework.json/definitions/SuggestedActions", - "title": "suggestedActions" - }, - "attachments": { - "description": "Attachments", - "type": "array", - "title": "attachments", - "items": { - "$ref": "#/definitions/botframework.json/definitions/Attachment" - } - }, - "entities": { - "description": "Represents the entities that were mentioned in the message.", - "type": "array", - "title": "entities", - "items": { - "$ref": "#/definitions/botframework.json/definitions/Entity" - } - }, - "channelData": { - "description": "Contains channel-specific content.", - "title": "channelData" - }, - "action": { - "description": "Indicates whether the recipient of a contactRelationUpdate was added or removed from the\nsender's contact list.", - "type": "string", - "title": "action" - }, - "replyToId": { - "description": "Contains the ID of the message to which this message is a reply.", - "type": "string", - "title": "replyToId" - }, - "label": { - "description": "A descriptive label for the activity.", - "type": "string", - "title": "label" - }, - "valueType": { - "description": "The type of the activity's value object.", - "type": "string", - "title": "valueType" - }, - "value": { - "description": "A value that is associated with the activity.", - "title": "value" - }, - "name": { - "description": "The name of the operation associated with an invoke or event activity.", - "type": "string", - "title": "name" - }, - "relatesTo": { - "description": "A reference to another conversation or activity.", - "$ref": "#/definitions/botframework.json/definitions/ConversationReference", - "title": "relatesTo" - }, - "code": { - "description": "The a code for endOfConversation activities that indicates why the conversation ended.\nPossible values include: 'unknown', 'completedSuccessfully', 'userCancelled', 'botTimedOut',\n'botIssuedInvalidMessage', 'channelFailed'", - "type": "string", - "title": "code" - }, - "expiration": { - "description": "The time at which the activity should be considered to be \"expired\" and should not be\npresented to the recipient.", - "type": "string", - "format": "date-time", - "title": "expiration" - }, - "importance": { - "description": "The importance of the activity. Possible values include: 'low', 'normal', 'high'", - "type": "string", - "title": "importance" - }, - "deliveryMode": { - "description": "A delivery hint to signal to the recipient alternate delivery paths for the activity.\nThe default delivery mode is \"default\". Possible values include: 'normal', 'notification'", - "type": "string", - "title": "deliveryMode" - }, - "listenFor": { - "description": "List of phrases and references that speech and language priming systems should listen for", - "type": "array", - "title": "listenFor", - "items": { - "type": "string", - "title": "Phrase", - "description": "Phrase to listen for." - } - }, - "textHighlights": { - "description": "The collection of text fragments to highlight when the activity contains a ReplyToId value.", - "type": "array", - "title": "textHighlights", - "items": { - "$ref": "#/definitions/botframework.json/definitions/TextHighlight" - } - }, - "semanticAction": { - "$ref": "#/definitions/botframework.json/definitions/SemanticAction", - "description": "An optional programmatic action accompanying this request", - "title": "semanticAction" - } - } - } - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/sdk.uischema b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/sdk.uischema deleted file mode 100644 index 142495f58f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/sdk.uischema +++ /dev/null @@ -1,568 +0,0 @@ -{ - "$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", - "*" - ], - "subtitle": "Begin Dialog" - } - }, - "Microsoft.BeginSkill": { - "form": { - "helpLink": "https://aka.ms/bf-composer-docs-connect-skill", - "label": "Connect to a skill", - "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", - "subtitle": "Delete Properties" - } - }, - "Microsoft.DeleteProperty": { - "form": { - "helpLink": "https://aka.ms/bfc-using-memory", - "label": "Delete a property", - "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", - "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", - "*" - ], - "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", - "*" - ], - "subtitle": "For Each Page" - } - }, - "Microsoft.HttpRequest": { - "form": { - "helpLink": "https://aka.ms/bfc-using-http", - "label": "Send an HTTP request", - "order": [ - "method", - "url", - "body", - "headers", - "*" - ], - "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/bfc-debugging-bots", - "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", - "subtitle": "Set Properties" - } - }, - "Microsoft.SetProperty": { - "form": { - "helpLink": "https://aka.ms/bfc-using-memory", - "label": "Set a property", - "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" - ] - } - }, - "subtitle": "Switch Condition" - } - }, - "Microsoft.TraceActivity": { - "form": { - "helpLink": "https://aka.ms/bfc-debugging-bots", - "label": "Emit a trace event", - "subtitle": "Trace Activity" - } - }, - "Microsoft.AttachmentInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a file or an attachment", - "subtitle": "Attachment Input" - } - }, - "Microsoft.ChoiceInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt with multi-choice", - "subtitle": "Choice Input" - } - }, - "Microsoft.ConfirmInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for confirmation", - "subtitle": "Confirm Input" - } - }, - "Microsoft.DateTimeInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a date or a time", - "subtitle": "Date Time Input" - } - }, - "Microsoft.NumberInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a number", - "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", - "subtitle": "Text Input" - } - }, - "Microsoft.RegexRecognizer": { - "form": { - "hidden": [ - "entities" - ] - } - }, - "Microsoft.OnActivity": { - "form": { - "hidden": [ - "actions" - ], - "label": "Activities", - "order": [ - "condition", - "*" - ], - "subtitle": "Activity received" - } - }, - "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.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.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.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" - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/update-schema.ps1 b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/update-schema.ps1 deleted file mode 100644 index f25721e80a..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/update-schema.ps1 +++ /dev/null @@ -1,30 +0,0 @@ -param ( - [string]$runtime = "azurewebapp" -) -$SCHEMA_FILE="sdk.schema" -$UISCHEMA_FILE="sdk.uischema" -$BACKUP_SCHEMA_FILE="sdk-backup.schema" -$BACKUP_UISCHEMA_FILE="sdk-backup.uischema" - -Write-Host "Running schema merge on $runtime runtime." - -if (Test-Path $SCHEMA_FILE -PathType leaf) { Move-Item -Force -Path $SCHEMA_FILE -Destination $BACKUP_SCHEMA_FILE } -if (Test-Path $UISCHEMA_FILE -PathType leaf) { Move-Item -Force -Path $UISCHEMA_FILE -Destination $BACKUP_UISCHEMA_FILE } - -bf dialog:merge "*.schema" "!sdk-backup.schema" "*.uischema" "!sdk-backup.uischema" "!sdk.override.uischema" "../runtime/$runtime/*.csproj" -o $SCHEMA_FILE - -if (Test-Path $SCHEMA_FILE -PathType leaf) -{ - if (Test-Path $BACKUP_SCHEMA_FILE -PathType leaf) { Remove-Item -Force -Path $BACKUP_SCHEMA_FILE } - if (Test-Path $BACKUP_UISCHEMA_FILE -PathType leaf) { Remove-Item -Force -Path $BACKUP_UISCHEMA_FILE } - - Write-Host "Schema merged succesfully." - if (Test-Path $SCHEMA_FILE -PathType leaf) { Write-Host " Schema: $SCHEMA_FILE" } - if (Test-Path $UISCHEMA_FILE -PathType leaf) { Write-Host " UI Schema: $UISCHEMA_FILE" } -} -else -{ - Write-Host "Schema merge failed. Restoring previous versions." - if (Test-Path $BACKUP_SCHEMA_FILE -PathType leaf) { Move-Item -Force -Path $BACKUP_SCHEMA_FILE -Destination $SCHEMA_FILE } - if (Test-Path $BACKUP_UISCHEMA_FILE -PathType leaf) { Move-Item -Force -Path $BACKUP_UISCHEMA_FILE -Destination $UISCHEMA_FILE } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/update-schema.sh b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/update-schema.sh deleted file mode 100644 index 9d0f900012..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Schemas/update-schema.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -runtime=${runtime:-azurewebapp} -SCHEMA_FILE=sdk.schema -UISCHEMA_FILE=sdk.uischema -BACKUP_SCHEMA_FILE=sdk-backup.schema -BACKUP_UISCHEMA_FILE=sdk-backup.uischema - -while [ $# -gt 0 ]; do - if [[ $1 == *"-"* ]]; then - param="${1/-/}" - declare $param="$2" - fi - shift -done - -echo "Running schema merge on $runtime runtime." -[ -f "$SCHEMA_FILE" ] && mv "./$SCHEMA_FILE" "./$BACKUP_SCHEMA_FILE" -[ -f "$UISCHEMA_FILE" ] && mv "./$UISCHEMA_FILE" "./$BACKUP_UISCHEMA_FILE" - -bf dialog:merge "*.schema" "!sdk-backup.schema" "*.uischema" "!sdk-backup.uischema" "!sdk.override.uischema" "../runtime/$runtime/*.csproj" -o $SCHEMA_FILE - -if [ -f "$SCHEMA_FILE" ]; then - rm -rf "./$BACKUP_SCHEMA_FILE" - rm -rf "./$BACKUP_UISCHEMA_FILE" - echo "Schema merged succesfully." - [ -f "$SCHEMA_FILE" ] && echo " Schema: $SCHEMA_FILE" - [ -f "$UISCHEMA_FILE" ] && echo " UI Schema: $UISCHEMA_FILE" -else - echo "Schema merge failed. Restoring previous versions." - [ -f "$BACKUP_SCHEMA_FILE" ] && mv "./$BACKUP_SCHEMA_FILE" "./$SCHEMA_FILE" - [ -f "$BACKUP_UISCHEMA_FILE" ] && mv "./$BACKUP_UISCHEMA_FILE" "./$UISCHEMA_FILE" -fi diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Scripts/deploy.ps1 deleted file mode 100644 index bb6dc8aaaa..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Scripts/deploy.ps1 +++ /dev/null @@ -1,241 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path Microsoft.BotFramework.Composer.WebApp.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - -if (-not $botPath) { - # If don't provide bot path, then try to copy all dialogs except the runtime folder in parent folder to the publishing folder (bin\Realse\ Folder) - $botPath = '../..' -} - -$botPath = $(Join-Path $botPath '*') -Write-Host "Publishing dialogs from external bot project: $($botPath)" -Copy-Item -Path (Get-Item -Path $botPath -Exclude ('runtime', 'generated')).FullName -Destination $remoteBotPath -Recurse -Force -Container - -# Try to get luis config from appsettings -$settingsPath = $(Join-Path $remoteBotPath settings appsettings.json) -$settings = Get-Content $settingsPath | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# set feature configuration -$featureConfig = @{ } -if ($settings.feature) { - $featureConfig = $settings.feature -} -else { - # Enable all features to true by default - $featureConfig["UseTelementryLoggerMiddleware"] = $true - $featureConfig["UseTranscriptLoggerMiddleware"] = $true - $featureConfig["UseShowTypingMiddleware"] = $true - $featureConfig["UseInspectionMiddleware"] = $true - $featureConfig["UseCosmosDb"] = $true -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - Set-Location -Path $remoteBotPath - - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $models - } - - $luString = $models | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # create generated folder if not - if (!(Test-Path generated)) { - $null = New-Item -ItemType Directory -Force -Path generated - } - - # ensure bot cli is installed - if (Get-Command bf -errorAction SilentlyContinue) {} - else { - Write-Host "bf luis:build does not exist. Start installation..." - npm i -g @microsoft/botframework-cli - Write-Host "successfully" - } - - # Execute bf luis:build command - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog crosstrained --out ./generated --suffix $environment -f --region $luisAuthoringRegion - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - $settings = New-Object PSObject - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -$settings | Add-Member -Type NoteProperty -Force -Name 'feature' -Value $featureConfig -$settings | ConvertTo-Json -depth 100 | Out-File $settingsPath - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Startup.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Startup.cs deleted file mode 100644 index 65cbe93474..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/Startup.cs +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Adaptive.Conditions; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; - -//using Microsoft.BotFramework.Composer.CustomAction; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings?.BlobStorage?.ConnectionString) && ConfigSectionValid(settings?.BlobStorage?.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings?.BlobStorage?.ConnectionString, settings?.BlobStorage?.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings?.Feature?.UseShowTypingMiddleware == true) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IStorage storage) - { - if (settings?.Feature?.UseInspectionMiddleware == true) - { - adapter.Use(new InspectionMiddleware(new InspectionState(storage))); - } - } - - public IStorage ConfigureStorage(BotSettings settings) - { - IStorage storage; - if (ConfigSectionValid(settings?.CosmosDb?.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings?.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - return storage; - } - - public BotFrameworkHttpAdapter GetBotAdapter(IStorage storage, BotSettings settings, UserState userState, ConversationState conversationState, IServiceProvider s, TelemetryInitializerMiddleware telemetryInitializerMiddleware) - { - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(Configuration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, storage); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // This is for custom action component registration. - //ComponentRegistration.Add(new CustomActionComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings?.ApplicationInsights?.InstrumentationKey ?? string.Empty); - - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings?.Telemetry?.LogPersonalInformation ?? false); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings?.Telemetry?.LogActivities ?? false); - }); - - var storage = ConfigureStorage(settings); - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Configure bot loading path - var botDir = settings.Bot; - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - var defaultLocale = Configuration.GetValue("defaultLanguage") ?? "en-us"; - - services.AddSingleton(resourceExplorer); - - resourceExplorer.RegisterType("Microsoft.OnQnAMatch"); - - services.AddSingleton((s) => GetBotAdapter(storage, settings, userState, conversationState, s, s.GetService())); - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog, - defaultLocale, - removeRecipientMention)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseNamedPipes(System.Environment.GetEnvironmentVariable("APPSETTING_WEBSITE_SITE_NAME") + ".directline"); - app.UseWebSockets(); - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private static bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/packages/packages.json b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/azurewebapp/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/.gitignore b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerBot.cs deleted file mode 100644 index caecd82ba5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerBot.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Security.Claims; -using System.Security.Principal; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - private readonly IBotTelemetryClient telemetryClient; - private readonly string defaultLocale; - private readonly bool removeRecipientMention; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, IBotTelemetryClient telemetryClient, string rootDialog, string defaultLocale, bool removeRecipientMention = false) - { - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - this.defaultLocale = defaultLocale; - this.telemetryClient = telemetryClient; - this.removeRecipientMention = removeRecipientMention; - - LoadRootDialogAsync(); - this.dialogManager.InitialTurnState.Set(skillClient); - this.dialogManager.InitialTurnState.Set(conversationIdFactory); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - AdaptiveDialog rootDialog = (AdaptiveDialog)this.dialogManager.RootDialog; - if (turnContext.TurnState.Get(BotAdapter.BotIdentityKey) is ClaimsIdentity claimIdentity && SkillValidation.IsSkillClaim(claimIdentity.Claims)) - { - rootDialog.AutoEndDialog = true; - } - - if (this.removeRecipientMention && turnContext?.Activity?.Type == "message") - { - turnContext.Activity.RemoveRecipientMention(); - } - - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration() - .UseLanguagePolicy(new LanguagePolicy(defaultLocale)); - - if (telemetryClient != null) - { - dialogManager.UseTelemetry(this.telemetryClient); - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerBotPathExtensions.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerBotPathExtensions.cs deleted file mode 100644 index f2d2e953fc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerBotPathExtensions.cs +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Extensions.Configuration; -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.Core -{ - /// - /// Bot path adapter, for development environment, use '../../' as the bot path, for deployment and production environment, use 'ComposerDialogs' as bot path - /// - public static class ComposerBotPathExtensions - { - public static IConfigurationBuilder UseBotPathConverter(this IConfigurationBuilder builder, bool isDevelopment = true) - { - var settings = new Dictionary(); - if (isDevelopment) - { - settings["bot"] = "../../"; - } - else - { - settings["bot"] = "ComposerDialogs"; - } - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerSettingsExtensions.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerSettingsExtensions.cs deleted file mode 100644 index d827eaf60b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/ComposerSettingsExtensions.cs +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Extensions.Configuration; -using System; -using System.Collections.Generic; -using System.IO; - -namespace Microsoft.BotFramework.Composer.Core -{ - public static class ComposerSettingsExtensions - { - /// - /// Setup configuration to utilize the settings file generated by bf luis:build and qna:build. This is a luis and qnamaker settings extensions adapter aligning with Composer customized settings. - /// - /// - /// This will pick up LUIS_AUTHORING_REGION or --region settings as the setting to target. - /// This will pick up --environment as the environment to target. If environment is Development it will use the name of the logged in user. - /// This will pick up --root as the root folder to run in. - /// - /// Configuration builder to modify. - /// Modified configuration builder. - public static IConfigurationBuilder UseComposerSettings(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var botRoot = configuration.GetValue("bot") ?? "."; - var luisRegion = configuration.GetValue("LUIS_AUTHORING_REGION") ?? configuration.GetValue("luis:authoringRegion") ?? configuration.GetValue("luis:region") ?? "westus"; - var qnaRegion = configuration.GetValue("qna:qnaRegion") ?? "westus"; - var environment = configuration.GetValue("luis:environment") ?? Environment.UserName; - var settings = new Dictionary(); - var luisEndpoint = configuration.GetValue("luis:endpoint"); - if (String.IsNullOrWhiteSpace(luisEndpoint)) - { - luisEndpoint = $"https://{luisRegion}.api.cognitive.microsoft.com"; - } - settings["luis:endpoint"] = luisEndpoint; - settings["BotRoot"] = botRoot; - builder.AddInMemoryCollection(settings); - if (environment == "Development") - { - environment = Environment.UserName; - } - - var luisSettingsPath = Path.GetFullPath(Path.Combine(botRoot, "generated", $"luis.settings.{environment.ToLower()}.{luisRegion}.json")); - var luisSettingsFile = new FileInfo(luisSettingsPath); - if (luisSettingsFile.Exists) - { - builder.AddJsonFile(luisSettingsFile.FullName, optional: false, reloadOnChange: true); - } - - var qnaSettingsPath = Path.GetFullPath(Path.Combine(botRoot, "generated", $"qnamaker.settings.{environment.ToLower()}.{qnaRegion}.json")); - var qnaSettingsFile = new FileInfo(qnaSettingsPath); - if (qnaSettingsFile.Exists) - { - builder.AddJsonFile(qnaSettingsFile.FullName, optional: false, reloadOnChange: true); - } - - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/LuisConfig.cs deleted file mode 100644 index bc2ff6c834..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Microsoft.BotFramework.Composer.Core.csproj b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Microsoft.BotFramework.Composer.Core.csproj deleted file mode 100644 index a4f4ad5b3e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Microsoft.BotFramework.Composer.Core.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - netstandard2.0 - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BlobStorageConfiguration.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BlobStorageConfiguration.cs deleted file mode 100644 index e6ab40402f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BlobStorageConfiguration.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BotFeatureSettings.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BotFeatureSettings.cs deleted file mode 100644 index 1073ae5786..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BotFeatureSettings.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotFeatureSettings - { - // Use ShowTypingMiddleware - public bool UseShowTypingMiddleware { get; set; } - - // Use InspectionMiddleware - public bool UseInspectionMiddleware { get; set; } - - // Use RemoveRecipientMention Activity Extensions - public bool RemoveRecipientMention { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BotSettings.cs deleted file mode 100644 index dcb6394ed3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/Settings/BotSettings.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotSettings - { - public BotFeatureSettings Feature { get; set; } - - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration ApplicationInsights { get; set; } - - public AdditionalTelemetryConfiguration Telemetry { get; set; } - - public string Bot { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - - public class AdditionalTelemetryConfiguration - { - public bool LogPersonalInformation { get; set; } - - public bool LogActivities { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/SkillConversationIdFactory.cs deleted file mode 100644 index dd4a5ed612..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/core/SkillConversationIdFactory.cs +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Skills; -using Newtonsoft.Json.Linq; - -namespace Microsoft.BotFramework.Composer.Core -{ - /// - /// A that uses to store - /// and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly IStorage _storage; - - public SkillConversationIdFactory(IStorage storage) - { - _storage = storage ?? throw new ArgumentNullException(nameof(storage)); - } - - public override async Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - if (options == null) - { - throw new ArgumentNullException(nameof(options)); - } - - // Create the storage key based on the SkillConversationIdFactoryOptions. - var conversationReference = options.Activity.GetConversationReference(); - var skillConversationId = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{conversationReference.Conversation.Id}-{conversationReference.ChannelId}-skillconvo"; - - // Create the SkillConversationReference instance. - var skillConversationReference = new SkillConversationReference - { - ConversationReference = conversationReference, - OAuthScope = options.FromBotOAuthScope - }; - - // Store the SkillConversationReference using the skillConversationId as a key. - var skillConversationInfo = new Dictionary { { skillConversationId, JObject.FromObject(skillConversationReference) } }; - await _storage.WriteAsync(skillConversationInfo, cancellationToken).ConfigureAwait(false); - - // Return the generated skillConversationId (that will be also used as the conversation ID to call the skill). - return skillConversationId; - } - - public override async Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - if (string.IsNullOrWhiteSpace(skillConversationId)) - { - throw new ArgumentNullException(nameof(skillConversationId)); - } - - // Get the SkillConversationReference from storage for the given skillConversationId. - var skillConversationInfo = await _storage.ReadAsync(new[] { skillConversationId }, cancellationToken).ConfigureAwait(false); - if (skillConversationInfo.Any()) - { - var conversationInfo = ((JObject)skillConversationInfo[skillConversationId]).ToObject(); - return conversationInfo; - } - - return null; - } - - public override async Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - // Delete the SkillConversationReference from storage. - await _storage.DeleteAsync(new[] { skillConversationId }, cancellationToken).ConfigureAwait(false); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Action/MultiplyDialog.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Action/MultiplyDialog.cs deleted file mode 100644 index 81768d1b48..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Action/MultiplyDialog.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Threading; -using System.Threading.Tasks; -using AdaptiveExpressions.Properties; -using Microsoft.Bot.Builder.Dialogs; -using Newtonsoft.Json; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - /// - /// Custom command which takes takes 2 data bound arguments (arg1 and arg2) and multiplies them returning that as a databound result. - /// - public class MultiplyDialog : Dialog - { - [JsonConstructor] - public MultiplyDialog([CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) - : base() - { - // enable instances of this command as debug break point - this.RegisterSourceLocation(sourceFilePath, sourceLineNumber); - } - - [JsonProperty("$kind")] - public const string Kind = "MultiplyDialog"; - - /// - /// Gets or sets memory path to bind to arg1 (ex: conversation.width). - /// - /// - /// Memory path to bind to arg1 (ex: conversation.width). - /// - [JsonProperty("arg1")] - public NumberExpression Arg1 { get; set; } - - /// - /// Gets or sets memory path to bind to arg2 (ex: conversation.height). - /// - /// - /// Memory path to bind to arg2 (ex: conversation.height). - /// - [JsonProperty("arg2")] - public NumberExpression Arg2 { get; set; } - - /// - /// Gets or sets caller's memory path to store the result of this step in (ex: conversation.area). - /// - /// - /// Caller's memory path to store the result of this step in (ex: conversation.area). - /// - [JsonProperty("resultProperty")] - public StringExpression ResultProperty { get; set; } - - public override Task BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken)) - { - var arg1 = Arg1.GetValue(dc.State); - var arg2 = Arg2.GetValue(dc.State); - - var result = Convert.ToInt32(arg1) * Convert.ToInt32(arg2); - if (this.ResultProperty != null) - { - dc.State.SetValue(this.ResultProperty.GetValue(dc.State), result); - } - - return dc.EndDialogAsync(result: result, cancellationToken: cancellationToken); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/CustomAction.sln b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/CustomAction.sln deleted file mode 100644 index 1b2af1c93b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/CustomAction.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30011.22 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "customaction", "Microsoft.BotFramework.Composer.CustomAction.csproj", "{2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {83C7CDB7-7F32-4E64-9D6D-7752806C37D6} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/CustomActionComponentRegistration.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/CustomActionComponentRegistration.cs deleted file mode 100644 index d14abbe6b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/CustomActionComponentRegistration.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Newtonsoft.Json; -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - public class CustomActionComponentRegistration : ComponentRegistration, IComponentDeclarativeTypes - { - public IEnumerable GetDeclarativeTypes(ResourceExplorer resourceExplorer) - { - // Actions - yield return new DeclarativeType(MultiplyDialog.Kind); - } - - public IEnumerable GetConverters(ResourceExplorer resourceExplorer, SourceContext sourceContext) - { - yield break; - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj deleted file mode 100644 index cd8d948b91..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Library - netcoreapp3.1 - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Schemas/MultiplyDialog.schema b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Schemas/MultiplyDialog.schema deleted file mode 100644 index e8e651e601..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/customaction/Schemas/MultiplyDialog.schema +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/component.schema", - "$role": "implements(Microsoft.IDialog)", - "title": "Multiply", - "description": "This will return the result of arg1*arg2", - "type": "object", - "additionalProperties": false, - "properties": { - "arg1": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg1", - "description": "Value from callers memory to use as arg 1" - }, - "arg2": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg2", - "description": "Value from callers memory to use as arg 2" - }, - "resultProperty": { - "$ref": "schema:#/definitions/stringExpression", - "title": "Result", - "description": "Value from callers memory to store the result" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ActionsTests.cs deleted file mode 100644 index 0767f86d7e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ActionsTests.cs +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ControllingConversationTests.cs deleted file mode 100644 index 8922c9b099..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ControllingConversationTests.cs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .Send("08") - .AssertReply("In continue loop, which only outputs dual.") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 3 value: 4") - .AssertReply("index: 5 value: 6") - .AssertReply("In break loop, which breaks when index > 2") - .AssertReply("index: 0 value: 1") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 2 value: 3") - .AssertReply("done") - .Send("09") - .AssertReply("counter: 1") - .AssertReply("counter: 2") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/InputsTests.cs deleted file mode 100644 index f22f7c83bf..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/InputsTests.cs +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st 2019") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/MessageTests.cs deleted file mode 100644 index 09b27ca711..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/MessageTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj deleted file mode 100644 index e444ece921..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/SkillConversationIdFactoryTests.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/SkillConversationIdFactoryTests.cs deleted file mode 100644 index 2bbc8aaedd..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/SkillConversationIdFactoryTests.cs +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Schema; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Claims; -using System.Threading; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class SkillConversationIdFactoryTests - { - private readonly SkillConversationIdFactory _idFactory = new SkillConversationIdFactory(new MemoryStorage()); - private string _botId = Guid.NewGuid().ToString("N"); - private string _skillId = Guid.NewGuid().ToString("N"); - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - } - - [TestMethod] - public async Task ShouldCreateCorrectConversationId() - { - var claimsIdentity = new ClaimsIdentity(); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AudienceClaim, _botId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AppIdClaim, _skillId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.ServiceUrlClaim, "http://testbot.com/api/messages")); - var conversationReference = new ConversationReference - { - Conversation = new ConversationAccount(id: Guid.NewGuid().ToString("N")), - ServiceUrl = "http://testbot.com/api/messages" - }; - - var activity = (Activity)Activity.CreateMessageActivity(); - activity.ApplyConversationReference(conversationReference); - var skill = new BotFrameworkSkill() - { - AppId = _skillId, - Id = "skill", - SkillEndpoint = new Uri("http://testbot.com/api/messages") - }; - - var options = new SkillConversationIdFactoryOptions - { - FromBotOAuthScope = _botId, - FromBotId = _botId, - Activity = activity, - BotFrameworkSkill = skill - }; - - var conversationId = await _idFactory.CreateSkillConversationIdAsync(options, CancellationToken.None); - Assert.IsNotNull(conversationId); - } - - [TestMethod] - public async Task ShouldGetConversationReferenceFromConversationId() - { - var claimsIdentity = new ClaimsIdentity(); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AudienceClaim, _botId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AppIdClaim, _skillId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.ServiceUrlClaim, "http://testbot.com/api/messages")); - var conversationReference = new ConversationReference - { - Conversation = new ConversationAccount(id: Guid.NewGuid().ToString("N")), - ServiceUrl = "http://testbot.com/api/messages" - }; - - var activity = (Activity)Activity.CreateMessageActivity(); - activity.ApplyConversationReference(conversationReference); - var skill = new BotFrameworkSkill() - { - AppId = _skillId, - Id = "skill", - SkillEndpoint = new Uri("http://testbot.com/api/messages") - }; - - var options = new SkillConversationIdFactoryOptions - { - FromBotOAuthScope = _botId, - FromBotId = _botId, - Activity = activity, - BotFrameworkSkill = skill - }; - - var conversationId = await _idFactory.CreateSkillConversationIdAsync(options, CancellationToken.None); - Assert.IsNotNull(conversationId); - - var skillConversationRef = await _idFactory.GetSkillConversationReferenceAsync(conversationId, CancellationToken.None); - Assert.IsTrue(RefEquals(skillConversationRef.ConversationReference, conversationReference)); - } - - [TestMethod] - public async Task ShouldNotGetReferenceAfterDeleted() - { - var claimsIdentity = new ClaimsIdentity(); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AudienceClaim, _botId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.AppIdClaim, _skillId)); - claimsIdentity.AddClaim(new Claim(AuthenticationConstants.ServiceUrlClaim, "http://testbot.com/api/messages")); - var conversationReference = new ConversationReference - { - Conversation = new ConversationAccount(id: Guid.NewGuid().ToString("N")), - ServiceUrl = "http://testbot.com/api/messages" - }; - - var activity = (Activity)Activity.CreateMessageActivity(); - activity.ApplyConversationReference(conversationReference); - var skill = new BotFrameworkSkill() - { - AppId = _skillId, - Id = "skill", - SkillEndpoint = new Uri("http://testbot.com/api/messages") - }; - - var options = new SkillConversationIdFactoryOptions - { - FromBotOAuthScope = _botId, - FromBotId = _botId, - Activity = activity, - BotFrameworkSkill = skill - }; - - var conversationId = await _idFactory.CreateSkillConversationIdAsync(options, CancellationToken.None); - Assert.IsNotNull(conversationId); - - var skillConversationRef = await _idFactory.GetSkillConversationReferenceAsync(conversationId, CancellationToken.None); - Assert.IsTrue(RefEquals(skillConversationRef.ConversationReference, conversationReference)); - - await _idFactory.DeleteConversationReferenceAsync(conversationId, CancellationToken.None); - - var skillConversationRefAfterDeleted = await _idFactory.GetSkillConversationReferenceAsync(conversationId, CancellationToken.None); - Assert.IsNull(skillConversationRefAfterDeleted); - } - - private bool RefEquals(ConversationReference ref1, ConversationReference ref2) - { - return ref1.Conversation.Id == ref2.Conversation.Id && ref1.ServiceUrl == ref2.ServiceUrl; - } - } -} - diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ToDoBotTests.cs deleted file mode 100644 index 00660fc3b5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/runtime/tests/ToDoBotTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json deleted file mode 100644 index 86871bc405..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "functionapp", - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "kind": "functionapp", - "httpsOnly": true - }, - "resources": [ - { - "name": "appsettings", - "type": "config", - "apiVersion": "2015-08-01", - "dependsOn": [ - "[concat('Microsoft.Web/Sites/', variables('webAppName'))]" - ], - "properties": { - "FUNCTIONS_EXTENSION_VERSION": "~3", - "FUNCTIONS_WORKER_RUNTIME": "dotnet", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components/', parameters('appInsightsName')), '2015-05-01').InstrumentationKey]", - "MicrosoftAppId": "[parameters('appId')]", - "MicrosoftAppPassword": "[parameters('appSecret')]" - } - } - ] - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index d385e94444..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,521 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateQnAResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "qnaMakerServiceName": { - "type": "string", - "defaultValue": "[concat(parameters('name'), '-qna')]" - }, - "qnaMakerServiceSku": { - "type": "string", - "defaultValue": "S0" - }, - "qnaMakerServiceLocation": { - "type": "string", - "defaultValue": "westus" - }, - "qnaMakerSearchName": { - "type": "string", - "defaultValue": "[concat(parameters('name'), '-search')]" - }, - "qnaMakerSearchSku": { - "type": "string", - "defaultValue": "standard" - }, - "qnaMakerSearchLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "qnaMakerWebAppName": { - "type": "string", - "defaultValue": "[concat(parameters('name'), '-qnahost')]" - }, - "qnaMakerWebAppLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]", - "qnaMakerSearchName": "[toLower(replace(parameters('qnaMakerSearchName'), '_', ''))]", - "qnaMakerWebAppName": "[replace(parameters('qnaMakerWebAppName'), '_', '')]" - }, - "resources": [ - { - "apiVersion": "2018-02-01", - "name": "1d41002f-62a1-49f3-bd43-2f3f32a19cbb", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - }, - { - "comments": "Cognitive service key for all QnA Maker knowledgebases.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "QnAMaker", - "apiVersion": "2017-04-18", - "name": "[parameters('qnaMakerServiceName')]", - "location": "[parameters('qnaMakerServiceLocation')]", - "sku": { - "name": "[parameters('qnaMakerServiceSku')]" - }, - "properties": { - "apiProperties": { - "qnaRuntimeEndpoint": "[concat('https://',reference(resourceId('Microsoft.Web/sites', variables('qnaMakerWebAppName'))).hostNames[0])]" - } - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/Sites', variables('qnaMakerWebAppName'))]", - "[resourceId('Microsoft.Search/searchServices/', variables('qnaMakerSearchName'))]", - "[resourceId('microsoft.insights/components/', parameters('appInsightsName'))]" - ], - "condition": "[parameters('shouldCreateQnAResource')]" - }, - { - "comments": "Search service for QnA Maker service.", - "type": "Microsoft.Search/searchServices", - "apiVersion": "2015-08-19", - "name": "[variables('qnaMakerSearchName')]", - "location": "[parameters('qnaMakerSearchLocation')]", - "sku": { - "name": "[parameters('qnaMakerSearchSku')]" - }, - "properties": { - "replicaCount": 1, - "partitionCount": 1, - "hostingMode": "default" - }, - "condition": "[parameters('shouldCreateQnAResource')]" - }, - { - "comments": "Web app for QnA Maker service.", - "type": "Microsoft.Web/sites", - "apiVersion": "2016-08-01", - "name": "[variables('qnaMakerWebAppName')]", - "location": "[parameters('qnaMakerWebAppLocation')]", - "properties": { - "enabled": true, - "name": "[variables('qnaMakerWebAppName')]", - "hostingEnvironment": "", - "serverFarmId": "[concat('/subscriptions/', Subscription().SubscriptionId,'/resourcegroups/', resourceGroup().name, '/providers/Microsoft.Web/serverfarms/', variables('servicePlanName'))]", - "siteConfig": { - "cors": { - "allowedOrigins": [ - "*" - ] - } - } - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "condition": "[parameters('shouldCreateQnAResource')]", - "resources": [ - { - "apiVersion": "2016-08-01", - "name": "appsettings", - "type": "config", - "dependsOn": [ - "[resourceId('Microsoft.Web/Sites', variables('qnaMakerWebAppName'))]", - "[resourceId('Microsoft.Insights/components', parameters('appInsightsName'))]", - "[resourceId('Microsoft.Search/searchServices/', variables('qnaMakerSearchName'))]" - ], - "properties": { - "AzureSearchName": "[variables('qnaMakerSearchName')]", - "AzureSearchAdminKey": "[listAdminKeys(resourceId('Microsoft.Search/searchServices/', variables('qnaMakerSearchName')), '2015-08-19').primaryKey]", - "UserAppInsightsKey": "[reference(resourceId('Microsoft.Insights/components/', parameters('appInsightsName')), '2015-05-01').InstrumentationKey]", - "UserAppInsightsName": "[parameters('appInsightsName')]", - "UserAppInsightsAppId": "[reference(resourceId('Microsoft.Insights/components/', parameters('appInsightsName')), '2015-05-01').AppId]", - "PrimaryEndpointKey": "[concat(variables('qnaMakerWebAppName'), '-PrimaryEndpointKey')]", - "SecondaryEndpointKey": "[concat(variables('qnaMakerWebAppName'), '-SecondaryEndpointKey')]", - "DefaultAnswer": "No good match found in KB.", - "QNAMAKER_EXTENSION_VERSION": "latest" - }, - "condition": "[parameters('shouldCreateQnAResource')]" - } - ] - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]", - "endpoint": "[if(parameters('shouldCreateLuisResource'), reference(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName'))).endpoint, '')]", - "authoringEndpoint": "[if(parameters('shouldCreateAuthoringResource'), reference(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName'))).endpoint, '')]" - } - }, - "qna": { - "type": "object", - "value": { - "endpoint": "[if(parameters('shouldCreateQnAResource'), concat('https://', reference(resourceId('Microsoft.Web/sites', variables('qnaMakerWebAppName'))).hostNames[0]), '')]", - "subscriptionKey": "[if(parameters('shouldCreateQnAResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('qnaMakerServiceName')),'2017-04-18').key1, '')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/package.json b/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/package.json deleted file mode 100644 index 13b5294de5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "azure_provision", - "version": "1.0.0", - "description": "provision to azure cloud", - "main": "provisionComposer.js", - "license": "MIT", - "scripts": { - "start": "node provisionComposer.js" - }, - "dependencies": { - "@azure/arm-appinsights": "^2.1.0", - "@azure/arm-botservice": "^1.0.0", - "@azure/arm-resources": "^2.1.0", - "@azure/graph": "^5.0.1", - "@azure/ms-rest-nodeauth": "^3.0.3", - "@types/fs-extra": "^8.1.0", - "chalk": "^4.0.0", - "fs-extra": "^8.1.0", - "minimist": "^1.2.5", - "ora": "^4.0.4", - "request-promise": "^4.2.5" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/provisionComposer.js b/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/provisionComposer.js deleted file mode 100644 index 9e85606907..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/scripts/provisionComposer.js +++ /dev/null @@ -1,661 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const chalk = require('chalk'); -const fs = require('fs-extra'); -const msRestNodeAuth = require('@azure/ms-rest-nodeauth'); -const argv = require('minimist')(process.argv.slice(2)); -const path = require('path'); -const rp = require('request-promise'); -const { promisify } = require('util'); -const { GraphRbacManagementClient } = require('@azure/graph'); -const { ApplicationInsightsManagementClient } = require('@azure/arm-appinsights'); -const { AzureBotService } = require('@azure/arm-botservice'); -const { ResourceManagementClient } = require('@azure/arm-resources'); -const readFile = promisify(fs.readFile); -const ora = require('ora'); - -const logger = (msg) => { - if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR) { - console.log(chalk.red(msg.message)); - } else if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS) { - console.log(chalk.white(msg.message)); - } else { - console.log(chalk.green(msg.message)); - } -}; - -const usage = () => { - const options = [ - ['subscriptionId', 'Azure Subscription Id'], - ['name', 'Project Name'], - ['appPassword', '16 character password'], - ['environment', 'Environment name (Defaults to dev)'], - ['location', 'Azure Region (Defaults to westus)'], - ['appId', 'Microsoft App ID (Will create if absent)'], - ['tenantId', 'ID of your tenant if required (will choose first in list by default)'], - ['createLuisResource', 'Create a LUIS resource? Default true'], - ['createLuisAuthoringResource', 'Create a LUIS authoring resource? Default true'], - ['createCosmosDb', 'Create a CosmosDB? Default true'], - ['createStorage', 'Create a storage account? Default true'], - ['createAppInsights', 'Create an AppInsights resource? Default true'], - ['createQnAResource', 'Create a QnA resource? Default true'], - [ - 'customArmTemplate', - 'Path to runtime ARM template. By default it will use an Azure WebApp template. Pass `DeploymentTemplates/function-template-with-preexisting-rg.json` for Azure Functions or your own template for a custom deployment.', - ], - ]; - - const instructions = [ - ``, - chalk.bold('Provision Azure resources for use with Bot Framework Composer bots'), - `* This script will create a new resource group and the necessary Azure resources needed to operate a Bot Framework bot in the cloud.`, - `* Use this to create a publishing profile used in Composer's "Publish" toolbar.`, - ``, - chalk.bold(`Basic Usage:`), - chalk.greenBright(`node provisionComposer --subscriptionId=`) + - chalk.yellow('') + - chalk.greenBright(' --name=') + - chalk.yellow('') + - chalk.greenBright(' --appPassword=') + - chalk.yellow('<16 character password>'), - ``, - chalk.bold(`All options:`), - ...options.map((option) => { - return chalk.greenBright('--' + option[0]) + '\t' + chalk.yellow(option[1]); - }), - ]; - - console.log(instructions.join('\n')); -}; - -// check for required parameters -if (Object.keys(argv).length === 0) { - return usage(); -} - -if (!argv.name || !argv.subscriptionId || !argv.appPassword) { - return usage(); -} - -// Get required fields from the arguments -const subId = argv.subscriptionId; -const name = argv.name.toString(); -const appPassword = argv.appPassword; - -// Get optional fields from the arguments -const environment = argv.environment || 'dev'; -const location = argv.location || 'westus'; -const appId = argv.appId; // MicrosoftAppId - generated if left blank - -// Get option flags -const createLuisResource = argv.createLuisResource == 'false' ? false : true; -const createLuisAuthoringResource = argv.createLuisAuthoringResource == 'false' ? false : true; -const createCosmosDb = argv.createCosmosDb == 'false' ? false : true; -const createStorage = argv.createStorage == 'false' ? false : true; -const createAppInsights = argv.createAppInsights == 'false' ? false : true; -const createQnAResource = argv.createQnAResource == 'false' ? false : true; -var tenantId = argv.tenantId ? argv.tenantId : ''; - -const templatePath = - argv.customArmTemplate || path.join(__dirname, 'DeploymentTemplates', 'template-with-preexisting-rg.json'); - -const BotProjectDeployLoggerType = { - // Logger Type for Provision - PROVISION_INFO: 'PROVISION_INFO', - PROVISION_ERROR: 'PROVISION_ERROR', - PROVISION_WARNING: 'PROVISION_WARNING', - PROVISION_SUCCESS: 'PROVISION_SUCCESS', - PROVISION_ERROR_DETAILS: 'PROVISION_ERROR_DETAILS', -}; - -/** - * Create a Bot Framework registration - * @param {} graphClient - * @param {*} displayName - * @param {*} appPassword - */ -const createApp = async (graphClient, displayName, appPassword) => { - try { - const createRes = await graphClient.applications.create({ - displayName: displayName, - passwordCredentials: [ - { - value: appPassword, - startDate: new Date(), - endDate: new Date(new Date().setFullYear(new Date().getFullYear() + 2)), - }, - ], - availableToOtherTenants: true, - replyUrls: ['https://token.botframework.com/.auth/web/redirect'], - }); - return createRes; - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: err.body.message, - }); - return false; - } -}; - -/** - * Create an Azure resources group - * @param {} client - * @param {*} location - * @param {*} resourceGroupName - */ -const createResourceGroup = async (client, location, resourceGroupName) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Creating resource group ...`, - }); - const param = { - location: location, - }; - - return await client.resourceGroups.createOrUpdate(resourceGroupName, param); -}; - -/** - * Format parameters - * @param {} scope - */ -const pack = (scope) => { - return { - value: scope, - }; -}; - -const unpackObject = (output) => { - const unpacked = {}; - for (const key in output) { - const objValue = output[key]; - if (objValue.value) { - unpacked[key] = objValue.value; - } - } - return unpacked; -}; - -/** - * For more information about this api, please refer to this doc: https://docs.microsoft.com/en-us/rest/api/resources/Tenants/List - * @param {*} accessToken - */ -const getTenantId = async (accessToken) => { - if (!accessToken) { - throw new Error( - 'Error: Missing access token. Please provide a non-expired Azure access token. Tokens can be obtained by running az account get-access-token' - ); - } - if (!subId) { - throw new Error(`Error: Missing subscription Id. Please provide a valid Azure subscription id.`); - } - try { - const tenantUrl = `https://management.azure.com/subscriptions/${subId}?api-version=2020-01-01`; - const options = { - headers: { Authorization: `Bearer ${accessToken}` }, - }; - const response = await rp.get(tenantUrl, options); - const jsonRes = JSON.parse(response); - if (jsonRes.tenantId === undefined) { - throw new Error(`No tenants found in the account.`); - } - return jsonRes.tenantId; - } catch (err) { - throw new Error(`Get Tenant Id Failed, details: ${getErrorMesssage(err)}`); - } -}; - -const getDeploymentTemplateParam = ( - appId, - appPwd, - location, - name, - shouldCreateAuthoringResource, - shouldCreateLuisResource, - shouldCreateQnAResource, - useAppInsights, - useCosmosDb, - useStorage -) => { - return { - appId: pack(appId), - appSecret: pack(appPwd), - appServicePlanLocation: pack(location), - botId: pack(name), - shouldCreateAuthoringResource: pack(shouldCreateAuthoringResource), - shouldCreateLuisResource: pack(shouldCreateLuisResource), - shouldCreateQnAResource: pack(shouldCreateQnAResource), - useAppInsights: pack(useAppInsights), - useCosmosDb: pack(useCosmosDb), - useStorage: pack(useStorage), - }; -}; - -/** - * Validate the deployment using the Azure API - */ -const validateDeployment = async (client, resourceGroupName, deployName, templateParam) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Validating Azure deployment ...', - }); - - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - return await client.deployments.validate(resourceGroupName, deployName, deployParam); -}; - -/** - * Using an ARM template, provision a bunch of resources - */ -const createDeployment = async (client, resourceGroupName, deployName, templateParam) => { - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - - return await client.deployments.createOrUpdate(resourceGroupName, deployName, deployParam); -}; - -/** - * Format the results into the expected shape - */ -const updateDeploymentJsonFile = async (client, resourceGroupName, deployName, appId, appPwd) => { - const outputs = await client.deployments.get(resourceGroupName, deployName); - if (outputs && outputs.properties && outputs.properties.outputs) { - const outputResult = outputs.properties.outputs; - const applicationResult = { - MicrosoftAppId: appId, - MicrosoftAppPassword: appPwd, - }; - const outputObj = unpackObject(outputResult); - - if (!createAppInsights) { - delete outputObj.applicationInsights; - } - if (!createCosmosDb) { - delete outputObj.cosmosDb; - } - if (!createLuisAuthoringResource && !createLuisResource) { - delete outputObj.luis; - } - if (!createStorage) { - delete outputObj.blobStorage; - } - const result = {}; - Object.assign(result, outputObj, applicationResult); - return result; - } else { - return null; - } -}; - -const provisionFailed = (msg) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: chalk.bold('** Provision failed **'), - }); -}; - -const getErrorMesssage = (err) => { - if (err.body) { - if (err.body.error) { - if (err.body.error.details) { - const details = err.body.error.details; - let errMsg = ''; - for (let detail of details) { - errMsg += detail.message; - } - return errMsg; - } else { - return err.body.error.message; - } - } else { - return JSON.stringify(err.body, null, 2); - } - } else { - return JSON.stringify(err, null, 2); - } -}; - -/** - * Provision a set of Azure resources for use with a bot - */ -const create = async ( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource = true, - createLuisAuthoringResource = true, - createQnAResource = true, - createCosmosDb = true, - createStorage = true, - createAppInsights = true -) => { - // If tenantId is empty string, get tenanId from API - if (!tenantId) { - const token = await creds.getToken(); - const accessToken = token.accessToken; - // the returned access token will almost surely have a tenantId. - // use this as the default if one isn't specified. - if (token.tenantId) { - tenantId = token.tenantId; - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Using Tenant ID: ${tenantId}`, - }); - } else { - tenantId = await getTenantId(accessToken); - } - } - - const graphCreds = new msRestNodeAuth.DeviceTokenCredentials( - creds.clientId, - tenantId, - creds.username, - 'graph', - creds.environment, - creds.tokenCache - ); - const graphClient = new GraphRbacManagementClient(graphCreds, tenantId, { - baseUri: 'https://graph.windows.net', - }); - - // If the appId is not specified, create one - if (!appId) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Creating App Registration ...', - }); - - // create the app registration - const appCreated = await createApp(graphClient, name, appPassword); - if (appCreated === false) { - return provisionFailed(); - } - - // use the newly created app - appId = appCreated.appId; - } - - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Create App Id Success! ID: ${appId}`, - }); - - const resourceGroupName = `${name}-${environment}`; - - // timestamp will be used as deployment name - const timeStamp = new Date().getTime().toString(); - const client = new ResourceManagementClient(creds, subId); - - // Create a resource group to contain the new resources - try { - const rpres = await createResourceGroup(client, location, resourceGroupName); - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err), - }); - return provisionFailed(); - } - - // Caste the parameters into the right format - const deploymentTemplateParam = getDeploymentTemplateParam( - appId, - appPassword, - location, - name, - createLuisAuthoringResource, - createQnAResource, - createLuisResource, - createAppInsights, - createCosmosDb, - createStorage - ); - - // Validate the deployment using the Azure API - const validation = await validateDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - - // Handle validation errors - if (validation.error) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error.message}`, - }); - if (validation.error.details) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS, - message: JSON.stringify(validation.error.details, null, 2), - }); - } - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - - // Create the entire stack of resources inside the new resource group - // this is controlled by an ARM template identified in templatePath - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Deploying Azure services (this could take a while)...`, - }); - const spinner = ora().start(); - try { - const deployment = await createDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - // Handle errors - if (deployment._response.status != 200) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Template is not valid with provided parameters. Review the log for more information.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error}`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - } catch (err) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err), - }); - return provisionFailed(); - } - - // If application insights created, update the application insights settings in azure bot service - if (createAppInsights) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Linking Application Insights settings to Bot Service ...`, - }); - - const appinsightsClient = new ApplicationInsightsManagementClient(creds, subId); - const appComponents = await appinsightsClient.components.get(resourceGroupName, resourceGroupName); - const appinsightsId = appComponents.appId; - const appinsightsInstrumentationKey = appComponents.instrumentationKey; - const apiKeyOptions = { - name: `${resourceGroupName}-provision-${timeStamp}`, - linkedReadProperties: [ - `/subscriptions/${subId}/resourceGroups/${resourceGroupName}/providers/microsoft.insights/components/${resourceGroupName}/api`, - `/subscriptions/${subId}/resourceGroups/${resourceGroupName}/providers/microsoft.insights/components/${resourceGroupName}/agentconfig`, - ], - linkedWriteProperties: [ - `/subscriptions/${subId}/resourceGroups/${resourceGroupName}/providers/microsoft.insights/components/${resourceGroupName}/annotations`, - ], - }; - const appinsightsApiKeyResponse = await appinsightsClient.aPIKeys.create( - resourceGroupName, - resourceGroupName, - apiKeyOptions - ); - const appinsightsApiKey = appinsightsApiKeyResponse.apiKey; - - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> AppInsights AppId: ${appinsightsId} ...`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> AppInsights InstrumentationKey: ${appinsightsInstrumentationKey} ...`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> AppInsights ApiKey: ${appinsightsApiKey} ...`, - }); - - if (appinsightsId && appinsightsInstrumentationKey && appinsightsApiKey) { - const botServiceClient = new AzureBotService(creds, subId); - const botCreated = await botServiceClient.bots.get(resourceGroupName, name); - if (botCreated.properties) { - botCreated.properties.developerAppInsightKey = appinsightsInstrumentationKey; - botCreated.properties.developerAppInsightsApiKey = appinsightsApiKey; - botCreated.properties.developerAppInsightsApplicationId = appinsightsId; - const botUpdateResult = await botServiceClient.bots.update(resourceGroupName, name, botCreated); - - if (botUpdateResult._response.status != 200) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Something went wrong while trying to link Application Insights settings to Bot Service Result: ${JSON.stringify( - botUpdateResult - )}`, - }); - throw new Error(`Linking Application Insights Failed.`); - } - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Linking Application Insights settings to Bot Service Success!`, - }); - } else { - logger({ - status: BotProjectDeployLoggerType.PROVISION_WARNING, - message: `! The Bot doesn't have a keys properties to update.`, - }); - } - } - } - - spinner.succeed('Success!'); - - // Validate that everything was successfully created. - // Then, update the settings file with information about the new resources - const updateResult = await updateDeploymentJsonFile(client, resourceGroupName, timeStamp, appId, appPassword); - - // Handle errors - if (!updateResult) { - const operations = await client.deploymentOperations.list(resourceGroupName, timeStamp); - if (operations) { - const failedOperations = operations.filter( - (value) => value && value.properties && value.properties.statusMessage.error !== null - ); - if (failedOperations) { - failedOperations.forEach((operation) => { - switch ( - operation && - operation.properties && - operation.properties.statusMessage.error.code && - operation.properties.targetResource - ) { - case 'MissingRegistrationForLocation': - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}. This resource is not avaliable in the location provided.`, - }); - break; - default: - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Code: ${operation.properties.statusMessage.error.code}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Message: ${operation.properties.statusMessage.error.message}.`, - }); - break; - } - }); - } - } else { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed. Please refer to the log file for more information.`, - }); - } - } - return updateResult; -}; - -console.log(chalk.bold('Login to Azure:')); -msRestNodeAuth - .interactiveLogin({ domain: tenantId }) - .then(async (creds) => { - const createResult = await create( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource, - createLuisAuthoringResource, - createQnAResource, - createCosmosDb, - createStorage, - createAppInsights - ); - - if (createResult) { - console.log(''); - console.log( - chalk.bold( - `Your Azure hosting environment has been created! Copy paste the following configuration into a new profile in Composer's Publishing tab.` - ) - ); - console.log(''); - - const token = await creds.getToken(); - const profile = { - accessToken: token.accessToken, - name: name, - environment: environment, - hostname: `${name}-${environment}`, - luisResource: `${name}-${environment}-luis`, - settings: createResult, - }; - - console.log(chalk.white(JSON.stringify(profile, null, 2))); - - console.log(''); - } - }) - .catch((err) => { - console.error(err); - }); diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/sdk.override.schema b/Composer/plugins/localPublish/hostedBots/58177.92879852568/sdk.override.schema deleted file mode 100644 index f76b80d46a..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/sdk.override.schema +++ /dev/null @@ -1,4922 +0,0 @@ -{ - "title": "Component kinds", - "description": "These are all of the kinds that can be created by the loader.", - "definitions": { - "Microsoft.ActivityTemplate": { - "title": "Microsoft ActivityTemplate", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to use to create the activity" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AdaptiveDialog": { - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "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." - }, - "defaultResultProperty": { - "title": "Default result property", - "description": "Value that will be passed back to the parent dialog." - }, - "recognizer": { - "title": "Recognizer", - "description": "Input recognizer that interprets user input into intent and entities." - }, - "generator": { - "title": "Language Generator", - "description": "Language generator that generates bot responses." - }, - "selector": { - "title": "Selector", - "description": "Policy to determine which trigger is executed. Defaults to a 'best match' selector (optional)." - }, - "triggers": { - "description": "List of triggers defined for this dialog.", - "title": "Triggers", - "items": { - "title": "Event triggers", - "description": "Event triggers for handling events." - } - }, - "schema": { - "title": "Schema", - "description": "Schema to fill in.", - "anyOf": { - "1": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AgeEntityRecognizer": { - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Ask": { - "title": "Send Activity to Ask a question", - "description": "This is an action which sends an activity to the user when a response is expected", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "expectedProperties": { - "title": "Expected Properties", - "description": "Properties expected from the user.", - "items": { - "title": "Name", - "description": "Name of the property" - } - }, - "defaultOperation": { - "title": "Default Operation", - "description": "Sets the default operation that will be used when no operation is recognized in the response to this Ask." - }, - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "activity": { - "title": "Activity", - "description": "Activity to send." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AttachmentInput": { - "title": "Attachment input dialog", - "description": "Collect information - Ask for a file or image.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "defaultValue": { - "title": "Default value", - "description": "'Property' will be set to the object or the result of this expression when max turn count is exceeded.", - "oneOf": { - "0": { - "title": "Object", - "description": "Attachment object." - } - } - }, - "value": { - "title": "Value", - "description": "'Property' will be set to the object or the result of this expression unless it evaluates to null.", - "oneOf": { - "0": { - "title": "Object", - "description": "Attachment object." - } - } - }, - "outputFormat": { - "title": "Output format", - "description": "Attachment output format.", - "oneOf": { - "0": { - "title": "Standard format", - "description": "Standard output formats." - } - } - }, - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "prompt": { - "title": "Initial prompt", - "description": "Message to send to collect information." - }, - "unrecognizedPrompt": { - "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." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression." - }, - "defaultValueResponse": { - "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." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "validations": { - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid" - } - }, - "property": { - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.BeginDialog": { - "title": "Begin a dialog", - "description": "Begin another dialog.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "dialog": { - "oneOf": { - "0": { - "title": "Dialog" - } - }, - "title": "Dialog name", - "description": "Name of the dialog to call." - }, - "options": { - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "title": "Options", - "description": "Options for dialog." - } - }, - "activityProcessed": { - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity." - }, - "resultProperty": { - "title": "Property", - "description": "Property to store any value returned by the dialog that is called." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.BeginSkill": { - "title": "Begin a skill", - "description": "Begin a remote skill.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the skill dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "activityProcessed": { - "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." - }, - "resultProperty": { - "title": "Property", - "description": "Property to store any value returned by the dialog that is called." - }, - "botId": { - "title": "Skill host bot ID", - "description": "The Microsoft App ID that will be calling the skill." - }, - "skillHostEndpoint": { - "title": "Skill host", - "description": "The callback Url for the skill host." - }, - "connectionName": { - "title": "OAuth Connection Name (SSO)", - "description": "The OAuth Connection Name, that would be used to perform Single SignOn with a skill." - }, - "skillAppId": { - "title": "Skill App ID", - "description": "The Microsoft App ID for the skill." - }, - "skillEndpoint": { - "title": "Skill endpoint ", - "description": "The /api/messages endpoint for the skill." - }, - "activity": { - "title": "Activity", - "description": "The activity to send to the skill." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the skill." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.BreakLoop": { - "title": "Break Loop", - "description": "Stop executing this loop", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CancelAllDialogs": { - "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.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "activityProcessed": { - "title": "Activity Processed", - "description": "When set to false, the caller dialog is told it should process the current activity." - }, - "eventName": { - "title": "Event name", - "description": "Name of the event to emit." - }, - "eventValue": { - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CancelDialog": { - "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.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "activityProcessed": { - "title": "Activity Processed", - "description": "When set to false, the caller dialog is told it should process the current activity." - }, - "eventName": { - "title": "Event name", - "description": "Name of the event to emit." - }, - "eventValue": { - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ChoiceInput": { - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "defaultValue": { - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded." - }, - "value": { - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null." - }, - "outputFormat": { - "title": "Output format", - "description": "Sets the desired choice output format (either value or index into choices).", - "oneOf": { - "0": { - "title": "Standard", - "description": "Standard output format." - } - } - }, - "choices": { - "title": "Array of choices", - "description": "Choices to choose from.", - "oneOf": { - "0": { - "title": "Simple choices", - "description": "Simple choices to choose from.", - "items": { - "0": { - "title": "Simple choice", - "description": "One choice for choice input." - } - } - }, - "1": { - "title": "Structured choices", - "description": "Choices that allow full control.", - "items": { - "0": { - "title": "Structured choice", - "description": "Structured choice to choose from.", - "properties": { - "value": { - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "title": "Action", - "description": "Card action for the choice." - }, - "synonyms": { - "title": "Synonyms", - "description": "List of synonyms to recognize in addition to the value (optional).", - "items": { - "title": "Synonym", - "description": "Synonym for value." - } - } - } - } - } - } - } - }, - "defaultLocale": { - "title": "Default locale", - "description": "The default locale to use to parse confirmation choices if there is not one passed by the caller." - }, - "style": { - "title": "List style", - "description": "Sets the ListStyle to control how choices are rendered.", - "oneOf": { - "0": { - "title": "List style", - "description": "Standard list style." - } - } - }, - "choiceOptions": { - "title": "Choice options", - "description": "Sets the choice options used for controlling how choices are combined.", - "oneOf": { - "0": { - "title": "Object", - "description": "Choice options object.", - "properties": { - "inlineSeparator": { - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices" - }, - "inlineOr": { - "title": "Inline or", - "description": "Separator inserted between the choices when there are only 2 choices" - }, - "inlineOrMore": { - "title": "Inline or more", - "description": "Separator inserted between the last 2 choices when their are more than 2 choices." - }, - "includeNumbers": { - "title": "Include numbers", - "description": "If true, 'inline' and 'list' list style will be prefixed with the index of the choice." - } - } - } - } - }, - "recognizerOptions": { - "title": "Recognizer options", - "description": "Sets how to recognize choices in the response", - "oneOf": { - "0": { - "title": "Object", - "description": "Options for recognizer.", - "properties": { - "noValue": { - "title": "No value", - "description": "If true, the choices value field will NOT be search over" - }, - "noAction": { - "title": "No action", - "description": "If true, the choices action.title field will NOT be searched over" - }, - "recognizeNumbers": { - "title": "Recognize numbers", - "description": "If true, the number recognizer will be used to recognize an index response (1,2,3...) to the prompt." - }, - "recognizeOrdinals": { - "title": "Recognize ordinals", - "description": "If true, the ordinal recognizer will be used to recognize ordinal response (first/second/...) to the prompt." - } - } - } - } - }, - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "prompt": { - "title": "Initial prompt", - "description": "Message to send to collect information." - }, - "unrecognizedPrompt": { - "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." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression." - }, - "defaultValueResponse": { - "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." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "validations": { - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid" - } - }, - "property": { - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ConditionalSelector": { - "title": "Conditional Trigger Selector", - "description": "Use a rule selector based on a condition", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Expression to evaluate" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ConfirmInput": { - "title": "Confirm input dialog", - "description": "Collect information - Ask for confirmation (yes or no).", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "outputFormat": { - "title": "Output format", - "description": "Optional expression to use to format the output." - }, - "defaultLocale": { - "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." - }, - "style": { - "title": "List style", - "description": "Sets the ListStyle to control how choices are rendered.", - "oneOf": { - "0": { - "title": "Standard style", - "description": "Standard style for rendering choices." - } - } - }, - "choiceOptions": { - "title": "Choice Options", - "description": "Choice Options or expression which provides Choice Options to control display choices to the user.", - "oneOf": { - "0": { - "title": "Choice options", - "description": "Choice options.", - "properties": { - "inlineSeparator": { - "title": "Inline separator", - "description": "Text to separate individual choices when there are more than 2 choices" - }, - "inlineOr": { - "title": "Inline or", - "description": "Text to be inserted between the choices when their are only 2 choices" - }, - "inlineOrMore": { - "title": "Inline or more", - "description": "Text to be inserted between the last 2 choices when their are more than 2 choices." - }, - "includeNumbers": { - "title": "Include numbers", - "description": "If true, inline and list style choices will be prefixed with the index of the choice." - } - } - } - } - }, - "defaultValue": { - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded." - }, - "value": { - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null." - }, - "confirmChoices": { - "title": "Array of choice objects", - "description": "Array of simple or structured choices.", - "oneOf": { - "0": { - "title": "Simple choices", - "description": "Simple choices to confirm from.", - "items": { - "0": { - "title": "Simple choice", - "description": "Simple choice to confirm." - } - } - }, - "1": { - "title": "Structured choices", - "description": "Structured choices for confirmations.", - "items": { - "0": { - "title": "Choice", - "description": "Choice to confirm.", - "properties": { - "value": { - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "title": "Action", - "description": "Card action for the choice." - }, - "synonyms": { - "title": "Synonyms", - "description": "List of synonyms to recognize in addition to the value (optional).", - "items": { - "title": "Synonym", - "description": "Synonym for choice." - } - } - } - } - } - } - } - }, - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "prompt": { - "title": "Initial prompt", - "description": "Message to send to collect information." - }, - "unrecognizedPrompt": { - "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." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression." - }, - "defaultValueResponse": { - "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." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "validations": { - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid" - } - }, - "property": { - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ConfirmationEntityRecognizer": { - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ContinueLoop": { - "title": "Continue Loop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CrossTrainedRecognizerSet": { - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "recognizers": { - "title": "Recognizers", - "description": "List of Recognizers defined for this set." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CurrencyEntityRecognizer": { - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeEntityRecognizer": { - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeInput": { - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "defaultLocale": { - "title": "Default locale", - "description": "Default locale." - }, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "defaultValue": { - "title": "Default Date", - "description": "'Property' will be set to the value or the result of the expression when max turn count is exceeded." - }, - "value": { - "title": "Value", - "description": "'Property' will be set to the value or the result of the expression unless it evaluates to null." - }, - "outputFormat": { - "title": "Output format", - "description": "Expression to use for formatting the output." - }, - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "prompt": { - "title": "Initial prompt", - "description": "Message to send to collect information." - }, - "unrecognizedPrompt": { - "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." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression." - }, - "defaultValueResponse": { - "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." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "validations": { - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid" - } - }, - "property": { - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DebugBreak": { - "title": "Debugger break", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteActivity": { - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "title": "ActivityId", - "description": "expression to an activityId to delete" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteProperties": { - "title": "Delete Properties", - "description": "Delete multiple properties and any value it holds.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "properties": { - "title": "Properties", - "description": "Properties to delete.", - "items": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteProperty": { - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "property": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DimensionEntityRecognizer": { - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditActions": { - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "oneOf": { - "0": { - "title": "Standard change", - "description": "Standard change types." - } - } - }, - "actions": { - "title": "Actions", - "description": "Actions to apply." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditArray": { - "title": "Edit array", - "description": "Modify an array in memory", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to the array in memory.", - "oneOf": { - "0": { - "title": "Enum", - "description": "Standard change type." - } - } - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "itemsProperty": { - "title": "Items property", - "description": "Property that holds the array to update." - }, - "resultProperty": { - "title": "Result Property", - "description": "Property to store the result of this action." - }, - "value": { - "title": "Value", - "description": "New value or expression." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EmailEntityRecognizer": { - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EmitEvent": { - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "eventName": { - "title": "Event name", - "description": "Name of the event to emit.", - "oneOf": { - "0": { - "title": "Built-in event", - "description": "Standard event type." - }, - "1": { - "title": "Custom event", - "description": "Custom event type" - } - } - }, - "eventValue": { - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EndDialog": { - "title": "End dialog", - "description": "End this dialog.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "value": { - "title": "Value", - "description": "Result value returned to the parent dialog." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EndTurn": { - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.FirstSelector": { - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Foreach": { - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "itemsProperty": { - "title": "Items property", - "description": "Property that holds the array." - }, - "index": { - "title": "Index property", - "description": "Property that holds the index of the item." - }, - "value": { - "title": "Value property", - "description": "Property that holds the value of the item." - }, - "actions": { - "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." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ForeachPage": { - "title": "For each page", - "description": "Execute actions on each page (collection of items) in an array.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "itemsProperty": { - "title": "Items property", - "description": "Property that holds the array." - }, - "actions": { - "title": "Actions", - "description": "Actions to execute for each page. Use '$foreach.page' to access each page." - }, - "pageIndex": { - "title": "Index property", - "description": "Property that holds the index of the page." - }, - "page": { - "title": "Page property", - "description": "Property that holds the value of the page." - }, - "pageSize": { - "title": "Page size", - "description": "Number of items in each page." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GetActivityMembers": { - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "title": "Property", - "description": "Property (named location to store information)." - }, - "activityId": { - "title": "ActivityId", - "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." - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GetConversationMembers": { - "title": "Get Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "title": "Property", - "description": "Property (named location to store information)." - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GotoAction": { - "title": "Go to Action", - "description": "Go to an an action by id.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "actionId": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GuidEntityRecognizer": { - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HashtagEntityRecognizer": { - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HttpRequest": { - "title": "HTTP request", - "description": "Make a HTTP request.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "method": { - "title": "HTTP method", - "description": "HTTP method to use." - }, - "url": { - "title": "Url", - "description": "URL to call (supports data binding)." - }, - "body": { - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding)." - }, - "resultProperty": { - "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." - }, - "contentType": { - "title": "Content type", - "description": "Content media type for the body." - }, - "headers": { - "title": "Headers", - "description": "One or more headers to include in the request (supports data binding)." - }, - "responseType": { - "title": "Response type", - "description": "Defines the type of HTTP response. Automatically calls the 'Send a response' action if set to 'Activity' or 'Activities'.", - "oneOf": { - "0": { - "title": "Standard response", - "description": "Standard response type." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "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" - }, - "Microsoft.IDialog": { - "title": "Microsoft Dialogs", - "description": "Components which derive from Dialog" - }, - "Microsoft.IEntityRecognizer": { - "title": "Entity Recognizers", - "description": "Components which derive from EntityRecognizer.", - "oneOf": { - "0": { - "title": "Reference to Microsoft.IEntityRecognizer", - "description": "Reference to Microsoft.IEntityRecognizer .dialog file." - } - } - }, - "Microsoft.ILanguageGenerator": { - "title": "Microsoft LanguageGenerator", - "description": "Components which dervie from the LanguageGenerator class" - }, - "Microsoft.IRecognizer": { - "title": "Microsoft Recognizer", - "description": "Components which derive from Recognizer class" - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Components which derive from TextTemplate class" - }, - "Microsoft.ITrigger": { - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "oneOf": { - "0": { - "title": "Reference to Microsoft.ITrigger", - "description": "Reference to Microsoft.ITrigger .dialog file." - } - } - }, - "Microsoft.ITriggerSelector": { - "title": "Selectors", - "description": "Components which derive from TriggerSelector class.", - "oneOf": { - "0": { - "title": "Reference to Microsoft.ITriggerSelector", - "description": "Reference to Microsoft.ITriggerSelector .dialog file." - } - } - }, - "Microsoft.IfCondition": { - "title": "If condition", - "description": "Two-way branch the conversation flow based on a condition.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "title": "Condition", - "description": "Expression to evaluate." - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "actions": { - "title": "Actions", - "description": "Actions to execute if condition is true." - }, - "elseActions": { - "title": "Else", - "description": "Actions to execute if condition is false." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.InputDialog": { - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "prompt": { - "title": "Initial prompt", - "description": "Message to send to collect information." - }, - "unrecognizedPrompt": { - "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." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression." - }, - "defaultValueResponse": { - "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." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "validations": { - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid" - } - }, - "property": { - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.IpEntityRecognizer": { - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "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)" - }, - "$designer": { - "title": "Designer information", - "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", - "additionalProperties": { - "title": "Per-locale policy", - "description": "Language policy per locale.", - "items": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LogAction": { - "title": "Log to console", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "text": { - "title": "Text", - "description": "Information to log." - }, - "label": { - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "traceActivity": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LuisRecognizer": { - "title": "LUIS Recognizer", - "description": "LUIS recognizer.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "applicationId": { - "title": "LUIS Application ID", - "description": "Application ID for your model from the LUIS service." - }, - "endpoint": { - "title": "LUIS Endpoint", - "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com." - }, - "endpointKey": { - "title": "LUIS prediction key", - "description": "LUIS prediction key used to call endpoint." - }, - "externalEntityRecognizer": { - "title": "External Entity Recognizer", - "description": "Entities recognized by this recognizer will be passed to LUIS as external entities." - }, - "dynamicLists": { - "title": "Dynamic lists", - "description": "Runtime defined entity lists.", - "items": { - "title": "Entity list", - "description": "Lists of canonical values and synonyms for an entity.", - "properties": { - "entity": { - "title": "Entity", - "description": "Entity to extend with a dynamic list." - }, - "list": { - "title": "Dynamic list", - "description": "List of canonical forms and synonyms.", - "items": { - "title": "List entry", - "description": "Canonical form and synonynms.", - "properties": { - "canonicalForm": { - "title": "Canonical form", - "description": "Resolution if any synonym matches." - }, - "synonyms": { - "title": "Synonyms", - "description": "List of synonyms for a canonical form.", - "items": { - "title": "Synonym", - "description": "Synonym for canonical form." - } - } - } - } - } - } - } - }, - "predictionOptions": { - "title": "Prediction options", - "description": "Options to control LUIS prediction behavior.", - "properties": { - "includeAllIntents": { - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "title": "Version", - "description": "LUIS application version to use." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MentionEntityRecognizer": { - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MostSpecificSelector": { - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MultiLanguageRecognizer": { - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "languagePolicy": { - "title": "Language policy", - "description": "Defines fall back languages to try per user input language." - }, - "recognizers": { - "title": "Recognizers", - "description": "Map of language -> Recognizer" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberEntityRecognizer": { - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberInput": { - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "defaultValue": { - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded." - }, - "value": { - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null." - }, - "outputFormat": { - "title": "Output format", - "description": "Expression to format the number output." - }, - "defaultLocale": { - "title": "Default locale", - "description": "Default locale to use if there is no locale available.." - }, - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "prompt": { - "title": "Initial prompt", - "description": "Message to send to collect information." - }, - "unrecognizedPrompt": { - "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." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression." - }, - "defaultValueResponse": { - "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." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "validations": { - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid" - } - }, - "property": { - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberRangeEntityRecognizer": { - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OAuthInput": { - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "connectionName": { - "title": "Connection name", - "description": "The connection name configured in Azure Web App Bot OAuth settings." - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "text": { - "title": "Text", - "description": "Text shown in the OAuth signin card." - }, - "title": { - "title": "Title", - "description": "Title shown in the OAuth signin card." - }, - "timeout": { - "title": "Timeout", - "description": "Time out setting for the OAuth signin card." - }, - "property": { - "title": "Token property", - "description": "Property to store the OAuth token result." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send if user response is invalid." - }, - "defaultValueResponse": { - "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." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "defaultValue": { - "title": "Default value", - "description": "Expression to examine on each turn of the conversation as possible value to the property." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnActivity": { - "title": "On activity", - "description": "Actions to perform on receipt of a generic activity.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "type": { - "title": "Activity type", - "description": "The Activity.Type to match" - }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnAssignEntity": { - "title": "On entity assignment", - "description": "Actions to take when an entity should be assigned to a property.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "property": { - "title": "Property", - "description": "Property that will be set after entity is selected." - }, - "entity": { - "title": "Entity", - "description": "Entity being put into property" - }, - "operation": { - "title": "Operation", - "description": "Operation for assigning entity." - }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnBeginDialog": { - "title": "On begin dialog", - "description": "Actions to perform when this dialog begins.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnCancelDialog": { - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnChooseEntity": { - "title": "On choose entity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "property": { - "title": "Property to be set", - "description": "Property that will be set after entity is selected." - }, - "entity": { - "title": "Ambiguous entity", - "description": "Ambiguous entity" - }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnChooseIntent": { - "title": "On ambigious intent", - "description": "Actions to perform on when an intent is ambigious.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "intents": { - "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." - } - }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnChooseProperty": { - "title": "On choose property", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "entity": { - "title": "Entity being assigned", - "description": "Entity being assigned to property choice" - }, - "properties": { - "title": "Possible properties", - "description": "Properties to be chosen between.", - "items": { - "title": "Property name", - "description": "Possible property to choose." - } - }, - "entities": { - "title": "Entities", - "description": "Ambiguous entity names.", - "items": { - "title": "Entity name", - "description": "Entity name being chosen between." - } - }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnCondition": { - "title": "On condition", - "description": "Actions to perform when specified condition is true.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnContinueConversation": { - "title": "On Continue Conversation", - "description": "Actions to perform when a conversation is started up again from a ContinueConversationLater action.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnConversationUpdateActivity": { - "title": "On ConversationUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnDialogEvent": { - "title": "On dialog event", - "description": "Actions to perform when a specific dialog event occurs.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "event": { - "title": "Dialog event name", - "description": "Name of dialog event." - }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnEndOfActions": { - "title": "On end of actions", - "description": "Actions to take when there are no more actions in the current dialog.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnEndOfConversationActivity": { - "title": "On EndOfConversation activity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnError": { - "title": "On Error", - "description": "Action to perform when an 'Error' dialog event occurs.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnEventActivity": { - "title": "On Event activity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnHandoffActivity": { - "title": "On Handoff activity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnIntent": { - "title": "On intent recognition", - "description": "Actions to perform when specified intent is recognized.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "intent": { - "title": "Intent", - "description": "Name of intent." - }, - "entities": { - "title": "Entities", - "description": "Required entities.", - "items": { - "title": "Entity", - "description": "Entity that must be present." - } - }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnInvokeActivity": { - "title": "On Invoke activity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnMessageActivity": { - "title": "On Message activity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnMessageDeleteActivity": { - "title": "On MessageDelete activity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnMessageReactionActivity": { - "title": "On MessageReaction activity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnMessageUpdateActivity": { - "title": "On MessageUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnQnAMatch": { - "title": "On QnAMaker Match", - "description": "Actions to perform on when an match from QnAMaker is found.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnRepromptDialog": { - "title": "On RepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnTypingActivity": { - "title": "On Typing activity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OnUnknownIntent": { - "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.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OrdinalEntityRecognizer": { - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PercentageEntityRecognizer": { - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerDialog": { - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "knowledgeBaseId": { - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase." - }, - "endpointKey": { - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB." - }, - "hostname": { - "title": "Hostname", - "description": "Hostname for your QnA Maker service." - }, - "noAnswer": { - "title": "Fallback answer", - "description": "Default answer to return when none found in KB." - }, - "threshold": { - "title": "Threshold", - "description": "Threshold score to filter results." - }, - "activeLearningCardTitle": { - "title": "Active learning card title", - "description": "Title for active learning suggestions card." - }, - "cardNoMatchText": { - "title": "Card no match text", - "description": "Text for no match option." - }, - "cardNoMatchResponse": { - "title": "Card no match response", - "description": "Custom response when no match option was selected." - }, - "strictFilters": { - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "title": "Metadata filter", - "description": "Metadata filter.", - "properties": { - "name": { - "title": "Name", - "description": "Name of filter property." - }, - "value": { - "title": "Value", - "description": "Value to filter on." - } - } - } - }, - "top": { - "title": "Top", - "description": "The number of answers you want to retrieve." - }, - "isTest": { - "title": "IsTest", - "description": "True, if pointing to Test environment, else false." - }, - "rankerType": { - "title": "Ranker Type", - "description": "Type of Ranker.", - "oneOf": { - "0": { - "title": "Standard ranker", - "description": "Standard ranker types." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerRecognizer": { - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase." - }, - "endpointKey": { - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB." - }, - "hostname": { - "title": "Hostname", - "description": "Hostname for your QnA Maker service." - }, - "threshold": { - "title": "Threshold", - "description": "Threshold score to filter results." - }, - "strictFilters": { - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "title": "Metadata filters", - "description": "Metadata filters to use when querying QnA Maker KB.", - "properties": { - "name": { - "title": "Name", - "description": "Name to filter on." - }, - "value": { - "title": "Value", - "description": "Value to restrict filter." - } - } - } - }, - "top": { - "title": "Top", - "description": "The number of answers you want to retrieve." - }, - "isTest": { - "title": "IsTest", - "description": "True, if pointing to Test environment, else false." - }, - "rankerType": { - "title": "Ranker Type", - "description": "Type of Ranker.", - "oneOf": { - "0": { - "title": "Ranker type", - "description": "Type of Ranker." - } - } - }, - "includeDialogNameInMetadata": { - "title": "Include Dialog Name", - "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true" - }, - "metadata": { - "title": "Metadata filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "title": "Metadata filter", - "description": "Metadata filter to use when calling the QnA Maker KB.", - "properties": { - "name": { - "title": "Name", - "description": "Name of value to test." - }, - "value": { - "title": "Value", - "description": "Value to filter against." - } - } - } - }, - "context": { - "title": "QnARequestContext", - "description": "Context to use for ranking." - }, - "qnaId": { - "title": "QnAId", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RandomSelector": { - "title": "Random rule selector", - "description": "Select most specific true rule.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "seed": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RecognizerSet": { - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "recognizers": { - "title": "Recognizers", - "description": "List of Recognizers defined for this set." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexEntityRecognizer": { - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "name": { - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexRecognizer": { - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "intents": { - "title": "RegEx patterns to intents", - "description": "Collection of patterns to match for an intent.", - "items": { - "title": "Pattern", - "description": "Intent and regex pattern.", - "properties": { - "intent": { - "title": "Intent", - "description": "The intent name." - }, - "pattern": { - "title": "Pattern", - "description": "The regular expression pattern." - } - } - } - }, - "entities": { - "title": "Entity recognizers", - "description": "Collection of entity recognizers to use." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RepeatDialog": { - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "allowLoop": { - "title": "AllowLoop", - "description": "Optional condition which if true will allow loop of the repeated dialog." - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "options": { - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "title": "Options", - "description": "Options for repeating dialog." - } - }, - "activityProcessed": { - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ReplaceDialog": { - "title": "Replace dialog", - "description": "Replace current dialog with another dialog.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "dialog": { - "oneOf": { - "0": { - "title": "Dialog" - } - }, - "title": "Dialog name", - "description": "Name of the dialog to call." - }, - "options": { - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "title": "Options", - "description": "Options for replacing dialog." - } - }, - "activityProcessed": { - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ResourceMultiLanguageGenerator": { - "title": "Resource Multi-Language Generator", - "description": "MultiLanguage Generator which is bound to resource by resource Id.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional generator ID." - }, - "resourceId": { - "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." - }, - "languagePolicy": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SendActivity": { - "title": "Send an activity", - "description": "Respond with an activity.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "activity": { - "title": "Activity", - "description": "Activity to send." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SetProperties": { - "title": "Set property", - "description": "Set one or more property values.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "assignments": { - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "title": "Assignment", - "description": "Property assignment.", - "properties": { - "property": { - "title": "Property", - "description": "Property (named location to store information)." - }, - "value": { - "title": "Value", - "description": "New value or expression." - } - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SetProperty": { - "title": "Set property", - "description": "Set property to a value.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "property": { - "title": "Property", - "description": "Property (named location to store information)." - }, - "value": { - "title": "Value", - "description": "New value or expression." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SignOutUser": { - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "title": "UserId", - "description": "Expression to an user to signout. Default is user.id." - }, - "connectionName": { - "title": "Connection Name", - "description": "Connection name that was used with OAuthInput to log a user in." - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.StaticActivityTemplate": { - "title": "Microsoft Static Activity Template", - "description": "This allows you to define a static Activity object", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "activity": { - "title": "Activity", - "description": "A static Activity to used." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SwitchCondition": { - "title": "Switch condition", - "description": "Execute different actions based on the value of a property.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "title": "Condition", - "description": "Property to evaluate." - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "cases": { - "title": "Cases", - "description": "Actions for each possible condition.", - "items": { - "title": "Case", - "description": "Case and actions.", - "properties": { - "value": { - "title": "Value", - "description": "The value to compare the condition with." - }, - "actions": { - "title": "Actions", - "description": "Actions to execute." - } - } - } - }, - "default": { - "title": "Default", - "description": "Actions to execute if none of the cases meet the condition." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TelemetryTrackEvent": { - "title": "Telemetry - Track Event", - "description": "Track a custom event using the registered Telemetry Client.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "eventName": { - "title": "Event Name", - "description": "The name of the event to track." - }, - "properties": { - "title": "Properties", - "description": "One or more properties to attach to the event being tracked." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TemperatureEntityRecognizer": { - "title": "Temperature Recognizer", - "description": "Recognizer which recognizes temperatures.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TemplateEngineLanguageGenerator": { - "title": "Template Multi-Language Generator", - "description": "Template Generator which allows only inline evaluation of templates.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TextInput": { - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "defaultValue": { - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded." - }, - "value": { - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null." - }, - "outputFormat": { - "title": "Output format", - "description": "Expression to format the output." - }, - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "prompt": { - "title": "Initial prompt", - "description": "Message to send to collect information." - }, - "unrecognizedPrompt": { - "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." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression." - }, - "defaultValueResponse": { - "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." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "validations": { - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid" - } - }, - "property": { - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Use LG Templates to create text", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to evaluate to create the text." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TraceActivity": { - "title": "Send a TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "name": { - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "title": "Value type", - "description": "Type of value" - }, - "value": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TrueSelector": { - "title": "True Trigger Selector", - "description": "Selector for all true events", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.UpdateActivity": { - "title": "Send an activity", - "description": "Respond with an activity.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "activityId": { - "title": "Activity Id", - "description": "An string expression with the activity id to update." - }, - "activity": { - "title": "Activity", - "description": "Activity to send." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.UrlEntityRecognizer": { - "title": "Confirmation Url Recognizer", - "description": "Recognizer which recognizes urls.", - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "arrayExpression": { - "title": "Array or expression", - "description": "Array or expression to evaluate.", - "oneOf": { - "0": { - "title": "Array", - "description": "Array constant." - } - } - }, - "booleanExpression": { - "title": "Boolean or expression", - "description": "Boolean constant or expression to evaluate.", - "oneOf": { - "0": { - "title": "Boolean", - "description": "Boolean constant." - } - } - }, - "component": { - "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)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "condition": { - "title": "Boolean condition", - "description": "Boolean constant or expression to evaluate.", - "oneOf": { - "1": { - "title": "Boolean", - "description": "Boolean value." - } - } - }, - "equalsExpression": { - "title": "Expression", - "description": "Expression starting with =." - }, - "expression": { - "title": "Expression", - "description": "Expression to evaluate." - }, - "integerExpression": { - "title": "Integer or expression", - "description": "Integer constant or expression to evaluate.", - "oneOf": { - "0": { - "title": "Integer", - "description": "Integer constant." - } - } - }, - "numberExpression": { - "title": "Number or expression", - "description": "Number constant or expression to evaluate.", - "oneOf": { - "0": { - "title": "Number", - "description": "Number constant." - } - } - }, - "objectExpression": { - "title": "Object or expression", - "description": "Object or expression to evaluate.", - "oneOf": { - "0": { - "title": "Object", - "description": "Object constant." - } - } - }, - "role": { - "title": "$role", - "description": "Defines the role played in the dialog schema from [expression|interface|implements($kind)|extends($kind)]." - }, - "stringExpression": { - "title": "String or expression", - "description": "Interpolated string or expression to evaluate.", - "oneOf": { - "0": { - "title": "String", - "description": "Interpolated string" - } - } - }, - "valueExpression": { - "title": "Any or expression", - "description": "Any constant or expression to evaluate.", - "oneOf": { - "0": { - "title": "Object", - "description": "Object constant." - }, - "1": { - "title": "Array", - "description": "Array constant." - }, - "2": { - "title": "String", - "description": "Interpolated string." - }, - "3": { - "title": "Boolean", - "description": "Boolean constant" - }, - "4": { - "title": "Number", - "description": "Number constant." - } - } - }, - "schema": { - "title": "Core schema meta-schema" - }, - "botframework.json": { - "definitions": { - "ChannelAccount": { - "description": "Channel account information needed to route a message", - "title": "ChannelAccount", - "properties": { - "id": { - "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", - "title": "id" - }, - "name": { - "description": "Display friendly name", - "title": "name" - }, - "aadObjectId": { - "description": "This account's object ID within Azure Active Directory (AAD)", - "title": "aadObjectId" - }, - "role": { - "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", - "title": "role" - } - } - }, - "ConversationAccount": { - "description": "Channel account information for a conversation", - "title": "ConversationAccount", - "properties": { - "isGroup": { - "description": "Indicates whether the conversation contains more than two participants at the time the\nactivity was generated", - "title": "isGroup" - }, - "conversationType": { - "description": "Indicates the type of the conversation in channels that distinguish between conversation types", - "title": "conversationType" - }, - "id": { - "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", - "title": "id" - }, - "name": { - "description": "Display friendly name", - "title": "name" - }, - "aadObjectId": { - "description": "This account's object ID within Azure Active Directory (AAD)", - "title": "aadObjectId" - }, - "role": { - "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", - "title": "role" - } - } - }, - "MessageReaction": { - "description": "Message reaction object", - "title": "MessageReaction", - "properties": { - "type": { - "description": "Message reaction type. Possible values include: 'like', 'plusOne'", - "title": "type" - } - } - }, - "CardAction": { - "description": "A clickable action", - "title": "CardAction", - "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'", - "title": "type" - }, - "title": { - "description": "Text description which appears on the button", - "title": "title" - }, - "image": { - "description": "Image URL which will appear on the button, next to text label", - "title": "image" - }, - "text": { - "description": "Text for this action", - "title": "text" - }, - "displayText": { - "description": "(Optional) text to display in the chat feed if the button is clicked", - "title": "displayText" - }, - "value": { - "description": "Supplementary parameter for action. Content of this property depends on the ActionType", - "title": "value" - }, - "channelData": { - "description": "Channel-specific data associated with this action", - "title": "channelData" - } - } - }, - "SuggestedActions": { - "description": "SuggestedActions that can be performed", - "title": "SuggestedActions", - "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", - "title": "to", - "items": { - "title": "Id", - "description": "Id of recipient." - } - }, - "actions": { - "description": "Actions that can be shown to the user", - "title": "actions" - } - } - }, - "Attachment": { - "description": "An attachment within an activity", - "title": "Attachment", - "properties": { - "contentType": { - "description": "mimetype/Contenttype for the file", - "title": "contentType" - }, - "contentUrl": { - "description": "Content Url", - "title": "contentUrl" - }, - "content": { - "description": "Embedded content", - "title": "content" - }, - "name": { - "description": "(OPTIONAL) The name of the attachment", - "title": "name" - }, - "thumbnailUrl": { - "description": "(OPTIONAL) Thumbnail associated with attachment", - "title": "thumbnailUrl" - } - } - }, - "Entity": { - "description": "Metadata object pertaining to an activity", - "title": "Entity", - "properties": { - "type": { - "description": "Type of this entity (RFC 3987 IRI)", - "title": "type" - } - } - }, - "ConversationReference": { - "description": "An object relating to a particular point in a conversation", - "title": "ConversationReference", - "properties": { - "activityId": { - "description": "(Optional) ID of the activity to refer to", - "title": "activityId" - }, - "user": { - "description": "(Optional) User participating in this conversation", - "title": "user" - }, - "bot": { - "description": "Bot participating in this conversation", - "title": "bot" - }, - "conversation": { - "description": "Conversation reference", - "title": "conversation" - }, - "channelId": { - "description": "Channel ID", - "title": "channelId" - }, - "serviceUrl": { - "description": "Service endpoint where operations concerning the referenced conversation may be performed", - "title": "serviceUrl" - } - } - }, - "TextHighlight": { - "description": "Refers to a substring of content within another field", - "title": "TextHighlight", - "properties": { - "text": { - "description": "Defines the snippet of text to highlight", - "title": "text" - }, - "occurrence": { - "description": "Occurrence of the text field within the referenced text, if multiple exist.", - "title": "occurrence" - } - } - }, - "SemanticAction": { - "description": "Represents a reference to a programmatic action", - "title": "SemanticAction", - "properties": { - "id": { - "description": "ID of this action", - "title": "id" - }, - "entities": { - "description": "Entities associated with this action", - "title": "entities" - } - } - }, - "Activity": { - "description": "An Activity is the basic communication type for the Bot Framework 3.0 protocol.", - "title": "Activity", - "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'", - "title": "type" - }, - "id": { - "description": "Contains an ID that uniquely identifies the activity on the channel.", - "title": "id" - }, - "timestamp": { - "description": "Contains the date and time that the message was sent, in UTC, expressed in ISO-8601 format.", - "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.", - "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.", - "title": "localTimezone" - }, - "serviceUrl": { - "description": "Contains the URL that specifies the channel's service endpoint. Set by the channel.", - "title": "serviceUrl" - }, - "channelId": { - "description": "Contains an ID that uniquely identifies the channel. Set by the channel.", - "title": "channelId" - }, - "from": { - "description": "Identifies the sender of the message.", - "title": "from" - }, - "conversation": { - "description": "Identifies the conversation to which the activity belongs.", - "title": "conversation" - }, - "recipient": { - "description": "Identifies the recipient of the message.", - "title": "recipient" - }, - "textFormat": { - "description": "Format of text fields Default:markdown. Possible values include: 'markdown', 'plain', 'xml'", - "title": "textFormat" - }, - "attachmentLayout": { - "description": "The layout hint for multiple attachments. Default: list. Possible values include: 'list',\n'carousel'", - "title": "attachmentLayout" - }, - "membersAdded": { - "description": "The collection of members added to the conversation.", - "title": "membersAdded" - }, - "membersRemoved": { - "description": "The collection of members removed from the conversation.", - "title": "membersRemoved" - }, - "reactionsAdded": { - "description": "The collection of reactions added to the conversation.", - "title": "reactionsAdded" - }, - "reactionsRemoved": { - "description": "The collection of reactions removed from the conversation.", - "title": "reactionsRemoved" - }, - "topicName": { - "description": "The updated topic name of the conversation.", - "title": "topicName" - }, - "historyDisclosed": { - "description": "Indicates whether the prior history of the channel is disclosed.", - "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.", - "title": "locale" - }, - "text": { - "description": "The text content of the message.", - "title": "text" - }, - "speak": { - "description": "The text to speak.", - "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'", - "title": "inputHint" - }, - "summary": { - "description": "The text to display if the channel cannot render cards.", - "title": "summary" - }, - "suggestedActions": { - "description": "The suggested actions for the activity.", - "title": "suggestedActions" - }, - "attachments": { - "description": "Attachments", - "title": "attachments" - }, - "entities": { - "description": "Represents the entities that were mentioned in the message.", - "title": "entities" - }, - "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.", - "title": "action" - }, - "replyToId": { - "description": "Contains the ID of the message to which this message is a reply.", - "title": "replyToId" - }, - "label": { - "description": "A descriptive label for the activity.", - "title": "label" - }, - "valueType": { - "description": "The type of the activity's value object.", - "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.", - "title": "name" - }, - "relatesTo": { - "description": "A reference to another conversation or activity.", - "title": "relatesTo" - }, - "code": { - "description": "The a code for endOfConversation activities that indicates why the conversation ended.\nPossible values include: 'unknown', 'completedSuccessfully', 'userCancelled', 'botTimedOut',\n'botIssuedInvalidMessage', 'channelFailed'", - "title": "code" - }, - "expiration": { - "description": "The time at which the activity should be considered to be \"expired\" and should not be\npresented to the recipient.", - "title": "expiration" - }, - "importance": { - "description": "The importance of the activity. Possible values include: 'low', 'normal', 'high'", - "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'", - "title": "deliveryMode" - }, - "listenFor": { - "description": "List of phrases and references that speech and language priming systems should listen for", - "title": "listenFor", - "items": { - "title": "Phrase", - "description": "Phrase to listen for." - } - }, - "textHighlights": { - "description": "The collection of text fragments to highlight when the activity contains a ReplyToId value.", - "title": "textHighlights" - }, - "semanticAction": { - "description": "An optional programmatic action accompanying this request", - "title": "semanticAction" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/58177.92879852568/sdk.override.uischema b/Composer/plugins/localPublish/hostedBots/58177.92879852568/sdk.override.uischema deleted file mode 100644 index 817509983b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/58177.92879852568/sdk.override.uischema +++ /dev/null @@ -1,336 +0,0 @@ -{ - "Microsoft.AdaptiveDialog": { - "form": { - "description": "This configures a data driven dialog via a collection of events and actions.", - "label": "Adaptive dialog", - "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.AttachmentInput": { - "form": { - "label": "Prompt for a file or an attachment", - "subtitle": "Attachment Input" - } - }, - "Microsoft.ChoiceInput": { - "form": { - "label": "Prompt with multi-choice", - "subtitle": "Choice Input" - } - }, - "Microsoft.ConfirmInput": { - "form": { - "label": "Prompt for confirmation", - "subtitle": "Confirm Input" - } - }, - "Microsoft.DateTimeInput": { - "form": { - "label": "Prompt for a date or a time", - "subtitle": "Date Time Input" - } - }, - "Microsoft.NumberInput": { - "form": { - "label": "Prompt for a number", - "subtitle": "Number Input" - } - }, - "Microsoft.OAuthInput": { - "form": { - "label": "OAuth login", - "subtitle": "OAuth Input" - } - }, - "Microsoft.TextInput": { - "form": { - "label": "Prompt for text", - "subtitle": "Text Input" - } - }, - "Microsoft.BeginDialog": { - "form": { - "label": "Begin a new dialog", - "subtitle": "Begin Dialog" - } - }, - "Microsoft.BeginSkill": { - "form": { - "label": "Connect to a skill", - "subtitle": "Skill Dialog" - } - }, - "Microsoft.BreakLoop": { - "form": { - "label": "Break out of loop", - "subtitle": "Break out of loop" - } - }, - "Microsoft.CancelAllDialogs": { - "form": { - "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": { - "label": "Delete properties", - "subtitle": "Delete Properties" - } - }, - "Microsoft.DeleteProperty": { - "form": { - "label": "Delete a property", - "subtitle": "Delete Property" - } - }, - "Microsoft.DeleteActivity": { - "form": { - "label": "Delete activity" - } - }, - "Microsoft.EditActions": { - "form": { - "label": "Modify active dialog", - "subtitle": "Edit Actions" - } - }, - "Microsoft.EditArray": { - "form": { - "label": "Edit an array property", - "subtitle": "Edit Array" - } - }, - "Microsoft.EmitEvent": { - "form": { - "label": "Emit a custom event", - "subtitle": "Emit Event" - } - }, - "Microsoft.EndDialog": { - "form": { - "label": "End this dialog", - "subtitle": "End Dialog" - } - }, - "Microsoft.EndTurn": { - "form": { - "label": "End turn", - "subtitle": "End Turn" - } - }, - "Microsoft.Foreach": { - "form": { - "label": "Loop: For each item", - "subtitle": "For Each" - } - }, - "Microsoft.ForeachPage": { - "form": { - "label": "Loop: For each page (multiple items)", - "subtitle": "For Each Page" - } - }, - "Microsoft.HttpRequest": { - "form": { - "label": "Send an HTTP request", - "subtitle": "HTTP Request" - } - }, - "Microsoft.IfCondition": { - "form": { - "label": "Branch: If/Else", - "subtitle": "If Condition" - } - }, - "Microsoft.LogAction": { - "form": { - "label": "Log to console", - "subtitle": "Log Action" - } - }, - "Microsoft.RepeatDialog": { - "form": { - "label": "Repeat this dialog", - "subtitle": "Repeat Dialog" - } - }, - "Microsoft.ReplaceDialog": { - "form": { - "label": "Replace this dialog", - "subtitle": "Replace Dialog" - } - }, - "Microsoft.SendActivity": { - "form": { - "label": "Send a response", - "subtitle": "Send Activity" - } - }, - "Microsoft.SetProperties": { - "form": { - "label": "Set properties", - "subtitle": "Set Properties" - } - }, - "Microsoft.SetProperty": { - "form": { - "label": "Set a property", - "subtitle": "Set Property" - } - }, - "Microsoft.SignOutUser": { - "form": { - "label": "Sign out user", - "subtitle": "Signout User" - } - }, - "Microsoft.SwitchCondition": { - "form": { - "label": "Branch: Switch (multiple options)", - "subtitle": "Switch Condition" - } - }, - "Microsoft.TraceActivity": { - "form": { - "label": "Emit a trace event", - "subtitle": "Trace Activity" - } - }, - "Microsoft.UpdateActivity": { - "form": { - "label": "Update an activity" - } - }, - "Microsoft.OnActivity": { - "form": { - "label": "Activities", - "subtitle": "Activity received" - } - }, - "Microsoft.OnBeginDialog": { - "form": { - "label": "Dialog started", - "subtitle": "Begin dialog event" - } - }, - "Microsoft.OnCancelDialog": { - "form": { - "label": "Dialog cancelled", - "subtitle": "Cancel dialog event" - } - }, - "Microsoft.OnCondition": { - "form": { - "label": "Handle a condition", - "subtitle": "Condition" - } - }, - "Microsoft.OnConversationUpdateActivity": { - "form": { - "description": "Handle the events fired when a user begins a new conversation with the bot.", - "label": "Greeting", - "subtitle": "ConversationUpdate activity" - } - }, - "Microsoft.OnDialogEvent": { - "form": { - "label": "Dialog events", - "subtitle": "Dialog event" - } - }, - "Microsoft.OnEndOfConversationActivity": { - "form": { - "label": "Conversation ended", - "subtitle": "EndOfConversation activity" - } - }, - "Microsoft.OnError": { - "form": { - "label": "Error occurred", - "subtitle": "Error event" - } - }, - "Microsoft.OnEventActivity": { - "form": { - "label": "Event received", - "subtitle": "Event activity" - } - }, - "Microsoft.OnHandoffActivity": { - "form": { - "label": "Handover to human", - "subtitle": "Handoff activity" - } - }, - "Microsoft.OnIntent": { - "form": { - "label": "Intent recognized", - "subtitle": "Intent recognized" - } - }, - "Microsoft.OnInvokeActivity": { - "form": { - "label": "Conversation invoked", - "subtitle": "Invoke activity" - } - }, - "Microsoft.OnMessageActivity": { - "form": { - "label": "Message received", - "subtitle": "Message received activity" - } - }, - "Microsoft.OnMessageDeleteActivity": { - "form": { - "label": "Message deleted", - "subtitle": "Message deleted activity" - } - }, - "Microsoft.OnMessageReactionActivity": { - "form": { - "label": "Message reaction", - "subtitle": "Message reaction activity" - } - }, - "Microsoft.OnMessageUpdateActivity": { - "form": { - "label": "Message updated", - "subtitle": "Message updated activity" - } - }, - "Microsoft.OnRepromptDialog": { - "form": { - "label": "Re-prompt for input", - "subtitle": "Reprompt dialog event" - } - }, - "Microsoft.OnTypingActivity": { - "form": { - "label": "User is typing", - "subtitle": "Typing activity" - } - }, - "Microsoft.OnUnknownIntent": { - "form": { - "label": "Unknown intent", - "subtitle": "Unknown intent recognized" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/.gitignore b/Composer/plugins/localPublish/hostedBots/60624.90875963831/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.csproj b/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.csproj deleted file mode 100644 index 0fdf8e9766..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.csproj +++ /dev/null @@ -1,42 +0,0 @@ - - - - netcoreapp3.1 - 6373a44a-8e61-46ef-88d6-84fcfc314cae - - - - - - - - - - Always - - - - BotProject.ruleset - - - BotProject.ruleset - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.ruleset b/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.sln b/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.sln deleted file mode 100644 index db73c02cd8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotProject.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.136 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotProject", "BotProject.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotSettings.cs deleted file mode 100644 index b88a4a7127..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/BotSettings.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class BotSettings - { - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration AppInsights { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerBot.cs deleted file mode 100644 index 9897a59593..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerBot.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, string rootDialog) - { - HostContext.Current.Set(skillClient); - HostContext.Current.Set(conversationIdFactory); - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - LoadRootDialogAsync(); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/echobot-4.dialog b/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/echobot-4.dialog deleted file mode 100644 index 8fba488b51..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/echobot-4.dialog +++ /dev/null @@ -1,54 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "id": "433224", - "name": "EchoBot-4" - }, - "autoEndDialog": true, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnUnknownIntent", - "$designer": { - "id": "821845" - }, - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "003038" - }, - "activity": "${bfdactivity-003038()}" - } - ] - }, - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.Foreach", - "$designer": { - "id": "518944", - "name": "Loop: for each item" - }, - "itemsProperty": "turn.Activity.membersAdded", - "actions": [ - { - "$kind": "Microsoft.IfCondition", - "$designer": { - "id": "641773", - "name": "Branch: if/else" - }, - "condition": "string(dialog.foreach.value.id) != string(turn.Activity.Recipient.id)" - } - ] - } - ] - } - ], - "generator": "echobot-4.lg", - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema" -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-generation/en-us/common.lg b/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-generation/en-us/common.lg deleted file mode 100644 index 2c853616a8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-generation/en-us/common.lg +++ /dev/null @@ -1,16 +0,0 @@ -# T -[HeroCard - title = Lets Begin - subtitle = Microsoft Bot Framework - text = Build and connect intelligent bots to interact with your users naturally wherever they are, from text/sms to Skype, Slack, Office 365 mail and other popular services. - image = https://greatsmilesbirmingham.com/wp-content/uploads/2017/09/canstockphoto30606317.jpg - buttons = ${cardActionTemplate( 'imBack', 'click me', 'click me intent' )} -] - -# cardActionTemplate( type, title, value) -[CardAction - Types = ${if(type == null, 'imBack', type)} - Title = ${title} - Value = ${value} - Text = ${value} -] diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-generation/en-us/echobot-4.lg b/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-generation/en-us/echobot-4.lg deleted file mode 100644 index f6e288dd85..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-generation/en-us/echobot-4.lg +++ /dev/null @@ -1,4 +0,0 @@ -[import](common.lg) - -# bfdactivity-003038() -- ${T()} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-understanding/en-us/echobot-4.en-us.lu b/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/language-understanding/en-us/echobot-4.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/settings/appsettings.json b/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/settings/appsettings.json deleted file mode 100644 index 4f742339ad..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/ComposerDialogs/settings/appsettings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "MicrosoftAppId": "", - "luis": { - "name": "", - "authoringRegion": "westus", - "defaultLanguage": "en-us", - "environment": "composer" - }, - "qna": { - "knowledgebaseid": "", - "endpointkey": "", - "hostname": "" - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Controllers/BotController.cs deleted file mode 100644 index 5085705abb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Controllers/SkillController.cs deleted file mode 100644 index 62b6390dd6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Controllers/SkillController.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.Bot.Builder.TestBot.Json.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index 183586e08f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,363 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - } - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - } - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - } - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/LuisConfig.cs deleted file mode 100644 index 506d52e343..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/LuisConfigAdaptor.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/LuisConfigAdaptor.cs deleted file mode 100644 index 6f23086f3b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/LuisConfigAdaptor.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public static class LuisConfigAdaptor - { - public static IConfigurationBuilder UseLuisConfigAdaptor(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var settings = new Dictionary(); - settings["environment"] = configuration.GetValue("luis:environment"); - settings["region"] = configuration.GetValue("luis:authoringRegion"); - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/NuGet.Config b/Composer/plugins/localPublish/hostedBots/60624.90875963831/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Program.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Program.cs deleted file mode 100644 index 434f5a21d2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Program.cs +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - builder.AddJsonFile($"ComposerDialogs/settings/appsettings.json", optional: true, reloadOnChange: true) - .AddJsonFile("appsetting.json", optional: true, reloadOnChange: true) - .UseLuisConfigAdaptor() - .UseLuisSettings(); - - if (env.IsDevelopment()) - { - // Local Debug - builder.AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true); - } - else - { - //Azure Deploy - builder.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - } - - if (!env.IsDevelopment()) - { - builder.AddUserSecrets(); - } - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/README.md b/Composer/plugins/localPublish/hostedBots/60624.90875963831/README.md deleted file mode 100644 index b096ecf323..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/README.md +++ /dev/null @@ -1,22 +0,0 @@ -## Bot Project -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -## Instructions for setting up the Bot Project runtime -The Bot Project is a regular Bot Framework SDK V4 project. Before you can launch it from the emulator, you need to make sure you can run the bot. - -### Prerequisite: -* Install .Netcore 3.1 - -### Commands: - -* from root folder -* cd BotProject -* cd Templates/CSharp -* dotnet user-secrets init // init the user secret id -* dotnet build // build -* dotnet run // start the bot -* It will start a web server and listening at http://localhost:3979. - -### Test bot -* You can set you emulator to connect to http://localhost:3979/api/messages. - diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Schemas/sdk.schema deleted file mode 100644 index 536286332d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Schemas/sdk.schema +++ /dev/null @@ -1,12321 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/master/schemas/component.schema", - "$id": "sdk.schema", - "type": "object", - "title": "Component kinds", - "description": "These are all of the kinds that can be created by the loader.", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.LanguagePolicy", - "description": "This represents a policy map for locales lookups to use for language", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnClearProperty", - "description": "Actions to take when a property needs to be cleared.", - "$ref": "#/definitions/Microsoft.OnClearProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "$ref": "#/definitions/Microsoft.Test.Script" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - } - ], - "definitions": { - "Microsoft.ActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft ActivityTemplate", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to use to create the activity", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveCardRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AdaptiveCardRecognizer" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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.Recognizer", - "title": "Recognizer", - "description": "Input recognizer that interprets user input into intent and entities.", - "$ref": "#/definitions/Microsoft.Recognizer" - }, - "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.ITriggerCondition", - "$ref": "#/definitions/Microsoft.ITriggerCondition" - } - }, - "schema": { - "anyOf": [ - { - "title": "The schema to be filled in.", - "type": "object", - "additionalProperties": true - }, - { - "type": "string", - "title": "Reference to JSON schema", - "description": "Reference to JSON schema .dialog file." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SkillDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a skill dialog", - "description": "Begin a remote skill dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SkillDialog" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the skill dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - }, - "botId": { - "$role": "expression", - "type": "string", - "title": "Skill host bot ID", - "description": "The Microsoft App ID that will be calling the skill.", - "default": "=settings.MicrosoftAppId" - }, - "skillHostEndpoint": { - "$role": "expression", - "type": "string", - "title": "Skill host", - "description": "The callback Url for the skill host.", - "default": "=settings.skillHostEndpoint", - "examples": [ - "https://mybot.contoso.com/api/skills/" - ] - }, - "skillAppId": { - "$role": "expression", - "type": "string", - "title": "Skill App ID", - "description": "The Microsoft App ID for the skill." - }, - "skillEndpoint": { - "$role": "expression", - "type": "string", - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AgeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Ask": { - "$role": "implements(Microsoft.IDialog)", - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "expectedProperties": { - "$role": "expression", - "title": "Expected Properties", - "description": "Properties expected to be filled by entities from the user", - "oneOf": [ - { - "type": "array", - "items": { - "type": "string", - "title": "string" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AttachmentInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Attachment input dialog", - "description": "Collect information - Ask for a file or image.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "all", - "first" - ], - "title": "Output format", - "description": "Attachment output format.", - "default": "first" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BeginDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a dialog", - "description": "Begin another dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$role": "expression", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "type": "object", - "title": "object", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BreakLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Break Loop", - "description": "Stop executing this loop", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit." - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional).", - "additionalProperties": true - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ChoiceInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "value", - "index" - ], - "title": "Output format", - "description": "Choice output format.", - "default": "value" - }, - "choices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "type": "string", - "title": "string" - } - ], - "title": "array" - }, - { - "type": "array", - "items": [ - { - "title": "Choice", - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - } - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression" - } - ] - }, - "appendChoices": { - "type": "boolean", - "title": "Append choices", - "description": "Compose an output activity containing a set of choices", - "default": "true" - }, - "defaultLocale": { - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when 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 - } - } - }, - "recognizerOptions": { - "type": "object", - "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 the choices action.title field will NOT be searched over", - "default": false - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConditionalSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Condtional Trigger Selector", - "description": "Use a rule selector based on a condition", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "ifTrue": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "ifFalse": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "ifTrue", - "ifFalse", - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Confirm input dialog", - "description": "Collect information - Ask for confirmation (yes or no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the confirm output.", - "examples": [ - "=concat('confirmation:', this.value)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "$role": "expression", - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "$role": "expression", - "oneOf": [ - { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when their are only 2 choices", - "default": " or " - }, - "inlineOrMore": { - "type": "string", - "title": "Inline or more", - "description": "Separator inserted between the last 2 choices when their are more than 2 choices.", - "default": ", or " - }, - "includeNumbers": { - "type": "boolean", - "title": "Include numbers", - "description": "If true, inline and list style choices will be prefixed with the index of the choice.", - "default": true - } - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "confirmChoices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - }, - "title": "object" - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmationEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ContinueLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Continune Loop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the datetime output.", - "examples": [ - "this.value[0].Value" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Properties", - "description": "Delete multiple properties and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "properties", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "$kind" - ] - } - ] - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to the array in memory.", - "enum": [ - "push", - "pop", - "take", - "remove", - "clear" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array to update." - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result Property", - "description": "Property to store the result of this action." - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "'milk'", - "dialog.favColor", - "dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "itemsProperty", - "$kind" - ] - } - ] - }, - "Microsoft.EmailEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$role": "expression", - "title": "Bubble event", - "description": "If true this event is passed on to parent dialogs.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "eventName", - "$kind" - ] - } - ] - }, - "Microsoft.EndDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "End dialog", - "description": "End this dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EntityRecognizers": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Union of components which derive from EntityRecognizer abstract class.", - "type": "object", - "oneOf": [ - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - }, - { - "type": "string", - "title": "Reference to Microsoft.EntityRecognizers", - "description": "Reference to Microsoft.EntityRecognizers .dialog file." - } - ] - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.ForeachPage": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each page", - "description": "Execute actions on each page (collection of items) in an array.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "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" - } - }, - "pageSize": { - "$role": "expression", - "title": "Page size", - "description": "Number of items in each page.", - "oneOf": [ - { - "type": "integer", - "default": 10, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GetConversationMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actionId": { - "$role": "expression", - "type": "string", - "title": "Action Id", - "description": "Action Id to execute next" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actionId", - "$kind" - ] - } - ] - }, - "Microsoft.GuidEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$role": "expression", - "type": "string", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result property", - "description": "Property to store the result of this action. The result includes 4 properties from the http response: statusCode, reasonPhrase, content and headers. If the content is json it will be a deserialized object.", - "examples": [ - "dialog.contosodata" - ] - }, - "contentType": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "type": "string" - } - }, - "responseType": { - "$role": "expression", - "type": "string", - "title": "Response type", - "description": "Defines the type of HTTP response. Automatically calls the 'Send a response' action if set to 'Activity' or 'Activities'.", - "enum": [ - "None", - "Json", - "Activity", - "Activities" - ], - "default": "Json" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "url", - "method", - "$kind" - ] - } - ] - }, - "Microsoft.IActivityTemplate": { - "title": "Microsoft ActivityTemplates", - "description": "Components which are IActivityTemplates", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.IDialog": { - "title": "Microsoft Dialogs", - "description": "Union of components which implement the Dialog contract", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ILanguageGenerator": { - "title": "Microsoft ILanguageGenerator", - "description": "Union of components which implement the ILanguageGenerator interface", - "$role": "interface", - "oneOf": [ - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Union of components which implement the TextTemplate", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITriggerCondition": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Union of components which implement the OnCondition", - "oneOf": [ - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnClearProperty", - "description": "Actions to take when a property needs to be cleared.", - "$ref": "#/definitions/Microsoft.OnClearProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerCondition", - "description": "Reference to Microsoft.ITriggerCondition .dialog file." - } - ] - }, - "Microsoft.ITriggerSelector": { - "$role": "interface", - "title": "Selectors", - "description": "Union of components which are trigger selectors", - "oneOf": [ - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerSelector", - "description": "Reference to Microsoft.ITriggerSelector .dialog file." - } - ] - }, - "Microsoft.IfCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "If condition", - "description": "Two-way branch the conversation flow based on a condition.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evaluate.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.IpEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Information to log." - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "traceActivity": { - "$role": "expression", - "title": "Send Trace Activity", - "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator).", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.LuisRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "LUIS Recognizer", - "description": "LUIS recognizer.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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": { - "type": "string", - "title": "LUIS Application ID", - "description": "Application ID for your model from the LUIS service.", - "$role": "expression" - }, - "endpoint": { - "type": "string", - "title": "LUIS Endpoint", - "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com.", - "$role": "expression" - }, - "endpointKey": { - "type": "string", - "title": "LUIS prediction key", - "description": "LUIS prediction key used to call endpoint.", - "$role": "expression" - }, - "externalEntityRecognizer": { - "title": "External Entity Recognizer", - "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.", - "$kind": "Microsoft.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - }, - "dynamicLists": { - "$role": "expression", - "title": "Dynamic lists", - "description": "Runtime defined entity lists.", - "oneOf": [ - { - "type": "array", - "items": { - "title": "Entity list", - "description": "Lists of canonical values and synonyms for an entity.", - "type": "object", - "properties": { - "entity": { - "title": "Entity", - "description": "Entity to extend with a dynamic list.", - "type": "string" - }, - "list": { - "title": "Dynamic list", - "description": "List of canonical forms and synonyms.", - "type": "array", - "items": { - "type": "object", - "properties": { - "canonicalForm": { - "title": "Canonical form", - "description": "Resolution if any synonym matches.", - "type": "string" - }, - "synonyms": { - "title": "Synonyms", - "description": "List of synonyms for a canonical form.", - "type": "array", - "items": { - "type": "string", - "title": "string" - } - } - }, - "title": "object" - } - } - } - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "predictionOptions": { - "type": "object", - "properties": { - "includeAllIntents": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "applicationId", - "endpoint", - "endpointKey", - "$kind" - ] - } - ] - }, - "Microsoft.MentionEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the number output.", - "examples": [ - "=this.value", - "=int(this.text)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberRangeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection name", - "description": "The connection name configured in Azure Web App Bot OAuth settings.", - "examples": [ - "msgraphOAuthConnection" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Text shown in the OAuth signin card.", - "examples": [ - "Please sign in. " - ] - }, - "title": { - "$role": "expression", - "type": "string", - "title": "Title", - "description": "Title shown in the OAuth signin card.", - "examples": [ - "Login" - ] - }, - "timeout": { - "$role": "expression", - "title": "Timeout", - "description": "Time out setting for the OAuth signin card.", - "oneOf": [ - { - "type": "integer", - "default": "900000", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "examples": [ - 3 - ], - "oneOf": [ - { - "type": "integer", - "default": 3, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "Expression to examine on each turn of the conversation as possible value to the property.", - "examples": [ - "@token" - ] - }, - "allowInterruptions": { - "$role": "expression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "examples": [ - "true" - ], - "oneOf": [ - { - "type": "boolean", - "default": "true", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "connectionName", - "$kind" - ] - } - ] - }, - "Microsoft.OnActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On activity", - "description": "Actions to perform on receipt of a generic activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "type": { - "type": "string", - "title": "Activity type", - "description": "The Activity.Type to match" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "type", - "$kind" - ] - } - ] - }, - "Microsoft.OnAssignEntity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On entity assignment", - "description": "Actions to take when an entity should be assigned to a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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 to use for assigning entity" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnBeginDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On begin dialog", - "description": "Actions to perform when this dialog begins.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCancelDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseEntity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On choose entity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseIntent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On ambigious intent", - "description": "Actions to perform on when an intent is ambigious.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intents": { - "type": "array", - "title": "Intents", - "description": "Intents that must be in the ChooseIntent result for this condition to trigger.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseProperty": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On choose property", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "entities": { - "type": "array", - "title": "Possible properties", - "description": "Entities being assigned", - "items": { - "type": "string", - "title": "Entity name" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnClearProperty": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On clear property", - "description": "Actions to take when a property needs to be cleared.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnClearProperty" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "property": { - "type": "string", - "title": "Property", - "description": "Property that will be cleared" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCondition": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On condition", - "description": "Actions to perform when specified condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnConversationUpdateActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On ConversationUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCustomEvent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On custom event", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnCustomEvent" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Custom event name", - "description": "Name of the custom event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnDialogEvent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On dialog event", - "description": "Actions to perform when a specific dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Dialog event name", - "description": "Name of dialog event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfActions": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On end of actions", - "description": "Actions to take when there are no more actions in the current dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfConversationActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On EndOfConversation activity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnError": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Error", - "description": "Action to perform when an 'Error' dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEventActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Event activity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnHandoffActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Handoff activity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnIntent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On intent recognition", - "description": "Actions to perform when specified intent is recognized.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intent": { - "type": "string", - "title": "Intent", - "description": "Name of intent." - }, - "entities": { - "type": "array", - "title": "Entities", - "description": "Required entities.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnInvokeActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Invoke activity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Message activity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageDeleteActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageDelete activity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageReactionActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageReaction activity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageUpdateActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnQnAMatch": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On QnAMaker Match", - "description": "Actions to perform on when an match from QnAMaker is found.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnRepromptDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On RepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnTypingActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Typing activity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnUnknownIntent": { - "title": "On unknown intent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "type": "object", - "$role": "implements(Microsoft.ITriggerCondition)", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "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": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "activeLearningCardTitle": { - "$role": "expression", - "type": "string", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "enum": [ - "Default", - "QuestionOnly", - "AutoSuggestQuestion" - ], - "default": "Default" - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "threshold": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "strictFilters": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "$role": "expression", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "rankerType": { - "$role": "expression", - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "default": "Default" - }, - "includeDialogNameInMetadata": { - "$role": "expression", - "title": "Include Dialog Name", - "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "metadata": { - "$role": "expression", - "title": "value to ", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "type": "string", - "title": "Value" - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "context": { - "$role": "expression", - "title": "QnARequestContext", - "oneOf": [ - { - "type": "object", - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "qnaId": { - "$role": "expression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API.", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "seed": { - "type": "integer" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Recognizer": { - "title": "Microsoft Recognizer", - "description": "Union of components which implement the Recognizer abstract class", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.RegExEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "name", - "pattern", - "$kind" - ] - } - ] - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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", - "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.EntityRecognizers", - "$ref": "#/definitions/Microsoft.EntityRecognizers" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "intents", - "$kind" - ] - } - ] - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ReplaceDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Replace dialog", - "description": "Replace current dialog with another dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "$role": "expression", - "type": "string", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "$ref": "#/definitions/Microsoft.IDialog" - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SetProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set one or more property values.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "properties": { - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assignments", - "$kind" - ] - } - ] - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection Name", - "description": "Connection name that was used with OAuthInput to log a user in." - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.StaticActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft Static Activity Template", - "description": "This allows you to define a static Activity object", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "title": "Activity", - "Description": "A static Activity to used" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.SwitchCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Switch condition", - "description": "Execute different actions based on the value of a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "type": "string", - "title": "Condition", - "description": "Property to evaluate.", - "examples": [ - "user.favColor" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "cases": { - "type": "array", - "title": "Cases", - "desc": "Actions for each possible condition.", - "items": { - "type": "object", - "required": [ - "value", - "case" - ], - "properties": { - "value": { - "type": [ - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Value.", - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "$kind" - ] - } - ] - }, - "Microsoft.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Temperature Entity Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Assert Condition", - "description": "Assert condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertCondition" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evalute", - "examples": [ - "user.age > 10" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of what the condition is testing" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReply": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply", - "description": "Asserts that a reply text is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReply" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Reply Text", - "description": "Expected reply text" - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply Activity", - "description": "Asserts that a reply activity is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assertions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyOneOf": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply OneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyOneOf" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "array", - "title": "Replies", - "description": "Expected replies (one of which must match", - "items": { - "type": "string" - } - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "replies", - "$kind" - ] - } - ] - }, - "Microsoft.Test.ITestAction": { - "title": "Microsoft Test ITestAction", - "description": "Union of components which implement the Test.ITestAction interface", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "type": "string", - "title": "Reference to Microsoft.Test.ITestAction", - "description": "Reference to Microsoft.Test.ITestAction .dialog file." - } - ] - }, - "Microsoft.Test.Script": { - "title": "Test Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.Script" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "title": "Dialog", - "description": "The root dialog to execute the test script against.", - "$ref": "#/definitions/Microsoft.IDialog" - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of the test script" - }, - "script": { - "type": "array", - "description": "Sequence of test actions to execute.", - "items": { - "$kind": "Microsoft.Test.ITestAction", - "$ref": "#/definitions/Microsoft.Test.ITestAction" - } - }, - "locale": { - "type": "string", - "title": "Locale", - "description": "Set the locale for the user utterances in the script.", - "default": "en-us" - }, - "enableTrace": { - "type": "boolean", - "title": "Enable Trace Activity", - "description": "Enable trace activities in the unit test (default is false)", - "default": false - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "dialog", - "testActions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Activity", - "description": "Sends activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "additionalProperties": true - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserConversationUpdate": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send ConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserConversationUpdate" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "membersAdded": { - "type": "array", - "title": "Members Added", - "description": "Names of the members to add", - "items": { - "type": "string" - } - }, - "membersRemoved": { - "type": "array", - "title": "Members Removed", - "description": "Names of the members to remove", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserDelay": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Delay Execution", - "description": "Delays text script for time period.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserDelay" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "timespan": { - "type": "number", - "title": "Timespan", - "description": "The amount of time in milliseconds to delay the execution of the test script" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "timespan", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserSays": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "User Text", - "description": "Sends text to the bot from the user.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserSays" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Text", - "description": "Text to send to the bot." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserTyping": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Typing", - "description": "Sends typing activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserTyping" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextInput": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the output.", - "examples": [ - "=toUpper(this.value)", - "${toUpper(this.value)}" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextTemplate": { - "$role": "implements(Microsoft.ITextTemplate)", - "title": "Microsoft TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to evaluate to create the text", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "name": { - "$role": "expression", - "type": "string", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$role": "expression", - "type": "string", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Property that holds the value to send as trace activity." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "Activity Id", - "dDescription": "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UrlEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Url Entity Recognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/build_runtime.ps1 b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/build_runtime.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -if ((dotnet --version) -lt '3.1.0') { - throw "! dotnet core 3.1 is required, please refer following documents for help. https://dotnet.microsoft.com/download/dotnet-core/3.1" - Break -} - -# This command need dotnet core more than 3.0 -dotnet user-secrets init - -# Merge all streams into stdout -$result = dotnet build *>&1 -# Evaluate success/failure -if($LASTEXITCODE -ne 0) -{ - # Failed, you can reconstruct stderr strings with: - $ErrorString = $result -join [System.Environment]::NewLine - throw $ErrorString -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/build_runtime.sh b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/build_runtime.sh +++ /dev/null @@ -1,11 +0,0 @@ -versionString=`dotnet --version` -function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } -if version_lt $versionString "3.1.0"; -then - echo "! dotnet core 3.1 is required, please refer following documents for help. -https://dotnet.microsoft.com/download/dotnet-core/3.1" - exit 1 -else - dotnet user-secrets init - dotnet build -fi diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/create.ps1 b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/create.ps1 +++ /dev/null @@ -1,211 +0,0 @@ -Param( - [string] $name, - [string] $location, - [string] $appId, - [string] $appPassword, - [string] $environment, - [string] $luisAuthoringKey, - [string] $projDir = $(Get-Location), - [string] $logFile = $(Join-Path $PSScriptRoot .. "create_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6){ - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -if (-not (Test-Path (Join-Path $projDir 'appsettings.deployment.json'))) -{ - Write-Host "! Could not find an 'appsettings.deployment.json' file in the current directory." -ForegroundColor DarkRed - Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" -} - -if (-not $environment) -{ - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $location) { - $location = Read-Host "? Azure resource group region" -} - -if (-not $appPassword) { - $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" -} - -if (-not $appId) { - # Create app registration - $app = (az ad app create ` - --display-name $name ` - --password `"$($appPassword)`" ` - --available-to-other-tenants ` - --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` - --output json) - - # Retrieve AppId - if ($app) { - $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId - } - - if(-not $appId) { - Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta - Break - } -} - -$shouldCreateAuthoringResource = $true - -# Use pre-exsisting luis authoring key -if ($luisAuthoringKey) { - $shouldCreateAuthoringResource = $false -} - -$resourceGroup = "$name-$environment" -$servicePlanName = "$name-$environment" - -# Get timestamp -$timestamp = Get-Date -f MMddyyyyHHmmss - -# Create resource group -Write-Host "> Creating resource group ..." -(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null - -# Deploy Azure services -Write-Host "> Validating Azure deployment ..." -$validation = az group deployment validate ` - --resource-group $resourcegroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - -if ($validation) { - $validation >> $logFile - $validation = $validation | ConvertFrom-Json - - if (-not $validation.error) { - Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow - $deployment = az group deployment create ` - --name $timestamp ` - --resource-group $resourceGroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - } - else { - Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - if ($validation.error.details -and $validation.error.details[0].code -eq "CanNotCreateMultipleFreeAccounts") - { - Write-Host "! The subscription is exceeding the maximum number of allowed LuisAuthoringAccounts. You already have a luis authoring resource created, please get your luis authoring key and retry with the following command:" -ForegroundColor DarkRed - Write-Host "pwsh ./Scripts/create.ps1 -name $name -environment $environment -location $location -appPassword $appPassword -luisAuthoringKey [YourLuisAuthoringKey]" -ForegroundColor Green - } - - Break - } -} - - -# Get deployment outputs -$outputs = (az group deployment show ` - --name $timestamp ` - --resource-group $resourceGroup ` - --output json) 2>> $logFile - -# If it succeeded then we perform the remainder of the steps -if ($outputs) -{ - # Log and convert to JSON - $outputs >> $logFile - $outputs = $outputs | ConvertFrom-Json - if ($outputs.properties.error) { - Write-Host "! Deployment failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($outputs.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - Break - } - - $outputs = $outputs.properties.outputs - $outputMap = @{} - $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } - - # Update appsettings.deployment.json - Write-Host "> Updating appsettings.deployment.json ..." - if (Test-Path $(Join-Path $projDir appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $projDir appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppId' -Value $appId - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppPassword' -Value $appPassword - - $settings | Add-Member -Type NoteProperty -Force -Name 'bot' -Value "ComposerDialogs" - - foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.deployment.json) - - Write-Host "> Done." - Write-Host "- App Id: $appId" - Write-Host "- App Password: $appPassword" - Write-Host "- Resource Group: $resourceGroup" - Write-Host "- ServicePlan: $servicePlanName" - Write-Host "- Bot Name: $name" - Write-Host "- Web App Name : $name" -} -else -{ - # Check for failed deployments - $operations = az group deployment operation list -g $resourceGroup -n $timestamp --output json 2>> $logFile | Out-Null - - if ($operations) { - $operations = $operations | ConvertFrom-Json - $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } - if ($failedOperations) { - foreach ($operation in $failedOperations) { - switch ($operation.properties.statusmessage.error.code) { - "MissingRegistrationForLocation" { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed - Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta - } - default { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." - Write-Host "! Code: $($operation.properties.statusMessage.error.code)." - Write-Host "! Message: $($operation.properties.statusMessage.error.message)." - } - } - } - } - } - else { - Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } - - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - Break -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/deploy.ps1 deleted file mode 100644 index 9d649810b0..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Scripts/deploy.ps1 +++ /dev/null @@ -1,253 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path BotProject.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Init user secret id -dotnet user-secrets init - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -$localBotPath = $(Join-Path $projFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - -if ($botPath) { - Write-Host "Publishing dialogs from external bot project: $($botPath)" - Copy-Item -Path $botPath -Recurse -Destination $remoteBotPath -Container -Force -} -else { - Copy-Item -Path $localBotPath -Recurse -Destination $publishFolder -Container -Force -} - -# Try to get luis config from appsettings -$settings = Get-Content $(Join-Path $projFolder appsettings.deployment.json) | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisEndpointKey) { - $luisEndpointKey = $luisSettings.endpointKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - - Set-Location -Path $remoteBotPath - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - $noneEmptyModels = [System.Collections.ArrayList]@() - - foreach ($model in $models) { - $stringContent = Get-Content $model | Out-String - if ($stringContent.Length -gt 0) { - $noneEmptyModels.Add($model) - } - } - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $noneEmptyModels - } - - $luString = $noneEmptyModels | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # Execute bf luis:build command - if (Get-Command bf -errorAction SilentlyContinue) { - $customizedSettings = Get-Content $(Join-Path $remoteBotPath settings appsettings.json) | ConvertFrom-Json - $customizedEnv = $customizedSettings.luis.environment - - # create generated folder if not exists - if (!(Test-Path generated)) { - New-Item -ItemType Directory -Force -Path generated - } - - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog --out .\generated --suffix $customizedEnv -f --region $luisAuthoringRegion - } - else { - Write-Host "bf luis:build does not exist, use the following command to install:" - Write-Host "1. npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/" - Write-Host "2. npm install -g @microsoft/botframework-cli" - Write-Host "3. npm config set registry http://registry.npmjs.org" - Break - } - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - # change setting file in publish folder - if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - $luisConfig["endpointKey"] = $luisEndpointKey - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/SkillConversationIdFactory.cs deleted file mode 100644 index 0e2f78ada8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/SkillConversationIdFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Newtonsoft.Json; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - /// - /// A that uses an in memory - /// to store and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly ConcurrentDictionary _conversationRefs = new ConcurrentDictionary(); - - public override Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - var skillConversationReference = new SkillConversationReference - { - ConversationReference = options.Activity.GetConversationReference(), - OAuthScope = options.FromBotOAuthScope - }; - var key = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{skillConversationReference.ConversationReference.Conversation.Id}-{skillConversationReference.ConversationReference.ChannelId}-skillconvo"; - _conversationRefs.GetOrAdd(key, JsonConvert.SerializeObject(skillConversationReference)); - return Task.FromResult(key); - } - - public override Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - var conversationReference = JsonConvert.DeserializeObject(_conversationRefs[skillConversationId]); - return Task.FromResult(conversationReference); - } - - public override Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - _conversationRefs.TryRemove(skillConversationId, out _); - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Startup.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Startup.cs deleted file mode 100644 index 2d920c023b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Startup.cs +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - IStorage storage = null; - - // Configure storage for deployment - if (!string.IsNullOrEmpty(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - Console.WriteLine("The settings of CosmosDbStorage is incomplete, please check following settings: settings.CosmosDb"); - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - - var botDir = Configuration.GetSection("bot").Get(); - - // manage all bot resources - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - services.AddSingleton(userState); - services.AddSingleton(conversationState); - services.AddSingleton(resourceExplorer); - - services.AddSingleton((s) => - { - HostContext.Current.Set(Configuration); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - adapter - .UseStorage(storage) - .UseState(userState, conversationState); - - if (!string.IsNullOrEmpty(settings.BlobStorage.ConnectionString) && !string.IsNullOrEmpty(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - else - { - Console.WriteLine("The settings of TranscriptLoggerMiddleware is incomplete, please check following settings: settings.BlobStorage.ConnectionString, settings.BlobStorage.Container"); - } - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - }); - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseWebSockets(); - - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ActionsTests.cs deleted file mode 100644 index 513ff1190c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ActionsTests.cs +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - [Ignore] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); ; - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ControllingConversationTests.cs deleted file mode 100644 index f76dc985c9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ControllingConversationTests.cs +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/InputsTests.cs deleted file mode 100644 index 8a7064016d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/InputsTests.cs +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License.// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/MessageTests.cs deleted file mode 100644 index fec22e7348..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/MessageTests.cs +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Builder.LanguageGeneration; -using Microsoft.Bot.Builder.ComposerBot.Json; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/Tests.csproj b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/Tests.csproj deleted file mode 100644 index 28a2c36621..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/Tests.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ToDoBotTests.cs deleted file mode 100644 index df21505518..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/Tests/ToDoBotTests.cs +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.Deployment.json deleted file mode 100644 index 206ac800b5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "MicrosoftAppId": "bc95067e-5821-4baa-963f-78c076ea8546", - "MicrosoftAppPassword": "so=kOXbWOsjRidJGfcQ?kN5:e1EdW05-" -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.Development.json deleted file mode 100644 index 0db3279e44..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.Development.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.json b/Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.json deleted file mode 100644 index cc17071455..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/appsettings.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "microsoftAppId": "", - "bot": "ComposerDialogs", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/packages/packages.json b/Composer/plugins/localPublish/hostedBots/60624.90875963831/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/60624.90875963831/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/60624.90875963831/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/60624.90875963831/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/README.md b/Composer/plugins/localPublish/hostedBots/67602.31967312547/README.md deleted file mode 100644 index ba48ee2802..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/README.md +++ /dev/null @@ -1,73 +0,0 @@ -This folder contains a Bot Project created with Bot Framework Composer. - -The full documentation for Composer lives here: -https://github.com/microsoft/botframework-composer - -To test this bot locally, open this folder in Composer, then click "Start Bot" - -## Provision Azure Resources to Host Bot - -This project includes a script that can be used to provision the resources necessary to run your bot in the Azure cloud. Running this script will create all of the necessary resources and return a publishing profile in the form of a JSON object. This JSON object can be imported into Composer's "Publish" tab and used to deploy the bot. - -* From this project folder, navigate to the scripts/ folder -* Run `npm install` -* Run `node provisionComposer.js --subscriptionId= --name= --appPassword= --environment=` -* You will be asked to login to the Azure portal in your browser. -* You will see progress indicators as the provision process runs. Note that it will take roughly 10 minutes to fully provision the resources. - -It will look like this: -``` -{ - "accessToken": "", - "name": "", - "environment": "", - "settings": { - "applicationInsights": { - "InstrumentationKey": "" - }, - "cosmosDb": { - "cosmosDBEndpoint": "", - "authKey": "", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - }, - "luis": { - "endpointKey": "", - "authoringKey": "", - "region": "westus" - }, - "MicrosoftAppId": "", - "MicrosoftAppPassword": "" - } -}``` - -When completed, you will see a message with a JSON "publishing profile" and instructions for using it in Composer. - - -## Publish bot to Azure - -To publish your bot to a Azure resources provisioned using the process above: - -* Open your bot in Composer -* Navigate to the "Publish" tab -* Select "Add new profile" from the toolbar -* In the resulting dialog box, choose "azurePublish" from the "Publish Destination Type" dropdown -* Paste in the profile you received from the provisioning script - -When you are ready to publish your bot to Azure, select the newly created profile from the sidebar and click "Publish to selected profile" in the toolbar. - -## Refresh your Azure Token - -When publishing, you may encounter an error about your access token being expired. This happens when the access token used to provision your bot expires. - -To get a new token: - -* Open a terminal window -* Run `az account get-access-token` -* This will result in a JSON object printed to the console, containing a new `accessToken` field. -* Copy the value of the accessToken from the terminal and into the publish `accessToken` field in the profile in Composer. diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/67602.31967312547/common.en-us.lg deleted file mode 100644 index f2a885213f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/common.en-us.lg +++ /dev/null @@ -1,2 +0,0 @@ -# WelcomeUser -- Welcome to the EchoBot sample. \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/echobot-0.dialog b/Composer/plugins/localPublish/hostedBots/67602.31967312547/echobot-0.dialog deleted file mode 100644 index 9b38da03ef..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/echobot-0.dialog +++ /dev/null @@ -1,87 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "id": "433224", - "name": "EchoBot-0" - }, - "autoEndDialog": true, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnUnknownIntent", - "$designer": { - "id": "821845" - }, - "actions": [ - { - "$kind": "Microsoft.SetProperty", - "$designer": { - "id": "OKsMum" - }, - "property": "dialog.result.content", - "value": { - "attachment": { - "type": "template", - "payload": { - "template_type": "button", - "text": "What do you want to do next?", - "buttons": [ - { - "type": "web_url", - "url": "https://www.messenger.com", - "title": "Visit Messenger" - } - ] - } - } - } - }, - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "dBdU4L" - }, - "activity": "${SendActivity_dBdU4L()}" - } - ] - }, - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.Foreach", - "$designer": { - "id": "518944", - "name": "Loop: for each item" - }, - "itemsProperty": "turn.Activity.membersAdded", - "actions": [ - { - "$kind": "Microsoft.IfCondition", - "$designer": { - "id": "641773", - "name": "Branch: if/else" - }, - "condition": "string(dialog.foreach.value.id) != string(turn.Activity.Recipient.id)", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "859266", - "name": "Send a response" - }, - "activity": "${SendActivity_Welcome()}" - } - ] - } - ] - } - ] - } - ], - "generator": "echobot-0.lg", - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema" -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/echobot-0.en-us.lg b/Composer/plugins/localPublish/hostedBots/67602.31967312547/echobot-0.en-us.lg deleted file mode 100644 index d3eddce454..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/echobot-0.en-us.lg +++ /dev/null @@ -1,16 +0,0 @@ -[import](common.lg) - -# SendActivity_Welcome -- ${WelcomeUser()} - - - - - - - -# SendActivity_dBdU4L() -[Activity -text=hi -ChannelData=${dialog.response.content} -] \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/67602.31967312547/language-generation/en-us/common.en-us.lg deleted file mode 100644 index f2a885213f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,2 +0,0 @@ -# WelcomeUser -- Welcome to the EchoBot sample. \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/language-generation/en-us/echobot-0.en-us.lg b/Composer/plugins/localPublish/hostedBots/67602.31967312547/language-generation/en-us/echobot-0.en-us.lg deleted file mode 100644 index d3eddce454..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/language-generation/en-us/echobot-0.en-us.lg +++ /dev/null @@ -1,16 +0,0 @@ -[import](common.lg) - -# SendActivity_Welcome -- ${WelcomeUser()} - - - - - - - -# SendActivity_dBdU4L() -[Activity -text=hi -ChannelData=${dialog.response.content} -] \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/language-understanding/en-us/echobot-0.en-us.lu b/Composer/plugins/localPublish/hostedBots/67602.31967312547/language-understanding/en-us/echobot-0.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/.gitignore b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/.gitignore deleted file mode 100644 index 2ad42ca00c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/.gitignore +++ /dev/null @@ -1,360 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*[.json, .xml, .info] - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/ComposerRuntime.sln b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/ComposerRuntime.sln deleted file mode 100644 index f39a16131b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/ComposerRuntime.sln +++ /dev/null @@ -1,43 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29920.165 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.WebApp", "azurewebapp\Microsoft.BotFramework.Composer.WebApp.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Tests", "tests\Microsoft.BotFramework.Composer.Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Core", "core\Microsoft.BotFramework.Composer.Core.csproj", "{35E20444-438D-4241-833C-804A24E9CB4F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Functions", "azurefunctions\Microsoft.BotFramework.Composer.Functions.csproj", "{9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.Build.0 = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/NuGet.Config b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/README.md b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/README.md deleted file mode 100644 index f41b1a16da..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# DotNet bot runtime - -# Folder structure - -- **core**: Includes all core JavaScript runtime logic, independent of hosting technology. -- **technology specific folders**: Each hosting technology has one folder in this directory. For example, for Azure Functions, there is an `azurefunction` folder - - **tests**: Javascript runtime tests diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/.gitignore b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/.gitignore deleted file mode 100644 index ff5b00c506..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/.gitignore +++ /dev/null @@ -1,264 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# Azure Functions localsettings file -local.settings.json - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -project.fragment.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -#*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/MessagesTrigger.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/MessagesTrigger.cs deleted file mode 100644 index abb88495f5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/MessagesTrigger.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Extensions.Logging; -using System; -using System.Net; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class MessagesTrigger - { - private readonly IBotFrameworkHttpAdapter _adapter; - private readonly IBot _bot; - - public MessagesTrigger(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter ?? throw new ArgumentNullException(nameof(adapter)); - this._bot = bot ?? throw new ArgumentNullException(nameof(bot)); - } - - [FunctionName("messages")] - public async Task Run( - [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, - ILogger log) - { - log.LogInformation($"Messages endpoint triggered."); - - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await _adapter.ProcessAsync(req, req.HttpContext.Response, _bot); - - if (req.HttpContext.Response.StatusCode == (int) HttpStatusCode.OK || req.HttpContext.Response.StatusCode == (int)HttpStatusCode.Accepted) - { - return new OkResult(); - } - else - { - return new ContentResult() - { - StatusCode = req.HttpContext.Response.StatusCode, - Content = $"Bot execution failed with status code: {req.HttpContext.Response.StatusCode}" - }; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj deleted file mode 100644 index 88a550947e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj deleted file mode 100644 index b678ef1042..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj +++ /dev/null @@ -1,61 +0,0 @@ - - - - netcoreapp3.0 - v3 - 2eb1c70c-5cd2-4c08-8aab-df989c347067 - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs deleted file mode 100644 index 645665ecaa..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Rest.Serialization; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace Microsoft.BotFramework.Composer.Functions.Settings -{ - internal class ActivitySerializationSettings - { - internal static readonly JsonSerializerSettings Default = new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Ignore, - Formatting = Formatting.Indented, - DateFormatHandling = DateFormatHandling.IsoDateFormat, - DateTimeZoneHandling = DateTimeZoneHandling.Utc, - ReferenceLoopHandling = ReferenceLoopHandling.Serialize, - ContractResolver = new ReadOnlyJsonContractResolver(), - Converters = new List { new Iso8601TimeSpanConverter() } - }; - - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/SkillsTrigger.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/SkillsTrigger.cs deleted file mode 100644 index 30528b4cf3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/SkillsTrigger.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder; -using System.Web.Http; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Microsoft.BotFramework.Composer.Functions.Settings; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class SkillsTrigger - { - private readonly SkillHandler _skillHandler; - - public SkillsTrigger(SkillHandler skillHandler) - { - this._skillHandler = skillHandler ?? throw new ArgumentNullException(nameof(skillHandler)); - } - - [FunctionName("skills")] - public async Task ReplyToActivityAsync( - [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities/{activityId}")] HttpRequest req, - string conversationId, string activityId, ILogger log) - { - log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - var body = await req.ReadAsStringAsync(); - var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - var result = await _skillHandler.HandleReplyToActivityAsync(req.Headers["Authorization"], conversationId, activityId, activity); - - return new JsonResult(result, ActivitySerializationSettings.Default); - } - - - //[FunctionName("skills")] - //public async Task SendToConversationAsync( - // [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities")] HttpRequest req, - // string conversationId, string activityId, ILogger log) - //{ - // log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - // var body = await req.ReadAsStringAsync(); - // var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - // var result = await _skillHandler.HandleSendToConversationAsync(req.Headers["Authorization"], conversationId, activity); - - // return new JsonResult(result, ActivitySerializationSettings.Default); - //} - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Startup.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Startup.cs deleted file mode 100644 index 0641c70d30..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/Startup.cs +++ /dev/null @@ -1,236 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Http; -using Microsoft.Azure.Functions.Extensions.DependencyInjection; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Reflection; -using System.Text; - -[assembly: FunctionsStartup(typeof(Microsoft.BotFramework.Composer.Functions.Startup))] - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class Startup : FunctionsStartup - { - private IConfigurationRoot BuildConfiguration(string rootDirectory) - { - var config = new ConfigurationBuilder(); - - // Config precedence 1: root app.settings - config - .SetBasePath(rootDirectory) - .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) - .UseLuisConfigAdapter() - .UseLuisSettings(); - - // Config precedence 2: ComposerDialogs/settings settings which are injected by the composer publish - // Hard code the settings path to 'ComposerDialogs' for deployment - var configFile = Path.GetFullPath(Path.Combine(rootDirectory, @"ComposerDialogs/settings/appsettings.json")); - config.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - // Config Precedence 3: Deployment specific config - config.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - - if (!Debugger.IsAttached) - { - config.AddUserSecrets(); - } - - config.AddEnvironmentVariables(); - - return config.Build(); - } - - public override void Configure(IFunctionsHostBuilder builder) - { - var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - var rootDirectory = Directory.GetParent(binDirectory).FullName; - - var rootConfiguration = BuildConfiguration(rootDirectory); - - var settings = new BotSettings(); - rootConfiguration.Bind(settings); - - var services = builder.Services; - - services.AddSingleton(rootConfiguration); - - services.AddLogging(); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Adaptive component registration - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings.ApplicationInsights.InstrumentationKey); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings.Telemetry.LogPersonalInformation); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings.Telemetry.LogActivities); - }); - - // Storage - IStorage storage; - if (ConfigSectionValid(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Resource explorer to track declarative assets - var resourceExplorer = new ResourceExplorer().AddFolder(Path.Combine(rootDirectory, settings.Bot ?? ".")); - services.AddSingleton(resourceExplorer); - - // Adapter - services.AddSingleton(s => - { - // Retrieve required dependencies - //IConfiguration configuration = s.GetService(); - IStorage storage = s.GetService(); - UserState userState = s.GetService(); - ConversationState conversationState = s.GetService(); - TelemetryInitializerMiddleware telemetryInitializerMiddleware = s.GetService(); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(rootConfiguration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(rootConfiguration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, s); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - - return adapter; - }); - - var defaultLocale = rootConfiguration.GetValue("defaultLocale") ?? "en-us"; - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - // Bot - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - GetRootDialog(Path.Combine(rootDirectory, settings.Bot)), - defaultLocale, - removeRecipientMention)); - } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings.BlobStorage.ConnectionString) && ConfigSectionValid(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings.Feature.UseShowTypingMiddleware) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IServiceProvider s) - { - if (settings.Feature.UseInspectionMiddleware) - { - adapter.Use(s.GetService()); - } - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - - private bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.Deployment.json deleted file mode 100644 index 5b9a266f9e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "ComposerDialogs", - "root": "ComposerDialogs" -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.Development.json deleted file mode 100644 index 32b3ba9cf9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.Development.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "../", - "root": "../" -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.json deleted file mode 100644 index eea4c3777e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/appsettings.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false - }, - "microsoftAppId": "", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/host.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/host.json deleted file mode 100644 index 903482d949..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurefunctions/host.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "2.0" -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/.gitignore b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Controllers/BotController.cs deleted file mode 100644 index daaba0d810..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Controllers/SkillController.cs deleted file mode 100644 index a8853db745..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Controllers/SkillController.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj deleted file mode 100644 index 7954c4064a..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj +++ /dev/null @@ -1,41 +0,0 @@ - - - - netcoreapp3.1 - 9879238f-b44d-4e2c-9d9d-c5970eb17f44 - - - - Always - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Program.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Program.cs deleted file mode 100644 index e080ee0004..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Program.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - builder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); - - if (env.IsDevelopment()) - { - // Local Debug - builder.AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true); - } - - var configuration = builder.Build(); - - // Hard code the settings path to 'ComposerDialogs' while deployment - var botRoot = configuration.GetValue("bot") ?? "ComposerDialogs"; - var configFile = Path.GetFullPath(Path.Combine(botRoot, @"settings/appsettings.json")); - - builder.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - // Need to put this part here to override the any customized settings - if (!env.IsDevelopment()) - { - //Azure Deploy - builder.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - } - - builder.UseLuisConfigAdapter() - .UseLuisSettings(); - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/README.md b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/README.md deleted file mode 100644 index 356528b3d7..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/README.md +++ /dev/null @@ -1,21 +0,0 @@ -## Bot Project -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -## Instructions for setting up the Bot Project runtime -The Bot Project is a regular Bot Framework SDK V4 project. Before you can launch it from the emulator, you need to make sure you can run the bot. - -### Prerequisite: -* Install .Netcore 3.1 - -### Commands: - -* from root folder -* cd templates/dotnet/Microsoft.BotFramework.Composer.WebAppTemplate -* dotnet user-secrets init // init the user secret id -* dotnet build // build -* dotnet run // start the bot -* It will start a web server and listening at http://localhost:3979. - -### Test bot -* You can set you emulator to connect to http://localhost:3979/api/messages. - diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/readme.md b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/readme.md deleted file mode 100644 index bbbe520a40..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/readme.md +++ /dev/null @@ -1,58 +0,0 @@ - -# How to update the schema file -Once the bot has been setup with Composer and we wish to make changes to the schema, the first step in this process is to eject the runtime through the `Runtime Config` in Composer. The ejected runtime folder will broadly have the following structure - -``` -bot - /bot.dialog - /language-generation - /language-understanding - /dialogs - /customized-dialogs - /runtime - /azurewebapp - /azurefunctions - /schemas - sdk.schema -``` - -### Setup bfdialog tool (Prerequisite) -The bfdialog is part of our suite of botframework tools and helps merge partial schemas into a single consolidated schema - -##### To point npm to nightly builds -``` -npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/ -``` -##### To install BF tool: -``` -npm i -g @microsoft/botframework-cli -``` - -##### To install bf dialog plugin -``` -bf plugins:install @microsoft/bf-dialog -``` - -## Adding Custom Actions to your Composer bot -**NOTE: These steps assume you are using azurewebapp as your deployment solution. Replicating it on azurefunctions would be similar -** -- In this tutorial, we will be going over the steps to include a custom action `MultiplyDialog` that multiplies two numbers passed as inputs. Note that the ejected runtime should contain a `customaction` folder that has this sample. - -- Navigate to the csproj file inside the `runtime` folder (bot/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj) and include a project reference to the customaction project like ``. - -- Then Uncomment line 28 and 139 in azurewebapp/Startup.cs file so as to register this action. -``` -using Microsoft.BotFramework.Composer.CustomAction; -// This is for custom action component registration. -ComponentRegistration.Add(new CustomActionComponentRegistration()); -``` - -- Run the command `dotnet build` on the azurewebapp project to verify if it passes build after adding custom actions to it. - -- Navigate to to the `Schemas (bot/runtime/azurewebapp/Schemas)` folder and then run the command `sh update.sh`. - -- Validate that the partial schema (MultiplyDialog.schema inside customaction/Schema) has been appended to the default sdk.schema file to generate one single consolidated sdk.schema file. - -- Copy the newly generated sdk.schema into the `schemas (bot/schemas)` folder at the root of the ejected runtime. - -The above steps should have generated a new sdk.schema file inside `schemas` folder for Composer to use. Reload the bot and you should be able to include your new custom action! diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/sdk.schema deleted file mode 100644 index 1a7b2fd24b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/sdk.schema +++ /dev/null @@ -1,8850 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/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.ChoiceInput" - }, - { - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$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.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.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.TemperatureEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" - }, - { - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "$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 ActivityTemplate", - "type": "object", - "required": [ - "template", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to use to create the activity", - "type": "string" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ActivityTemplate" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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.IEntityRecognizer)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AgeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Ask": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.SendActivity)" - ], - "title": "Send Activity to Ask a question", - "description": "This is an action which sends an activity to the user when a response is expected", - "type": "object", - "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.", - "type": "array", - "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" - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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.", - "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" - }, - { - "$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" - }, - { - "$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", - "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", - "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" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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" - ], - "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", - "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", - "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.ChoiceInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "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" - ], - "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", - "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.IEntityRecognizer)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ConfirmationEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ContinueLoop" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CrossTrainedRecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CurrencyEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DateTimeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "defaultLocale": { - "$ref": "#/definitions/stringExpression", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "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/stringExpression", - "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", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DebugBreak" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "required": [ - "activityId", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "required": [ - "property", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DimensionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "required": [ - "changeType", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "oneOf": [ - { - "type": "string", - "title": "Standard change", - "description": "Standard change types.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EditActions" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "required": [ - "itemsProperty", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to the array in memory.", - "oneOf": [ - { - "type": "string", - "title": "Enum", - "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.IEntityRecognizer)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EmailEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "required": [ - "eventName", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "eventName": { - "$role": "expression", - "title": "Event name", - "description": "Name of the event to emit.", - "oneOf": [ - { - "type": "string", - "title": "Built-in event", - "description": "Standard event type.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - { - "type": "string", - "title": "Custom event", - "description": "Custom event type", - "pattern": "^(?!(beginDialog$|resumeDialog$|repromptDialog$|cancelDialog$|endDialog$|activityReceived$|recognizedIntent$|unknownIntent$|actionsStarted$|actionsSaved$|actionsEnded$|actionsResumed))(\\S){1}.*" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "eventValue": { - "$ref": "#/definitions/valueExpression", - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$ref": "#/definitions/booleanExpression", - "title": "Bubble event", - "description": "If true this event is passed on to 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", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndTurn" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.FirstSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "required": [ - "itemsProperty", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "itemsProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to execute for each page. Use '$foreach.page' to access each page.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "pageIndex": { - "$ref": "#/definitions/stringExpression", - "title": "Index property", - "description": "Property that holds the index of the page.", - "default": "dialog.foreach.pageindex" - }, - "page": { - "$ref": "#/definitions/stringExpression", - "title": "Page property", - "description": "Property that holds the value of the page.", - "default": "dialog.foreach.page" - }, - "pageSize": { - "$ref": "#/definitions/integerExpression", - "title": "Page size", - "description": "Number of items in each page.", - "default": 10 - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ForeachPage" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "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 Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GetConversationMembers" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "required": [ - "actionId", - "$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" - ] - }, - "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.IEntityRecognizer)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GuidEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.HashtagEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "required": [ - "url", - "method", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$ref": "#/definitions/stringExpression", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$ref": "#/definitions/valueExpression", - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Result property", - "description": "A property to store the result of this action. The result can include any of the 4 properties from the HTTP response: statusCode, reasonPhrase, content, and headers. If the content is JSON it will be a deserialized object. The values can be accessed via .content for example.", - "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" - ], - "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" - } - ] - }, - "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.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" - }, - { - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginSkill" - }, - { - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "$ref": "#/definitions/Microsoft.CancelDialog" - }, - { - "$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.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - } - ] - }, - "Microsoft.IEntityRecognizer": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Components which derive from EntityRecognizer.", - "type": "object", - "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" - } - ] - }, - "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" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Components which derive from TextTemplate class", - "$role": "interface", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - } - ] - }, - "Microsoft.ITrigger": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "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.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.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.", - "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" - ], - "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", - "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.IEntityRecognizer)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.IpEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": { - "type": "array", - "title": "Per-locale policy", - "description": "Language policy per locale.", - "items": { - "type": "string", - "title": "Locale", - "description": "Locale like en-us." - } - }, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.LanguagePolicy" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LogAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Log to console", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "type": "object", - "required": [ - "text", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "text": { - "$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" - ], - "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." - }, - "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": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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.IEntityRecognizer)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MentionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MostSpecificSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "languagePolicy": { - "$kind": "Microsoft.LanguagePolicy", - "type": "object", - "title": "Language policy", - "description": "Defines fall back languages to try per user input language.", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - "recognizers": { - "type": "object", - "title": "Recognizers", - "description": "Map of language -> Recognizer", - "additionalProperties": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MultiLanguageRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "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.IEntityRecognizer)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberRangeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "required": [ - "connectionName", - "$kind" - ], - "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" - ], - "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", - "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", - "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)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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", - "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" - ], - "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", - "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" - ], - "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.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" - ], - "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" - ], - "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.", - "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" - ], - "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", - "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" - ], - "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" - ], - "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.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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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", - "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" - ], - "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 and if none of the 'on intent recognition' triggers match recognized intent.", - "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.OnUnknownIntent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OrdinalEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PercentageEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PhoneNumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$ref": "#/definitions/stringExpression", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$ref": "#/definitions/stringExpression", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "noAnswer": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Fallback answer", - "description": "Default answer to return when none found in KB.", - "default": "Sorry, I did not find an answer.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "threshold": { - "$ref": "#/definitions/numberExpression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "default": 0.3 - }, - "activeLearningCardTitle": { - "$ref": "#/definitions/stringExpression", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$ref": "#/definitions/stringExpression", - "title": "Card no match text", - "description": "Text for no match option.", - "default": "None of the above." - }, - "cardNoMatchResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Card no match response", - "description": "Custom response when no match option was selected.", - "default": "Thanks for the feedback.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "strictFilters": { - "$ref": "#/definitions/arrayExpression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "type": "object", - "title": "Metadata filter", - "description": "Metadata filter.", - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of filter property.", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "description": "Value to filter on.", - "maximum": 100 - } - } - } - }, - "top": { - "$ref": "#/definitions/numberExpression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "default": 3 - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "$ref": "#/definitions/stringExpression", - "title": "Ranker Type", - "description": "Type of Ranker.", - "oneOf": [ - { - "title": "Standard ranker", - "description": "Standard ranker types.", - "enum": [ - "default", - "questionOnly", - "autoSuggestQuestion" - ], - "default": "default" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "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" - ] - }, - "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": "IsTest", - "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" - } - ] - }, - "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": "QnARequestContext", - "description": "Context to use for ranking." - }, - "qnaId": { - "$ref": "#/definitions/integerExpression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "seed": { - "type": "integer", - "title": "Random seed", - "description": "Random seed to start random number generation." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RandomSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "required": [ - "name", - "pattern", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "intents": { - "type": "array", - "title": "RegEx patterns to intents", - "description": "Collection of patterns to match for an intent.", - "items": { - "type": "object", - "title": "Pattern", - "description": "Intent and regex pattern.", - "properties": { - "intent": { - "type": "string", - "title": "Intent", - "description": "The intent name." - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "The regular expression pattern." - } - } - } - }, - "entities": { - "type": "array", - "title": "Entity recognizers", - "description": "Collection of entity recognizers to use.", - "items": { - "$kind": "Microsoft.IEntityRecognizer", - "$ref": "#/definitions/Microsoft.IEntityRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "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.", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "dialog": { - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "pattern": "^(?!(=)).*", - "title": "Dialog", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=settings.dialogId" - ] - } - ], - "title": "Dialog name", - "description": "Name of the dialog to call." - }, - "options": { - "$ref": "#/definitions/objectExpression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "type": "string", - "title": "Options", - "description": "Options for replacing dialog." - } - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "default": true - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ReplaceDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ResourceMultiLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Resource Multi-Language Generator", - "description": "MultiLanguage Generator which is bound to resource by resource Id.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "resourceId": { - "type": "string", - "title": "Resource Id", - "description": "Resource which is the root language generator. Other generaters with the same name and language suffix will be loaded into this generator and used based on the Language Policy.", - "default": "dialog.result" - }, - "languagePolicy": { - "type": "object", - "title": "Language Policy", - "description": "Set alternate language policy for this generator. If not set, the global language policy will be used." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ResourceMultiLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "title": "Assignment", - "description": "Property assignment.", - "properties": { - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "required": [ - "property", - "value", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "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" - ], - "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" - ], - "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.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Temperature Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemperatureEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TemplateEngineLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Template Multi-Language Generator", - "description": "Template Generator which allows only inline evaluation of templates.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemplateEngineLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TextInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "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" - ], - "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.TraceActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send a TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "name": { - "$ref": "#/definitions/stringExpression", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$ref": "#/definitions/stringExpression", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$ref": "#/definitions/stringExpression", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Property that holds the value to send as trace activity." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TraceActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TrueSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "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.IEntityRecognizer)", - "title": "Confirmation Url Recognizer", - "description": "Recognizer which recognizes urls.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.UrlEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "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": { - "type": "string", - "title": "Expression", - "description": "Expression starting with =.", - "pattern": "^=.*\\S.*", - "examples": [ - "=user.name" - ] - }, - "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": [ - "=..." - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/update.sh b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/update.sh deleted file mode 100644 index c9f8544cdb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Schemas/update.sh +++ /dev/null @@ -1,2 +0,0 @@ -cd .. -bf dialog:merge *.csproj -o ./schemas/sdk.schema -v diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/build_runtime.ps1 b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/build_runtime.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -if ((dotnet --version) -lt '3.1.0') { - throw "! dotnet core 3.1 is required, please refer following documents for help. https://dotnet.microsoft.com/download/dotnet-core/3.1" - Break -} - -# This command need dotnet core more than 3.0 -dotnet user-secrets init - -# Merge all streams into stdout -$result = dotnet build *>&1 -# Evaluate success/failure -if($LASTEXITCODE -ne 0) -{ - # Failed, you can reconstruct stderr strings with: - $ErrorString = $result -join [System.Environment]::NewLine - throw $ErrorString -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/build_runtime.sh b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/build_runtime.sh +++ /dev/null @@ -1,11 +0,0 @@ -versionString=`dotnet --version` -function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } -if version_lt $versionString "3.1.0"; -then - echo "! dotnet core 3.1 is required, please refer following documents for help. -https://dotnet.microsoft.com/download/dotnet-core/3.1" - exit 1 -else - dotnet user-secrets init - dotnet build -fi diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/create.ps1 b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/create.ps1 +++ /dev/null @@ -1,211 +0,0 @@ -Param( - [string] $name, - [string] $location, - [string] $appId, - [string] $appPassword, - [string] $environment, - [string] $luisAuthoringKey, - [string] $projDir = $(Get-Location), - [string] $logFile = $(Join-Path $PSScriptRoot .. "create_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6){ - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -if (-not (Test-Path (Join-Path $projDir 'appsettings.deployment.json'))) -{ - Write-Host "! Could not find an 'appsettings.deployment.json' file in the current directory." -ForegroundColor DarkRed - Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" -} - -if (-not $environment) -{ - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $location) { - $location = Read-Host "? Azure resource group region" -} - -if (-not $appPassword) { - $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" -} - -if (-not $appId) { - # Create app registration - $app = (az ad app create ` - --display-name $name ` - --password `"$($appPassword)`" ` - --available-to-other-tenants ` - --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` - --output json) - - # Retrieve AppId - if ($app) { - $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId - } - - if(-not $appId) { - Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta - Break - } -} - -$shouldCreateAuthoringResource = $true - -# Use pre-exsisting luis authoring key -if ($luisAuthoringKey) { - $shouldCreateAuthoringResource = $false -} - -$resourceGroup = "$name-$environment" -$servicePlanName = "$name-$environment" - -# Get timestamp -$timestamp = Get-Date -f MMddyyyyHHmmss - -# Create resource group -Write-Host "> Creating resource group ..." -(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null - -# Deploy Azure services -Write-Host "> Validating Azure deployment ..." -$validation = az group deployment validate ` - --resource-group $resourcegroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - -if ($validation) { - $validation >> $logFile - $validation = $validation | ConvertFrom-Json - - if (-not $validation.error) { - Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow - $deployment = az group deployment create ` - --name $timestamp ` - --resource-group $resourceGroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - } - else { - Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - if ($validation.error.details -and $validation.error.details[0].code -eq "CanNotCreateMultipleFreeAccounts") - { - Write-Host "! The subscription is exceeding the maximum number of allowed LuisAuthoringAccounts. You already have a luis authoring resource created, please get your luis authoring key and retry with the following command:" -ForegroundColor DarkRed - Write-Host "pwsh ./Scripts/create.ps1 -name $name -environment $environment -location $location -appPassword $appPassword -luisAuthoringKey [YourLuisAuthoringKey]" -ForegroundColor Green - } - - Break - } -} - - -# Get deployment outputs -$outputs = (az group deployment show ` - --name $timestamp ` - --resource-group $resourceGroup ` - --output json) 2>> $logFile - -# If it succeeded then we perform the remainder of the steps -if ($outputs) -{ - # Log and convert to JSON - $outputs >> $logFile - $outputs = $outputs | ConvertFrom-Json - if ($outputs.properties.error) { - Write-Host "! Deployment failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($outputs.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - Break - } - - $outputs = $outputs.properties.outputs - $outputMap = @{} - $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } - - # Update appsettings.deployment.json - Write-Host "> Updating appsettings.deployment.json ..." - if (Test-Path $(Join-Path $projDir appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $projDir appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppId' -Value $appId - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppPassword' -Value $appPassword - - $settings | Add-Member -Type NoteProperty -Force -Name 'bot' -Value "ComposerDialogs" - - foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.deployment.json) - - Write-Host "> Done." - Write-Host "- App Id: $appId" - Write-Host "- App Password: $appPassword" - Write-Host "- Resource Group: $resourceGroup" - Write-Host "- ServicePlan: $servicePlanName" - Write-Host "- Bot Name: $name" - Write-Host "- Web App Name : $name" -} -else -{ - # Check for failed deployments - $operations = az group deployment operation list -g $resourceGroup -n $timestamp --output json 2>> $logFile | Out-Null - - if ($operations) { - $operations = $operations | ConvertFrom-Json - $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } - if ($failedOperations) { - foreach ($operation in $failedOperations) { - switch ($operation.properties.statusmessage.error.code) { - "MissingRegistrationForLocation" { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed - Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta - } - default { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." - Write-Host "! Code: $($operation.properties.statusMessage.error.code)." - Write-Host "! Message: $($operation.properties.statusMessage.error.message)." - } - } - } - } - } - else { - Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } - - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - Break -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/deploy.ps1 deleted file mode 100644 index 3f510dfb8f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Scripts/deploy.ps1 +++ /dev/null @@ -1,272 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path Microsoft.BotFramework.Composer.WebApp.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Init user secret id -dotnet user-secrets init - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - - -if (-not $botPath) { - # If don't provide bot path, then try to copy all dialogs except the runtime folder in parent folder to the publishing folder (bin\Realse\ Folder) - $botPath = '..' -} - -$botPath = $(Join-Path $botPath '*') -Write-Host "Publishing dialogs from external bot project: $($botPath)" -Copy-Item -Path (Get-Item -Path $botPath -Exclude ('runtime', 'generated')).FullName -Destination $remoteBotPath -Recurse -Force -Container - -# Try to get luis config from appsettings -$settings = Get-Content $(Join-Path $projFolder appsettings.deployment.json) | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisEndpointKey) { - $luisEndpointKey = $luisSettings.endpointKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - - Set-Location -Path $remoteBotPath - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - $noneEmptyModels = [System.Collections.ArrayList]@() - - foreach ($model in $models) { - $stringContent = Get-Content $model | Out-String - if ($stringContent.Length -gt 0) { - $noneEmptyModels.Add($model) - } - } - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $noneEmptyModels - } - - $luString = $noneEmptyModels | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # Execute bf luis:build command - if (Get-Command bf -errorAction SilentlyContinue) { - $customizedSettings = Get-Content $(Join-Path $remoteBotPath settings appsettings.json) | ConvertFrom-Json - $customizedEnv = $customizedSettings.luis.environment - - # create generated folder if not exists - if (!(Test-Path generated)) { - New-Item -ItemType Directory -Force -Path generated - } - - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog --out .\generated --suffix $customizedEnv -f --region $luisAuthoringRegion - } - else { - Write-Host "bf luis:build does not exist, use the following command to install:" - Write-Host "1. npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/" - Write-Host "2. npm install -g @microsoft/botframework-cli/4.9.0-preview.121555" - Write-Host "3. npm config set registry http://registry.npmjs.org" - Break - } - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - # change setting file in publish folder - if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - $luisConfig["endpointKey"] = $luisEndpointKey - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -# Enable all features to true by default -$featureConfig = @{ } -$featureConfig["UseTelementryLoggerMiddleware"] = $true -$featureConfig["UseTranscriptLoggerMiddleware"] = $true -$featureConfig["UseShowTypingMiddleware"] = $true -$featureConfig["UseInspectionMiddleware"] = $true -$featureConfig["UseCosmosDb"] = $true - -if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json -} -else { - $settings = New-Object PSObject -} - -$settings | Add-Member -Type NoteProperty -Force -Name 'feature' -Value $featureConfig -$settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Startup.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Startup.cs deleted file mode 100644 index fbdd6a153c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/Startup.cs +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; - -//using Microsoft.BotFramework.Composer.CustomAction; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings.BlobStorage.ConnectionString) && ConfigSectionValid(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings.Feature.UseShowTypingMiddleware) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IStorage storage) - { - if (settings.Feature.UseInspectionMiddleware) - { - adapter.Use(new InspectionMiddleware(new InspectionState(storage))); - } - } - - public IStorage ConfigureStorage(BotSettings settings) - { - IStorage storage; - if (ConfigSectionValid(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - return storage; - } - - public BotFrameworkHttpAdapter GetBotAdapter(IStorage storage, BotSettings settings, UserState userState, ConversationState conversationState, IServiceProvider s, TelemetryInitializerMiddleware telemetryInitializerMiddleware) - { - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(Configuration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, storage); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // This is for custom action component registration. - //ComponentRegistration.Add(new CustomActionComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings.ApplicationInsights.InstrumentationKey); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings.Telemetry.LogPersonalInformation); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings.Telemetry.LogActivities); - }); - - var storage = ConfigureStorage(settings); - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Configure bot loading path - var botDir = settings.Bot; - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - var defaultLocale = Configuration.GetValue("defaultLocale") ?? "en-us"; - - services.AddSingleton(resourceExplorer); - - services.AddSingleton((s) => GetBotAdapter(storage, settings, userState, conversationState, s, s.GetService())); - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog, - defaultLocale, - removeRecipientMention)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseWebSockets(); - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private static bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.Deployment.json deleted file mode 100644 index 5b9a266f9e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "ComposerDialogs", - "root": "ComposerDialogs" -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.Development.json deleted file mode 100644 index edb1022967..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.Development.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "../../", - "root": "../../" -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.json deleted file mode 100644 index eea4c3777e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/appsettings.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false - }, - "microsoftAppId": "", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/packages/packages.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/azurewebapp/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/.gitignore b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/ComposerBot.cs deleted file mode 100644 index 6dec73aebe..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/ComposerBot.cs +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Security.Claims; -using System.Security.Principal; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - private readonly IBotTelemetryClient telemetryClient; - private readonly string defaultLocale; - private readonly bool removeRecipientMention; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, IBotTelemetryClient telemetryClient, string rootDialog, string defaultLocale, bool removeRecipientMention = false) - { - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - this.defaultLocale = defaultLocale; - this.telemetryClient = telemetryClient; - this.removeRecipientMention = removeRecipientMention; - - LoadRootDialogAsync(); - this.dialogManager.InitialTurnState.Set(skillClient); - this.dialogManager.InitialTurnState.Set(conversationIdFactory); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - AdaptiveDialog rootDialog = (AdaptiveDialog)this.dialogManager.RootDialog; - if (turnContext.TurnState.Get(BotAdapter.BotIdentityKey) is ClaimsIdentity claimIdentity && SkillValidation.IsSkillClaim(claimIdentity.Claims)) - { - rootDialog.AutoEndDialog = true; - } - else - { - rootDialog.AutoEndDialog = false; - } - - if (this.removeRecipientMention && turnContext?.Activity?.Type == "message") - { - turnContext.Activity.RemoveRecipientMention(); - } - - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration() - .UseLanguagePolicy(new LanguagePolicy(defaultLocale)); - - if (telemetryClient != null) - { - dialogManager.UseTelemetry(this.telemetryClient); - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/LuisConfig.cs deleted file mode 100644 index bc2ff6c834..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/LuisConfigAdapter.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/LuisConfigAdapter.cs deleted file mode 100644 index c879fd1494..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/LuisConfigAdapter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.BotFramework.Composer.Core -{ - public static class LuisConfigAdapter - { - public static IConfigurationBuilder UseLuisConfigAdapter(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var settings = new Dictionary(); - settings["environment"] = configuration.GetValue("luis:environment"); - settings["region"] = configuration.GetValue("luis:authoringRegion"); - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Microsoft.BotFramework.Composer.Core.csproj b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Microsoft.BotFramework.Composer.Core.csproj deleted file mode 100644 index 2afb4a6f7c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Microsoft.BotFramework.Composer.Core.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - netstandard2.0 - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BlobStorageConfiguration.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BlobStorageConfiguration.cs deleted file mode 100644 index e6ab40402f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BlobStorageConfiguration.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BotFeatureSettings.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BotFeatureSettings.cs deleted file mode 100644 index 1073ae5786..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BotFeatureSettings.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotFeatureSettings - { - // Use ShowTypingMiddleware - public bool UseShowTypingMiddleware { get; set; } - - // Use InspectionMiddleware - public bool UseInspectionMiddleware { get; set; } - - // Use RemoveRecipientMention Activity Extensions - public bool RemoveRecipientMention { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BotSettings.cs deleted file mode 100644 index dcb6394ed3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/Settings/BotSettings.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotSettings - { - public BotFeatureSettings Feature { get; set; } - - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration ApplicationInsights { get; set; } - - public AdditionalTelemetryConfiguration Telemetry { get; set; } - - public string Bot { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - - public class AdditionalTelemetryConfiguration - { - public bool LogPersonalInformation { get; set; } - - public bool LogActivities { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/SkillConversationIdFactory.cs deleted file mode 100644 index dc1db5a1ce..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/core/SkillConversationIdFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Newtonsoft.Json; - -namespace Microsoft.BotFramework.Composer.Core -{ - /// - /// A that uses an in memory - /// to store and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly ConcurrentDictionary _conversationRefs = new ConcurrentDictionary(); - - public override Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - var skillConversationReference = new SkillConversationReference - { - ConversationReference = options.Activity.GetConversationReference(), - OAuthScope = options.FromBotOAuthScope - }; - var key = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{skillConversationReference.ConversationReference.Conversation.Id}-{skillConversationReference.ConversationReference.ChannelId}-skillconvo"; - _conversationRefs.GetOrAdd(key, JsonConvert.SerializeObject(skillConversationReference)); - return Task.FromResult(key); - } - - public override Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - var conversationReference = JsonConvert.DeserializeObject(_conversationRefs[skillConversationId]); - return Task.FromResult(conversationReference); - } - - public override Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - _conversationRefs.TryRemove(skillConversationId, out _); - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Action/MultiplyDialog.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Action/MultiplyDialog.cs deleted file mode 100644 index 81768d1b48..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Action/MultiplyDialog.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Threading; -using System.Threading.Tasks; -using AdaptiveExpressions.Properties; -using Microsoft.Bot.Builder.Dialogs; -using Newtonsoft.Json; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - /// - /// Custom command which takes takes 2 data bound arguments (arg1 and arg2) and multiplies them returning that as a databound result. - /// - public class MultiplyDialog : Dialog - { - [JsonConstructor] - public MultiplyDialog([CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) - : base() - { - // enable instances of this command as debug break point - this.RegisterSourceLocation(sourceFilePath, sourceLineNumber); - } - - [JsonProperty("$kind")] - public const string Kind = "MultiplyDialog"; - - /// - /// Gets or sets memory path to bind to arg1 (ex: conversation.width). - /// - /// - /// Memory path to bind to arg1 (ex: conversation.width). - /// - [JsonProperty("arg1")] - public NumberExpression Arg1 { get; set; } - - /// - /// Gets or sets memory path to bind to arg2 (ex: conversation.height). - /// - /// - /// Memory path to bind to arg2 (ex: conversation.height). - /// - [JsonProperty("arg2")] - public NumberExpression Arg2 { get; set; } - - /// - /// Gets or sets caller's memory path to store the result of this step in (ex: conversation.area). - /// - /// - /// Caller's memory path to store the result of this step in (ex: conversation.area). - /// - [JsonProperty("resultProperty")] - public StringExpression ResultProperty { get; set; } - - public override Task BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken)) - { - var arg1 = Arg1.GetValue(dc.State); - var arg2 = Arg2.GetValue(dc.State); - - var result = Convert.ToInt32(arg1) * Convert.ToInt32(arg2); - if (this.ResultProperty != null) - { - dc.State.SetValue(this.ResultProperty.GetValue(dc.State), result); - } - - return dc.EndDialogAsync(result: result, cancellationToken: cancellationToken); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/CustomAction.sln b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/CustomAction.sln deleted file mode 100644 index 2a2bdfab34..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/CustomAction.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30011.22 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "customaction", "customaction.csproj", "{2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {83C7CDB7-7F32-4E64-9D6D-7752806C37D6} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/CustomActionComponentRegistration.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/CustomActionComponentRegistration.cs deleted file mode 100644 index d14abbe6b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/CustomActionComponentRegistration.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Newtonsoft.Json; -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - public class CustomActionComponentRegistration : ComponentRegistration, IComponentDeclarativeTypes - { - public IEnumerable GetDeclarativeTypes(ResourceExplorer resourceExplorer) - { - // Actions - yield return new DeclarativeType(MultiplyDialog.Kind); - } - - public IEnumerable GetConverters(ResourceExplorer resourceExplorer, SourceContext sourceContext) - { - yield break; - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj deleted file mode 100644 index 499b0304e2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Library - netcoreapp3.1 - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Schemas/MultiplyDialog.schema b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Schemas/MultiplyDialog.schema deleted file mode 100644 index e8e651e601..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/customaction/Schemas/MultiplyDialog.schema +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/component.schema", - "$role": "implements(Microsoft.IDialog)", - "title": "Multiply", - "description": "This will return the result of arg1*arg2", - "type": "object", - "additionalProperties": false, - "properties": { - "arg1": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg1", - "description": "Value from callers memory to use as arg 1" - }, - "arg2": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg2", - "description": "Value from callers memory to use as arg 2" - }, - "resultProperty": { - "$ref": "schema:#/definitions/stringExpression", - "title": "Result", - "description": "Value from callers memory to store the result" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ActionsTests.cs deleted file mode 100644 index 0767f86d7e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ActionsTests.cs +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ControllingConversationTests.cs deleted file mode 100644 index 8922c9b099..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ControllingConversationTests.cs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .Send("08") - .AssertReply("In continue loop, which only outputs dual.") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 3 value: 4") - .AssertReply("index: 5 value: 6") - .AssertReply("In break loop, which breaks when index > 2") - .AssertReply("index: 0 value: 1") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 2 value: 3") - .AssertReply("done") - .Send("09") - .AssertReply("counter: 1") - .AssertReply("counter: 2") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/InputsTests.cs deleted file mode 100644 index f0ef055d87..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/InputsTests.cs +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/MessageTests.cs deleted file mode 100644 index 09b27ca711..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/MessageTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj deleted file mode 100644 index e444ece921..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ToDoBotTests.cs deleted file mode 100644 index 00660fc3b5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/runtime/tests/ToDoBotTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json deleted file mode 100644 index 86871bc405..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "functionapp", - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "kind": "functionapp", - "httpsOnly": true - }, - "resources": [ - { - "name": "appsettings", - "type": "config", - "apiVersion": "2015-08-01", - "dependsOn": [ - "[concat('Microsoft.Web/Sites/', variables('webAppName'))]" - ], - "properties": { - "FUNCTIONS_EXTENSION_VERSION": "~3", - "FUNCTIONS_WORKER_RUNTIME": "dotnet", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components/', parameters('appInsightsName')), '2015-05-01').InstrumentationKey]", - "MicrosoftAppId": "[parameters('appId')]", - "MicrosoftAppPassword": "[parameters('appSecret')]" - } - } - ] - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index b6ede74dd1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,388 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "apiVersion": "2018-02-01", - "name": "1d41002f-62a1-49f3-bd43-2f3f32a19cbb", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/package.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/package.json deleted file mode 100644 index 256b826ec5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "azure_provision", - "version": "1.0.0", - "description": "provision to azure cloud", - "main": "provisionComposer.js", - "license": "MIT", - "scripts": { - "start": "node provisionComposer.js" - }, - "dependencies": { - "@azure/arm-resources": "^2.1.0", - "@azure/graph": "^5.0.1", - "@azure/ms-rest-nodeauth": "^3.0.3", - "@types/fs-extra": "^8.1.0", - "chalk": "^4.0.0", - "fs-extra": "^8.1.0", - "minimist": "^1.2.5", - "ora": "^4.0.4", - "request-promise": "^4.2.5" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/provisionComposer.js b/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/provisionComposer.js deleted file mode 100644 index 96149ffdfc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/scripts/provisionComposer.js +++ /dev/null @@ -1,599 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const chalk = require('chalk'); -const fs = require('fs-extra'); -const msRestNodeAuth = require('@azure/ms-rest-nodeauth'); -const argv = require('minimist')(process.argv.slice(2)); -const path = require('path'); -const rp = require('request-promise') -const { promisify } = require('util'); -const { GraphRbacManagementClient } = require('@azure/graph'); -const { ResourceManagementClient } = require('@azure/arm-resources'); -const readFile = promisify(fs.readFile); -const ora = require('ora'); - -const logger = msg => { - if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR) { - console.log(chalk.red(msg.message)); - } else if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS) { - console.log(chalk.white(msg.message)); - } else { - console.log(chalk.green(msg.message)); - } -}; - -const usage = () => { - const options = [ - ['subscriptionId', 'Azure Subscription Id'], - ['name', 'Project Name'], - ['appPassword', '16 character password'], - ['environment', 'Environment name (Defaults to dev)'], - ['location', 'Azure Region (Defaults to westus)'], - ['appId', 'Microsoft App ID (Will create if absent)'], - ['tenantId', 'ID of your tenant if required (will choose first in list by default)'], - ['createLuisResource', 'Create a LUIS resource? Default true'], - ['createLuisAuthoringResource', 'Create a LUIS authoring resource? Default true'], - ['createCosmosDb', 'Create a CosmosDB? Default true'], - ['createStorage', 'Create a storage account? Default true'], - ['createAppInsights', 'Create an AppInsights resource? Default true'], - [ - 'customArmTemplate', - 'Path to runtime ARM template. By default it will use an Azure WebApp template. Pass `DeploymentTemplates/function-template-with-preexisting-rg.json` for Azure Functions or your own template for a custom deployment.', - ], - ]; - - const instructions = [ - ``, - chalk.bold('Provision Azure resources for use with Bot Framework Composer bots'), - `* This script will create a new resource group and the necessary Azure resources needed to operate a Bot Framework bot in the cloud.`, - `* Use this to create a publishing profile used in Composer's "Publish" toolbar.`, - ``, - chalk.bold(`Basic Usage:`), - chalk.greenBright(`node provisionComposer --subscriptionId=`) + - chalk.yellow('') + - chalk.greenBright(' --name=') + - chalk.yellow('') + - chalk.greenBright(' --appPassword=') + - chalk.yellow('<16 character password>'), - ``, - chalk.bold(`All options:`), - ...options.map(option => { - return chalk.greenBright('--' + option[0]) + '\t' + chalk.yellow(option[1]); - }), - ]; - - console.log(instructions.join('\n')); -}; - -// check for required parameters -if (Object.keys(argv).length === 0) { - return usage(); -} - -if (!argv.name || !argv.subscriptionId || !argv.appPassword) { - return usage(); -} - -// Get required fields from the arguments -const subId = argv.subscriptionId; -const name = argv.name.toString(); -const appPassword = argv.appPassword; - -// Get optional fields from the arguments -const environment = argv.environment || 'dev'; -const location = argv.location || 'westus'; -const appId = argv.appId; // MicrosoftAppId - generated if left blank - -// Get option flags -const createLuisResource = argv.createLuisResource == 'false' ? false : true; -const createLuisAuthoringResource = argv.createLuisAuthoringResource == 'false' ? false : true; -const createCosmosDb = argv.createCosmosDb == 'false' ? false : true; -const createStorage = argv.createStorage == 'false' ? false : true; -const createAppInsignts = argv.createAppInsignts == 'false' ? false : true; -var tenantId = argv.tenantId ? argv.tenantId : ''; - -const templatePath = - argv.customArmTemplate || path.join(__dirname, 'DeploymentTemplates', 'template-with-preexisting-rg.json'); - -const BotProjectDeployLoggerType = { - // Logger Type for Provision - PROVISION_INFO: 'PROVISION_INFO', - PROVISION_ERROR: 'PROVISION_ERROR', - PROVISION_WARNING: 'PROVISION_WARNING', - PROVISION_SUCCESS: 'PROVISION_SUCCESS', - PROVISION_ERROR_DETAILS: 'PROVISION_ERROR_DETAILS', -}; - -/** - * Create a Bot Framework registration - * @param {} graphClient - * @param {*} displayName - * @param {*} appPassword - */ -const createApp = async (graphClient, displayName, appPassword) => { - try { - const createRes = await graphClient.applications.create({ - displayName: displayName, - passwordCredentials: [ - { - value: appPassword, - startDate: new Date(), - endDate: new Date(new Date().setFullYear(new Date().getFullYear() + 2)), - }, - ], - availableToOtherTenants: true, - replyUrls: ['https://token.botframework.com/.auth/web/redirect'], - }); - return createRes; - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: err.body.message, - }); - return false; - } -}; - -/** - * Create an Azure resources group - * @param {} client - * @param {*} location - * @param {*} resourceGroupName - */ -const createResourceGroup = async (client, location, resourceGroupName) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Creating resource group ...`, - }); - const param = { - location: location, - }; - - return await client.resourceGroups.createOrUpdate(resourceGroupName, param); -}; - -/** - * Format parameters - * @param {} scope - */ -const pack = scope => { - return { - value: scope, - }; -}; - -const unpackObject = output => { - const unpacked = {}; - for (const key in output) { - const objValue = output[key]; - if (objValue.value) { - unpacked[key] = objValue.value; - } - } - return unpacked; -}; - -/** - * For more information about this api, please refer to this doc: https://docs.microsoft.com/en-us/rest/api/resources/Tenants/List - * @param {*} accessToken - */ -const getTenantId = async (accessToken) => { - if (!accessToken) { - throw new Error('Error: Missing access token. Please provide a non-expired Azure access token. Tokens can be obtained by running az account get-access-token'); - } - try { - const tenantUrl = `https://management.azure.com/tenants?api-version=2020-01-01`; - const options = { - headers: { Authorization: `Bearer ${accessToken}` }, - }; - const response = await rp.get(tenantUrl, options); - const jsonRes = JSON.parse(response); - if (jsonRes.value === undefined || (jsonRes.value && jsonRes.value.length === 0) || (jsonRes.value && jsonRes.value.length > 0 && jsonRes.value[0].tenantId === undefined)) { - throw new Error(`No tenants found in the account.`); - } - const selectedTenant = jsonRes.value.shift(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Using Tenant ${selectedTenant.displayName} - ID: ${selectedTenant.tenantId}`, - }); - // if alternatives exist, list htem - if (jsonRes.value.length > 0) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: chalk.yellow(` Note: You have access to multiple tenants. To specify an alternative, specify --tenantId=`), - }); - // list all available tenants - jsonRes.value.forEach((tenant) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: chalk.yellow(` * ${tenant.displayName} - ID: ${tenant.tenantId}`), - }); - }); - } - - return selectedTenant.tenantId; - } catch (err) { - throw new Error(`Get Tenant Id Failed, details: ${getErrorMesssage(err)}`); - } -} - -const getDeploymentTemplateParam = ( - appId, - appPwd, - location, - name, - shouldCreateAuthoringResource, - shouldCreateLuisResource, - useAppInsights, - useCosmosDb, - useStorage -) => { - return { - appId: pack(appId), - appSecret: pack(appPwd), - appServicePlanLocation: pack(location), - botId: pack(name), - shouldCreateAuthoringResource: pack(shouldCreateAuthoringResource), - shouldCreateLuisResource: pack(shouldCreateLuisResource), - useAppInsights: pack(useAppInsights), - useCosmosDb: pack(useCosmosDb), - useStorage: pack(useStorage), - }; -}; - -/** - * Validate the deployment using the Azure API - */ -const validateDeployment = async (client, resourceGroupName, deployName, templateParam) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Validating Azure deployment ...', - }); - - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - return await client.deployments.validate(resourceGroupName, deployName, deployParam); -}; - -/** - * Using an ARM template, provision a bunch of resources - */ -const createDeployment = async (client, resourceGroupName, deployName, templateParam) => { - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - - return await client.deployments.createOrUpdate(resourceGroupName, deployName, deployParam); -}; - -/** - * Format the results into the expected shape - */ -const updateDeploymentJsonFile = async (client, resourceGroupName, deployName, appId, appPwd) => { - const outputs = await client.deployments.get(resourceGroupName, deployName); - if (outputs && outputs.properties && outputs.properties.outputs) { - const outputResult = outputs.properties.outputs; - const applicationResult = { - MicrosoftAppId: appId, - MicrosoftAppPassword: appPwd, - }; - const outputObj = unpackObject(outputResult); - - if (!createAppInsignts) { - delete outputObj.applicationInsights; - } - if (!createCosmosDb) { - delete outputObj.cosmosDb; - } - if (!createLuisAuthoringResource && !createLuisResource) { - delete outputObj.luis; - } - if (!createStorage) { - delete outputObj.blobStorage; - } - const result = {}; - Object.assign(result, outputObj, applicationResult); - return result; - } else { - return null; - } -}; - -const provisionFailed = msg => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: chalk.bold('** Provision failed **'), - }); -}; - -const getErrorMesssage = (err) => { - if (err.body) { - if (err.body.error) { - if (err.body.error.details) { - const details = err.body.error.details; - let errMsg = ''; - for (let detail of details) { - errMsg += detail.message; - } - return errMsg; - } - else { - return err.body.error.message; - } - } - else { - return JSON.stringify(err.body, null, 2); - } - } - else { - return JSON.stringify(err, null, 2); - } -} - -/** - * Provision a set of Azure resources for use with a bot - */ -const create = async ( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource = true, - createLuisAuthoringResource = true, - createCosmosDb = true, - createStorage = true, - createAppInsignts = true -) => { - // If tenantId is empty string, get tenanId from API - if (!tenantId) { - const token = await creds.getToken(); - const accessToken = token.accessToken; - // the returned access token will almost surely have a tenantId. - // use this as the default if one isn't specified. - // otherwise, fetch a list and use the first, but print available options. - if (token.tenantId) { - tenantId = token.tenantId; - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Using Tenant ID: ${tenantId}`, - }); - } else { - tenantId = await getTenantId(accessToken); - } - } - - const graphCreds = new msRestNodeAuth.DeviceTokenCredentials( - creds.clientId, - tenantId, - creds.username, - 'graph', - creds.environment, - creds.tokenCache - ); - const graphClient = new GraphRbacManagementClient(graphCreds, tenantId, { - baseUri: 'https://graph.windows.net', - }); - - // If the appId is not specified, create one - if (!appId) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Creating App Registration ...', - }); - - // create the app registration - const appCreated = await createApp(graphClient, name, appPassword); - if (appCreated === false) { - return provisionFailed(); - } - - // use the newly created app - appId = appCreated.appId; - } - - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Create App Id Success! ID: ${appId}`, - }); - - const resourceGroupName = `${name}-${environment}`; - - // timestamp will be used as deployment name - const timeStamp = new Date().getTime().toString(); - const client = new ResourceManagementClient(creds, subId); - - // Create a resource group to contain the new resources - try { - const rpres = await createResourceGroup(client, location, resourceGroupName); - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err) - }); - return provisionFailed(); - } - - // Caste the parameters into the right format - const deploymentTemplateParam = getDeploymentTemplateParam( - appId, - appPassword, - location, - name, - createLuisAuthoringResource, - createLuisResource, - createAppInsignts, - createCosmosDb, - createStorage - ); - - // Validate the deployment using the Azure API - const validation = await validateDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - - // Handle validation errors - if (validation.error) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error.message}`, - }); - if (validation.error.details) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS, - message: JSON.stringify(validation.error.details, null, 2), - }); - } - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - - // Create the entire stack of resources inside the new resource group - // this is controlled by an ARM template identified in templatePath - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Deploying Azure services (this could take a while)...`, - }); - const spinner = ora().start(); - try { - const deployment = await createDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - // Handle errors - if (deployment._response.status != 200) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Template is not valid with provided parameters. Review the log for more information.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error}`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - } catch (err) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err) - }); - return provisionFailed(); - } - - spinner.succeed('Success!'); - - // Validate that everything was successfully created. - // Then, update the settings file with information about the new resources - const updateResult = await updateDeploymentJsonFile(client, resourceGroupName, timeStamp, appId, appPassword); - - // Handle errors - if (!updateResult) { - const operations = await client.deploymentOperations.list(resourceGroupName, timeStamp); - if (operations) { - const failedOperations = operations.filter( - value => value && value.properties && value.properties.statusMessage.error !== null - ); - if (failedOperations) { - failedOperations.forEach(operation => { - switch ( - operation && - operation.properties && - operation.properties.statusMessage.error.code && - operation.properties.targetResource - ) { - case 'MissingRegistrationForLocation': - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}. This resource is not avaliable in the location provided.`, - }); - break; - default: - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Code: ${operation.properties.statusMessage.error.code}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Message: ${operation.properties.statusMessage.error.message}.`, - }); - break; - } - }); - } - } else { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed. Please refer to the log file for more information.`, - }); - } - } - return updateResult; -}; - -console.log(chalk.bold('Login to Azure:')); -msRestNodeAuth - .interactiveLogin({ domain: tenantId }) - .then(async creds => { - const createResult = await create( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource, - createLuisAuthoringResource, - createCosmosDb, - createStorage, - createAppInsignts - ); - - if (createResult) { - console.log(''); - console.log( - chalk.bold( - `Your Azure hosting environment has been created! Copy paste the following configuration into a new profile in Composer's Publishing tab.` - ) - ); - console.log(''); - - const token = await creds.getToken(); - const profile = { - accessToken: token.accessToken, - name: name, - environment: environment, - hostname: `${name}-${environment}`, - luisResource: `${name}-${environment}-luis`, - settings: createResult, - }; - - console.log(chalk.white(JSON.stringify(profile, null, 2))); - - console.log(''); - } - }) - .catch(err => { - console.error(err); - }); diff --git a/Composer/plugins/localPublish/hostedBots/67602.31967312547/settings/appsettings.json b/Composer/plugins/localPublish/hostedBots/67602.31967312547/settings/appsettings.json deleted file mode 100644 index de2cbe2dc6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/67602.31967312547/settings/appsettings.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false, - "RemoveRecipientMention": false - }, - "MicrosoftAppPassword": "", - "MicrosoftAppId": "", - "luis": { - "name": "", - "authoringKey": "", - "endpointKey": "", - "authoringRegion": "westus", - "defaultLanguage": "en-us", - "environment": "composer" - }, - "publishTargets": [], - "qna": { - "knowledgebaseid": "", - "endpointkey": "", - "hostname": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "runtime": { - "customRuntime": false, - "path": "", - "command": "" - }, - "downsampling": { - "maxImbalanceRatio": 10, - "maxUtteranceAllowed": 15000 - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/.gitignore b/Composer/plugins/localPublish/hostedBots/71499.22109829121/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.csproj b/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.csproj deleted file mode 100644 index e7915dfd03..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.csproj +++ /dev/null @@ -1,45 +0,0 @@ - - - - netcoreapp3.1 - c18ef086-291b-44d0-9784-490e090dd357 - - - - - - - - - - Always - - - - BotProject.ruleset - - - BotProject.ruleset - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.ruleset b/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.sln b/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.sln deleted file mode 100644 index db73c02cd8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotProject.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.136 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotProject", "BotProject.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotSettings.cs deleted file mode 100644 index b88a4a7127..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/BotSettings.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class BotSettings - { - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration AppInsights { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerBot.cs deleted file mode 100644 index 9897a59593..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerBot.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, string rootDialog) - { - HostContext.Current.Set(skillClient); - HostContext.Current.Set(conversationIdFactory); - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - LoadRootDialogAsync(); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/echobot-2.dialog b/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/echobot-2.dialog deleted file mode 100644 index 750843a39f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/echobot-2.dialog +++ /dev/null @@ -1,54 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "id": "433224", - "name": "EchoBot-2" - }, - "autoEndDialog": true, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnUnknownIntent", - "$designer": { - "id": "821845" - }, - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "003038" - }, - "activity": "${bfdactivity-003038()}" - } - ] - }, - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.Foreach", - "$designer": { - "id": "518944", - "name": "Loop: for each item" - }, - "itemsProperty": "turn.Activity.membersAdded", - "actions": [ - { - "$kind": "Microsoft.IfCondition", - "$designer": { - "id": "641773", - "name": "Branch: if/else" - }, - "condition": "string(dialog.foreach.value.id) != string(turn.Activity.Recipient.id)" - } - ] - } - ] - } - ], - "generator": "echobot-2.lg", - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema" -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-generation/en-us/common.en-us.lg deleted file mode 100644 index 0e53888f9e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,30 +0,0 @@ - -# T() -[Activity - text=This is some text describing the card, it's cool because it's cool - ChannelData=${json(channelData())} -] - - -# channelData --```{ - "recipient":{ - "id":"sssssssss" - }, - "message":{ - "attachment":{ - "type":"template", - "payload":{ - "template_type":"button", - "text":"What do you want to do next?", - "buttons":[ - { - "type":"web_url", - "url":"https://www.messenger.com", - "title":"Visit Messenger" - } - ] - } - } - } -}``` diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-generation/en-us/echobot-2.en-us.lg b/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-generation/en-us/echobot-2.en-us.lg deleted file mode 100644 index f6e288dd85..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-generation/en-us/echobot-2.en-us.lg +++ /dev/null @@ -1,4 +0,0 @@ -[import](common.lg) - -# bfdactivity-003038() -- ${T()} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-understanding/en-us/echobot-2.en-us.lu b/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/language-understanding/en-us/echobot-2.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/settings/appsettings.json b/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/settings/appsettings.json deleted file mode 100644 index 4f742339ad..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/ComposerDialogs/settings/appsettings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "MicrosoftAppId": "", - "luis": { - "name": "", - "authoringRegion": "westus", - "defaultLanguage": "en-us", - "environment": "composer" - }, - "qna": { - "knowledgebaseid": "", - "endpointkey": "", - "hostname": "" - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Controllers/BotController.cs deleted file mode 100644 index 5085705abb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Controllers/SkillController.cs deleted file mode 100644 index 62b6390dd6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Controllers/SkillController.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.Bot.Builder.TestBot.Json.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index 183586e08f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,363 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - } - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - } - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - } - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/LuisConfig.cs deleted file mode 100644 index 506d52e343..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/LuisConfigAdaptor.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/LuisConfigAdaptor.cs deleted file mode 100644 index 6f23086f3b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/LuisConfigAdaptor.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public static class LuisConfigAdaptor - { - public static IConfigurationBuilder UseLuisConfigAdaptor(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var settings = new Dictionary(); - settings["environment"] = configuration.GetValue("luis:environment"); - settings["region"] = configuration.GetValue("luis:authoringRegion"); - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/NuGet.Config b/Composer/plugins/localPublish/hostedBots/71499.22109829121/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Program.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Program.cs deleted file mode 100644 index 434f5a21d2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Program.cs +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - builder.AddJsonFile($"ComposerDialogs/settings/appsettings.json", optional: true, reloadOnChange: true) - .AddJsonFile("appsetting.json", optional: true, reloadOnChange: true) - .UseLuisConfigAdaptor() - .UseLuisSettings(); - - if (env.IsDevelopment()) - { - // Local Debug - builder.AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true); - } - else - { - //Azure Deploy - builder.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - } - - if (!env.IsDevelopment()) - { - builder.AddUserSecrets(); - } - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/README.md b/Composer/plugins/localPublish/hostedBots/71499.22109829121/README.md deleted file mode 100644 index b096ecf323..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/README.md +++ /dev/null @@ -1,22 +0,0 @@ -## Bot Project -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -## Instructions for setting up the Bot Project runtime -The Bot Project is a regular Bot Framework SDK V4 project. Before you can launch it from the emulator, you need to make sure you can run the bot. - -### Prerequisite: -* Install .Netcore 3.1 - -### Commands: - -* from root folder -* cd BotProject -* cd Templates/CSharp -* dotnet user-secrets init // init the user secret id -* dotnet build // build -* dotnet run // start the bot -* It will start a web server and listening at http://localhost:3979. - -### Test bot -* You can set you emulator to connect to http://localhost:3979/api/messages. - diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Schemas/sdk.schema deleted file mode 100644 index 536286332d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Schemas/sdk.schema +++ /dev/null @@ -1,12321 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/master/schemas/component.schema", - "$id": "sdk.schema", - "type": "object", - "title": "Component kinds", - "description": "These are all of the kinds that can be created by the loader.", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.LanguagePolicy", - "description": "This represents a policy map for locales lookups to use for language", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnClearProperty", - "description": "Actions to take when a property needs to be cleared.", - "$ref": "#/definitions/Microsoft.OnClearProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "$ref": "#/definitions/Microsoft.Test.Script" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - } - ], - "definitions": { - "Microsoft.ActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft ActivityTemplate", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to use to create the activity", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveCardRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AdaptiveCardRecognizer" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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.Recognizer", - "title": "Recognizer", - "description": "Input recognizer that interprets user input into intent and entities.", - "$ref": "#/definitions/Microsoft.Recognizer" - }, - "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.ITriggerCondition", - "$ref": "#/definitions/Microsoft.ITriggerCondition" - } - }, - "schema": { - "anyOf": [ - { - "title": "The schema to be filled in.", - "type": "object", - "additionalProperties": true - }, - { - "type": "string", - "title": "Reference to JSON schema", - "description": "Reference to JSON schema .dialog file." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SkillDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a skill dialog", - "description": "Begin a remote skill dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SkillDialog" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the skill dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - }, - "botId": { - "$role": "expression", - "type": "string", - "title": "Skill host bot ID", - "description": "The Microsoft App ID that will be calling the skill.", - "default": "=settings.MicrosoftAppId" - }, - "skillHostEndpoint": { - "$role": "expression", - "type": "string", - "title": "Skill host", - "description": "The callback Url for the skill host.", - "default": "=settings.skillHostEndpoint", - "examples": [ - "https://mybot.contoso.com/api/skills/" - ] - }, - "skillAppId": { - "$role": "expression", - "type": "string", - "title": "Skill App ID", - "description": "The Microsoft App ID for the skill." - }, - "skillEndpoint": { - "$role": "expression", - "type": "string", - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AgeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Ask": { - "$role": "implements(Microsoft.IDialog)", - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "expectedProperties": { - "$role": "expression", - "title": "Expected Properties", - "description": "Properties expected to be filled by entities from the user", - "oneOf": [ - { - "type": "array", - "items": { - "type": "string", - "title": "string" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AttachmentInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Attachment input dialog", - "description": "Collect information - Ask for a file or image.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "all", - "first" - ], - "title": "Output format", - "description": "Attachment output format.", - "default": "first" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BeginDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a dialog", - "description": "Begin another dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$role": "expression", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "type": "object", - "title": "object", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BreakLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Break Loop", - "description": "Stop executing this loop", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit." - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional).", - "additionalProperties": true - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ChoiceInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "value", - "index" - ], - "title": "Output format", - "description": "Choice output format.", - "default": "value" - }, - "choices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "type": "string", - "title": "string" - } - ], - "title": "array" - }, - { - "type": "array", - "items": [ - { - "title": "Choice", - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - } - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression" - } - ] - }, - "appendChoices": { - "type": "boolean", - "title": "Append choices", - "description": "Compose an output activity containing a set of choices", - "default": "true" - }, - "defaultLocale": { - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when 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 - } - } - }, - "recognizerOptions": { - "type": "object", - "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 the choices action.title field will NOT be searched over", - "default": false - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConditionalSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Condtional Trigger Selector", - "description": "Use a rule selector based on a condition", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "ifTrue": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "ifFalse": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "ifTrue", - "ifFalse", - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Confirm input dialog", - "description": "Collect information - Ask for confirmation (yes or no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the confirm output.", - "examples": [ - "=concat('confirmation:', this.value)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "$role": "expression", - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "$role": "expression", - "oneOf": [ - { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when their are only 2 choices", - "default": " or " - }, - "inlineOrMore": { - "type": "string", - "title": "Inline or more", - "description": "Separator inserted between the last 2 choices when their are more than 2 choices.", - "default": ", or " - }, - "includeNumbers": { - "type": "boolean", - "title": "Include numbers", - "description": "If true, inline and list style choices will be prefixed with the index of the choice.", - "default": true - } - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "confirmChoices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - }, - "title": "object" - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmationEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ContinueLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Continune Loop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the datetime output.", - "examples": [ - "this.value[0].Value" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Properties", - "description": "Delete multiple properties and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "properties", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "$kind" - ] - } - ] - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to the array in memory.", - "enum": [ - "push", - "pop", - "take", - "remove", - "clear" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array to update." - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result Property", - "description": "Property to store the result of this action." - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "'milk'", - "dialog.favColor", - "dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "itemsProperty", - "$kind" - ] - } - ] - }, - "Microsoft.EmailEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$role": "expression", - "title": "Bubble event", - "description": "If true this event is passed on to parent dialogs.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "eventName", - "$kind" - ] - } - ] - }, - "Microsoft.EndDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "End dialog", - "description": "End this dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EntityRecognizers": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Union of components which derive from EntityRecognizer abstract class.", - "type": "object", - "oneOf": [ - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - }, - { - "type": "string", - "title": "Reference to Microsoft.EntityRecognizers", - "description": "Reference to Microsoft.EntityRecognizers .dialog file." - } - ] - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.ForeachPage": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each page", - "description": "Execute actions on each page (collection of items) in an array.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "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" - } - }, - "pageSize": { - "$role": "expression", - "title": "Page size", - "description": "Number of items in each page.", - "oneOf": [ - { - "type": "integer", - "default": 10, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GetConversationMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actionId": { - "$role": "expression", - "type": "string", - "title": "Action Id", - "description": "Action Id to execute next" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actionId", - "$kind" - ] - } - ] - }, - "Microsoft.GuidEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$role": "expression", - "type": "string", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result property", - "description": "Property to store the result of this action. The result includes 4 properties from the http response: statusCode, reasonPhrase, content and headers. If the content is json it will be a deserialized object.", - "examples": [ - "dialog.contosodata" - ] - }, - "contentType": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "type": "string" - } - }, - "responseType": { - "$role": "expression", - "type": "string", - "title": "Response type", - "description": "Defines the type of HTTP response. Automatically calls the 'Send a response' action if set to 'Activity' or 'Activities'.", - "enum": [ - "None", - "Json", - "Activity", - "Activities" - ], - "default": "Json" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "url", - "method", - "$kind" - ] - } - ] - }, - "Microsoft.IActivityTemplate": { - "title": "Microsoft ActivityTemplates", - "description": "Components which are IActivityTemplates", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.IDialog": { - "title": "Microsoft Dialogs", - "description": "Union of components which implement the Dialog contract", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ILanguageGenerator": { - "title": "Microsoft ILanguageGenerator", - "description": "Union of components which implement the ILanguageGenerator interface", - "$role": "interface", - "oneOf": [ - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Union of components which implement the TextTemplate", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITriggerCondition": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Union of components which implement the OnCondition", - "oneOf": [ - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnClearProperty", - "description": "Actions to take when a property needs to be cleared.", - "$ref": "#/definitions/Microsoft.OnClearProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerCondition", - "description": "Reference to Microsoft.ITriggerCondition .dialog file." - } - ] - }, - "Microsoft.ITriggerSelector": { - "$role": "interface", - "title": "Selectors", - "description": "Union of components which are trigger selectors", - "oneOf": [ - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerSelector", - "description": "Reference to Microsoft.ITriggerSelector .dialog file." - } - ] - }, - "Microsoft.IfCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "If condition", - "description": "Two-way branch the conversation flow based on a condition.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evaluate.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.IpEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Information to log." - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "traceActivity": { - "$role": "expression", - "title": "Send Trace Activity", - "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator).", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.LuisRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "LUIS Recognizer", - "description": "LUIS recognizer.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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": { - "type": "string", - "title": "LUIS Application ID", - "description": "Application ID for your model from the LUIS service.", - "$role": "expression" - }, - "endpoint": { - "type": "string", - "title": "LUIS Endpoint", - "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com.", - "$role": "expression" - }, - "endpointKey": { - "type": "string", - "title": "LUIS prediction key", - "description": "LUIS prediction key used to call endpoint.", - "$role": "expression" - }, - "externalEntityRecognizer": { - "title": "External Entity Recognizer", - "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.", - "$kind": "Microsoft.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - }, - "dynamicLists": { - "$role": "expression", - "title": "Dynamic lists", - "description": "Runtime defined entity lists.", - "oneOf": [ - { - "type": "array", - "items": { - "title": "Entity list", - "description": "Lists of canonical values and synonyms for an entity.", - "type": "object", - "properties": { - "entity": { - "title": "Entity", - "description": "Entity to extend with a dynamic list.", - "type": "string" - }, - "list": { - "title": "Dynamic list", - "description": "List of canonical forms and synonyms.", - "type": "array", - "items": { - "type": "object", - "properties": { - "canonicalForm": { - "title": "Canonical form", - "description": "Resolution if any synonym matches.", - "type": "string" - }, - "synonyms": { - "title": "Synonyms", - "description": "List of synonyms for a canonical form.", - "type": "array", - "items": { - "type": "string", - "title": "string" - } - } - }, - "title": "object" - } - } - } - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "predictionOptions": { - "type": "object", - "properties": { - "includeAllIntents": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "applicationId", - "endpoint", - "endpointKey", - "$kind" - ] - } - ] - }, - "Microsoft.MentionEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the number output.", - "examples": [ - "=this.value", - "=int(this.text)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberRangeEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection name", - "description": "The connection name configured in Azure Web App Bot OAuth settings.", - "examples": [ - "msgraphOAuthConnection" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Text shown in the OAuth signin card.", - "examples": [ - "Please sign in. " - ] - }, - "title": { - "$role": "expression", - "type": "string", - "title": "Title", - "description": "Title shown in the OAuth signin card.", - "examples": [ - "Login" - ] - }, - "timeout": { - "$role": "expression", - "title": "Timeout", - "description": "Time out setting for the OAuth signin card.", - "oneOf": [ - { - "type": "integer", - "default": "900000", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "examples": [ - 3 - ], - "oneOf": [ - { - "type": "integer", - "default": 3, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "Expression to examine on each turn of the conversation as possible value to the property.", - "examples": [ - "@token" - ] - }, - "allowInterruptions": { - "$role": "expression", - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "examples": [ - "true" - ], - "oneOf": [ - { - "type": "boolean", - "default": "true", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "connectionName", - "$kind" - ] - } - ] - }, - "Microsoft.OnActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On activity", - "description": "Actions to perform on receipt of a generic activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "type": { - "type": "string", - "title": "Activity type", - "description": "The Activity.Type to match" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "type", - "$kind" - ] - } - ] - }, - "Microsoft.OnAssignEntity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On entity assignment", - "description": "Actions to take when an entity should be assigned to a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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 to use for assigning entity" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnBeginDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On begin dialog", - "description": "Actions to perform when this dialog begins.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCancelDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseEntity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On choose entity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseIntent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On ambigious intent", - "description": "Actions to perform on when an intent is ambigious.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intents": { - "type": "array", - "title": "Intents", - "description": "Intents that must be in the ChooseIntent result for this condition to trigger.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseProperty": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On choose property", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "entities": { - "type": "array", - "title": "Possible properties", - "description": "Entities being assigned", - "items": { - "type": "string", - "title": "Entity name" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnClearProperty": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On clear property", - "description": "Actions to take when a property needs to be cleared.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnClearProperty" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "property": { - "type": "string", - "title": "Property", - "description": "Property that will be cleared" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCondition": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On condition", - "description": "Actions to perform when specified condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnConversationUpdateActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On ConversationUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCustomEvent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On custom event", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnCustomEvent" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Custom event name", - "description": "Name of the custom event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnDialogEvent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On dialog event", - "description": "Actions to perform when a specific dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Dialog event name", - "description": "Name of dialog event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfActions": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On end of actions", - "description": "Actions to take when there are no more actions in the current dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfConversationActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On EndOfConversation activity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnError": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Error", - "description": "Action to perform when an 'Error' dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEventActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Event activity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnHandoffActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Handoff activity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnIntent": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On intent recognition", - "description": "Actions to perform when specified intent is recognized.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intent": { - "type": "string", - "title": "Intent", - "description": "Name of intent." - }, - "entities": { - "type": "array", - "title": "Entities", - "description": "Required entities.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnInvokeActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Invoke activity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Message activity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageDeleteActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageDelete activity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageReactionActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageReaction activity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageUpdateActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On MessageUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnQnAMatch": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On QnAMaker Match", - "description": "Actions to perform on when an match from QnAMaker is found.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnRepromptDialog": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On RepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnTypingActivity": { - "$role": "implements(Microsoft.ITriggerCondition)", - "title": "On Typing activity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnUnknownIntent": { - "title": "On unknown intent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "type": "object", - "$role": "implements(Microsoft.ITriggerCondition)", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "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": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "activeLearningCardTitle": { - "$role": "expression", - "type": "string", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "enum": [ - "Default", - "QuestionOnly", - "AutoSuggestQuestion" - ], - "default": "Default" - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "threshold": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "strictFilters": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "$role": "expression", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "rankerType": { - "$role": "expression", - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "default": "Default" - }, - "includeDialogNameInMetadata": { - "$role": "expression", - "title": "Include Dialog Name", - "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "metadata": { - "$role": "expression", - "title": "value to ", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "type": "string", - "title": "Value" - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "context": { - "$role": "expression", - "title": "QnARequestContext", - "oneOf": [ - { - "type": "object", - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "qnaId": { - "$role": "expression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API.", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "seed": { - "type": "integer" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Recognizer": { - "title": "Microsoft Recognizer", - "description": "Union of components which implement the Recognizer abstract class", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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.Recognizer", - "$ref": "#/definitions/Microsoft.Recognizer" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.RegExEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "name", - "pattern", - "$kind" - ] - } - ] - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.Recognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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", - "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.EntityRecognizers", - "$ref": "#/definitions/Microsoft.EntityRecognizers" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "intents", - "$kind" - ] - } - ] - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ReplaceDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Replace dialog", - "description": "Replace current dialog with another dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "$role": "expression", - "type": "string", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "$ref": "#/definitions/Microsoft.IDialog" - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SetProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set one or more property values.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "properties": { - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assignments", - "$kind" - ] - } - ] - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection Name", - "description": "Connection name that was used with OAuthInput to log a user in." - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.StaticActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft Static Activity Template", - "description": "This allows you to define a static Activity object", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "title": "Activity", - "Description": "A static Activity to used" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.SwitchCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Switch condition", - "description": "Execute different actions based on the value of a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "type": "string", - "title": "Condition", - "description": "Property to evaluate.", - "examples": [ - "user.favColor" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "cases": { - "type": "array", - "title": "Cases", - "desc": "Actions for each possible condition.", - "items": { - "type": "object", - "required": [ - "value", - "case" - ], - "properties": { - "value": { - "type": [ - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Value.", - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "$kind" - ] - } - ] - }, - "Microsoft.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Temperature Entity Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Assert Condition", - "description": "Assert condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertCondition" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evalute", - "examples": [ - "user.age > 10" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of what the condition is testing" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReply": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply", - "description": "Asserts that a reply text is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReply" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Reply Text", - "description": "Expected reply text" - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply Activity", - "description": "Asserts that a reply activity is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assertions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyOneOf": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply OneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyOneOf" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "array", - "title": "Replies", - "description": "Expected replies (one of which must match", - "items": { - "type": "string" - } - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "replies", - "$kind" - ] - } - ] - }, - "Microsoft.Test.ITestAction": { - "title": "Microsoft Test ITestAction", - "description": "Union of components which implement the Test.ITestAction interface", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "type": "string", - "title": "Reference to Microsoft.Test.ITestAction", - "description": "Reference to Microsoft.Test.ITestAction .dialog file." - } - ] - }, - "Microsoft.Test.Script": { - "title": "Test Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.Script" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "title": "Dialog", - "description": "The root dialog to execute the test script against.", - "$ref": "#/definitions/Microsoft.IDialog" - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of the test script" - }, - "script": { - "type": "array", - "description": "Sequence of test actions to execute.", - "items": { - "$kind": "Microsoft.Test.ITestAction", - "$ref": "#/definitions/Microsoft.Test.ITestAction" - } - }, - "locale": { - "type": "string", - "title": "Locale", - "description": "Set the locale for the user utterances in the script.", - "default": "en-us" - }, - "enableTrace": { - "type": "boolean", - "title": "Enable Trace Activity", - "description": "Enable trace activities in the unit test (default is false)", - "default": false - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "dialog", - "testActions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Activity", - "description": "Sends activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "additionalProperties": true - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserConversationUpdate": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send ConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserConversationUpdate" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "membersAdded": { - "type": "array", - "title": "Members Added", - "description": "Names of the members to add", - "items": { - "type": "string" - } - }, - "membersRemoved": { - "type": "array", - "title": "Members Removed", - "description": "Names of the members to remove", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserDelay": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Delay Execution", - "description": "Delays text script for time period.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserDelay" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "timespan": { - "type": "number", - "title": "Timespan", - "description": "The amount of time in milliseconds to delay the execution of the test script" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "timespan", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserSays": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "User Text", - "description": "Sends text to the bot from the user.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserSays" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Text", - "description": "Text to send to the bot." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserTyping": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Typing", - "description": "Sends typing activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserTyping" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextInput": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the output.", - "examples": [ - "=toUpper(this.value)", - "${toUpper(this.value)}" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextTemplate": { - "$role": "implements(Microsoft.ITextTemplate)", - "title": "Microsoft TextTemplate", - "description": "Lg tempalte to evaluate to create text", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to evaluate to create the text", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "name": { - "$role": "expression", - "type": "string", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$role": "expression", - "type": "string", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Property that holds the value to send as trace activity." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "Activity Id", - "dDescription": "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UrlEntityRecognizer": { - "$role": "implements(Microsoft.EntityRecognizers)", - "title": "Url Entity Recognizer", - "description": "Recognizer which recognizes urls (example: http://bing.com)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/build_runtime.ps1 b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/build_runtime.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -if ((dotnet --version) -lt '3.1.0') { - throw "! dotnet core 3.1 is required, please refer following documents for help. https://dotnet.microsoft.com/download/dotnet-core/3.1" - Break -} - -# This command need dotnet core more than 3.0 -dotnet user-secrets init - -# Merge all streams into stdout -$result = dotnet build *>&1 -# Evaluate success/failure -if($LASTEXITCODE -ne 0) -{ - # Failed, you can reconstruct stderr strings with: - $ErrorString = $result -join [System.Environment]::NewLine - throw $ErrorString -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/build_runtime.sh b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/build_runtime.sh +++ /dev/null @@ -1,11 +0,0 @@ -versionString=`dotnet --version` -function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } -if version_lt $versionString "3.1.0"; -then - echo "! dotnet core 3.1 is required, please refer following documents for help. -https://dotnet.microsoft.com/download/dotnet-core/3.1" - exit 1 -else - dotnet user-secrets init - dotnet build -fi diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/create.ps1 b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/create.ps1 +++ /dev/null @@ -1,211 +0,0 @@ -Param( - [string] $name, - [string] $location, - [string] $appId, - [string] $appPassword, - [string] $environment, - [string] $luisAuthoringKey, - [string] $projDir = $(Get-Location), - [string] $logFile = $(Join-Path $PSScriptRoot .. "create_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6){ - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -if (-not (Test-Path (Join-Path $projDir 'appsettings.deployment.json'))) -{ - Write-Host "! Could not find an 'appsettings.deployment.json' file in the current directory." -ForegroundColor DarkRed - Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" -} - -if (-not $environment) -{ - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $location) { - $location = Read-Host "? Azure resource group region" -} - -if (-not $appPassword) { - $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" -} - -if (-not $appId) { - # Create app registration - $app = (az ad app create ` - --display-name $name ` - --password `"$($appPassword)`" ` - --available-to-other-tenants ` - --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` - --output json) - - # Retrieve AppId - if ($app) { - $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId - } - - if(-not $appId) { - Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta - Break - } -} - -$shouldCreateAuthoringResource = $true - -# Use pre-exsisting luis authoring key -if ($luisAuthoringKey) { - $shouldCreateAuthoringResource = $false -} - -$resourceGroup = "$name-$environment" -$servicePlanName = "$name-$environment" - -# Get timestamp -$timestamp = Get-Date -f MMddyyyyHHmmss - -# Create resource group -Write-Host "> Creating resource group ..." -(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null - -# Deploy Azure services -Write-Host "> Validating Azure deployment ..." -$validation = az group deployment validate ` - --resource-group $resourcegroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - -if ($validation) { - $validation >> $logFile - $validation = $validation | ConvertFrom-Json - - if (-not $validation.error) { - Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow - $deployment = az group deployment create ` - --name $timestamp ` - --resource-group $resourceGroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - } - else { - Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - if ($validation.error.details -and $validation.error.details[0].code -eq "CanNotCreateMultipleFreeAccounts") - { - Write-Host "! The subscription is exceeding the maximum number of allowed LuisAuthoringAccounts. You already have a luis authoring resource created, please get your luis authoring key and retry with the following command:" -ForegroundColor DarkRed - Write-Host "pwsh ./Scripts/create.ps1 -name $name -environment $environment -location $location -appPassword $appPassword -luisAuthoringKey [YourLuisAuthoringKey]" -ForegroundColor Green - } - - Break - } -} - - -# Get deployment outputs -$outputs = (az group deployment show ` - --name $timestamp ` - --resource-group $resourceGroup ` - --output json) 2>> $logFile - -# If it succeeded then we perform the remainder of the steps -if ($outputs) -{ - # Log and convert to JSON - $outputs >> $logFile - $outputs = $outputs | ConvertFrom-Json - if ($outputs.properties.error) { - Write-Host "! Deployment failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($outputs.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - Break - } - - $outputs = $outputs.properties.outputs - $outputMap = @{} - $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } - - # Update appsettings.deployment.json - Write-Host "> Updating appsettings.deployment.json ..." - if (Test-Path $(Join-Path $projDir appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $projDir appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppId' -Value $appId - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppPassword' -Value $appPassword - - $settings | Add-Member -Type NoteProperty -Force -Name 'bot' -Value "ComposerDialogs" - - foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.deployment.json) - - Write-Host "> Done." - Write-Host "- App Id: $appId" - Write-Host "- App Password: $appPassword" - Write-Host "- Resource Group: $resourceGroup" - Write-Host "- ServicePlan: $servicePlanName" - Write-Host "- Bot Name: $name" - Write-Host "- Web App Name : $name" -} -else -{ - # Check for failed deployments - $operations = az group deployment operation list -g $resourceGroup -n $timestamp --output json 2>> $logFile | Out-Null - - if ($operations) { - $operations = $operations | ConvertFrom-Json - $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } - if ($failedOperations) { - foreach ($operation in $failedOperations) { - switch ($operation.properties.statusmessage.error.code) { - "MissingRegistrationForLocation" { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed - Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta - } - default { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." - Write-Host "! Code: $($operation.properties.statusMessage.error.code)." - Write-Host "! Message: $($operation.properties.statusMessage.error.message)." - } - } - } - } - } - else { - Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } - - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - Break -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/deploy.ps1 deleted file mode 100644 index 9d649810b0..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Scripts/deploy.ps1 +++ /dev/null @@ -1,253 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path BotProject.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Init user secret id -dotnet user-secrets init - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -$localBotPath = $(Join-Path $projFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - -if ($botPath) { - Write-Host "Publishing dialogs from external bot project: $($botPath)" - Copy-Item -Path $botPath -Recurse -Destination $remoteBotPath -Container -Force -} -else { - Copy-Item -Path $localBotPath -Recurse -Destination $publishFolder -Container -Force -} - -# Try to get luis config from appsettings -$settings = Get-Content $(Join-Path $projFolder appsettings.deployment.json) | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisEndpointKey) { - $luisEndpointKey = $luisSettings.endpointKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - - Set-Location -Path $remoteBotPath - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - $noneEmptyModels = [System.Collections.ArrayList]@() - - foreach ($model in $models) { - $stringContent = Get-Content $model | Out-String - if ($stringContent.Length -gt 0) { - $noneEmptyModels.Add($model) - } - } - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $noneEmptyModels - } - - $luString = $noneEmptyModels | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # Execute bf luis:build command - if (Get-Command bf -errorAction SilentlyContinue) { - $customizedSettings = Get-Content $(Join-Path $remoteBotPath settings appsettings.json) | ConvertFrom-Json - $customizedEnv = $customizedSettings.luis.environment - - # create generated folder if not exists - if (!(Test-Path generated)) { - New-Item -ItemType Directory -Force -Path generated - } - - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog --out .\generated --suffix $customizedEnv -f --region $luisAuthoringRegion - } - else { - Write-Host "bf luis:build does not exist, use the following command to install:" - Write-Host "1. npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/" - Write-Host "2. npm install -g @microsoft/botframework-cli" - Write-Host "3. npm config set registry http://registry.npmjs.org" - Break - } - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - # change setting file in publish folder - if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - $luisConfig["endpointKey"] = $luisEndpointKey - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/SkillConversationIdFactory.cs deleted file mode 100644 index 0e2f78ada8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/SkillConversationIdFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Newtonsoft.Json; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - /// - /// A that uses an in memory - /// to store and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly ConcurrentDictionary _conversationRefs = new ConcurrentDictionary(); - - public override Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - var skillConversationReference = new SkillConversationReference - { - ConversationReference = options.Activity.GetConversationReference(), - OAuthScope = options.FromBotOAuthScope - }; - var key = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{skillConversationReference.ConversationReference.Conversation.Id}-{skillConversationReference.ConversationReference.ChannelId}-skillconvo"; - _conversationRefs.GetOrAdd(key, JsonConvert.SerializeObject(skillConversationReference)); - return Task.FromResult(key); - } - - public override Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - var conversationReference = JsonConvert.DeserializeObject(_conversationRefs[skillConversationId]); - return Task.FromResult(conversationReference); - } - - public override Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - _conversationRefs.TryRemove(skillConversationId, out _); - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Startup.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Startup.cs deleted file mode 100644 index 2d920c023b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Startup.cs +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - IStorage storage = null; - - // Configure storage for deployment - if (!string.IsNullOrEmpty(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - Console.WriteLine("The settings of CosmosDbStorage is incomplete, please check following settings: settings.CosmosDb"); - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - - var botDir = Configuration.GetSection("bot").Get(); - - // manage all bot resources - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - services.AddSingleton(userState); - services.AddSingleton(conversationState); - services.AddSingleton(resourceExplorer); - - services.AddSingleton((s) => - { - HostContext.Current.Set(Configuration); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - adapter - .UseStorage(storage) - .UseState(userState, conversationState); - - if (!string.IsNullOrEmpty(settings.BlobStorage.ConnectionString) && !string.IsNullOrEmpty(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - else - { - Console.WriteLine("The settings of TranscriptLoggerMiddleware is incomplete, please check following settings: settings.BlobStorage.ConnectionString, settings.BlobStorage.Container"); - } - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - }); - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseWebSockets(); - - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ActionsTests.cs deleted file mode 100644 index 513ff1190c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ActionsTests.cs +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - [Ignore] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); ; - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ControllingConversationTests.cs deleted file mode 100644 index f76dc985c9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ControllingConversationTests.cs +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/InputsTests.cs deleted file mode 100644 index 8a7064016d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/InputsTests.cs +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License.// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/MessageTests.cs deleted file mode 100644 index fec22e7348..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/MessageTests.cs +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Builder.LanguageGeneration; -using Microsoft.Bot.Builder.ComposerBot.Json; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/Tests.csproj b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/Tests.csproj deleted file mode 100644 index 28a2c36621..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/Tests.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ToDoBotTests.cs deleted file mode 100644 index df21505518..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/Tests/ToDoBotTests.cs +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Dialogs.Declarative.Types; -using Microsoft.Bot.Schema; -using Microsoft.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.Deployment.json deleted file mode 100644 index 9edc2fde4c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "MicrosoftAppId": "bc95067e-5821-4baa-963f-78c076ea8546", - "MicrosoftAppPassword": "so=kOXbWOsjRidJGfcQ?kN5:e1EdW05-" -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.Development.json deleted file mode 100644 index 0db3279e44..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.Development.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.json b/Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.json deleted file mode 100644 index cc17071455..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/appsettings.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "microsoftAppId": "", - "bot": "ComposerDialogs", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/packages/packages.json b/Composer/plugins/localPublish/hostedBots/71499.22109829121/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/71499.22109829121/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/71499.22109829121/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/71499.22109829121/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/README.md b/Composer/plugins/localPublish/hostedBots/80560.06813833171/README.md deleted file mode 100644 index ba48ee2802..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/README.md +++ /dev/null @@ -1,73 +0,0 @@ -This folder contains a Bot Project created with Bot Framework Composer. - -The full documentation for Composer lives here: -https://github.com/microsoft/botframework-composer - -To test this bot locally, open this folder in Composer, then click "Start Bot" - -## Provision Azure Resources to Host Bot - -This project includes a script that can be used to provision the resources necessary to run your bot in the Azure cloud. Running this script will create all of the necessary resources and return a publishing profile in the form of a JSON object. This JSON object can be imported into Composer's "Publish" tab and used to deploy the bot. - -* From this project folder, navigate to the scripts/ folder -* Run `npm install` -* Run `node provisionComposer.js --subscriptionId= --name= --appPassword= --environment=` -* You will be asked to login to the Azure portal in your browser. -* You will see progress indicators as the provision process runs. Note that it will take roughly 10 minutes to fully provision the resources. - -It will look like this: -``` -{ - "accessToken": "", - "name": "", - "environment": "", - "settings": { - "applicationInsights": { - "InstrumentationKey": "" - }, - "cosmosDb": { - "cosmosDBEndpoint": "", - "authKey": "", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - }, - "luis": { - "endpointKey": "", - "authoringKey": "", - "region": "westus" - }, - "MicrosoftAppId": "", - "MicrosoftAppPassword": "" - } -}``` - -When completed, you will see a message with a JSON "publishing profile" and instructions for using it in Composer. - - -## Publish bot to Azure - -To publish your bot to a Azure resources provisioned using the process above: - -* Open your bot in Composer -* Navigate to the "Publish" tab -* Select "Add new profile" from the toolbar -* In the resulting dialog box, choose "azurePublish" from the "Publish Destination Type" dropdown -* Paste in the profile you received from the provisioning script - -When you are ready to publish your bot to Azure, select the newly created profile from the sidebar and click "Publish to selected profile" in the toolbar. - -## Refresh your Azure Token - -When publishing, you may encounter an error about your access token being expired. This happens when the access token used to provision your bot expires. - -To get a new token: - -* Open a terminal window -* Run `az account get-access-token` -* This will result in a JSON object printed to the console, containing a new `accessToken` field. -* Copy the value of the accessToken from the terminal and into the publish `accessToken` field in the profile in Composer. diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/emptybot-1.dialog b/Composer/plugins/localPublish/hostedBots/80560.06813833171/emptybot-1.dialog deleted file mode 100644 index 41a1b264ae..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/emptybot-1.dialog +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "$designer": { - "name": "EmptyBot-1", - "id": "O5GpOo" - } - }, - "autoEndDialog": true, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "bZXCBO" - }, - "activity": "${SendActivity_bZXCBO()}" - } - ] - } - ], - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema", - "generator": "emptybot-1.lg" -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/80560.06813833171/language-generation/en-us/common.en-us.lg deleted file mode 100644 index daf583404a..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,3 +0,0 @@ -# WelcomeUser -- Welcome to the EmptyBot sample - diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/language-generation/en-us/emptybot-1.en-us.lg b/Composer/plugins/localPublish/hostedBots/80560.06813833171/language-generation/en-us/emptybot-1.en-us.lg deleted file mode 100644 index 215d650bd1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/language-generation/en-us/emptybot-1.en-us.lg +++ /dev/null @@ -1,27 +0,0 @@ -[import](common.lg) - -# SendActivity_bZXCBO() -- ${A()} - -# A -[Activity - ChannelData=${json(j())} -] - -# j -- ```{ -"attachment":{ -"type":"template", -"payload":{ -"template_type":"button", -"text":"What do you want to do next?", -"buttons":[ -{ -"type":"web_url", -"url":"https://www.messenger.com", -"title":"Visit Messenger" -} -] -} -} -}``` \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/language-understanding/en-us/emptybot-1.en-us.lu b/Composer/plugins/localPublish/hostedBots/80560.06813833171/language-understanding/en-us/emptybot-1.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/.gitignore b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/.gitignore deleted file mode 100644 index 2ad42ca00c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/.gitignore +++ /dev/null @@ -1,360 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*[.json, .xml, .info] - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/ComposerRuntime.sln b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/ComposerRuntime.sln deleted file mode 100644 index f39a16131b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/ComposerRuntime.sln +++ /dev/null @@ -1,43 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29920.165 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.WebApp", "azurewebapp\Microsoft.BotFramework.Composer.WebApp.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Tests", "tests\Microsoft.BotFramework.Composer.Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Core", "core\Microsoft.BotFramework.Composer.Core.csproj", "{35E20444-438D-4241-833C-804A24E9CB4F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Functions", "azurefunctions\Microsoft.BotFramework.Composer.Functions.csproj", "{9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.Build.0 = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/NuGet.Config b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/README.md b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/README.md deleted file mode 100644 index f41b1a16da..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# DotNet bot runtime - -# Folder structure - -- **core**: Includes all core JavaScript runtime logic, independent of hosting technology. -- **technology specific folders**: Each hosting technology has one folder in this directory. For example, for Azure Functions, there is an `azurefunction` folder - - **tests**: Javascript runtime tests diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/.gitignore b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/.gitignore deleted file mode 100644 index ff5b00c506..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/.gitignore +++ /dev/null @@ -1,264 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# Azure Functions localsettings file -local.settings.json - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -project.fragment.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -#*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/MessagesTrigger.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/MessagesTrigger.cs deleted file mode 100644 index abb88495f5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/MessagesTrigger.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Extensions.Logging; -using System; -using System.Net; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class MessagesTrigger - { - private readonly IBotFrameworkHttpAdapter _adapter; - private readonly IBot _bot; - - public MessagesTrigger(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter ?? throw new ArgumentNullException(nameof(adapter)); - this._bot = bot ?? throw new ArgumentNullException(nameof(bot)); - } - - [FunctionName("messages")] - public async Task Run( - [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, - ILogger log) - { - log.LogInformation($"Messages endpoint triggered."); - - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await _adapter.ProcessAsync(req, req.HttpContext.Response, _bot); - - if (req.HttpContext.Response.StatusCode == (int) HttpStatusCode.OK || req.HttpContext.Response.StatusCode == (int)HttpStatusCode.Accepted) - { - return new OkResult(); - } - else - { - return new ContentResult() - { - StatusCode = req.HttpContext.Response.StatusCode, - Content = $"Bot execution failed with status code: {req.HttpContext.Response.StatusCode}" - }; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj deleted file mode 100644 index 88a550947e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj deleted file mode 100644 index b678ef1042..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj +++ /dev/null @@ -1,61 +0,0 @@ - - - - netcoreapp3.0 - v3 - 2eb1c70c-5cd2-4c08-8aab-df989c347067 - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs deleted file mode 100644 index 645665ecaa..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Rest.Serialization; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace Microsoft.BotFramework.Composer.Functions.Settings -{ - internal class ActivitySerializationSettings - { - internal static readonly JsonSerializerSettings Default = new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Ignore, - Formatting = Formatting.Indented, - DateFormatHandling = DateFormatHandling.IsoDateFormat, - DateTimeZoneHandling = DateTimeZoneHandling.Utc, - ReferenceLoopHandling = ReferenceLoopHandling.Serialize, - ContractResolver = new ReadOnlyJsonContractResolver(), - Converters = new List { new Iso8601TimeSpanConverter() } - }; - - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/SkillsTrigger.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/SkillsTrigger.cs deleted file mode 100644 index 30528b4cf3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/SkillsTrigger.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder; -using System.Web.Http; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Microsoft.BotFramework.Composer.Functions.Settings; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class SkillsTrigger - { - private readonly SkillHandler _skillHandler; - - public SkillsTrigger(SkillHandler skillHandler) - { - this._skillHandler = skillHandler ?? throw new ArgumentNullException(nameof(skillHandler)); - } - - [FunctionName("skills")] - public async Task ReplyToActivityAsync( - [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities/{activityId}")] HttpRequest req, - string conversationId, string activityId, ILogger log) - { - log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - var body = await req.ReadAsStringAsync(); - var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - var result = await _skillHandler.HandleReplyToActivityAsync(req.Headers["Authorization"], conversationId, activityId, activity); - - return new JsonResult(result, ActivitySerializationSettings.Default); - } - - - //[FunctionName("skills")] - //public async Task SendToConversationAsync( - // [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities")] HttpRequest req, - // string conversationId, string activityId, ILogger log) - //{ - // log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - // var body = await req.ReadAsStringAsync(); - // var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - // var result = await _skillHandler.HandleSendToConversationAsync(req.Headers["Authorization"], conversationId, activity); - - // return new JsonResult(result, ActivitySerializationSettings.Default); - //} - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Startup.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Startup.cs deleted file mode 100644 index 0641c70d30..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/Startup.cs +++ /dev/null @@ -1,236 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Http; -using Microsoft.Azure.Functions.Extensions.DependencyInjection; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Reflection; -using System.Text; - -[assembly: FunctionsStartup(typeof(Microsoft.BotFramework.Composer.Functions.Startup))] - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class Startup : FunctionsStartup - { - private IConfigurationRoot BuildConfiguration(string rootDirectory) - { - var config = new ConfigurationBuilder(); - - // Config precedence 1: root app.settings - config - .SetBasePath(rootDirectory) - .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) - .UseLuisConfigAdapter() - .UseLuisSettings(); - - // Config precedence 2: ComposerDialogs/settings settings which are injected by the composer publish - // Hard code the settings path to 'ComposerDialogs' for deployment - var configFile = Path.GetFullPath(Path.Combine(rootDirectory, @"ComposerDialogs/settings/appsettings.json")); - config.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - // Config Precedence 3: Deployment specific config - config.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - - if (!Debugger.IsAttached) - { - config.AddUserSecrets(); - } - - config.AddEnvironmentVariables(); - - return config.Build(); - } - - public override void Configure(IFunctionsHostBuilder builder) - { - var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - var rootDirectory = Directory.GetParent(binDirectory).FullName; - - var rootConfiguration = BuildConfiguration(rootDirectory); - - var settings = new BotSettings(); - rootConfiguration.Bind(settings); - - var services = builder.Services; - - services.AddSingleton(rootConfiguration); - - services.AddLogging(); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Adaptive component registration - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings.ApplicationInsights.InstrumentationKey); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings.Telemetry.LogPersonalInformation); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings.Telemetry.LogActivities); - }); - - // Storage - IStorage storage; - if (ConfigSectionValid(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Resource explorer to track declarative assets - var resourceExplorer = new ResourceExplorer().AddFolder(Path.Combine(rootDirectory, settings.Bot ?? ".")); - services.AddSingleton(resourceExplorer); - - // Adapter - services.AddSingleton(s => - { - // Retrieve required dependencies - //IConfiguration configuration = s.GetService(); - IStorage storage = s.GetService(); - UserState userState = s.GetService(); - ConversationState conversationState = s.GetService(); - TelemetryInitializerMiddleware telemetryInitializerMiddleware = s.GetService(); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(rootConfiguration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(rootConfiguration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, s); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - - return adapter; - }); - - var defaultLocale = rootConfiguration.GetValue("defaultLocale") ?? "en-us"; - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - // Bot - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - GetRootDialog(Path.Combine(rootDirectory, settings.Bot)), - defaultLocale, - removeRecipientMention)); - } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings.BlobStorage.ConnectionString) && ConfigSectionValid(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings.Feature.UseShowTypingMiddleware) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IServiceProvider s) - { - if (settings.Feature.UseInspectionMiddleware) - { - adapter.Use(s.GetService()); - } - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - - private bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.Deployment.json deleted file mode 100644 index 5b9a266f9e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "ComposerDialogs", - "root": "ComposerDialogs" -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.Development.json deleted file mode 100644 index 32b3ba9cf9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.Development.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "../", - "root": "../" -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.json deleted file mode 100644 index eea4c3777e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/appsettings.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false - }, - "microsoftAppId": "", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/host.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/host.json deleted file mode 100644 index 903482d949..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurefunctions/host.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "2.0" -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/.gitignore b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Controllers/BotController.cs deleted file mode 100644 index daaba0d810..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Controllers/SkillController.cs deleted file mode 100644 index a8853db745..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Controllers/SkillController.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj deleted file mode 100644 index 838be81661..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj +++ /dev/null @@ -1,41 +0,0 @@ - - - - netcoreapp3.1 - 8f4c825f-84d8-43db-b95a-d92a95fc56b3 - - - - Always - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Program.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Program.cs deleted file mode 100644 index e080ee0004..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Program.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - builder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); - - if (env.IsDevelopment()) - { - // Local Debug - builder.AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true); - } - - var configuration = builder.Build(); - - // Hard code the settings path to 'ComposerDialogs' while deployment - var botRoot = configuration.GetValue("bot") ?? "ComposerDialogs"; - var configFile = Path.GetFullPath(Path.Combine(botRoot, @"settings/appsettings.json")); - - builder.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - // Need to put this part here to override the any customized settings - if (!env.IsDevelopment()) - { - //Azure Deploy - builder.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - } - - builder.UseLuisConfigAdapter() - .UseLuisSettings(); - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/README.md b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/README.md deleted file mode 100644 index 356528b3d7..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/README.md +++ /dev/null @@ -1,21 +0,0 @@ -## Bot Project -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -## Instructions for setting up the Bot Project runtime -The Bot Project is a regular Bot Framework SDK V4 project. Before you can launch it from the emulator, you need to make sure you can run the bot. - -### Prerequisite: -* Install .Netcore 3.1 - -### Commands: - -* from root folder -* cd templates/dotnet/Microsoft.BotFramework.Composer.WebAppTemplate -* dotnet user-secrets init // init the user secret id -* dotnet build // build -* dotnet run // start the bot -* It will start a web server and listening at http://localhost:3979. - -### Test bot -* You can set you emulator to connect to http://localhost:3979/api/messages. - diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/readme.md b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/readme.md deleted file mode 100644 index bbbe520a40..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/readme.md +++ /dev/null @@ -1,58 +0,0 @@ - -# How to update the schema file -Once the bot has been setup with Composer and we wish to make changes to the schema, the first step in this process is to eject the runtime through the `Runtime Config` in Composer. The ejected runtime folder will broadly have the following structure - -``` -bot - /bot.dialog - /language-generation - /language-understanding - /dialogs - /customized-dialogs - /runtime - /azurewebapp - /azurefunctions - /schemas - sdk.schema -``` - -### Setup bfdialog tool (Prerequisite) -The bfdialog is part of our suite of botframework tools and helps merge partial schemas into a single consolidated schema - -##### To point npm to nightly builds -``` -npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/ -``` -##### To install BF tool: -``` -npm i -g @microsoft/botframework-cli -``` - -##### To install bf dialog plugin -``` -bf plugins:install @microsoft/bf-dialog -``` - -## Adding Custom Actions to your Composer bot -**NOTE: These steps assume you are using azurewebapp as your deployment solution. Replicating it on azurefunctions would be similar -** -- In this tutorial, we will be going over the steps to include a custom action `MultiplyDialog` that multiplies two numbers passed as inputs. Note that the ejected runtime should contain a `customaction` folder that has this sample. - -- Navigate to the csproj file inside the `runtime` folder (bot/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj) and include a project reference to the customaction project like ``. - -- Then Uncomment line 28 and 139 in azurewebapp/Startup.cs file so as to register this action. -``` -using Microsoft.BotFramework.Composer.CustomAction; -// This is for custom action component registration. -ComponentRegistration.Add(new CustomActionComponentRegistration()); -``` - -- Run the command `dotnet build` on the azurewebapp project to verify if it passes build after adding custom actions to it. - -- Navigate to to the `Schemas (bot/runtime/azurewebapp/Schemas)` folder and then run the command `sh update.sh`. - -- Validate that the partial schema (MultiplyDialog.schema inside customaction/Schema) has been appended to the default sdk.schema file to generate one single consolidated sdk.schema file. - -- Copy the newly generated sdk.schema into the `schemas (bot/schemas)` folder at the root of the ejected runtime. - -The above steps should have generated a new sdk.schema file inside `schemas` folder for Composer to use. Reload the bot and you should be able to include your new custom action! diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/sdk.schema deleted file mode 100644 index 1a7b2fd24b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/sdk.schema +++ /dev/null @@ -1,8850 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/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.ChoiceInput" - }, - { - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$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.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.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.TemperatureEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" - }, - { - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "$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 ActivityTemplate", - "type": "object", - "required": [ - "template", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to use to create the activity", - "type": "string" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ActivityTemplate" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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.IEntityRecognizer)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AgeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Ask": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.SendActivity)" - ], - "title": "Send Activity to Ask a question", - "description": "This is an action which sends an activity to the user when a response is expected", - "type": "object", - "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.", - "type": "array", - "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" - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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.", - "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" - }, - { - "$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" - }, - { - "$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", - "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", - "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" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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" - ], - "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", - "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", - "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.ChoiceInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "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" - ], - "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", - "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.IEntityRecognizer)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ConfirmationEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ContinueLoop" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CrossTrainedRecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CurrencyEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DateTimeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "defaultLocale": { - "$ref": "#/definitions/stringExpression", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "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/stringExpression", - "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", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DebugBreak" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "required": [ - "activityId", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "required": [ - "property", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DimensionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "required": [ - "changeType", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "oneOf": [ - { - "type": "string", - "title": "Standard change", - "description": "Standard change types.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EditActions" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "required": [ - "itemsProperty", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to the array in memory.", - "oneOf": [ - { - "type": "string", - "title": "Enum", - "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.IEntityRecognizer)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EmailEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "required": [ - "eventName", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "eventName": { - "$role": "expression", - "title": "Event name", - "description": "Name of the event to emit.", - "oneOf": [ - { - "type": "string", - "title": "Built-in event", - "description": "Standard event type.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - { - "type": "string", - "title": "Custom event", - "description": "Custom event type", - "pattern": "^(?!(beginDialog$|resumeDialog$|repromptDialog$|cancelDialog$|endDialog$|activityReceived$|recognizedIntent$|unknownIntent$|actionsStarted$|actionsSaved$|actionsEnded$|actionsResumed))(\\S){1}.*" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "eventValue": { - "$ref": "#/definitions/valueExpression", - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$ref": "#/definitions/booleanExpression", - "title": "Bubble event", - "description": "If true this event is passed on to 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", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndTurn" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.FirstSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "required": [ - "itemsProperty", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "itemsProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to execute for each page. Use '$foreach.page' to access each page.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "pageIndex": { - "$ref": "#/definitions/stringExpression", - "title": "Index property", - "description": "Property that holds the index of the page.", - "default": "dialog.foreach.pageindex" - }, - "page": { - "$ref": "#/definitions/stringExpression", - "title": "Page property", - "description": "Property that holds the value of the page.", - "default": "dialog.foreach.page" - }, - "pageSize": { - "$ref": "#/definitions/integerExpression", - "title": "Page size", - "description": "Number of items in each page.", - "default": 10 - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ForeachPage" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "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 Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GetConversationMembers" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "required": [ - "actionId", - "$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" - ] - }, - "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.IEntityRecognizer)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GuidEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.HashtagEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "required": [ - "url", - "method", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$ref": "#/definitions/stringExpression", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$ref": "#/definitions/valueExpression", - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Result property", - "description": "A property to store the result of this action. The result can include any of the 4 properties from the HTTP response: statusCode, reasonPhrase, content, and headers. If the content is JSON it will be a deserialized object. The values can be accessed via .content for example.", - "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" - ], - "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" - } - ] - }, - "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.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" - }, - { - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginSkill" - }, - { - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "$ref": "#/definitions/Microsoft.CancelDialog" - }, - { - "$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.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - } - ] - }, - "Microsoft.IEntityRecognizer": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Components which derive from EntityRecognizer.", - "type": "object", - "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" - } - ] - }, - "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" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Components which derive from TextTemplate class", - "$role": "interface", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - } - ] - }, - "Microsoft.ITrigger": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "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.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.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.", - "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" - ], - "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", - "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.IEntityRecognizer)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.IpEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": { - "type": "array", - "title": "Per-locale policy", - "description": "Language policy per locale.", - "items": { - "type": "string", - "title": "Locale", - "description": "Locale like en-us." - } - }, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.LanguagePolicy" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LogAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Log to console", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "type": "object", - "required": [ - "text", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "text": { - "$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" - ], - "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." - }, - "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": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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.IEntityRecognizer)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MentionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MostSpecificSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "languagePolicy": { - "$kind": "Microsoft.LanguagePolicy", - "type": "object", - "title": "Language policy", - "description": "Defines fall back languages to try per user input language.", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - "recognizers": { - "type": "object", - "title": "Recognizers", - "description": "Map of language -> Recognizer", - "additionalProperties": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MultiLanguageRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "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.IEntityRecognizer)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberRangeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "required": [ - "connectionName", - "$kind" - ], - "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" - ], - "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", - "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", - "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)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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", - "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" - ], - "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", - "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" - ], - "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.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" - ], - "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" - ], - "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.", - "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" - ], - "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", - "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" - ], - "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" - ], - "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.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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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", - "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" - ], - "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 and if none of the 'on intent recognition' triggers match recognized intent.", - "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.OnUnknownIntent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OrdinalEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PercentageEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PhoneNumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$ref": "#/definitions/stringExpression", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$ref": "#/definitions/stringExpression", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "noAnswer": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Fallback answer", - "description": "Default answer to return when none found in KB.", - "default": "Sorry, I did not find an answer.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "threshold": { - "$ref": "#/definitions/numberExpression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "default": 0.3 - }, - "activeLearningCardTitle": { - "$ref": "#/definitions/stringExpression", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$ref": "#/definitions/stringExpression", - "title": "Card no match text", - "description": "Text for no match option.", - "default": "None of the above." - }, - "cardNoMatchResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Card no match response", - "description": "Custom response when no match option was selected.", - "default": "Thanks for the feedback.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "strictFilters": { - "$ref": "#/definitions/arrayExpression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "type": "object", - "title": "Metadata filter", - "description": "Metadata filter.", - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of filter property.", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "description": "Value to filter on.", - "maximum": 100 - } - } - } - }, - "top": { - "$ref": "#/definitions/numberExpression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "default": 3 - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "$ref": "#/definitions/stringExpression", - "title": "Ranker Type", - "description": "Type of Ranker.", - "oneOf": [ - { - "title": "Standard ranker", - "description": "Standard ranker types.", - "enum": [ - "default", - "questionOnly", - "autoSuggestQuestion" - ], - "default": "default" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "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" - ] - }, - "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": "IsTest", - "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" - } - ] - }, - "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": "QnARequestContext", - "description": "Context to use for ranking." - }, - "qnaId": { - "$ref": "#/definitions/integerExpression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "seed": { - "type": "integer", - "title": "Random seed", - "description": "Random seed to start random number generation." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RandomSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "required": [ - "name", - "pattern", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "intents": { - "type": "array", - "title": "RegEx patterns to intents", - "description": "Collection of patterns to match for an intent.", - "items": { - "type": "object", - "title": "Pattern", - "description": "Intent and regex pattern.", - "properties": { - "intent": { - "type": "string", - "title": "Intent", - "description": "The intent name." - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "The regular expression pattern." - } - } - } - }, - "entities": { - "type": "array", - "title": "Entity recognizers", - "description": "Collection of entity recognizers to use.", - "items": { - "$kind": "Microsoft.IEntityRecognizer", - "$ref": "#/definitions/Microsoft.IEntityRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "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.", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "dialog": { - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "pattern": "^(?!(=)).*", - "title": "Dialog", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=settings.dialogId" - ] - } - ], - "title": "Dialog name", - "description": "Name of the dialog to call." - }, - "options": { - "$ref": "#/definitions/objectExpression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "type": "string", - "title": "Options", - "description": "Options for replacing dialog." - } - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "default": true - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ReplaceDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ResourceMultiLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Resource Multi-Language Generator", - "description": "MultiLanguage Generator which is bound to resource by resource Id.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "resourceId": { - "type": "string", - "title": "Resource Id", - "description": "Resource which is the root language generator. Other generaters with the same name and language suffix will be loaded into this generator and used based on the Language Policy.", - "default": "dialog.result" - }, - "languagePolicy": { - "type": "object", - "title": "Language Policy", - "description": "Set alternate language policy for this generator. If not set, the global language policy will be used." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ResourceMultiLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "title": "Assignment", - "description": "Property assignment.", - "properties": { - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "required": [ - "property", - "value", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "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" - ], - "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" - ], - "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.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Temperature Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemperatureEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TemplateEngineLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Template Multi-Language Generator", - "description": "Template Generator which allows only inline evaluation of templates.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemplateEngineLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TextInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "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" - ], - "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.TraceActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send a TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "name": { - "$ref": "#/definitions/stringExpression", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$ref": "#/definitions/stringExpression", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$ref": "#/definitions/stringExpression", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Property that holds the value to send as trace activity." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TraceActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TrueSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "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.IEntityRecognizer)", - "title": "Confirmation Url Recognizer", - "description": "Recognizer which recognizes urls.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.UrlEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "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": { - "type": "string", - "title": "Expression", - "description": "Expression starting with =.", - "pattern": "^=.*\\S.*", - "examples": [ - "=user.name" - ] - }, - "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": [ - "=..." - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/update.sh b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/update.sh deleted file mode 100644 index c9f8544cdb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Schemas/update.sh +++ /dev/null @@ -1,2 +0,0 @@ -cd .. -bf dialog:merge *.csproj -o ./schemas/sdk.schema -v diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/build_runtime.ps1 b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/build_runtime.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -if ((dotnet --version) -lt '3.1.0') { - throw "! dotnet core 3.1 is required, please refer following documents for help. https://dotnet.microsoft.com/download/dotnet-core/3.1" - Break -} - -# This command need dotnet core more than 3.0 -dotnet user-secrets init - -# Merge all streams into stdout -$result = dotnet build *>&1 -# Evaluate success/failure -if($LASTEXITCODE -ne 0) -{ - # Failed, you can reconstruct stderr strings with: - $ErrorString = $result -join [System.Environment]::NewLine - throw $ErrorString -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/build_runtime.sh b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/build_runtime.sh +++ /dev/null @@ -1,11 +0,0 @@ -versionString=`dotnet --version` -function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } -if version_lt $versionString "3.1.0"; -then - echo "! dotnet core 3.1 is required, please refer following documents for help. -https://dotnet.microsoft.com/download/dotnet-core/3.1" - exit 1 -else - dotnet user-secrets init - dotnet build -fi diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/create.ps1 b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/create.ps1 +++ /dev/null @@ -1,211 +0,0 @@ -Param( - [string] $name, - [string] $location, - [string] $appId, - [string] $appPassword, - [string] $environment, - [string] $luisAuthoringKey, - [string] $projDir = $(Get-Location), - [string] $logFile = $(Join-Path $PSScriptRoot .. "create_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6){ - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -if (-not (Test-Path (Join-Path $projDir 'appsettings.deployment.json'))) -{ - Write-Host "! Could not find an 'appsettings.deployment.json' file in the current directory." -ForegroundColor DarkRed - Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" -} - -if (-not $environment) -{ - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $location) { - $location = Read-Host "? Azure resource group region" -} - -if (-not $appPassword) { - $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" -} - -if (-not $appId) { - # Create app registration - $app = (az ad app create ` - --display-name $name ` - --password `"$($appPassword)`" ` - --available-to-other-tenants ` - --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` - --output json) - - # Retrieve AppId - if ($app) { - $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId - } - - if(-not $appId) { - Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta - Break - } -} - -$shouldCreateAuthoringResource = $true - -# Use pre-exsisting luis authoring key -if ($luisAuthoringKey) { - $shouldCreateAuthoringResource = $false -} - -$resourceGroup = "$name-$environment" -$servicePlanName = "$name-$environment" - -# Get timestamp -$timestamp = Get-Date -f MMddyyyyHHmmss - -# Create resource group -Write-Host "> Creating resource group ..." -(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null - -# Deploy Azure services -Write-Host "> Validating Azure deployment ..." -$validation = az group deployment validate ` - --resource-group $resourcegroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - -if ($validation) { - $validation >> $logFile - $validation = $validation | ConvertFrom-Json - - if (-not $validation.error) { - Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow - $deployment = az group deployment create ` - --name $timestamp ` - --resource-group $resourceGroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - } - else { - Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - if ($validation.error.details -and $validation.error.details[0].code -eq "CanNotCreateMultipleFreeAccounts") - { - Write-Host "! The subscription is exceeding the maximum number of allowed LuisAuthoringAccounts. You already have a luis authoring resource created, please get your luis authoring key and retry with the following command:" -ForegroundColor DarkRed - Write-Host "pwsh ./Scripts/create.ps1 -name $name -environment $environment -location $location -appPassword $appPassword -luisAuthoringKey [YourLuisAuthoringKey]" -ForegroundColor Green - } - - Break - } -} - - -# Get deployment outputs -$outputs = (az group deployment show ` - --name $timestamp ` - --resource-group $resourceGroup ` - --output json) 2>> $logFile - -# If it succeeded then we perform the remainder of the steps -if ($outputs) -{ - # Log and convert to JSON - $outputs >> $logFile - $outputs = $outputs | ConvertFrom-Json - if ($outputs.properties.error) { - Write-Host "! Deployment failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($outputs.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - Break - } - - $outputs = $outputs.properties.outputs - $outputMap = @{} - $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } - - # Update appsettings.deployment.json - Write-Host "> Updating appsettings.deployment.json ..." - if (Test-Path $(Join-Path $projDir appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $projDir appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppId' -Value $appId - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppPassword' -Value $appPassword - - $settings | Add-Member -Type NoteProperty -Force -Name 'bot' -Value "ComposerDialogs" - - foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.deployment.json) - - Write-Host "> Done." - Write-Host "- App Id: $appId" - Write-Host "- App Password: $appPassword" - Write-Host "- Resource Group: $resourceGroup" - Write-Host "- ServicePlan: $servicePlanName" - Write-Host "- Bot Name: $name" - Write-Host "- Web App Name : $name" -} -else -{ - # Check for failed deployments - $operations = az group deployment operation list -g $resourceGroup -n $timestamp --output json 2>> $logFile | Out-Null - - if ($operations) { - $operations = $operations | ConvertFrom-Json - $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } - if ($failedOperations) { - foreach ($operation in $failedOperations) { - switch ($operation.properties.statusmessage.error.code) { - "MissingRegistrationForLocation" { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed - Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta - } - default { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." - Write-Host "! Code: $($operation.properties.statusMessage.error.code)." - Write-Host "! Message: $($operation.properties.statusMessage.error.message)." - } - } - } - } - } - else { - Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } - - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - Break -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/deploy.ps1 deleted file mode 100644 index 3f510dfb8f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Scripts/deploy.ps1 +++ /dev/null @@ -1,272 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path Microsoft.BotFramework.Composer.WebApp.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Init user secret id -dotnet user-secrets init - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - - -if (-not $botPath) { - # If don't provide bot path, then try to copy all dialogs except the runtime folder in parent folder to the publishing folder (bin\Realse\ Folder) - $botPath = '..' -} - -$botPath = $(Join-Path $botPath '*') -Write-Host "Publishing dialogs from external bot project: $($botPath)" -Copy-Item -Path (Get-Item -Path $botPath -Exclude ('runtime', 'generated')).FullName -Destination $remoteBotPath -Recurse -Force -Container - -# Try to get luis config from appsettings -$settings = Get-Content $(Join-Path $projFolder appsettings.deployment.json) | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisEndpointKey) { - $luisEndpointKey = $luisSettings.endpointKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - - Set-Location -Path $remoteBotPath - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - $noneEmptyModels = [System.Collections.ArrayList]@() - - foreach ($model in $models) { - $stringContent = Get-Content $model | Out-String - if ($stringContent.Length -gt 0) { - $noneEmptyModels.Add($model) - } - } - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $noneEmptyModels - } - - $luString = $noneEmptyModels | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # Execute bf luis:build command - if (Get-Command bf -errorAction SilentlyContinue) { - $customizedSettings = Get-Content $(Join-Path $remoteBotPath settings appsettings.json) | ConvertFrom-Json - $customizedEnv = $customizedSettings.luis.environment - - # create generated folder if not exists - if (!(Test-Path generated)) { - New-Item -ItemType Directory -Force -Path generated - } - - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog --out .\generated --suffix $customizedEnv -f --region $luisAuthoringRegion - } - else { - Write-Host "bf luis:build does not exist, use the following command to install:" - Write-Host "1. npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/" - Write-Host "2. npm install -g @microsoft/botframework-cli/4.9.0-preview.121555" - Write-Host "3. npm config set registry http://registry.npmjs.org" - Break - } - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - # change setting file in publish folder - if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - $luisConfig["endpointKey"] = $luisEndpointKey - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -# Enable all features to true by default -$featureConfig = @{ } -$featureConfig["UseTelementryLoggerMiddleware"] = $true -$featureConfig["UseTranscriptLoggerMiddleware"] = $true -$featureConfig["UseShowTypingMiddleware"] = $true -$featureConfig["UseInspectionMiddleware"] = $true -$featureConfig["UseCosmosDb"] = $true - -if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json -} -else { - $settings = New-Object PSObject -} - -$settings | Add-Member -Type NoteProperty -Force -Name 'feature' -Value $featureConfig -$settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Startup.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Startup.cs deleted file mode 100644 index fbdd6a153c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/Startup.cs +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; - -//using Microsoft.BotFramework.Composer.CustomAction; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings.BlobStorage.ConnectionString) && ConfigSectionValid(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings.Feature.UseShowTypingMiddleware) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IStorage storage) - { - if (settings.Feature.UseInspectionMiddleware) - { - adapter.Use(new InspectionMiddleware(new InspectionState(storage))); - } - } - - public IStorage ConfigureStorage(BotSettings settings) - { - IStorage storage; - if (ConfigSectionValid(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - return storage; - } - - public BotFrameworkHttpAdapter GetBotAdapter(IStorage storage, BotSettings settings, UserState userState, ConversationState conversationState, IServiceProvider s, TelemetryInitializerMiddleware telemetryInitializerMiddleware) - { - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(Configuration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, storage); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // This is for custom action component registration. - //ComponentRegistration.Add(new CustomActionComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings.ApplicationInsights.InstrumentationKey); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings.Telemetry.LogPersonalInformation); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings.Telemetry.LogActivities); - }); - - var storage = ConfigureStorage(settings); - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Configure bot loading path - var botDir = settings.Bot; - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - var defaultLocale = Configuration.GetValue("defaultLocale") ?? "en-us"; - - services.AddSingleton(resourceExplorer); - - services.AddSingleton((s) => GetBotAdapter(storage, settings, userState, conversationState, s, s.GetService())); - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog, - defaultLocale, - removeRecipientMention)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseWebSockets(); - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private static bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.Deployment.json deleted file mode 100644 index 5b9a266f9e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "ComposerDialogs", - "root": "ComposerDialogs" -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.Development.json deleted file mode 100644 index edb1022967..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.Development.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "../../", - "root": "../../" -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.json deleted file mode 100644 index eea4c3777e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/appsettings.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false - }, - "microsoftAppId": "", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/packages/packages.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/azurewebapp/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/.gitignore b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/ComposerBot.cs deleted file mode 100644 index 6dec73aebe..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/ComposerBot.cs +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Security.Claims; -using System.Security.Principal; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - private readonly IBotTelemetryClient telemetryClient; - private readonly string defaultLocale; - private readonly bool removeRecipientMention; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, IBotTelemetryClient telemetryClient, string rootDialog, string defaultLocale, bool removeRecipientMention = false) - { - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - this.defaultLocale = defaultLocale; - this.telemetryClient = telemetryClient; - this.removeRecipientMention = removeRecipientMention; - - LoadRootDialogAsync(); - this.dialogManager.InitialTurnState.Set(skillClient); - this.dialogManager.InitialTurnState.Set(conversationIdFactory); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - AdaptiveDialog rootDialog = (AdaptiveDialog)this.dialogManager.RootDialog; - if (turnContext.TurnState.Get(BotAdapter.BotIdentityKey) is ClaimsIdentity claimIdentity && SkillValidation.IsSkillClaim(claimIdentity.Claims)) - { - rootDialog.AutoEndDialog = true; - } - else - { - rootDialog.AutoEndDialog = false; - } - - if (this.removeRecipientMention && turnContext?.Activity?.Type == "message") - { - turnContext.Activity.RemoveRecipientMention(); - } - - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration() - .UseLanguagePolicy(new LanguagePolicy(defaultLocale)); - - if (telemetryClient != null) - { - dialogManager.UseTelemetry(this.telemetryClient); - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/LuisConfig.cs deleted file mode 100644 index bc2ff6c834..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/LuisConfigAdapter.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/LuisConfigAdapter.cs deleted file mode 100644 index c879fd1494..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/LuisConfigAdapter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.BotFramework.Composer.Core -{ - public static class LuisConfigAdapter - { - public static IConfigurationBuilder UseLuisConfigAdapter(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var settings = new Dictionary(); - settings["environment"] = configuration.GetValue("luis:environment"); - settings["region"] = configuration.GetValue("luis:authoringRegion"); - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Microsoft.BotFramework.Composer.Core.csproj b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Microsoft.BotFramework.Composer.Core.csproj deleted file mode 100644 index 2afb4a6f7c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Microsoft.BotFramework.Composer.Core.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - netstandard2.0 - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BlobStorageConfiguration.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BlobStorageConfiguration.cs deleted file mode 100644 index e6ab40402f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BlobStorageConfiguration.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BotFeatureSettings.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BotFeatureSettings.cs deleted file mode 100644 index 1073ae5786..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BotFeatureSettings.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotFeatureSettings - { - // Use ShowTypingMiddleware - public bool UseShowTypingMiddleware { get; set; } - - // Use InspectionMiddleware - public bool UseInspectionMiddleware { get; set; } - - // Use RemoveRecipientMention Activity Extensions - public bool RemoveRecipientMention { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BotSettings.cs deleted file mode 100644 index dcb6394ed3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/Settings/BotSettings.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotSettings - { - public BotFeatureSettings Feature { get; set; } - - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration ApplicationInsights { get; set; } - - public AdditionalTelemetryConfiguration Telemetry { get; set; } - - public string Bot { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - - public class AdditionalTelemetryConfiguration - { - public bool LogPersonalInformation { get; set; } - - public bool LogActivities { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/SkillConversationIdFactory.cs deleted file mode 100644 index dc1db5a1ce..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/core/SkillConversationIdFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Newtonsoft.Json; - -namespace Microsoft.BotFramework.Composer.Core -{ - /// - /// A that uses an in memory - /// to store and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly ConcurrentDictionary _conversationRefs = new ConcurrentDictionary(); - - public override Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - var skillConversationReference = new SkillConversationReference - { - ConversationReference = options.Activity.GetConversationReference(), - OAuthScope = options.FromBotOAuthScope - }; - var key = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{skillConversationReference.ConversationReference.Conversation.Id}-{skillConversationReference.ConversationReference.ChannelId}-skillconvo"; - _conversationRefs.GetOrAdd(key, JsonConvert.SerializeObject(skillConversationReference)); - return Task.FromResult(key); - } - - public override Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - var conversationReference = JsonConvert.DeserializeObject(_conversationRefs[skillConversationId]); - return Task.FromResult(conversationReference); - } - - public override Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - _conversationRefs.TryRemove(skillConversationId, out _); - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Action/MultiplyDialog.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Action/MultiplyDialog.cs deleted file mode 100644 index 81768d1b48..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Action/MultiplyDialog.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Threading; -using System.Threading.Tasks; -using AdaptiveExpressions.Properties; -using Microsoft.Bot.Builder.Dialogs; -using Newtonsoft.Json; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - /// - /// Custom command which takes takes 2 data bound arguments (arg1 and arg2) and multiplies them returning that as a databound result. - /// - public class MultiplyDialog : Dialog - { - [JsonConstructor] - public MultiplyDialog([CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) - : base() - { - // enable instances of this command as debug break point - this.RegisterSourceLocation(sourceFilePath, sourceLineNumber); - } - - [JsonProperty("$kind")] - public const string Kind = "MultiplyDialog"; - - /// - /// Gets or sets memory path to bind to arg1 (ex: conversation.width). - /// - /// - /// Memory path to bind to arg1 (ex: conversation.width). - /// - [JsonProperty("arg1")] - public NumberExpression Arg1 { get; set; } - - /// - /// Gets or sets memory path to bind to arg2 (ex: conversation.height). - /// - /// - /// Memory path to bind to arg2 (ex: conversation.height). - /// - [JsonProperty("arg2")] - public NumberExpression Arg2 { get; set; } - - /// - /// Gets or sets caller's memory path to store the result of this step in (ex: conversation.area). - /// - /// - /// Caller's memory path to store the result of this step in (ex: conversation.area). - /// - [JsonProperty("resultProperty")] - public StringExpression ResultProperty { get; set; } - - public override Task BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken)) - { - var arg1 = Arg1.GetValue(dc.State); - var arg2 = Arg2.GetValue(dc.State); - - var result = Convert.ToInt32(arg1) * Convert.ToInt32(arg2); - if (this.ResultProperty != null) - { - dc.State.SetValue(this.ResultProperty.GetValue(dc.State), result); - } - - return dc.EndDialogAsync(result: result, cancellationToken: cancellationToken); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/CustomAction.sln b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/CustomAction.sln deleted file mode 100644 index 2a2bdfab34..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/CustomAction.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30011.22 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "customaction", "customaction.csproj", "{2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {83C7CDB7-7F32-4E64-9D6D-7752806C37D6} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/CustomActionComponentRegistration.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/CustomActionComponentRegistration.cs deleted file mode 100644 index d14abbe6b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/CustomActionComponentRegistration.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Newtonsoft.Json; -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - public class CustomActionComponentRegistration : ComponentRegistration, IComponentDeclarativeTypes - { - public IEnumerable GetDeclarativeTypes(ResourceExplorer resourceExplorer) - { - // Actions - yield return new DeclarativeType(MultiplyDialog.Kind); - } - - public IEnumerable GetConverters(ResourceExplorer resourceExplorer, SourceContext sourceContext) - { - yield break; - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj deleted file mode 100644 index 499b0304e2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Library - netcoreapp3.1 - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Schemas/MultiplyDialog.schema b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Schemas/MultiplyDialog.schema deleted file mode 100644 index e8e651e601..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/customaction/Schemas/MultiplyDialog.schema +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/component.schema", - "$role": "implements(Microsoft.IDialog)", - "title": "Multiply", - "description": "This will return the result of arg1*arg2", - "type": "object", - "additionalProperties": false, - "properties": { - "arg1": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg1", - "description": "Value from callers memory to use as arg 1" - }, - "arg2": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg2", - "description": "Value from callers memory to use as arg 2" - }, - "resultProperty": { - "$ref": "schema:#/definitions/stringExpression", - "title": "Result", - "description": "Value from callers memory to store the result" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ActionsTests.cs deleted file mode 100644 index 0767f86d7e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ActionsTests.cs +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ControllingConversationTests.cs deleted file mode 100644 index 8922c9b099..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ControllingConversationTests.cs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .Send("08") - .AssertReply("In continue loop, which only outputs dual.") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 3 value: 4") - .AssertReply("index: 5 value: 6") - .AssertReply("In break loop, which breaks when index > 2") - .AssertReply("index: 0 value: 1") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 2 value: 3") - .AssertReply("done") - .Send("09") - .AssertReply("counter: 1") - .AssertReply("counter: 2") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/InputsTests.cs deleted file mode 100644 index f0ef055d87..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/InputsTests.cs +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/MessageTests.cs deleted file mode 100644 index 09b27ca711..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/MessageTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj deleted file mode 100644 index e444ece921..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ToDoBotTests.cs deleted file mode 100644 index 00660fc3b5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/runtime/tests/ToDoBotTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/readme.md b/Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/readme.md deleted file mode 100644 index bbbe520a40..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/readme.md +++ /dev/null @@ -1,58 +0,0 @@ - -# How to update the schema file -Once the bot has been setup with Composer and we wish to make changes to the schema, the first step in this process is to eject the runtime through the `Runtime Config` in Composer. The ejected runtime folder will broadly have the following structure - -``` -bot - /bot.dialog - /language-generation - /language-understanding - /dialogs - /customized-dialogs - /runtime - /azurewebapp - /azurefunctions - /schemas - sdk.schema -``` - -### Setup bfdialog tool (Prerequisite) -The bfdialog is part of our suite of botframework tools and helps merge partial schemas into a single consolidated schema - -##### To point npm to nightly builds -``` -npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/ -``` -##### To install BF tool: -``` -npm i -g @microsoft/botframework-cli -``` - -##### To install bf dialog plugin -``` -bf plugins:install @microsoft/bf-dialog -``` - -## Adding Custom Actions to your Composer bot -**NOTE: These steps assume you are using azurewebapp as your deployment solution. Replicating it on azurefunctions would be similar -** -- In this tutorial, we will be going over the steps to include a custom action `MultiplyDialog` that multiplies two numbers passed as inputs. Note that the ejected runtime should contain a `customaction` folder that has this sample. - -- Navigate to the csproj file inside the `runtime` folder (bot/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj) and include a project reference to the customaction project like ``. - -- Then Uncomment line 28 and 139 in azurewebapp/Startup.cs file so as to register this action. -``` -using Microsoft.BotFramework.Composer.CustomAction; -// This is for custom action component registration. -ComponentRegistration.Add(new CustomActionComponentRegistration()); -``` - -- Run the command `dotnet build` on the azurewebapp project to verify if it passes build after adding custom actions to it. - -- Navigate to to the `Schemas (bot/runtime/azurewebapp/Schemas)` folder and then run the command `sh update.sh`. - -- Validate that the partial schema (MultiplyDialog.schema inside customaction/Schema) has been appended to the default sdk.schema file to generate one single consolidated sdk.schema file. - -- Copy the newly generated sdk.schema into the `schemas (bot/schemas)` folder at the root of the ejected runtime. - -The above steps should have generated a new sdk.schema file inside `schemas` folder for Composer to use. Reload the bot and you should be able to include your new custom action! diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/sdk.schema deleted file mode 100644 index 1a7b2fd24b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/sdk.schema +++ /dev/null @@ -1,8850 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/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.ChoiceInput" - }, - { - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$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.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.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.TemperatureEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" - }, - { - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "$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 ActivityTemplate", - "type": "object", - "required": [ - "template", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to use to create the activity", - "type": "string" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ActivityTemplate" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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.IEntityRecognizer)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AgeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Ask": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.SendActivity)" - ], - "title": "Send Activity to Ask a question", - "description": "This is an action which sends an activity to the user when a response is expected", - "type": "object", - "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.", - "type": "array", - "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" - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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.", - "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" - }, - { - "$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" - }, - { - "$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", - "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", - "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" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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" - ], - "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", - "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", - "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.ChoiceInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "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" - ], - "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", - "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.IEntityRecognizer)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ConfirmationEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ContinueLoop" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CrossTrainedRecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CurrencyEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DateTimeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "defaultLocale": { - "$ref": "#/definitions/stringExpression", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "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/stringExpression", - "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", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DebugBreak" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "required": [ - "activityId", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "required": [ - "property", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DimensionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "required": [ - "changeType", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "oneOf": [ - { - "type": "string", - "title": "Standard change", - "description": "Standard change types.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EditActions" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "required": [ - "itemsProperty", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to the array in memory.", - "oneOf": [ - { - "type": "string", - "title": "Enum", - "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.IEntityRecognizer)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EmailEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "required": [ - "eventName", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "eventName": { - "$role": "expression", - "title": "Event name", - "description": "Name of the event to emit.", - "oneOf": [ - { - "type": "string", - "title": "Built-in event", - "description": "Standard event type.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - { - "type": "string", - "title": "Custom event", - "description": "Custom event type", - "pattern": "^(?!(beginDialog$|resumeDialog$|repromptDialog$|cancelDialog$|endDialog$|activityReceived$|recognizedIntent$|unknownIntent$|actionsStarted$|actionsSaved$|actionsEnded$|actionsResumed))(\\S){1}.*" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "eventValue": { - "$ref": "#/definitions/valueExpression", - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$ref": "#/definitions/booleanExpression", - "title": "Bubble event", - "description": "If true this event is passed on to 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", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndTurn" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.FirstSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "required": [ - "itemsProperty", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "itemsProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to execute for each page. Use '$foreach.page' to access each page.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "pageIndex": { - "$ref": "#/definitions/stringExpression", - "title": "Index property", - "description": "Property that holds the index of the page.", - "default": "dialog.foreach.pageindex" - }, - "page": { - "$ref": "#/definitions/stringExpression", - "title": "Page property", - "description": "Property that holds the value of the page.", - "default": "dialog.foreach.page" - }, - "pageSize": { - "$ref": "#/definitions/integerExpression", - "title": "Page size", - "description": "Number of items in each page.", - "default": 10 - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ForeachPage" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "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 Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GetConversationMembers" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "required": [ - "actionId", - "$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" - ] - }, - "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.IEntityRecognizer)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GuidEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.HashtagEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "required": [ - "url", - "method", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$ref": "#/definitions/stringExpression", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$ref": "#/definitions/valueExpression", - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Result property", - "description": "A property to store the result of this action. The result can include any of the 4 properties from the HTTP response: statusCode, reasonPhrase, content, and headers. If the content is JSON it will be a deserialized object. The values can be accessed via .content for example.", - "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" - ], - "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" - } - ] - }, - "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.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" - }, - { - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginSkill" - }, - { - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "$ref": "#/definitions/Microsoft.CancelDialog" - }, - { - "$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.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - } - ] - }, - "Microsoft.IEntityRecognizer": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Components which derive from EntityRecognizer.", - "type": "object", - "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" - } - ] - }, - "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" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Components which derive from TextTemplate class", - "$role": "interface", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - } - ] - }, - "Microsoft.ITrigger": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "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.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.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.", - "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" - ], - "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", - "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.IEntityRecognizer)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.IpEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": { - "type": "array", - "title": "Per-locale policy", - "description": "Language policy per locale.", - "items": { - "type": "string", - "title": "Locale", - "description": "Locale like en-us." - } - }, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.LanguagePolicy" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LogAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Log to console", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "type": "object", - "required": [ - "text", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "text": { - "$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" - ], - "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." - }, - "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": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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.IEntityRecognizer)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MentionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MostSpecificSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "languagePolicy": { - "$kind": "Microsoft.LanguagePolicy", - "type": "object", - "title": "Language policy", - "description": "Defines fall back languages to try per user input language.", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - "recognizers": { - "type": "object", - "title": "Recognizers", - "description": "Map of language -> Recognizer", - "additionalProperties": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MultiLanguageRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "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.IEntityRecognizer)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberRangeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "required": [ - "connectionName", - "$kind" - ], - "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" - ], - "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", - "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", - "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)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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", - "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" - ], - "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", - "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" - ], - "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.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" - ], - "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" - ], - "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.", - "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" - ], - "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", - "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" - ], - "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" - ], - "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.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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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", - "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" - ], - "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 and if none of the 'on intent recognition' triggers match recognized intent.", - "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.OnUnknownIntent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OrdinalEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PercentageEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PhoneNumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$ref": "#/definitions/stringExpression", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$ref": "#/definitions/stringExpression", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "noAnswer": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Fallback answer", - "description": "Default answer to return when none found in KB.", - "default": "Sorry, I did not find an answer.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "threshold": { - "$ref": "#/definitions/numberExpression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "default": 0.3 - }, - "activeLearningCardTitle": { - "$ref": "#/definitions/stringExpression", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$ref": "#/definitions/stringExpression", - "title": "Card no match text", - "description": "Text for no match option.", - "default": "None of the above." - }, - "cardNoMatchResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Card no match response", - "description": "Custom response when no match option was selected.", - "default": "Thanks for the feedback.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "strictFilters": { - "$ref": "#/definitions/arrayExpression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "type": "object", - "title": "Metadata filter", - "description": "Metadata filter.", - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of filter property.", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "description": "Value to filter on.", - "maximum": 100 - } - } - } - }, - "top": { - "$ref": "#/definitions/numberExpression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "default": 3 - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "$ref": "#/definitions/stringExpression", - "title": "Ranker Type", - "description": "Type of Ranker.", - "oneOf": [ - { - "title": "Standard ranker", - "description": "Standard ranker types.", - "enum": [ - "default", - "questionOnly", - "autoSuggestQuestion" - ], - "default": "default" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "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" - ] - }, - "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": "IsTest", - "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" - } - ] - }, - "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": "QnARequestContext", - "description": "Context to use for ranking." - }, - "qnaId": { - "$ref": "#/definitions/integerExpression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "seed": { - "type": "integer", - "title": "Random seed", - "description": "Random seed to start random number generation." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RandomSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "required": [ - "name", - "pattern", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "intents": { - "type": "array", - "title": "RegEx patterns to intents", - "description": "Collection of patterns to match for an intent.", - "items": { - "type": "object", - "title": "Pattern", - "description": "Intent and regex pattern.", - "properties": { - "intent": { - "type": "string", - "title": "Intent", - "description": "The intent name." - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "The regular expression pattern." - } - } - } - }, - "entities": { - "type": "array", - "title": "Entity recognizers", - "description": "Collection of entity recognizers to use.", - "items": { - "$kind": "Microsoft.IEntityRecognizer", - "$ref": "#/definitions/Microsoft.IEntityRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "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.", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "dialog": { - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "pattern": "^(?!(=)).*", - "title": "Dialog", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=settings.dialogId" - ] - } - ], - "title": "Dialog name", - "description": "Name of the dialog to call." - }, - "options": { - "$ref": "#/definitions/objectExpression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "type": "string", - "title": "Options", - "description": "Options for replacing dialog." - } - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "default": true - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ReplaceDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ResourceMultiLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Resource Multi-Language Generator", - "description": "MultiLanguage Generator which is bound to resource by resource Id.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "resourceId": { - "type": "string", - "title": "Resource Id", - "description": "Resource which is the root language generator. Other generaters with the same name and language suffix will be loaded into this generator and used based on the Language Policy.", - "default": "dialog.result" - }, - "languagePolicy": { - "type": "object", - "title": "Language Policy", - "description": "Set alternate language policy for this generator. If not set, the global language policy will be used." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ResourceMultiLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "title": "Assignment", - "description": "Property assignment.", - "properties": { - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "required": [ - "property", - "value", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "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" - ], - "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" - ], - "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.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Temperature Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemperatureEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TemplateEngineLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Template Multi-Language Generator", - "description": "Template Generator which allows only inline evaluation of templates.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemplateEngineLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TextInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "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" - ], - "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.TraceActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send a TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "name": { - "$ref": "#/definitions/stringExpression", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$ref": "#/definitions/stringExpression", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$ref": "#/definitions/stringExpression", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Property that holds the value to send as trace activity." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TraceActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TrueSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "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.IEntityRecognizer)", - "title": "Confirmation Url Recognizer", - "description": "Recognizer which recognizes urls.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.UrlEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "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": { - "type": "string", - "title": "Expression", - "description": "Expression starting with =.", - "pattern": "^=.*\\S.*", - "examples": [ - "=user.name" - ] - }, - "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": [ - "=..." - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/update.sh b/Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/update.sh deleted file mode 100644 index c9f8544cdb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/schemas/update.sh +++ /dev/null @@ -1,2 +0,0 @@ -cd .. -bf dialog:merge *.csproj -o ./schemas/sdk.schema -v diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json deleted file mode 100644 index 86871bc405..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "functionapp", - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "kind": "functionapp", - "httpsOnly": true - }, - "resources": [ - { - "name": "appsettings", - "type": "config", - "apiVersion": "2015-08-01", - "dependsOn": [ - "[concat('Microsoft.Web/Sites/', variables('webAppName'))]" - ], - "properties": { - "FUNCTIONS_EXTENSION_VERSION": "~3", - "FUNCTIONS_WORKER_RUNTIME": "dotnet", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components/', parameters('appInsightsName')), '2015-05-01').InstrumentationKey]", - "MicrosoftAppId": "[parameters('appId')]", - "MicrosoftAppPassword": "[parameters('appSecret')]" - } - } - ] - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index b6ede74dd1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,388 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "apiVersion": "2018-02-01", - "name": "1d41002f-62a1-49f3-bd43-2f3f32a19cbb", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/package.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/package.json deleted file mode 100644 index 256b826ec5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "azure_provision", - "version": "1.0.0", - "description": "provision to azure cloud", - "main": "provisionComposer.js", - "license": "MIT", - "scripts": { - "start": "node provisionComposer.js" - }, - "dependencies": { - "@azure/arm-resources": "^2.1.0", - "@azure/graph": "^5.0.1", - "@azure/ms-rest-nodeauth": "^3.0.3", - "@types/fs-extra": "^8.1.0", - "chalk": "^4.0.0", - "fs-extra": "^8.1.0", - "minimist": "^1.2.5", - "ora": "^4.0.4", - "request-promise": "^4.2.5" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/provisionComposer.js b/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/provisionComposer.js deleted file mode 100644 index 96149ffdfc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/scripts/provisionComposer.js +++ /dev/null @@ -1,599 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const chalk = require('chalk'); -const fs = require('fs-extra'); -const msRestNodeAuth = require('@azure/ms-rest-nodeauth'); -const argv = require('minimist')(process.argv.slice(2)); -const path = require('path'); -const rp = require('request-promise') -const { promisify } = require('util'); -const { GraphRbacManagementClient } = require('@azure/graph'); -const { ResourceManagementClient } = require('@azure/arm-resources'); -const readFile = promisify(fs.readFile); -const ora = require('ora'); - -const logger = msg => { - if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR) { - console.log(chalk.red(msg.message)); - } else if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS) { - console.log(chalk.white(msg.message)); - } else { - console.log(chalk.green(msg.message)); - } -}; - -const usage = () => { - const options = [ - ['subscriptionId', 'Azure Subscription Id'], - ['name', 'Project Name'], - ['appPassword', '16 character password'], - ['environment', 'Environment name (Defaults to dev)'], - ['location', 'Azure Region (Defaults to westus)'], - ['appId', 'Microsoft App ID (Will create if absent)'], - ['tenantId', 'ID of your tenant if required (will choose first in list by default)'], - ['createLuisResource', 'Create a LUIS resource? Default true'], - ['createLuisAuthoringResource', 'Create a LUIS authoring resource? Default true'], - ['createCosmosDb', 'Create a CosmosDB? Default true'], - ['createStorage', 'Create a storage account? Default true'], - ['createAppInsights', 'Create an AppInsights resource? Default true'], - [ - 'customArmTemplate', - 'Path to runtime ARM template. By default it will use an Azure WebApp template. Pass `DeploymentTemplates/function-template-with-preexisting-rg.json` for Azure Functions or your own template for a custom deployment.', - ], - ]; - - const instructions = [ - ``, - chalk.bold('Provision Azure resources for use with Bot Framework Composer bots'), - `* This script will create a new resource group and the necessary Azure resources needed to operate a Bot Framework bot in the cloud.`, - `* Use this to create a publishing profile used in Composer's "Publish" toolbar.`, - ``, - chalk.bold(`Basic Usage:`), - chalk.greenBright(`node provisionComposer --subscriptionId=`) + - chalk.yellow('') + - chalk.greenBright(' --name=') + - chalk.yellow('') + - chalk.greenBright(' --appPassword=') + - chalk.yellow('<16 character password>'), - ``, - chalk.bold(`All options:`), - ...options.map(option => { - return chalk.greenBright('--' + option[0]) + '\t' + chalk.yellow(option[1]); - }), - ]; - - console.log(instructions.join('\n')); -}; - -// check for required parameters -if (Object.keys(argv).length === 0) { - return usage(); -} - -if (!argv.name || !argv.subscriptionId || !argv.appPassword) { - return usage(); -} - -// Get required fields from the arguments -const subId = argv.subscriptionId; -const name = argv.name.toString(); -const appPassword = argv.appPassword; - -// Get optional fields from the arguments -const environment = argv.environment || 'dev'; -const location = argv.location || 'westus'; -const appId = argv.appId; // MicrosoftAppId - generated if left blank - -// Get option flags -const createLuisResource = argv.createLuisResource == 'false' ? false : true; -const createLuisAuthoringResource = argv.createLuisAuthoringResource == 'false' ? false : true; -const createCosmosDb = argv.createCosmosDb == 'false' ? false : true; -const createStorage = argv.createStorage == 'false' ? false : true; -const createAppInsignts = argv.createAppInsignts == 'false' ? false : true; -var tenantId = argv.tenantId ? argv.tenantId : ''; - -const templatePath = - argv.customArmTemplate || path.join(__dirname, 'DeploymentTemplates', 'template-with-preexisting-rg.json'); - -const BotProjectDeployLoggerType = { - // Logger Type for Provision - PROVISION_INFO: 'PROVISION_INFO', - PROVISION_ERROR: 'PROVISION_ERROR', - PROVISION_WARNING: 'PROVISION_WARNING', - PROVISION_SUCCESS: 'PROVISION_SUCCESS', - PROVISION_ERROR_DETAILS: 'PROVISION_ERROR_DETAILS', -}; - -/** - * Create a Bot Framework registration - * @param {} graphClient - * @param {*} displayName - * @param {*} appPassword - */ -const createApp = async (graphClient, displayName, appPassword) => { - try { - const createRes = await graphClient.applications.create({ - displayName: displayName, - passwordCredentials: [ - { - value: appPassword, - startDate: new Date(), - endDate: new Date(new Date().setFullYear(new Date().getFullYear() + 2)), - }, - ], - availableToOtherTenants: true, - replyUrls: ['https://token.botframework.com/.auth/web/redirect'], - }); - return createRes; - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: err.body.message, - }); - return false; - } -}; - -/** - * Create an Azure resources group - * @param {} client - * @param {*} location - * @param {*} resourceGroupName - */ -const createResourceGroup = async (client, location, resourceGroupName) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Creating resource group ...`, - }); - const param = { - location: location, - }; - - return await client.resourceGroups.createOrUpdate(resourceGroupName, param); -}; - -/** - * Format parameters - * @param {} scope - */ -const pack = scope => { - return { - value: scope, - }; -}; - -const unpackObject = output => { - const unpacked = {}; - for (const key in output) { - const objValue = output[key]; - if (objValue.value) { - unpacked[key] = objValue.value; - } - } - return unpacked; -}; - -/** - * For more information about this api, please refer to this doc: https://docs.microsoft.com/en-us/rest/api/resources/Tenants/List - * @param {*} accessToken - */ -const getTenantId = async (accessToken) => { - if (!accessToken) { - throw new Error('Error: Missing access token. Please provide a non-expired Azure access token. Tokens can be obtained by running az account get-access-token'); - } - try { - const tenantUrl = `https://management.azure.com/tenants?api-version=2020-01-01`; - const options = { - headers: { Authorization: `Bearer ${accessToken}` }, - }; - const response = await rp.get(tenantUrl, options); - const jsonRes = JSON.parse(response); - if (jsonRes.value === undefined || (jsonRes.value && jsonRes.value.length === 0) || (jsonRes.value && jsonRes.value.length > 0 && jsonRes.value[0].tenantId === undefined)) { - throw new Error(`No tenants found in the account.`); - } - const selectedTenant = jsonRes.value.shift(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Using Tenant ${selectedTenant.displayName} - ID: ${selectedTenant.tenantId}`, - }); - // if alternatives exist, list htem - if (jsonRes.value.length > 0) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: chalk.yellow(` Note: You have access to multiple tenants. To specify an alternative, specify --tenantId=`), - }); - // list all available tenants - jsonRes.value.forEach((tenant) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: chalk.yellow(` * ${tenant.displayName} - ID: ${tenant.tenantId}`), - }); - }); - } - - return selectedTenant.tenantId; - } catch (err) { - throw new Error(`Get Tenant Id Failed, details: ${getErrorMesssage(err)}`); - } -} - -const getDeploymentTemplateParam = ( - appId, - appPwd, - location, - name, - shouldCreateAuthoringResource, - shouldCreateLuisResource, - useAppInsights, - useCosmosDb, - useStorage -) => { - return { - appId: pack(appId), - appSecret: pack(appPwd), - appServicePlanLocation: pack(location), - botId: pack(name), - shouldCreateAuthoringResource: pack(shouldCreateAuthoringResource), - shouldCreateLuisResource: pack(shouldCreateLuisResource), - useAppInsights: pack(useAppInsights), - useCosmosDb: pack(useCosmosDb), - useStorage: pack(useStorage), - }; -}; - -/** - * Validate the deployment using the Azure API - */ -const validateDeployment = async (client, resourceGroupName, deployName, templateParam) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Validating Azure deployment ...', - }); - - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - return await client.deployments.validate(resourceGroupName, deployName, deployParam); -}; - -/** - * Using an ARM template, provision a bunch of resources - */ -const createDeployment = async (client, resourceGroupName, deployName, templateParam) => { - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - - return await client.deployments.createOrUpdate(resourceGroupName, deployName, deployParam); -}; - -/** - * Format the results into the expected shape - */ -const updateDeploymentJsonFile = async (client, resourceGroupName, deployName, appId, appPwd) => { - const outputs = await client.deployments.get(resourceGroupName, deployName); - if (outputs && outputs.properties && outputs.properties.outputs) { - const outputResult = outputs.properties.outputs; - const applicationResult = { - MicrosoftAppId: appId, - MicrosoftAppPassword: appPwd, - }; - const outputObj = unpackObject(outputResult); - - if (!createAppInsignts) { - delete outputObj.applicationInsights; - } - if (!createCosmosDb) { - delete outputObj.cosmosDb; - } - if (!createLuisAuthoringResource && !createLuisResource) { - delete outputObj.luis; - } - if (!createStorage) { - delete outputObj.blobStorage; - } - const result = {}; - Object.assign(result, outputObj, applicationResult); - return result; - } else { - return null; - } -}; - -const provisionFailed = msg => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: chalk.bold('** Provision failed **'), - }); -}; - -const getErrorMesssage = (err) => { - if (err.body) { - if (err.body.error) { - if (err.body.error.details) { - const details = err.body.error.details; - let errMsg = ''; - for (let detail of details) { - errMsg += detail.message; - } - return errMsg; - } - else { - return err.body.error.message; - } - } - else { - return JSON.stringify(err.body, null, 2); - } - } - else { - return JSON.stringify(err, null, 2); - } -} - -/** - * Provision a set of Azure resources for use with a bot - */ -const create = async ( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource = true, - createLuisAuthoringResource = true, - createCosmosDb = true, - createStorage = true, - createAppInsignts = true -) => { - // If tenantId is empty string, get tenanId from API - if (!tenantId) { - const token = await creds.getToken(); - const accessToken = token.accessToken; - // the returned access token will almost surely have a tenantId. - // use this as the default if one isn't specified. - // otherwise, fetch a list and use the first, but print available options. - if (token.tenantId) { - tenantId = token.tenantId; - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Using Tenant ID: ${tenantId}`, - }); - } else { - tenantId = await getTenantId(accessToken); - } - } - - const graphCreds = new msRestNodeAuth.DeviceTokenCredentials( - creds.clientId, - tenantId, - creds.username, - 'graph', - creds.environment, - creds.tokenCache - ); - const graphClient = new GraphRbacManagementClient(graphCreds, tenantId, { - baseUri: 'https://graph.windows.net', - }); - - // If the appId is not specified, create one - if (!appId) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Creating App Registration ...', - }); - - // create the app registration - const appCreated = await createApp(graphClient, name, appPassword); - if (appCreated === false) { - return provisionFailed(); - } - - // use the newly created app - appId = appCreated.appId; - } - - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Create App Id Success! ID: ${appId}`, - }); - - const resourceGroupName = `${name}-${environment}`; - - // timestamp will be used as deployment name - const timeStamp = new Date().getTime().toString(); - const client = new ResourceManagementClient(creds, subId); - - // Create a resource group to contain the new resources - try { - const rpres = await createResourceGroup(client, location, resourceGroupName); - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err) - }); - return provisionFailed(); - } - - // Caste the parameters into the right format - const deploymentTemplateParam = getDeploymentTemplateParam( - appId, - appPassword, - location, - name, - createLuisAuthoringResource, - createLuisResource, - createAppInsignts, - createCosmosDb, - createStorage - ); - - // Validate the deployment using the Azure API - const validation = await validateDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - - // Handle validation errors - if (validation.error) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error.message}`, - }); - if (validation.error.details) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS, - message: JSON.stringify(validation.error.details, null, 2), - }); - } - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - - // Create the entire stack of resources inside the new resource group - // this is controlled by an ARM template identified in templatePath - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Deploying Azure services (this could take a while)...`, - }); - const spinner = ora().start(); - try { - const deployment = await createDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - // Handle errors - if (deployment._response.status != 200) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Template is not valid with provided parameters. Review the log for more information.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error}`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - } catch (err) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err) - }); - return provisionFailed(); - } - - spinner.succeed('Success!'); - - // Validate that everything was successfully created. - // Then, update the settings file with information about the new resources - const updateResult = await updateDeploymentJsonFile(client, resourceGroupName, timeStamp, appId, appPassword); - - // Handle errors - if (!updateResult) { - const operations = await client.deploymentOperations.list(resourceGroupName, timeStamp); - if (operations) { - const failedOperations = operations.filter( - value => value && value.properties && value.properties.statusMessage.error !== null - ); - if (failedOperations) { - failedOperations.forEach(operation => { - switch ( - operation && - operation.properties && - operation.properties.statusMessage.error.code && - operation.properties.targetResource - ) { - case 'MissingRegistrationForLocation': - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}. This resource is not avaliable in the location provided.`, - }); - break; - default: - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Code: ${operation.properties.statusMessage.error.code}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Message: ${operation.properties.statusMessage.error.message}.`, - }); - break; - } - }); - } - } else { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed. Please refer to the log file for more information.`, - }); - } - } - return updateResult; -}; - -console.log(chalk.bold('Login to Azure:')); -msRestNodeAuth - .interactiveLogin({ domain: tenantId }) - .then(async creds => { - const createResult = await create( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource, - createLuisAuthoringResource, - createCosmosDb, - createStorage, - createAppInsignts - ); - - if (createResult) { - console.log(''); - console.log( - chalk.bold( - `Your Azure hosting environment has been created! Copy paste the following configuration into a new profile in Composer's Publishing tab.` - ) - ); - console.log(''); - - const token = await creds.getToken(); - const profile = { - accessToken: token.accessToken, - name: name, - environment: environment, - hostname: `${name}-${environment}`, - luisResource: `${name}-${environment}-luis`, - settings: createResult, - }; - - console.log(chalk.white(JSON.stringify(profile, null, 2))); - - console.log(''); - } - }) - .catch(err => { - console.error(err); - }); diff --git a/Composer/plugins/localPublish/hostedBots/80560.06813833171/settings/appsettings.json b/Composer/plugins/localPublish/hostedBots/80560.06813833171/settings/appsettings.json deleted file mode 100644 index 7562e90d7c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/80560.06813833171/settings/appsettings.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false, - "RemoveRecipientMention": false - }, - "MicrosoftAppPassword": "", - "MicrosoftAppId": "", - "luis": { - "name": "", - "authoringKey": "", - "endpointKey": "", - "authoringRegion": "westus", - "defaultLanguage": "en-us", - "environment": "composer" - }, - "publishTargets": [], - "qna": { - "knowledgebaseid": "", - "endpointkey": "", - "hostname": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "runtime": { - "customRuntime": false, - "path": "C:\\Users\\hond\\EmptyBot-1\\runtime", - "command": "dotnet run --project azurewebapp" - }, - "downsampling": { - "maxImbalanceRatio": 10, - "maxUtteranceAllowed": 15000 - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/README.md b/Composer/plugins/localPublish/hostedBots/81179.68797966064/README.md deleted file mode 100644 index ba48ee2802..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/README.md +++ /dev/null @@ -1,73 +0,0 @@ -This folder contains a Bot Project created with Bot Framework Composer. - -The full documentation for Composer lives here: -https://github.com/microsoft/botframework-composer - -To test this bot locally, open this folder in Composer, then click "Start Bot" - -## Provision Azure Resources to Host Bot - -This project includes a script that can be used to provision the resources necessary to run your bot in the Azure cloud. Running this script will create all of the necessary resources and return a publishing profile in the form of a JSON object. This JSON object can be imported into Composer's "Publish" tab and used to deploy the bot. - -* From this project folder, navigate to the scripts/ folder -* Run `npm install` -* Run `node provisionComposer.js --subscriptionId= --name= --appPassword= --environment=` -* You will be asked to login to the Azure portal in your browser. -* You will see progress indicators as the provision process runs. Note that it will take roughly 10 minutes to fully provision the resources. - -It will look like this: -``` -{ - "accessToken": "", - "name": "", - "environment": "", - "settings": { - "applicationInsights": { - "InstrumentationKey": "" - }, - "cosmosDb": { - "cosmosDBEndpoint": "", - "authKey": "", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - }, - "luis": { - "endpointKey": "", - "authoringKey": "", - "region": "westus" - }, - "MicrosoftAppId": "", - "MicrosoftAppPassword": "" - } -}``` - -When completed, you will see a message with a JSON "publishing profile" and instructions for using it in Composer. - - -## Publish bot to Azure - -To publish your bot to a Azure resources provisioned using the process above: - -* Open your bot in Composer -* Navigate to the "Publish" tab -* Select "Add new profile" from the toolbar -* In the resulting dialog box, choose "azurePublish" from the "Publish Destination Type" dropdown -* Paste in the profile you received from the provisioning script - -When you are ready to publish your bot to Azure, select the newly created profile from the sidebar and click "Publish to selected profile" in the toolbar. - -## Refresh your Azure Token - -When publishing, you may encounter an error about your access token being expired. This happens when the access token used to provision your bot expires. - -To get a new token: - -* Open a terminal window -* Run `az account get-access-token` -* This will result in a JSON object printed to the console, containing a new `accessToken` field. -* Copy the value of the accessToken from the terminal and into the publish `accessToken` field in the profile in Composer. diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/81179.68797966064/common.en-us.lg deleted file mode 100644 index f2a885213f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/common.en-us.lg +++ /dev/null @@ -1,2 +0,0 @@ -# WelcomeUser -- Welcome to the EchoBot sample. \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/echobot-1.dialog b/Composer/plugins/localPublish/hostedBots/81179.68797966064/echobot-1.dialog deleted file mode 100644 index e0db9e9d81..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/echobot-1.dialog +++ /dev/null @@ -1,87 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "id": "433224", - "name": "EchoBot-1" - }, - "autoEndDialog": true, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnUnknownIntent", - "$designer": { - "id": "821845" - }, - "actions": [ - { - "$kind": "Microsoft.SetProperty", - "$designer": { - "id": "rpAK2M" - }, - "property": "dialog.response.content", - "value": { - "attachment": { - "type": "template", - "payload": { - "template_type": "button", - "text": "What do you want to do next?", - "buttons": [ - { - "type": "web_url", - "url": "https://www.messenger.com", - "title": "Visit Messenger" - } - ] - } - } - } - }, - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "BAC9R3" - }, - "activity": "${SendActivity_BAC9R3()}" - } - ] - }, - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.Foreach", - "$designer": { - "id": "518944", - "name": "Loop: for each item" - }, - "itemsProperty": "turn.Activity.membersAdded", - "actions": [ - { - "$kind": "Microsoft.IfCondition", - "$designer": { - "id": "641773", - "name": "Branch: if/else" - }, - "condition": "string(dialog.foreach.value.id) != string(turn.Activity.Recipient.id)", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "859266", - "name": "Send a response" - }, - "activity": "${SendActivity_Welcome()}" - } - ] - } - ] - } - ] - } - ], - "generator": "echobot-1.lg", - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema" -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/echobot-1.en-us.lg b/Composer/plugins/localPublish/hostedBots/81179.68797966064/echobot-1.en-us.lg deleted file mode 100644 index d623349091..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/echobot-1.en-us.lg +++ /dev/null @@ -1,10 +0,0 @@ -[import](common.lg) - -# SendActivity_Welcome -- ${WelcomeUser()} - - - - -# SendActivity_BAC9R3() -- ${dialog.response.content} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/81179.68797966064/language-generation/en-us/common.en-us.lg deleted file mode 100644 index f2a885213f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,2 +0,0 @@ -# WelcomeUser -- Welcome to the EchoBot sample. \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/language-generation/en-us/echobot-1.en-us.lg b/Composer/plugins/localPublish/hostedBots/81179.68797966064/language-generation/en-us/echobot-1.en-us.lg deleted file mode 100644 index 78c1886bc1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/language-generation/en-us/echobot-1.en-us.lg +++ /dev/null @@ -1,11 +0,0 @@ -[import](common.lg) - -# SendActivity_Welcome -- ${WelcomeUser()} - - - -# SendActivity_BAC9R3() -[Activity -ChannelData=${dialog.response.content} -] \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/language-understanding/en-us/echobot-1.en-us.lu b/Composer/plugins/localPublish/hostedBots/81179.68797966064/language-understanding/en-us/echobot-1.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/.gitignore b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/.gitignore deleted file mode 100644 index 2ad42ca00c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/.gitignore +++ /dev/null @@ -1,360 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*[.json, .xml, .info] - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/ComposerRuntime.sln b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/ComposerRuntime.sln deleted file mode 100644 index f39a16131b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/ComposerRuntime.sln +++ /dev/null @@ -1,43 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29920.165 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.WebApp", "azurewebapp\Microsoft.BotFramework.Composer.WebApp.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Tests", "tests\Microsoft.BotFramework.Composer.Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Core", "core\Microsoft.BotFramework.Composer.Core.csproj", "{35E20444-438D-4241-833C-804A24E9CB4F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Functions", "azurefunctions\Microsoft.BotFramework.Composer.Functions.csproj", "{9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.Build.0 = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/NuGet.Config b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/README.md b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/README.md deleted file mode 100644 index f41b1a16da..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# DotNet bot runtime - -# Folder structure - -- **core**: Includes all core JavaScript runtime logic, independent of hosting technology. -- **technology specific folders**: Each hosting technology has one folder in this directory. For example, for Azure Functions, there is an `azurefunction` folder - - **tests**: Javascript runtime tests diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/.gitignore b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/.gitignore deleted file mode 100644 index ff5b00c506..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/.gitignore +++ /dev/null @@ -1,264 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# Azure Functions localsettings file -local.settings.json - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -project.fragment.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -#*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/MessagesTrigger.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/MessagesTrigger.cs deleted file mode 100644 index abb88495f5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/MessagesTrigger.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Extensions.Logging; -using System; -using System.Net; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class MessagesTrigger - { - private readonly IBotFrameworkHttpAdapter _adapter; - private readonly IBot _bot; - - public MessagesTrigger(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter ?? throw new ArgumentNullException(nameof(adapter)); - this._bot = bot ?? throw new ArgumentNullException(nameof(bot)); - } - - [FunctionName("messages")] - public async Task Run( - [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, - ILogger log) - { - log.LogInformation($"Messages endpoint triggered."); - - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await _adapter.ProcessAsync(req, req.HttpContext.Response, _bot); - - if (req.HttpContext.Response.StatusCode == (int) HttpStatusCode.OK || req.HttpContext.Response.StatusCode == (int)HttpStatusCode.Accepted) - { - return new OkResult(); - } - else - { - return new ContentResult() - { - StatusCode = req.HttpContext.Response.StatusCode, - Content = $"Bot execution failed with status code: {req.HttpContext.Response.StatusCode}" - }; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj deleted file mode 100644 index 88a550947e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj deleted file mode 100644 index b678ef1042..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj +++ /dev/null @@ -1,61 +0,0 @@ - - - - netcoreapp3.0 - v3 - 2eb1c70c-5cd2-4c08-8aab-df989c347067 - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs deleted file mode 100644 index 645665ecaa..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Rest.Serialization; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace Microsoft.BotFramework.Composer.Functions.Settings -{ - internal class ActivitySerializationSettings - { - internal static readonly JsonSerializerSettings Default = new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Ignore, - Formatting = Formatting.Indented, - DateFormatHandling = DateFormatHandling.IsoDateFormat, - DateTimeZoneHandling = DateTimeZoneHandling.Utc, - ReferenceLoopHandling = ReferenceLoopHandling.Serialize, - ContractResolver = new ReadOnlyJsonContractResolver(), - Converters = new List { new Iso8601TimeSpanConverter() } - }; - - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/SkillsTrigger.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/SkillsTrigger.cs deleted file mode 100644 index 30528b4cf3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/SkillsTrigger.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder; -using System.Web.Http; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Microsoft.BotFramework.Composer.Functions.Settings; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class SkillsTrigger - { - private readonly SkillHandler _skillHandler; - - public SkillsTrigger(SkillHandler skillHandler) - { - this._skillHandler = skillHandler ?? throw new ArgumentNullException(nameof(skillHandler)); - } - - [FunctionName("skills")] - public async Task ReplyToActivityAsync( - [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities/{activityId}")] HttpRequest req, - string conversationId, string activityId, ILogger log) - { - log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - var body = await req.ReadAsStringAsync(); - var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - var result = await _skillHandler.HandleReplyToActivityAsync(req.Headers["Authorization"], conversationId, activityId, activity); - - return new JsonResult(result, ActivitySerializationSettings.Default); - } - - - //[FunctionName("skills")] - //public async Task SendToConversationAsync( - // [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities")] HttpRequest req, - // string conversationId, string activityId, ILogger log) - //{ - // log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - // var body = await req.ReadAsStringAsync(); - // var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - // var result = await _skillHandler.HandleSendToConversationAsync(req.Headers["Authorization"], conversationId, activity); - - // return new JsonResult(result, ActivitySerializationSettings.Default); - //} - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Startup.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Startup.cs deleted file mode 100644 index 0641c70d30..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/Startup.cs +++ /dev/null @@ -1,236 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Http; -using Microsoft.Azure.Functions.Extensions.DependencyInjection; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Reflection; -using System.Text; - -[assembly: FunctionsStartup(typeof(Microsoft.BotFramework.Composer.Functions.Startup))] - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class Startup : FunctionsStartup - { - private IConfigurationRoot BuildConfiguration(string rootDirectory) - { - var config = new ConfigurationBuilder(); - - // Config precedence 1: root app.settings - config - .SetBasePath(rootDirectory) - .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) - .UseLuisConfigAdapter() - .UseLuisSettings(); - - // Config precedence 2: ComposerDialogs/settings settings which are injected by the composer publish - // Hard code the settings path to 'ComposerDialogs' for deployment - var configFile = Path.GetFullPath(Path.Combine(rootDirectory, @"ComposerDialogs/settings/appsettings.json")); - config.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - // Config Precedence 3: Deployment specific config - config.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - - if (!Debugger.IsAttached) - { - config.AddUserSecrets(); - } - - config.AddEnvironmentVariables(); - - return config.Build(); - } - - public override void Configure(IFunctionsHostBuilder builder) - { - var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - var rootDirectory = Directory.GetParent(binDirectory).FullName; - - var rootConfiguration = BuildConfiguration(rootDirectory); - - var settings = new BotSettings(); - rootConfiguration.Bind(settings); - - var services = builder.Services; - - services.AddSingleton(rootConfiguration); - - services.AddLogging(); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Adaptive component registration - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings.ApplicationInsights.InstrumentationKey); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings.Telemetry.LogPersonalInformation); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings.Telemetry.LogActivities); - }); - - // Storage - IStorage storage; - if (ConfigSectionValid(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Resource explorer to track declarative assets - var resourceExplorer = new ResourceExplorer().AddFolder(Path.Combine(rootDirectory, settings.Bot ?? ".")); - services.AddSingleton(resourceExplorer); - - // Adapter - services.AddSingleton(s => - { - // Retrieve required dependencies - //IConfiguration configuration = s.GetService(); - IStorage storage = s.GetService(); - UserState userState = s.GetService(); - ConversationState conversationState = s.GetService(); - TelemetryInitializerMiddleware telemetryInitializerMiddleware = s.GetService(); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(rootConfiguration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(rootConfiguration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, s); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - - return adapter; - }); - - var defaultLocale = rootConfiguration.GetValue("defaultLocale") ?? "en-us"; - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - // Bot - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - GetRootDialog(Path.Combine(rootDirectory, settings.Bot)), - defaultLocale, - removeRecipientMention)); - } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings.BlobStorage.ConnectionString) && ConfigSectionValid(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings.Feature.UseShowTypingMiddleware) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IServiceProvider s) - { - if (settings.Feature.UseInspectionMiddleware) - { - adapter.Use(s.GetService()); - } - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - - private bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.Deployment.json deleted file mode 100644 index 5b9a266f9e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "ComposerDialogs", - "root": "ComposerDialogs" -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.Development.json deleted file mode 100644 index 32b3ba9cf9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.Development.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "../", - "root": "../" -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.json deleted file mode 100644 index eea4c3777e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/appsettings.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false - }, - "microsoftAppId": "", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/host.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/host.json deleted file mode 100644 index 903482d949..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurefunctions/host.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "2.0" -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/.gitignore b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Controllers/BotController.cs deleted file mode 100644 index daaba0d810..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Controllers/SkillController.cs deleted file mode 100644 index a8853db745..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Controllers/SkillController.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj deleted file mode 100644 index 28cb200554..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj +++ /dev/null @@ -1,41 +0,0 @@ - - - - netcoreapp3.1 - fd5e29ef-d316-445d-831b-4c207c2e901a - - - - Always - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Program.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Program.cs deleted file mode 100644 index e080ee0004..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Program.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - builder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); - - if (env.IsDevelopment()) - { - // Local Debug - builder.AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true); - } - - var configuration = builder.Build(); - - // Hard code the settings path to 'ComposerDialogs' while deployment - var botRoot = configuration.GetValue("bot") ?? "ComposerDialogs"; - var configFile = Path.GetFullPath(Path.Combine(botRoot, @"settings/appsettings.json")); - - builder.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - // Need to put this part here to override the any customized settings - if (!env.IsDevelopment()) - { - //Azure Deploy - builder.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - } - - builder.UseLuisConfigAdapter() - .UseLuisSettings(); - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/README.md b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/README.md deleted file mode 100644 index 356528b3d7..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/README.md +++ /dev/null @@ -1,21 +0,0 @@ -## Bot Project -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -## Instructions for setting up the Bot Project runtime -The Bot Project is a regular Bot Framework SDK V4 project. Before you can launch it from the emulator, you need to make sure you can run the bot. - -### Prerequisite: -* Install .Netcore 3.1 - -### Commands: - -* from root folder -* cd templates/dotnet/Microsoft.BotFramework.Composer.WebAppTemplate -* dotnet user-secrets init // init the user secret id -* dotnet build // build -* dotnet run // start the bot -* It will start a web server and listening at http://localhost:3979. - -### Test bot -* You can set you emulator to connect to http://localhost:3979/api/messages. - diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/readme.md b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/readme.md deleted file mode 100644 index bbbe520a40..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/readme.md +++ /dev/null @@ -1,58 +0,0 @@ - -# How to update the schema file -Once the bot has been setup with Composer and we wish to make changes to the schema, the first step in this process is to eject the runtime through the `Runtime Config` in Composer. The ejected runtime folder will broadly have the following structure - -``` -bot - /bot.dialog - /language-generation - /language-understanding - /dialogs - /customized-dialogs - /runtime - /azurewebapp - /azurefunctions - /schemas - sdk.schema -``` - -### Setup bfdialog tool (Prerequisite) -The bfdialog is part of our suite of botframework tools and helps merge partial schemas into a single consolidated schema - -##### To point npm to nightly builds -``` -npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/ -``` -##### To install BF tool: -``` -npm i -g @microsoft/botframework-cli -``` - -##### To install bf dialog plugin -``` -bf plugins:install @microsoft/bf-dialog -``` - -## Adding Custom Actions to your Composer bot -**NOTE: These steps assume you are using azurewebapp as your deployment solution. Replicating it on azurefunctions would be similar -** -- In this tutorial, we will be going over the steps to include a custom action `MultiplyDialog` that multiplies two numbers passed as inputs. Note that the ejected runtime should contain a `customaction` folder that has this sample. - -- Navigate to the csproj file inside the `runtime` folder (bot/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj) and include a project reference to the customaction project like ``. - -- Then Uncomment line 28 and 139 in azurewebapp/Startup.cs file so as to register this action. -``` -using Microsoft.BotFramework.Composer.CustomAction; -// This is for custom action component registration. -ComponentRegistration.Add(new CustomActionComponentRegistration()); -``` - -- Run the command `dotnet build` on the azurewebapp project to verify if it passes build after adding custom actions to it. - -- Navigate to to the `Schemas (bot/runtime/azurewebapp/Schemas)` folder and then run the command `sh update.sh`. - -- Validate that the partial schema (MultiplyDialog.schema inside customaction/Schema) has been appended to the default sdk.schema file to generate one single consolidated sdk.schema file. - -- Copy the newly generated sdk.schema into the `schemas (bot/schemas)` folder at the root of the ejected runtime. - -The above steps should have generated a new sdk.schema file inside `schemas` folder for Composer to use. Reload the bot and you should be able to include your new custom action! diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/sdk.schema deleted file mode 100644 index 1a7b2fd24b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/sdk.schema +++ /dev/null @@ -1,8850 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/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.ChoiceInput" - }, - { - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$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.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.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.TemperatureEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" - }, - { - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "$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 ActivityTemplate", - "type": "object", - "required": [ - "template", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to use to create the activity", - "type": "string" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ActivityTemplate" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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.IEntityRecognizer)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AgeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Ask": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.SendActivity)" - ], - "title": "Send Activity to Ask a question", - "description": "This is an action which sends an activity to the user when a response is expected", - "type": "object", - "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.", - "type": "array", - "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" - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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.", - "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" - }, - { - "$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" - }, - { - "$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", - "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", - "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" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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" - ], - "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", - "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", - "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.ChoiceInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "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" - ], - "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", - "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.IEntityRecognizer)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ConfirmationEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ContinueLoop" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CrossTrainedRecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CurrencyEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DateTimeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "defaultLocale": { - "$ref": "#/definitions/stringExpression", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "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/stringExpression", - "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", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DebugBreak" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "required": [ - "activityId", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "required": [ - "property", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DimensionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "required": [ - "changeType", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "oneOf": [ - { - "type": "string", - "title": "Standard change", - "description": "Standard change types.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EditActions" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "required": [ - "itemsProperty", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to the array in memory.", - "oneOf": [ - { - "type": "string", - "title": "Enum", - "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.IEntityRecognizer)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EmailEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "required": [ - "eventName", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "eventName": { - "$role": "expression", - "title": "Event name", - "description": "Name of the event to emit.", - "oneOf": [ - { - "type": "string", - "title": "Built-in event", - "description": "Standard event type.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - { - "type": "string", - "title": "Custom event", - "description": "Custom event type", - "pattern": "^(?!(beginDialog$|resumeDialog$|repromptDialog$|cancelDialog$|endDialog$|activityReceived$|recognizedIntent$|unknownIntent$|actionsStarted$|actionsSaved$|actionsEnded$|actionsResumed))(\\S){1}.*" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "eventValue": { - "$ref": "#/definitions/valueExpression", - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$ref": "#/definitions/booleanExpression", - "title": "Bubble event", - "description": "If true this event is passed on to 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", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndTurn" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.FirstSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "required": [ - "itemsProperty", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "itemsProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to execute for each page. Use '$foreach.page' to access each page.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "pageIndex": { - "$ref": "#/definitions/stringExpression", - "title": "Index property", - "description": "Property that holds the index of the page.", - "default": "dialog.foreach.pageindex" - }, - "page": { - "$ref": "#/definitions/stringExpression", - "title": "Page property", - "description": "Property that holds the value of the page.", - "default": "dialog.foreach.page" - }, - "pageSize": { - "$ref": "#/definitions/integerExpression", - "title": "Page size", - "description": "Number of items in each page.", - "default": 10 - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ForeachPage" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "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 Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GetConversationMembers" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "required": [ - "actionId", - "$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" - ] - }, - "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.IEntityRecognizer)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GuidEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.HashtagEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "required": [ - "url", - "method", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$ref": "#/definitions/stringExpression", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$ref": "#/definitions/valueExpression", - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Result property", - "description": "A property to store the result of this action. The result can include any of the 4 properties from the HTTP response: statusCode, reasonPhrase, content, and headers. If the content is JSON it will be a deserialized object. The values can be accessed via .content for example.", - "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" - ], - "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" - } - ] - }, - "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.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" - }, - { - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginSkill" - }, - { - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "$ref": "#/definitions/Microsoft.CancelDialog" - }, - { - "$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.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - } - ] - }, - "Microsoft.IEntityRecognizer": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Components which derive from EntityRecognizer.", - "type": "object", - "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" - } - ] - }, - "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" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Components which derive from TextTemplate class", - "$role": "interface", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - } - ] - }, - "Microsoft.ITrigger": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "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.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.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.", - "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" - ], - "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", - "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.IEntityRecognizer)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.IpEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": { - "type": "array", - "title": "Per-locale policy", - "description": "Language policy per locale.", - "items": { - "type": "string", - "title": "Locale", - "description": "Locale like en-us." - } - }, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.LanguagePolicy" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LogAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Log to console", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "type": "object", - "required": [ - "text", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "text": { - "$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" - ], - "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." - }, - "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": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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.IEntityRecognizer)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MentionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MostSpecificSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "languagePolicy": { - "$kind": "Microsoft.LanguagePolicy", - "type": "object", - "title": "Language policy", - "description": "Defines fall back languages to try per user input language.", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - "recognizers": { - "type": "object", - "title": "Recognizers", - "description": "Map of language -> Recognizer", - "additionalProperties": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MultiLanguageRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "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.IEntityRecognizer)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberRangeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "required": [ - "connectionName", - "$kind" - ], - "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" - ], - "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", - "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", - "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)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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", - "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" - ], - "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", - "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" - ], - "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.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" - ], - "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" - ], - "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.", - "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" - ], - "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", - "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" - ], - "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" - ], - "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.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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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", - "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" - ], - "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 and if none of the 'on intent recognition' triggers match recognized intent.", - "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.OnUnknownIntent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OrdinalEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PercentageEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PhoneNumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$ref": "#/definitions/stringExpression", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$ref": "#/definitions/stringExpression", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "noAnswer": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Fallback answer", - "description": "Default answer to return when none found in KB.", - "default": "Sorry, I did not find an answer.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "threshold": { - "$ref": "#/definitions/numberExpression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "default": 0.3 - }, - "activeLearningCardTitle": { - "$ref": "#/definitions/stringExpression", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$ref": "#/definitions/stringExpression", - "title": "Card no match text", - "description": "Text for no match option.", - "default": "None of the above." - }, - "cardNoMatchResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Card no match response", - "description": "Custom response when no match option was selected.", - "default": "Thanks for the feedback.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "strictFilters": { - "$ref": "#/definitions/arrayExpression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "type": "object", - "title": "Metadata filter", - "description": "Metadata filter.", - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of filter property.", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "description": "Value to filter on.", - "maximum": 100 - } - } - } - }, - "top": { - "$ref": "#/definitions/numberExpression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "default": 3 - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "$ref": "#/definitions/stringExpression", - "title": "Ranker Type", - "description": "Type of Ranker.", - "oneOf": [ - { - "title": "Standard ranker", - "description": "Standard ranker types.", - "enum": [ - "default", - "questionOnly", - "autoSuggestQuestion" - ], - "default": "default" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "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" - ] - }, - "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": "IsTest", - "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" - } - ] - }, - "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": "QnARequestContext", - "description": "Context to use for ranking." - }, - "qnaId": { - "$ref": "#/definitions/integerExpression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "seed": { - "type": "integer", - "title": "Random seed", - "description": "Random seed to start random number generation." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RandomSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "required": [ - "name", - "pattern", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "intents": { - "type": "array", - "title": "RegEx patterns to intents", - "description": "Collection of patterns to match for an intent.", - "items": { - "type": "object", - "title": "Pattern", - "description": "Intent and regex pattern.", - "properties": { - "intent": { - "type": "string", - "title": "Intent", - "description": "The intent name." - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "The regular expression pattern." - } - } - } - }, - "entities": { - "type": "array", - "title": "Entity recognizers", - "description": "Collection of entity recognizers to use.", - "items": { - "$kind": "Microsoft.IEntityRecognizer", - "$ref": "#/definitions/Microsoft.IEntityRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "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.", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "dialog": { - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "pattern": "^(?!(=)).*", - "title": "Dialog", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=settings.dialogId" - ] - } - ], - "title": "Dialog name", - "description": "Name of the dialog to call." - }, - "options": { - "$ref": "#/definitions/objectExpression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "type": "string", - "title": "Options", - "description": "Options for replacing dialog." - } - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "default": true - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ReplaceDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ResourceMultiLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Resource Multi-Language Generator", - "description": "MultiLanguage Generator which is bound to resource by resource Id.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "resourceId": { - "type": "string", - "title": "Resource Id", - "description": "Resource which is the root language generator. Other generaters with the same name and language suffix will be loaded into this generator and used based on the Language Policy.", - "default": "dialog.result" - }, - "languagePolicy": { - "type": "object", - "title": "Language Policy", - "description": "Set alternate language policy for this generator. If not set, the global language policy will be used." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ResourceMultiLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "title": "Assignment", - "description": "Property assignment.", - "properties": { - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "required": [ - "property", - "value", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "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" - ], - "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" - ], - "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.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Temperature Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemperatureEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TemplateEngineLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Template Multi-Language Generator", - "description": "Template Generator which allows only inline evaluation of templates.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemplateEngineLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TextInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "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" - ], - "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.TraceActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send a TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "name": { - "$ref": "#/definitions/stringExpression", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$ref": "#/definitions/stringExpression", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$ref": "#/definitions/stringExpression", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Property that holds the value to send as trace activity." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TraceActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TrueSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "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.IEntityRecognizer)", - "title": "Confirmation Url Recognizer", - "description": "Recognizer which recognizes urls.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.UrlEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "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": { - "type": "string", - "title": "Expression", - "description": "Expression starting with =.", - "pattern": "^=.*\\S.*", - "examples": [ - "=user.name" - ] - }, - "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": [ - "=..." - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/update.sh b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/update.sh deleted file mode 100644 index c9f8544cdb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Schemas/update.sh +++ /dev/null @@ -1,2 +0,0 @@ -cd .. -bf dialog:merge *.csproj -o ./schemas/sdk.schema -v diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/build_runtime.ps1 b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/build_runtime.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -if ((dotnet --version) -lt '3.1.0') { - throw "! dotnet core 3.1 is required, please refer following documents for help. https://dotnet.microsoft.com/download/dotnet-core/3.1" - Break -} - -# This command need dotnet core more than 3.0 -dotnet user-secrets init - -# Merge all streams into stdout -$result = dotnet build *>&1 -# Evaluate success/failure -if($LASTEXITCODE -ne 0) -{ - # Failed, you can reconstruct stderr strings with: - $ErrorString = $result -join [System.Environment]::NewLine - throw $ErrorString -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/build_runtime.sh b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/build_runtime.sh +++ /dev/null @@ -1,11 +0,0 @@ -versionString=`dotnet --version` -function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } -if version_lt $versionString "3.1.0"; -then - echo "! dotnet core 3.1 is required, please refer following documents for help. -https://dotnet.microsoft.com/download/dotnet-core/3.1" - exit 1 -else - dotnet user-secrets init - dotnet build -fi diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/create.ps1 b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/create.ps1 +++ /dev/null @@ -1,211 +0,0 @@ -Param( - [string] $name, - [string] $location, - [string] $appId, - [string] $appPassword, - [string] $environment, - [string] $luisAuthoringKey, - [string] $projDir = $(Get-Location), - [string] $logFile = $(Join-Path $PSScriptRoot .. "create_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6){ - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -if (-not (Test-Path (Join-Path $projDir 'appsettings.deployment.json'))) -{ - Write-Host "! Could not find an 'appsettings.deployment.json' file in the current directory." -ForegroundColor DarkRed - Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" -} - -if (-not $environment) -{ - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $location) { - $location = Read-Host "? Azure resource group region" -} - -if (-not $appPassword) { - $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" -} - -if (-not $appId) { - # Create app registration - $app = (az ad app create ` - --display-name $name ` - --password `"$($appPassword)`" ` - --available-to-other-tenants ` - --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` - --output json) - - # Retrieve AppId - if ($app) { - $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId - } - - if(-not $appId) { - Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta - Break - } -} - -$shouldCreateAuthoringResource = $true - -# Use pre-exsisting luis authoring key -if ($luisAuthoringKey) { - $shouldCreateAuthoringResource = $false -} - -$resourceGroup = "$name-$environment" -$servicePlanName = "$name-$environment" - -# Get timestamp -$timestamp = Get-Date -f MMddyyyyHHmmss - -# Create resource group -Write-Host "> Creating resource group ..." -(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null - -# Deploy Azure services -Write-Host "> Validating Azure deployment ..." -$validation = az group deployment validate ` - --resource-group $resourcegroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - -if ($validation) { - $validation >> $logFile - $validation = $validation | ConvertFrom-Json - - if (-not $validation.error) { - Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow - $deployment = az group deployment create ` - --name $timestamp ` - --resource-group $resourceGroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - } - else { - Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - if ($validation.error.details -and $validation.error.details[0].code -eq "CanNotCreateMultipleFreeAccounts") - { - Write-Host "! The subscription is exceeding the maximum number of allowed LuisAuthoringAccounts. You already have a luis authoring resource created, please get your luis authoring key and retry with the following command:" -ForegroundColor DarkRed - Write-Host "pwsh ./Scripts/create.ps1 -name $name -environment $environment -location $location -appPassword $appPassword -luisAuthoringKey [YourLuisAuthoringKey]" -ForegroundColor Green - } - - Break - } -} - - -# Get deployment outputs -$outputs = (az group deployment show ` - --name $timestamp ` - --resource-group $resourceGroup ` - --output json) 2>> $logFile - -# If it succeeded then we perform the remainder of the steps -if ($outputs) -{ - # Log and convert to JSON - $outputs >> $logFile - $outputs = $outputs | ConvertFrom-Json - if ($outputs.properties.error) { - Write-Host "! Deployment failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($outputs.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - Break - } - - $outputs = $outputs.properties.outputs - $outputMap = @{} - $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } - - # Update appsettings.deployment.json - Write-Host "> Updating appsettings.deployment.json ..." - if (Test-Path $(Join-Path $projDir appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $projDir appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppId' -Value $appId - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppPassword' -Value $appPassword - - $settings | Add-Member -Type NoteProperty -Force -Name 'bot' -Value "ComposerDialogs" - - foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.deployment.json) - - Write-Host "> Done." - Write-Host "- App Id: $appId" - Write-Host "- App Password: $appPassword" - Write-Host "- Resource Group: $resourceGroup" - Write-Host "- ServicePlan: $servicePlanName" - Write-Host "- Bot Name: $name" - Write-Host "- Web App Name : $name" -} -else -{ - # Check for failed deployments - $operations = az group deployment operation list -g $resourceGroup -n $timestamp --output json 2>> $logFile | Out-Null - - if ($operations) { - $operations = $operations | ConvertFrom-Json - $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } - if ($failedOperations) { - foreach ($operation in $failedOperations) { - switch ($operation.properties.statusmessage.error.code) { - "MissingRegistrationForLocation" { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed - Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta - } - default { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." - Write-Host "! Code: $($operation.properties.statusMessage.error.code)." - Write-Host "! Message: $($operation.properties.statusMessage.error.message)." - } - } - } - } - } - else { - Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } - - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - Break -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/deploy.ps1 deleted file mode 100644 index 3f510dfb8f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Scripts/deploy.ps1 +++ /dev/null @@ -1,272 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path Microsoft.BotFramework.Composer.WebApp.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Init user secret id -dotnet user-secrets init - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - - -if (-not $botPath) { - # If don't provide bot path, then try to copy all dialogs except the runtime folder in parent folder to the publishing folder (bin\Realse\ Folder) - $botPath = '..' -} - -$botPath = $(Join-Path $botPath '*') -Write-Host "Publishing dialogs from external bot project: $($botPath)" -Copy-Item -Path (Get-Item -Path $botPath -Exclude ('runtime', 'generated')).FullName -Destination $remoteBotPath -Recurse -Force -Container - -# Try to get luis config from appsettings -$settings = Get-Content $(Join-Path $projFolder appsettings.deployment.json) | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisEndpointKey) { - $luisEndpointKey = $luisSettings.endpointKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - - Set-Location -Path $remoteBotPath - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - $noneEmptyModels = [System.Collections.ArrayList]@() - - foreach ($model in $models) { - $stringContent = Get-Content $model | Out-String - if ($stringContent.Length -gt 0) { - $noneEmptyModels.Add($model) - } - } - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $noneEmptyModels - } - - $luString = $noneEmptyModels | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # Execute bf luis:build command - if (Get-Command bf -errorAction SilentlyContinue) { - $customizedSettings = Get-Content $(Join-Path $remoteBotPath settings appsettings.json) | ConvertFrom-Json - $customizedEnv = $customizedSettings.luis.environment - - # create generated folder if not exists - if (!(Test-Path generated)) { - New-Item -ItemType Directory -Force -Path generated - } - - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog --out .\generated --suffix $customizedEnv -f --region $luisAuthoringRegion - } - else { - Write-Host "bf luis:build does not exist, use the following command to install:" - Write-Host "1. npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/" - Write-Host "2. npm install -g @microsoft/botframework-cli/4.9.0-preview.121555" - Write-Host "3. npm config set registry http://registry.npmjs.org" - Break - } - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - # change setting file in publish folder - if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - $luisConfig["endpointKey"] = $luisEndpointKey - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -# Enable all features to true by default -$featureConfig = @{ } -$featureConfig["UseTelementryLoggerMiddleware"] = $true -$featureConfig["UseTranscriptLoggerMiddleware"] = $true -$featureConfig["UseShowTypingMiddleware"] = $true -$featureConfig["UseInspectionMiddleware"] = $true -$featureConfig["UseCosmosDb"] = $true - -if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json -} -else { - $settings = New-Object PSObject -} - -$settings | Add-Member -Type NoteProperty -Force -Name 'feature' -Value $featureConfig -$settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Startup.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Startup.cs deleted file mode 100644 index fbdd6a153c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/Startup.cs +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; - -//using Microsoft.BotFramework.Composer.CustomAction; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings.BlobStorage.ConnectionString) && ConfigSectionValid(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings.Feature.UseShowTypingMiddleware) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IStorage storage) - { - if (settings.Feature.UseInspectionMiddleware) - { - adapter.Use(new InspectionMiddleware(new InspectionState(storage))); - } - } - - public IStorage ConfigureStorage(BotSettings settings) - { - IStorage storage; - if (ConfigSectionValid(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - return storage; - } - - public BotFrameworkHttpAdapter GetBotAdapter(IStorage storage, BotSettings settings, UserState userState, ConversationState conversationState, IServiceProvider s, TelemetryInitializerMiddleware telemetryInitializerMiddleware) - { - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(Configuration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, storage); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // This is for custom action component registration. - //ComponentRegistration.Add(new CustomActionComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings.ApplicationInsights.InstrumentationKey); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings.Telemetry.LogPersonalInformation); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings.Telemetry.LogActivities); - }); - - var storage = ConfigureStorage(settings); - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Configure bot loading path - var botDir = settings.Bot; - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - var defaultLocale = Configuration.GetValue("defaultLocale") ?? "en-us"; - - services.AddSingleton(resourceExplorer); - - services.AddSingleton((s) => GetBotAdapter(storage, settings, userState, conversationState, s, s.GetService())); - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog, - defaultLocale, - removeRecipientMention)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseWebSockets(); - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private static bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.Deployment.json deleted file mode 100644 index 5b9a266f9e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "ComposerDialogs", - "root": "ComposerDialogs" -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.Development.json deleted file mode 100644 index edb1022967..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.Development.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "../../", - "root": "../../" -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.json deleted file mode 100644 index eea4c3777e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/appsettings.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false - }, - "microsoftAppId": "", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/packages/packages.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/azurewebapp/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/.gitignore b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/ComposerBot.cs deleted file mode 100644 index 6dec73aebe..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/ComposerBot.cs +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Security.Claims; -using System.Security.Principal; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - private readonly IBotTelemetryClient telemetryClient; - private readonly string defaultLocale; - private readonly bool removeRecipientMention; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, IBotTelemetryClient telemetryClient, string rootDialog, string defaultLocale, bool removeRecipientMention = false) - { - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - this.defaultLocale = defaultLocale; - this.telemetryClient = telemetryClient; - this.removeRecipientMention = removeRecipientMention; - - LoadRootDialogAsync(); - this.dialogManager.InitialTurnState.Set(skillClient); - this.dialogManager.InitialTurnState.Set(conversationIdFactory); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - AdaptiveDialog rootDialog = (AdaptiveDialog)this.dialogManager.RootDialog; - if (turnContext.TurnState.Get(BotAdapter.BotIdentityKey) is ClaimsIdentity claimIdentity && SkillValidation.IsSkillClaim(claimIdentity.Claims)) - { - rootDialog.AutoEndDialog = true; - } - else - { - rootDialog.AutoEndDialog = false; - } - - if (this.removeRecipientMention && turnContext?.Activity?.Type == "message") - { - turnContext.Activity.RemoveRecipientMention(); - } - - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration() - .UseLanguagePolicy(new LanguagePolicy(defaultLocale)); - - if (telemetryClient != null) - { - dialogManager.UseTelemetry(this.telemetryClient); - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/LuisConfig.cs deleted file mode 100644 index bc2ff6c834..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/LuisConfigAdapter.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/LuisConfigAdapter.cs deleted file mode 100644 index c879fd1494..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/LuisConfigAdapter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.BotFramework.Composer.Core -{ - public static class LuisConfigAdapter - { - public static IConfigurationBuilder UseLuisConfigAdapter(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var settings = new Dictionary(); - settings["environment"] = configuration.GetValue("luis:environment"); - settings["region"] = configuration.GetValue("luis:authoringRegion"); - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Microsoft.BotFramework.Composer.Core.csproj b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Microsoft.BotFramework.Composer.Core.csproj deleted file mode 100644 index 2afb4a6f7c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Microsoft.BotFramework.Composer.Core.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - netstandard2.0 - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BlobStorageConfiguration.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BlobStorageConfiguration.cs deleted file mode 100644 index e6ab40402f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BlobStorageConfiguration.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BotFeatureSettings.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BotFeatureSettings.cs deleted file mode 100644 index 1073ae5786..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BotFeatureSettings.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotFeatureSettings - { - // Use ShowTypingMiddleware - public bool UseShowTypingMiddleware { get; set; } - - // Use InspectionMiddleware - public bool UseInspectionMiddleware { get; set; } - - // Use RemoveRecipientMention Activity Extensions - public bool RemoveRecipientMention { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BotSettings.cs deleted file mode 100644 index dcb6394ed3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/Settings/BotSettings.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotSettings - { - public BotFeatureSettings Feature { get; set; } - - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration ApplicationInsights { get; set; } - - public AdditionalTelemetryConfiguration Telemetry { get; set; } - - public string Bot { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - - public class AdditionalTelemetryConfiguration - { - public bool LogPersonalInformation { get; set; } - - public bool LogActivities { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/SkillConversationIdFactory.cs deleted file mode 100644 index dc1db5a1ce..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/core/SkillConversationIdFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Newtonsoft.Json; - -namespace Microsoft.BotFramework.Composer.Core -{ - /// - /// A that uses an in memory - /// to store and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly ConcurrentDictionary _conversationRefs = new ConcurrentDictionary(); - - public override Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - var skillConversationReference = new SkillConversationReference - { - ConversationReference = options.Activity.GetConversationReference(), - OAuthScope = options.FromBotOAuthScope - }; - var key = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{skillConversationReference.ConversationReference.Conversation.Id}-{skillConversationReference.ConversationReference.ChannelId}-skillconvo"; - _conversationRefs.GetOrAdd(key, JsonConvert.SerializeObject(skillConversationReference)); - return Task.FromResult(key); - } - - public override Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - var conversationReference = JsonConvert.DeserializeObject(_conversationRefs[skillConversationId]); - return Task.FromResult(conversationReference); - } - - public override Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - _conversationRefs.TryRemove(skillConversationId, out _); - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Action/MultiplyDialog.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Action/MultiplyDialog.cs deleted file mode 100644 index 81768d1b48..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Action/MultiplyDialog.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Threading; -using System.Threading.Tasks; -using AdaptiveExpressions.Properties; -using Microsoft.Bot.Builder.Dialogs; -using Newtonsoft.Json; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - /// - /// Custom command which takes takes 2 data bound arguments (arg1 and arg2) and multiplies them returning that as a databound result. - /// - public class MultiplyDialog : Dialog - { - [JsonConstructor] - public MultiplyDialog([CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) - : base() - { - // enable instances of this command as debug break point - this.RegisterSourceLocation(sourceFilePath, sourceLineNumber); - } - - [JsonProperty("$kind")] - public const string Kind = "MultiplyDialog"; - - /// - /// Gets or sets memory path to bind to arg1 (ex: conversation.width). - /// - /// - /// Memory path to bind to arg1 (ex: conversation.width). - /// - [JsonProperty("arg1")] - public NumberExpression Arg1 { get; set; } - - /// - /// Gets or sets memory path to bind to arg2 (ex: conversation.height). - /// - /// - /// Memory path to bind to arg2 (ex: conversation.height). - /// - [JsonProperty("arg2")] - public NumberExpression Arg2 { get; set; } - - /// - /// Gets or sets caller's memory path to store the result of this step in (ex: conversation.area). - /// - /// - /// Caller's memory path to store the result of this step in (ex: conversation.area). - /// - [JsonProperty("resultProperty")] - public StringExpression ResultProperty { get; set; } - - public override Task BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken)) - { - var arg1 = Arg1.GetValue(dc.State); - var arg2 = Arg2.GetValue(dc.State); - - var result = Convert.ToInt32(arg1) * Convert.ToInt32(arg2); - if (this.ResultProperty != null) - { - dc.State.SetValue(this.ResultProperty.GetValue(dc.State), result); - } - - return dc.EndDialogAsync(result: result, cancellationToken: cancellationToken); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/CustomAction.sln b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/CustomAction.sln deleted file mode 100644 index 2a2bdfab34..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/CustomAction.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30011.22 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "customaction", "customaction.csproj", "{2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {83C7CDB7-7F32-4E64-9D6D-7752806C37D6} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/CustomActionComponentRegistration.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/CustomActionComponentRegistration.cs deleted file mode 100644 index d14abbe6b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/CustomActionComponentRegistration.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Newtonsoft.Json; -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - public class CustomActionComponentRegistration : ComponentRegistration, IComponentDeclarativeTypes - { - public IEnumerable GetDeclarativeTypes(ResourceExplorer resourceExplorer) - { - // Actions - yield return new DeclarativeType(MultiplyDialog.Kind); - } - - public IEnumerable GetConverters(ResourceExplorer resourceExplorer, SourceContext sourceContext) - { - yield break; - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj deleted file mode 100644 index 499b0304e2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Library - netcoreapp3.1 - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Schemas/MultiplyDialog.schema b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Schemas/MultiplyDialog.schema deleted file mode 100644 index e8e651e601..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/customaction/Schemas/MultiplyDialog.schema +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/component.schema", - "$role": "implements(Microsoft.IDialog)", - "title": "Multiply", - "description": "This will return the result of arg1*arg2", - "type": "object", - "additionalProperties": false, - "properties": { - "arg1": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg1", - "description": "Value from callers memory to use as arg 1" - }, - "arg2": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg2", - "description": "Value from callers memory to use as arg 2" - }, - "resultProperty": { - "$ref": "schema:#/definitions/stringExpression", - "title": "Result", - "description": "Value from callers memory to store the result" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ActionsTests.cs deleted file mode 100644 index 0767f86d7e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ActionsTests.cs +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ControllingConversationTests.cs deleted file mode 100644 index 8922c9b099..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ControllingConversationTests.cs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .Send("08") - .AssertReply("In continue loop, which only outputs dual.") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 3 value: 4") - .AssertReply("index: 5 value: 6") - .AssertReply("In break loop, which breaks when index > 2") - .AssertReply("index: 0 value: 1") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 2 value: 3") - .AssertReply("done") - .Send("09") - .AssertReply("counter: 1") - .AssertReply("counter: 2") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/InputsTests.cs deleted file mode 100644 index f0ef055d87..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/InputsTests.cs +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/MessageTests.cs deleted file mode 100644 index 09b27ca711..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/MessageTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj deleted file mode 100644 index e444ece921..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ToDoBotTests.cs deleted file mode 100644 index 00660fc3b5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/runtime/tests/ToDoBotTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json deleted file mode 100644 index 86871bc405..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "functionapp", - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "kind": "functionapp", - "httpsOnly": true - }, - "resources": [ - { - "name": "appsettings", - "type": "config", - "apiVersion": "2015-08-01", - "dependsOn": [ - "[concat('Microsoft.Web/Sites/', variables('webAppName'))]" - ], - "properties": { - "FUNCTIONS_EXTENSION_VERSION": "~3", - "FUNCTIONS_WORKER_RUNTIME": "dotnet", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components/', parameters('appInsightsName')), '2015-05-01').InstrumentationKey]", - "MicrosoftAppId": "[parameters('appId')]", - "MicrosoftAppPassword": "[parameters('appSecret')]" - } - } - ] - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index b6ede74dd1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,388 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "apiVersion": "2018-02-01", - "name": "1d41002f-62a1-49f3-bd43-2f3f32a19cbb", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/package.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/package.json deleted file mode 100644 index 256b826ec5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "azure_provision", - "version": "1.0.0", - "description": "provision to azure cloud", - "main": "provisionComposer.js", - "license": "MIT", - "scripts": { - "start": "node provisionComposer.js" - }, - "dependencies": { - "@azure/arm-resources": "^2.1.0", - "@azure/graph": "^5.0.1", - "@azure/ms-rest-nodeauth": "^3.0.3", - "@types/fs-extra": "^8.1.0", - "chalk": "^4.0.0", - "fs-extra": "^8.1.0", - "minimist": "^1.2.5", - "ora": "^4.0.4", - "request-promise": "^4.2.5" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/provisionComposer.js b/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/provisionComposer.js deleted file mode 100644 index 96149ffdfc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/scripts/provisionComposer.js +++ /dev/null @@ -1,599 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const chalk = require('chalk'); -const fs = require('fs-extra'); -const msRestNodeAuth = require('@azure/ms-rest-nodeauth'); -const argv = require('minimist')(process.argv.slice(2)); -const path = require('path'); -const rp = require('request-promise') -const { promisify } = require('util'); -const { GraphRbacManagementClient } = require('@azure/graph'); -const { ResourceManagementClient } = require('@azure/arm-resources'); -const readFile = promisify(fs.readFile); -const ora = require('ora'); - -const logger = msg => { - if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR) { - console.log(chalk.red(msg.message)); - } else if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS) { - console.log(chalk.white(msg.message)); - } else { - console.log(chalk.green(msg.message)); - } -}; - -const usage = () => { - const options = [ - ['subscriptionId', 'Azure Subscription Id'], - ['name', 'Project Name'], - ['appPassword', '16 character password'], - ['environment', 'Environment name (Defaults to dev)'], - ['location', 'Azure Region (Defaults to westus)'], - ['appId', 'Microsoft App ID (Will create if absent)'], - ['tenantId', 'ID of your tenant if required (will choose first in list by default)'], - ['createLuisResource', 'Create a LUIS resource? Default true'], - ['createLuisAuthoringResource', 'Create a LUIS authoring resource? Default true'], - ['createCosmosDb', 'Create a CosmosDB? Default true'], - ['createStorage', 'Create a storage account? Default true'], - ['createAppInsights', 'Create an AppInsights resource? Default true'], - [ - 'customArmTemplate', - 'Path to runtime ARM template. By default it will use an Azure WebApp template. Pass `DeploymentTemplates/function-template-with-preexisting-rg.json` for Azure Functions or your own template for a custom deployment.', - ], - ]; - - const instructions = [ - ``, - chalk.bold('Provision Azure resources for use with Bot Framework Composer bots'), - `* This script will create a new resource group and the necessary Azure resources needed to operate a Bot Framework bot in the cloud.`, - `* Use this to create a publishing profile used in Composer's "Publish" toolbar.`, - ``, - chalk.bold(`Basic Usage:`), - chalk.greenBright(`node provisionComposer --subscriptionId=`) + - chalk.yellow('') + - chalk.greenBright(' --name=') + - chalk.yellow('') + - chalk.greenBright(' --appPassword=') + - chalk.yellow('<16 character password>'), - ``, - chalk.bold(`All options:`), - ...options.map(option => { - return chalk.greenBright('--' + option[0]) + '\t' + chalk.yellow(option[1]); - }), - ]; - - console.log(instructions.join('\n')); -}; - -// check for required parameters -if (Object.keys(argv).length === 0) { - return usage(); -} - -if (!argv.name || !argv.subscriptionId || !argv.appPassword) { - return usage(); -} - -// Get required fields from the arguments -const subId = argv.subscriptionId; -const name = argv.name.toString(); -const appPassword = argv.appPassword; - -// Get optional fields from the arguments -const environment = argv.environment || 'dev'; -const location = argv.location || 'westus'; -const appId = argv.appId; // MicrosoftAppId - generated if left blank - -// Get option flags -const createLuisResource = argv.createLuisResource == 'false' ? false : true; -const createLuisAuthoringResource = argv.createLuisAuthoringResource == 'false' ? false : true; -const createCosmosDb = argv.createCosmosDb == 'false' ? false : true; -const createStorage = argv.createStorage == 'false' ? false : true; -const createAppInsignts = argv.createAppInsignts == 'false' ? false : true; -var tenantId = argv.tenantId ? argv.tenantId : ''; - -const templatePath = - argv.customArmTemplate || path.join(__dirname, 'DeploymentTemplates', 'template-with-preexisting-rg.json'); - -const BotProjectDeployLoggerType = { - // Logger Type for Provision - PROVISION_INFO: 'PROVISION_INFO', - PROVISION_ERROR: 'PROVISION_ERROR', - PROVISION_WARNING: 'PROVISION_WARNING', - PROVISION_SUCCESS: 'PROVISION_SUCCESS', - PROVISION_ERROR_DETAILS: 'PROVISION_ERROR_DETAILS', -}; - -/** - * Create a Bot Framework registration - * @param {} graphClient - * @param {*} displayName - * @param {*} appPassword - */ -const createApp = async (graphClient, displayName, appPassword) => { - try { - const createRes = await graphClient.applications.create({ - displayName: displayName, - passwordCredentials: [ - { - value: appPassword, - startDate: new Date(), - endDate: new Date(new Date().setFullYear(new Date().getFullYear() + 2)), - }, - ], - availableToOtherTenants: true, - replyUrls: ['https://token.botframework.com/.auth/web/redirect'], - }); - return createRes; - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: err.body.message, - }); - return false; - } -}; - -/** - * Create an Azure resources group - * @param {} client - * @param {*} location - * @param {*} resourceGroupName - */ -const createResourceGroup = async (client, location, resourceGroupName) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Creating resource group ...`, - }); - const param = { - location: location, - }; - - return await client.resourceGroups.createOrUpdate(resourceGroupName, param); -}; - -/** - * Format parameters - * @param {} scope - */ -const pack = scope => { - return { - value: scope, - }; -}; - -const unpackObject = output => { - const unpacked = {}; - for (const key in output) { - const objValue = output[key]; - if (objValue.value) { - unpacked[key] = objValue.value; - } - } - return unpacked; -}; - -/** - * For more information about this api, please refer to this doc: https://docs.microsoft.com/en-us/rest/api/resources/Tenants/List - * @param {*} accessToken - */ -const getTenantId = async (accessToken) => { - if (!accessToken) { - throw new Error('Error: Missing access token. Please provide a non-expired Azure access token. Tokens can be obtained by running az account get-access-token'); - } - try { - const tenantUrl = `https://management.azure.com/tenants?api-version=2020-01-01`; - const options = { - headers: { Authorization: `Bearer ${accessToken}` }, - }; - const response = await rp.get(tenantUrl, options); - const jsonRes = JSON.parse(response); - if (jsonRes.value === undefined || (jsonRes.value && jsonRes.value.length === 0) || (jsonRes.value && jsonRes.value.length > 0 && jsonRes.value[0].tenantId === undefined)) { - throw new Error(`No tenants found in the account.`); - } - const selectedTenant = jsonRes.value.shift(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Using Tenant ${selectedTenant.displayName} - ID: ${selectedTenant.tenantId}`, - }); - // if alternatives exist, list htem - if (jsonRes.value.length > 0) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: chalk.yellow(` Note: You have access to multiple tenants. To specify an alternative, specify --tenantId=`), - }); - // list all available tenants - jsonRes.value.forEach((tenant) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: chalk.yellow(` * ${tenant.displayName} - ID: ${tenant.tenantId}`), - }); - }); - } - - return selectedTenant.tenantId; - } catch (err) { - throw new Error(`Get Tenant Id Failed, details: ${getErrorMesssage(err)}`); - } -} - -const getDeploymentTemplateParam = ( - appId, - appPwd, - location, - name, - shouldCreateAuthoringResource, - shouldCreateLuisResource, - useAppInsights, - useCosmosDb, - useStorage -) => { - return { - appId: pack(appId), - appSecret: pack(appPwd), - appServicePlanLocation: pack(location), - botId: pack(name), - shouldCreateAuthoringResource: pack(shouldCreateAuthoringResource), - shouldCreateLuisResource: pack(shouldCreateLuisResource), - useAppInsights: pack(useAppInsights), - useCosmosDb: pack(useCosmosDb), - useStorage: pack(useStorage), - }; -}; - -/** - * Validate the deployment using the Azure API - */ -const validateDeployment = async (client, resourceGroupName, deployName, templateParam) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Validating Azure deployment ...', - }); - - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - return await client.deployments.validate(resourceGroupName, deployName, deployParam); -}; - -/** - * Using an ARM template, provision a bunch of resources - */ -const createDeployment = async (client, resourceGroupName, deployName, templateParam) => { - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - - return await client.deployments.createOrUpdate(resourceGroupName, deployName, deployParam); -}; - -/** - * Format the results into the expected shape - */ -const updateDeploymentJsonFile = async (client, resourceGroupName, deployName, appId, appPwd) => { - const outputs = await client.deployments.get(resourceGroupName, deployName); - if (outputs && outputs.properties && outputs.properties.outputs) { - const outputResult = outputs.properties.outputs; - const applicationResult = { - MicrosoftAppId: appId, - MicrosoftAppPassword: appPwd, - }; - const outputObj = unpackObject(outputResult); - - if (!createAppInsignts) { - delete outputObj.applicationInsights; - } - if (!createCosmosDb) { - delete outputObj.cosmosDb; - } - if (!createLuisAuthoringResource && !createLuisResource) { - delete outputObj.luis; - } - if (!createStorage) { - delete outputObj.blobStorage; - } - const result = {}; - Object.assign(result, outputObj, applicationResult); - return result; - } else { - return null; - } -}; - -const provisionFailed = msg => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: chalk.bold('** Provision failed **'), - }); -}; - -const getErrorMesssage = (err) => { - if (err.body) { - if (err.body.error) { - if (err.body.error.details) { - const details = err.body.error.details; - let errMsg = ''; - for (let detail of details) { - errMsg += detail.message; - } - return errMsg; - } - else { - return err.body.error.message; - } - } - else { - return JSON.stringify(err.body, null, 2); - } - } - else { - return JSON.stringify(err, null, 2); - } -} - -/** - * Provision a set of Azure resources for use with a bot - */ -const create = async ( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource = true, - createLuisAuthoringResource = true, - createCosmosDb = true, - createStorage = true, - createAppInsignts = true -) => { - // If tenantId is empty string, get tenanId from API - if (!tenantId) { - const token = await creds.getToken(); - const accessToken = token.accessToken; - // the returned access token will almost surely have a tenantId. - // use this as the default if one isn't specified. - // otherwise, fetch a list and use the first, but print available options. - if (token.tenantId) { - tenantId = token.tenantId; - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Using Tenant ID: ${tenantId}`, - }); - } else { - tenantId = await getTenantId(accessToken); - } - } - - const graphCreds = new msRestNodeAuth.DeviceTokenCredentials( - creds.clientId, - tenantId, - creds.username, - 'graph', - creds.environment, - creds.tokenCache - ); - const graphClient = new GraphRbacManagementClient(graphCreds, tenantId, { - baseUri: 'https://graph.windows.net', - }); - - // If the appId is not specified, create one - if (!appId) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Creating App Registration ...', - }); - - // create the app registration - const appCreated = await createApp(graphClient, name, appPassword); - if (appCreated === false) { - return provisionFailed(); - } - - // use the newly created app - appId = appCreated.appId; - } - - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Create App Id Success! ID: ${appId}`, - }); - - const resourceGroupName = `${name}-${environment}`; - - // timestamp will be used as deployment name - const timeStamp = new Date().getTime().toString(); - const client = new ResourceManagementClient(creds, subId); - - // Create a resource group to contain the new resources - try { - const rpres = await createResourceGroup(client, location, resourceGroupName); - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err) - }); - return provisionFailed(); - } - - // Caste the parameters into the right format - const deploymentTemplateParam = getDeploymentTemplateParam( - appId, - appPassword, - location, - name, - createLuisAuthoringResource, - createLuisResource, - createAppInsignts, - createCosmosDb, - createStorage - ); - - // Validate the deployment using the Azure API - const validation = await validateDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - - // Handle validation errors - if (validation.error) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error.message}`, - }); - if (validation.error.details) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS, - message: JSON.stringify(validation.error.details, null, 2), - }); - } - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - - // Create the entire stack of resources inside the new resource group - // this is controlled by an ARM template identified in templatePath - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Deploying Azure services (this could take a while)...`, - }); - const spinner = ora().start(); - try { - const deployment = await createDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - // Handle errors - if (deployment._response.status != 200) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Template is not valid with provided parameters. Review the log for more information.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error}`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - } catch (err) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err) - }); - return provisionFailed(); - } - - spinner.succeed('Success!'); - - // Validate that everything was successfully created. - // Then, update the settings file with information about the new resources - const updateResult = await updateDeploymentJsonFile(client, resourceGroupName, timeStamp, appId, appPassword); - - // Handle errors - if (!updateResult) { - const operations = await client.deploymentOperations.list(resourceGroupName, timeStamp); - if (operations) { - const failedOperations = operations.filter( - value => value && value.properties && value.properties.statusMessage.error !== null - ); - if (failedOperations) { - failedOperations.forEach(operation => { - switch ( - operation && - operation.properties && - operation.properties.statusMessage.error.code && - operation.properties.targetResource - ) { - case 'MissingRegistrationForLocation': - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}. This resource is not avaliable in the location provided.`, - }); - break; - default: - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Code: ${operation.properties.statusMessage.error.code}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Message: ${operation.properties.statusMessage.error.message}.`, - }); - break; - } - }); - } - } else { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed. Please refer to the log file for more information.`, - }); - } - } - return updateResult; -}; - -console.log(chalk.bold('Login to Azure:')); -msRestNodeAuth - .interactiveLogin({ domain: tenantId }) - .then(async creds => { - const createResult = await create( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource, - createLuisAuthoringResource, - createCosmosDb, - createStorage, - createAppInsignts - ); - - if (createResult) { - console.log(''); - console.log( - chalk.bold( - `Your Azure hosting environment has been created! Copy paste the following configuration into a new profile in Composer's Publishing tab.` - ) - ); - console.log(''); - - const token = await creds.getToken(); - const profile = { - accessToken: token.accessToken, - name: name, - environment: environment, - hostname: `${name}-${environment}`, - luisResource: `${name}-${environment}-luis`, - settings: createResult, - }; - - console.log(chalk.white(JSON.stringify(profile, null, 2))); - - console.log(''); - } - }) - .catch(err => { - console.error(err); - }); diff --git a/Composer/plugins/localPublish/hostedBots/81179.68797966064/settings/appsettings.json b/Composer/plugins/localPublish/hostedBots/81179.68797966064/settings/appsettings.json deleted file mode 100644 index de2cbe2dc6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/81179.68797966064/settings/appsettings.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false, - "RemoveRecipientMention": false - }, - "MicrosoftAppPassword": "", - "MicrosoftAppId": "", - "luis": { - "name": "", - "authoringKey": "", - "endpointKey": "", - "authoringRegion": "westus", - "defaultLanguage": "en-us", - "environment": "composer" - }, - "publishTargets": [], - "qna": { - "knowledgebaseid": "", - "endpointkey": "", - "hostname": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "runtime": { - "customRuntime": false, - "path": "", - "command": "" - }, - "downsampling": { - "maxImbalanceRatio": 10, - "maxUtteranceAllowed": 15000 - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/README.md b/Composer/plugins/localPublish/hostedBots/88691.6992608121/README.md deleted file mode 100644 index ba48ee2802..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/README.md +++ /dev/null @@ -1,73 +0,0 @@ -This folder contains a Bot Project created with Bot Framework Composer. - -The full documentation for Composer lives here: -https://github.com/microsoft/botframework-composer - -To test this bot locally, open this folder in Composer, then click "Start Bot" - -## Provision Azure Resources to Host Bot - -This project includes a script that can be used to provision the resources necessary to run your bot in the Azure cloud. Running this script will create all of the necessary resources and return a publishing profile in the form of a JSON object. This JSON object can be imported into Composer's "Publish" tab and used to deploy the bot. - -* From this project folder, navigate to the scripts/ folder -* Run `npm install` -* Run `node provisionComposer.js --subscriptionId= --name= --appPassword= --environment=` -* You will be asked to login to the Azure portal in your browser. -* You will see progress indicators as the provision process runs. Note that it will take roughly 10 minutes to fully provision the resources. - -It will look like this: -``` -{ - "accessToken": "", - "name": "", - "environment": "", - "settings": { - "applicationInsights": { - "InstrumentationKey": "" - }, - "cosmosDb": { - "cosmosDBEndpoint": "", - "authKey": "", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - }, - "luis": { - "endpointKey": "", - "authoringKey": "", - "region": "westus" - }, - "MicrosoftAppId": "", - "MicrosoftAppPassword": "" - } -}``` - -When completed, you will see a message with a JSON "publishing profile" and instructions for using it in Composer. - - -## Publish bot to Azure - -To publish your bot to a Azure resources provisioned using the process above: - -* Open your bot in Composer -* Navigate to the "Publish" tab -* Select "Add new profile" from the toolbar -* In the resulting dialog box, choose "azurePublish" from the "Publish Destination Type" dropdown -* Paste in the profile you received from the provisioning script - -When you are ready to publish your bot to Azure, select the newly created profile from the sidebar and click "Publish to selected profile" in the toolbar. - -## Refresh your Azure Token - -When publishing, you may encounter an error about your access token being expired. This happens when the access token used to provision your bot expires. - -To get a new token: - -* Open a terminal window -* Run `az account get-access-token` -* This will result in a JSON object printed to the console, containing a new `accessToken` field. -* Copy the value of the accessToken from the terminal and into the publish `accessToken` field in the profile in Composer. diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/emptybot-0.dialog b/Composer/plugins/localPublish/hostedBots/88691.6992608121/emptybot-0.dialog deleted file mode 100644 index f5c3db641c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/emptybot-0.dialog +++ /dev/null @@ -1,53 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "$designer": { - "name": "EmptyBot-0", - "id": "QwWsdQ" - } - }, - "autoEndDialog": true, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "$designer": { - "id": "376720" - }, - "actions": [ - { - "$kind": "Microsoft.SetProperty", - "$designer": { - "id": "50lvi3" - }, - "property": "dialog.response.content", - "value": { - "attachment": { - "type": "template", - "payload": { - "template_type": "button", - "text": "What do you want to do next?", - "buttons": [ - { - "type": "web_url", - "url": "https://www.messenger.com", - "title": "Visit Messenger" - } - ] - } - } - } - }, - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "gt7EtU" - }, - "activity": "${SendActivity_gt7EtU()}" - } - ] - } - ], - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema", - "generator": "emptybot-0.lg" -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/88691.6992608121/language-generation/en-us/common.en-us.lg deleted file mode 100644 index 65cae9d65f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,2 +0,0 @@ -# WelcomeUser -- Welcome to the EmptyBot sample \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/language-generation/en-us/emptybot-0.en-us.lg b/Composer/plugins/localPublish/hostedBots/88691.6992608121/language-generation/en-us/emptybot-0.en-us.lg deleted file mode 100644 index e49c857ce6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/language-generation/en-us/emptybot-0.en-us.lg +++ /dev/null @@ -1,10 +0,0 @@ -[import](common.lg) - - - - -# SendActivity_gt7EtU() -[Activity - text=sds - ChannelData=${dialog.response.content} -] \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/language-understanding/en-us/emptybot-0.en-us.lu b/Composer/plugins/localPublish/hostedBots/88691.6992608121/language-understanding/en-us/emptybot-0.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/.gitignore b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/.gitignore deleted file mode 100644 index 2ad42ca00c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/.gitignore +++ /dev/null @@ -1,360 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*[.json, .xml, .info] - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/ComposerRuntime.sln b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/ComposerRuntime.sln deleted file mode 100644 index f39a16131b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/ComposerRuntime.sln +++ /dev/null @@ -1,43 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29920.165 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.WebApp", "azurewebapp\Microsoft.BotFramework.Composer.WebApp.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Tests", "tests\Microsoft.BotFramework.Composer.Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Core", "core\Microsoft.BotFramework.Composer.Core.csproj", "{35E20444-438D-4241-833C-804A24E9CB4F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.BotFramework.Composer.Functions", "azurefunctions\Microsoft.BotFramework.Composer.Functions.csproj", "{9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {35E20444-438D-4241-833C-804A24E9CB4F}.Release|Any CPU.Build.0 = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FC308C1-F0EC-41BE-90FD-9DC00DA7B80B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/NuGet.Config b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/README.md b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/README.md deleted file mode 100644 index f41b1a16da..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# DotNet bot runtime - -# Folder structure - -- **core**: Includes all core JavaScript runtime logic, independent of hosting technology. -- **technology specific folders**: Each hosting technology has one folder in this directory. For example, for Azure Functions, there is an `azurefunction` folder - - **tests**: Javascript runtime tests diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/.gitignore b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/.gitignore deleted file mode 100644 index ff5b00c506..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/.gitignore +++ /dev/null @@ -1,264 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# Azure Functions localsettings file -local.settings.json - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -project.fragment.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -#*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/MessagesTrigger.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/MessagesTrigger.cs deleted file mode 100644 index abb88495f5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/MessagesTrigger.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Extensions.Logging; -using System; -using System.Net; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class MessagesTrigger - { - private readonly IBotFrameworkHttpAdapter _adapter; - private readonly IBot _bot; - - public MessagesTrigger(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter ?? throw new ArgumentNullException(nameof(adapter)); - this._bot = bot ?? throw new ArgumentNullException(nameof(bot)); - } - - [FunctionName("messages")] - public async Task Run( - [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, - ILogger log) - { - log.LogInformation($"Messages endpoint triggered."); - - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await _adapter.ProcessAsync(req, req.HttpContext.Response, _bot); - - if (req.HttpContext.Response.StatusCode == (int) HttpStatusCode.OK || req.HttpContext.Response.StatusCode == (int)HttpStatusCode.Accepted) - { - return new OkResult(); - } - else - { - return new ContentResult() - { - StatusCode = req.HttpContext.Response.StatusCode, - Content = $"Bot execution failed with status code: {req.HttpContext.Response.StatusCode}" - }; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj deleted file mode 100644 index 88a550947e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.csproj +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.FunctionTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj deleted file mode 100644 index b678ef1042..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Microsoft.BotFramework.Composer.Functions.csproj +++ /dev/null @@ -1,61 +0,0 @@ - - - - netcoreapp3.0 - v3 - 2eb1c70c-5cd2-4c08-8aab-df989c347067 - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs deleted file mode 100644 index 645665ecaa..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Settings/ActivitySerializationSettings.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Rest.Serialization; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; - -namespace Microsoft.BotFramework.Composer.Functions.Settings -{ - internal class ActivitySerializationSettings - { - internal static readonly JsonSerializerSettings Default = new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Ignore, - Formatting = Formatting.Indented, - DateFormatHandling = DateFormatHandling.IsoDateFormat, - DateTimeZoneHandling = DateTimeZoneHandling.Utc, - ReferenceLoopHandling = ReferenceLoopHandling.Serialize, - ContractResolver = new ReadOnlyJsonContractResolver(), - Converters = new List { new Iso8601TimeSpanConverter() } - }; - - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/SkillsTrigger.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/SkillsTrigger.cs deleted file mode 100644 index 30528b4cf3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/SkillsTrigger.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder; -using System.Web.Http; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Microsoft.BotFramework.Composer.Functions.Settings; - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class SkillsTrigger - { - private readonly SkillHandler _skillHandler; - - public SkillsTrigger(SkillHandler skillHandler) - { - this._skillHandler = skillHandler ?? throw new ArgumentNullException(nameof(skillHandler)); - } - - [FunctionName("skills")] - public async Task ReplyToActivityAsync( - [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities/{activityId}")] HttpRequest req, - string conversationId, string activityId, ILogger log) - { - log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - var body = await req.ReadAsStringAsync(); - var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - var result = await _skillHandler.HandleReplyToActivityAsync(req.Headers["Authorization"], conversationId, activityId, activity); - - return new JsonResult(result, ActivitySerializationSettings.Default); - } - - - //[FunctionName("skills")] - //public async Task SendToConversationAsync( - // [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "v3/conversations/{conversationId}/activities")] HttpRequest req, - // string conversationId, string activityId, ILogger log) - //{ - // log.LogInformation($"Skill ReplyToActivityAsync endpoint triggered."); - - // var body = await req.ReadAsStringAsync(); - // var activity = JsonConvert.DeserializeObject(body, ActivitySerializationSettings.Default); - // var result = await _skillHandler.HandleSendToConversationAsync(req.Headers["Authorization"], conversationId, activity); - - // return new JsonResult(result, ActivitySerializationSettings.Default); - //} - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Startup.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Startup.cs deleted file mode 100644 index 0641c70d30..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/Startup.cs +++ /dev/null @@ -1,236 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Http; -using Microsoft.Azure.Functions.Extensions.DependencyInjection; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Reflection; -using System.Text; - -[assembly: FunctionsStartup(typeof(Microsoft.BotFramework.Composer.Functions.Startup))] - -namespace Microsoft.BotFramework.Composer.Functions -{ - public class Startup : FunctionsStartup - { - private IConfigurationRoot BuildConfiguration(string rootDirectory) - { - var config = new ConfigurationBuilder(); - - // Config precedence 1: root app.settings - config - .SetBasePath(rootDirectory) - .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) - .UseLuisConfigAdapter() - .UseLuisSettings(); - - // Config precedence 2: ComposerDialogs/settings settings which are injected by the composer publish - // Hard code the settings path to 'ComposerDialogs' for deployment - var configFile = Path.GetFullPath(Path.Combine(rootDirectory, @"ComposerDialogs/settings/appsettings.json")); - config.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - // Config Precedence 3: Deployment specific config - config.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - - if (!Debugger.IsAttached) - { - config.AddUserSecrets(); - } - - config.AddEnvironmentVariables(); - - return config.Build(); - } - - public override void Configure(IFunctionsHostBuilder builder) - { - var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - var rootDirectory = Directory.GetParent(binDirectory).FullName; - - var rootConfiguration = BuildConfiguration(rootDirectory); - - var settings = new BotSettings(); - rootConfiguration.Bind(settings); - - var services = builder.Services; - - services.AddSingleton(rootConfiguration); - - services.AddLogging(); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Adaptive component registration - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings.ApplicationInsights.InstrumentationKey); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings.Telemetry.LogPersonalInformation); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings.Telemetry.LogActivities); - }); - - // Storage - IStorage storage; - if (ConfigSectionValid(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Resource explorer to track declarative assets - var resourceExplorer = new ResourceExplorer().AddFolder(Path.Combine(rootDirectory, settings.Bot ?? ".")); - services.AddSingleton(resourceExplorer); - - // Adapter - services.AddSingleton(s => - { - // Retrieve required dependencies - //IConfiguration configuration = s.GetService(); - IStorage storage = s.GetService(); - UserState userState = s.GetService(); - ConversationState conversationState = s.GetService(); - TelemetryInitializerMiddleware telemetryInitializerMiddleware = s.GetService(); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(rootConfiguration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(rootConfiguration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, s); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - - return adapter; - }); - - var defaultLocale = rootConfiguration.GetValue("defaultLocale") ?? "en-us"; - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - // Bot - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - GetRootDialog(Path.Combine(rootDirectory, settings.Bot)), - defaultLocale, - removeRecipientMention)); - } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings.BlobStorage.ConnectionString) && ConfigSectionValid(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings.Feature.UseShowTypingMiddleware) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IServiceProvider s) - { - if (settings.Feature.UseInspectionMiddleware) - { - adapter.Use(s.GetService()); - } - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - - private bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.Deployment.json deleted file mode 100644 index 5b9a266f9e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "ComposerDialogs", - "root": "ComposerDialogs" -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.Development.json deleted file mode 100644 index 32b3ba9cf9..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.Development.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "../", - "root": "../" -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.json deleted file mode 100644 index eea4c3777e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/appsettings.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false - }, - "microsoftAppId": "", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/host.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/host.json deleted file mode 100644 index 903482d949..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurefunctions/host.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "2.0" -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/.gitignore b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Controllers/BotController.cs deleted file mode 100644 index daaba0d810..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Controllers/SkillController.cs deleted file mode 100644 index a8853db745..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Controllers/SkillController.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj deleted file mode 100644 index c98fdfd89f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj +++ /dev/null @@ -1,41 +0,0 @@ - - - - netcoreapp3.1 - 2af51d34-54f1-4eaa-8000-1b0d061ebd57 - - - - Always - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebAppTemplate.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Program.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Program.cs deleted file mode 100644 index e080ee0004..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Program.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - builder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); - - if (env.IsDevelopment()) - { - // Local Debug - builder.AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true); - } - - var configuration = builder.Build(); - - // Hard code the settings path to 'ComposerDialogs' while deployment - var botRoot = configuration.GetValue("bot") ?? "ComposerDialogs"; - var configFile = Path.GetFullPath(Path.Combine(botRoot, @"settings/appsettings.json")); - - builder.AddJsonFile(configFile, optional: true, reloadOnChange: true); - - // Need to put this part here to override the any customized settings - if (!env.IsDevelopment()) - { - //Azure Deploy - builder.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - } - - builder.UseLuisConfigAdapter() - .UseLuisSettings(); - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/README.md b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/README.md deleted file mode 100644 index 356528b3d7..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/README.md +++ /dev/null @@ -1,21 +0,0 @@ -## Bot Project -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -## Instructions for setting up the Bot Project runtime -The Bot Project is a regular Bot Framework SDK V4 project. Before you can launch it from the emulator, you need to make sure you can run the bot. - -### Prerequisite: -* Install .Netcore 3.1 - -### Commands: - -* from root folder -* cd templates/dotnet/Microsoft.BotFramework.Composer.WebAppTemplate -* dotnet user-secrets init // init the user secret id -* dotnet build // build -* dotnet run // start the bot -* It will start a web server and listening at http://localhost:3979. - -### Test bot -* You can set you emulator to connect to http://localhost:3979/api/messages. - diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/readme.md b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/readme.md deleted file mode 100644 index bbbe520a40..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/readme.md +++ /dev/null @@ -1,58 +0,0 @@ - -# How to update the schema file -Once the bot has been setup with Composer and we wish to make changes to the schema, the first step in this process is to eject the runtime through the `Runtime Config` in Composer. The ejected runtime folder will broadly have the following structure - -``` -bot - /bot.dialog - /language-generation - /language-understanding - /dialogs - /customized-dialogs - /runtime - /azurewebapp - /azurefunctions - /schemas - sdk.schema -``` - -### Setup bfdialog tool (Prerequisite) -The bfdialog is part of our suite of botframework tools and helps merge partial schemas into a single consolidated schema - -##### To point npm to nightly builds -``` -npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/ -``` -##### To install BF tool: -``` -npm i -g @microsoft/botframework-cli -``` - -##### To install bf dialog plugin -``` -bf plugins:install @microsoft/bf-dialog -``` - -## Adding Custom Actions to your Composer bot -**NOTE: These steps assume you are using azurewebapp as your deployment solution. Replicating it on azurefunctions would be similar -** -- In this tutorial, we will be going over the steps to include a custom action `MultiplyDialog` that multiplies two numbers passed as inputs. Note that the ejected runtime should contain a `customaction` folder that has this sample. - -- Navigate to the csproj file inside the `runtime` folder (bot/runtime/azurewebapp/Microsoft.BotFramework.Composer.WebApp.csproj) and include a project reference to the customaction project like ``. - -- Then Uncomment line 28 and 139 in azurewebapp/Startup.cs file so as to register this action. -``` -using Microsoft.BotFramework.Composer.CustomAction; -// This is for custom action component registration. -ComponentRegistration.Add(new CustomActionComponentRegistration()); -``` - -- Run the command `dotnet build` on the azurewebapp project to verify if it passes build after adding custom actions to it. - -- Navigate to to the `Schemas (bot/runtime/azurewebapp/Schemas)` folder and then run the command `sh update.sh`. - -- Validate that the partial schema (MultiplyDialog.schema inside customaction/Schema) has been appended to the default sdk.schema file to generate one single consolidated sdk.schema file. - -- Copy the newly generated sdk.schema into the `schemas (bot/schemas)` folder at the root of the ejected runtime. - -The above steps should have generated a new sdk.schema file inside `schemas` folder for Composer to use. Reload the bot and you should be able to include your new custom action! diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/sdk.schema deleted file mode 100644 index 1a7b2fd24b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/sdk.schema +++ /dev/null @@ -1,8850 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/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.ChoiceInput" - }, - { - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "$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.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.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.TemperatureEntityRecognizer" - }, - { - "$ref": "#/definitions/Microsoft.TemplateEngineLanguageGenerator" - }, - { - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "$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 ActivityTemplate", - "type": "object", - "required": [ - "template", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to use to create the activity", - "type": "string" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ActivityTemplate" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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.IEntityRecognizer)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AgeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Ask": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.SendActivity)" - ], - "title": "Send Activity to Ask a question", - "description": "This is an action which sends an activity to the user when a response is expected", - "type": "object", - "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.", - "type": "array", - "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" - ] - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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.", - "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" - }, - { - "$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" - }, - { - "$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", - "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", - "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" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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" - ], - "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", - "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", - "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.ChoiceInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "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" - ], - "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", - "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.IEntityRecognizer)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ConfirmationEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ContinueLoop" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CrossTrainedRecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.CurrencyEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DateTimeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DateTimeInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "defaultLocale": { - "$ref": "#/definitions/stringExpression", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "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/stringExpression", - "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", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DebugBreak" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "required": [ - "activityId", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "required": [ - "property", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property to delete." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DeleteProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.DimensionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "required": [ - "changeType", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "oneOf": [ - { - "type": "string", - "title": "Standard change", - "description": "Standard change types.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EditActions" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "required": [ - "itemsProperty", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "title": "Type of change", - "description": "Type of change to the array in memory.", - "oneOf": [ - { - "type": "string", - "title": "Enum", - "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.IEntityRecognizer)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EmailEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "required": [ - "eventName", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "eventName": { - "$role": "expression", - "title": "Event name", - "description": "Name of the event to emit.", - "oneOf": [ - { - "type": "string", - "title": "Built-in event", - "description": "Standard event type.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - { - "type": "string", - "title": "Custom event", - "description": "Custom event type", - "pattern": "^(?!(beginDialog$|resumeDialog$|repromptDialog$|cancelDialog$|endDialog$|activityReceived$|recognizedIntent$|unknownIntent$|actionsStarted$|actionsSaved$|actionsEnded$|actionsResumed))(\\S){1}.*" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "eventValue": { - "$ref": "#/definitions/valueExpression", - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$ref": "#/definitions/booleanExpression", - "title": "Bubble event", - "description": "If true this event is passed on to 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", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.EndTurn" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.FirstSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "required": [ - "itemsProperty", - "actions", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "itemsProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to execute for each page. Use '$foreach.page' to access each page.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "pageIndex": { - "$ref": "#/definitions/stringExpression", - "title": "Index property", - "description": "Property that holds the index of the page.", - "default": "dialog.foreach.pageindex" - }, - "page": { - "$ref": "#/definitions/stringExpression", - "title": "Page property", - "description": "Property that holds the value of the page.", - "default": "dialog.foreach.page" - }, - "pageSize": { - "$ref": "#/definitions/integerExpression", - "title": "Page size", - "description": "Number of items in each page.", - "default": 10 - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ForeachPage" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "activityId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "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 Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GetConversationMembers" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "required": [ - "actionId", - "$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" - ] - }, - "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.IEntityRecognizer)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.GuidEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.HashtagEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "required": [ - "url", - "method", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$ref": "#/definitions/stringExpression", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$ref": "#/definitions/valueExpression", - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$ref": "#/definitions/stringExpression", - "title": "Result property", - "description": "A property to store the result of this action. The result can include any of the 4 properties from the HTTP response: statusCode, reasonPhrase, content, and headers. If the content is JSON it will be a deserialized object. The values can be accessed via .content for example.", - "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" - ], - "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" - } - ] - }, - "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.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" - }, - { - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginSkill" - }, - { - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "$ref": "#/definitions/Microsoft.CancelDialog" - }, - { - "$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.TraceActivity" - }, - { - "$ref": "#/definitions/Microsoft.UpdateActivity" - } - ] - }, - "Microsoft.IEntityRecognizer": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Components which derive from EntityRecognizer.", - "type": "object", - "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" - } - ] - }, - "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" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Components which derive from TextTemplate class", - "$role": "interface", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/Microsoft.TextTemplate" - } - ] - }, - "Microsoft.ITrigger": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "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.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.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.", - "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" - ], - "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", - "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.IEntityRecognizer)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.IpEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": { - "type": "array", - "title": "Per-locale policy", - "description": "Language policy per locale.", - "items": { - "type": "string", - "title": "Locale", - "description": "Locale like en-us." - } - }, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.LanguagePolicy" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LogAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Log to console", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "type": "object", - "required": [ - "text", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "text": { - "$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" - ], - "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." - }, - "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": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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.IEntityRecognizer)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MentionEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MostSpecificSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MultiLanguageRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "languagePolicy": { - "$kind": "Microsoft.LanguagePolicy", - "type": "object", - "title": "Language policy", - "description": "Defines fall back languages to try per user input language.", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - "recognizers": { - "type": "object", - "title": "Recognizers", - "description": "Map of language -> Recognizer", - "additionalProperties": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.MultiLanguageRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "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.IEntityRecognizer)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.NumberRangeEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "required": [ - "connectionName", - "$kind" - ], - "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" - ], - "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", - "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", - "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)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid 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", - "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" - ], - "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", - "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" - ], - "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.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" - ], - "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" - ], - "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.", - "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" - ], - "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", - "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" - ], - "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" - ], - "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.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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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", - "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" - ], - "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 and if none of the 'on intent recognition' triggers match recognized intent.", - "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.OnUnknownIntent" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OrdinalEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PercentageEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.PhoneNumberEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$ref": "#/definitions/stringExpression", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$ref": "#/definitions/stringExpression", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "noAnswer": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Fallback answer", - "description": "Default answer to return when none found in KB.", - "default": "Sorry, I did not find an answer.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "threshold": { - "$ref": "#/definitions/numberExpression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "default": 0.3 - }, - "activeLearningCardTitle": { - "$ref": "#/definitions/stringExpression", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$ref": "#/definitions/stringExpression", - "title": "Card no match text", - "description": "Text for no match option.", - "default": "None of the above." - }, - "cardNoMatchResponse": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Card no match response", - "description": "Custom response when no match option was selected.", - "default": "Thanks for the feedback.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "strictFilters": { - "$ref": "#/definitions/arrayExpression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "type": "object", - "title": "Metadata filter", - "description": "Metadata filter.", - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of filter property.", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "description": "Value to filter on.", - "maximum": 100 - } - } - } - }, - "top": { - "$ref": "#/definitions/numberExpression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "default": 3 - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "$ref": "#/definitions/stringExpression", - "title": "Ranker Type", - "description": "Type of Ranker.", - "oneOf": [ - { - "title": "Standard ranker", - "description": "Standard ranker types.", - "enum": [ - "default", - "questionOnly", - "autoSuggestQuestion" - ], - "default": "default" - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$ref": "#/definitions/stringExpression", - "title": "KnowledgeBase Id", - "description": "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" - ] - }, - "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": "IsTest", - "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" - } - ] - }, - "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": "QnARequestContext", - "description": "Context to use for ranking." - }, - "qnaId": { - "$ref": "#/definitions/integerExpression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.QnAMakerRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "seed": { - "type": "integer", - "title": "Random seed", - "description": "Random seed to start random number generation." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RandomSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "type": "object", - "required": [ - "recognizers", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "recognizers": { - "type": "array", - "title": "Recognizers", - "description": "List of Recognizers defined for this set.", - "items": { - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RecognizerSet" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "required": [ - "name", - "pattern", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "intents": { - "type": "array", - "title": "RegEx patterns to intents", - "description": "Collection of patterns to match for an intent.", - "items": { - "type": "object", - "title": "Pattern", - "description": "Intent and regex pattern.", - "properties": { - "intent": { - "type": "string", - "title": "Intent", - "description": "The intent name." - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "The regular expression pattern." - } - } - } - }, - "entities": { - "type": "array", - "title": "Entity recognizers", - "description": "Collection of entity recognizers to use.", - "items": { - "$kind": "Microsoft.IEntityRecognizer", - "$ref": "#/definitions/Microsoft.IEntityRecognizer" - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.RegexRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "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.", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "dialog": { - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "pattern": "^(?!(=)).*", - "title": "Dialog", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=settings.dialogId" - ] - } - ], - "title": "Dialog name", - "description": "Name of the dialog to call." - }, - "options": { - "$ref": "#/definitions/objectExpression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "type": "string", - "title": "Options", - "description": "Options for replacing dialog." - } - }, - "activityProcessed": { - "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "default": true - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ReplaceDialog" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.ResourceMultiLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Resource Multi-Language Generator", - "description": "MultiLanguage Generator which is bound to resource by resource Id.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "resourceId": { - "type": "string", - "title": "Resource Id", - "description": "Resource which is the root language generator. Other generaters with the same name and language suffix will be loaded into this generator and used based on the Language Policy.", - "default": "dialog.result" - }, - "languagePolicy": { - "type": "object", - "title": "Language Policy", - "description": "Set alternate language policy for this generator. If not set, the global language policy will be used." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.ResourceMultiLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/stringExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "title": "Assignment", - "description": "Property assignment.", - "properties": { - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperties" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "required": [ - "property", - "value", - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "property": { - "$ref": "#/definitions/stringExpression", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SetProperty" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$ref": "#/definitions/stringExpression", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "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" - ], - "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" - ], - "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.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Temperature Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemperatureEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TemplateEngineLanguageGenerator": { - "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Template Multi-Language Generator", - "description": "Template Generator which allows only inline evaluation of templates.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional generator ID." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TemplateEngineLanguageGenerator" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TextInput": { - "$role": [ - "implements(Microsoft.IDialog)", - "extends(Microsoft.InputDialog)" - ], - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "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" - ], - "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.TraceActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send a TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - true, - "=user.age > 3" - ] - }, - "name": { - "$ref": "#/definitions/stringExpression", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$ref": "#/definitions/stringExpression", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$ref": "#/definitions/stringExpression", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$ref": "#/definitions/valueExpression", - "title": "Value", - "description": "Property that holds the value to send as trace activity." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TraceActivity" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TrueSelector" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$ref": "#/definitions/booleanExpression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "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.IEntityRecognizer)", - "title": "Confirmation Url Recognizer", - "description": "Recognizer which recognizes urls.", - "type": "object", - "required": [ - "$kind" - ], - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.UrlEntityRecognizer" - }, - "$designer": { - "title": "Designer information", - "type": "object", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "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": { - "type": "string", - "title": "Expression", - "description": "Expression starting with =.", - "pattern": "^=.*\\S.*", - "examples": [ - "=user.name" - ] - }, - "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": [ - "=..." - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/update.sh b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/update.sh deleted file mode 100644 index c9f8544cdb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Schemas/update.sh +++ /dev/null @@ -1,2 +0,0 @@ -cd .. -bf dialog:merge *.csproj -o ./schemas/sdk.schema -v diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/build_runtime.ps1 b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/build_runtime.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -if ((dotnet --version) -lt '3.1.0') { - throw "! dotnet core 3.1 is required, please refer following documents for help. https://dotnet.microsoft.com/download/dotnet-core/3.1" - Break -} - -# This command need dotnet core more than 3.0 -dotnet user-secrets init - -# Merge all streams into stdout -$result = dotnet build *>&1 -# Evaluate success/failure -if($LASTEXITCODE -ne 0) -{ - # Failed, you can reconstruct stderr strings with: - $ErrorString = $result -join [System.Environment]::NewLine - throw $ErrorString -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/build_runtime.sh b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/build_runtime.sh +++ /dev/null @@ -1,11 +0,0 @@ -versionString=`dotnet --version` -function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } -if version_lt $versionString "3.1.0"; -then - echo "! dotnet core 3.1 is required, please refer following documents for help. -https://dotnet.microsoft.com/download/dotnet-core/3.1" - exit 1 -else - dotnet user-secrets init - dotnet build -fi diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/create.ps1 b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/create.ps1 +++ /dev/null @@ -1,211 +0,0 @@ -Param( - [string] $name, - [string] $location, - [string] $appId, - [string] $appPassword, - [string] $environment, - [string] $luisAuthoringKey, - [string] $projDir = $(Get-Location), - [string] $logFile = $(Join-Path $PSScriptRoot .. "create_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6){ - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -if (-not (Test-Path (Join-Path $projDir 'appsettings.deployment.json'))) -{ - Write-Host "! Could not find an 'appsettings.deployment.json' file in the current directory." -ForegroundColor DarkRed - Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" -} - -if (-not $environment) -{ - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $location) { - $location = Read-Host "? Azure resource group region" -} - -if (-not $appPassword) { - $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" -} - -if (-not $appId) { - # Create app registration - $app = (az ad app create ` - --display-name $name ` - --password `"$($appPassword)`" ` - --available-to-other-tenants ` - --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` - --output json) - - # Retrieve AppId - if ($app) { - $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId - } - - if(-not $appId) { - Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta - Break - } -} - -$shouldCreateAuthoringResource = $true - -# Use pre-exsisting luis authoring key -if ($luisAuthoringKey) { - $shouldCreateAuthoringResource = $false -} - -$resourceGroup = "$name-$environment" -$servicePlanName = "$name-$environment" - -# Get timestamp -$timestamp = Get-Date -f MMddyyyyHHmmss - -# Create resource group -Write-Host "> Creating resource group ..." -(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null - -# Deploy Azure services -Write-Host "> Validating Azure deployment ..." -$validation = az group deployment validate ` - --resource-group $resourcegroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - -if ($validation) { - $validation >> $logFile - $validation = $validation | ConvertFrom-Json - - if (-not $validation.error) { - Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow - $deployment = az group deployment create ` - --name $timestamp ` - --resource-group $resourceGroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - } - else { - Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - if ($validation.error.details -and $validation.error.details[0].code -eq "CanNotCreateMultipleFreeAccounts") - { - Write-Host "! The subscription is exceeding the maximum number of allowed LuisAuthoringAccounts. You already have a luis authoring resource created, please get your luis authoring key and retry with the following command:" -ForegroundColor DarkRed - Write-Host "pwsh ./Scripts/create.ps1 -name $name -environment $environment -location $location -appPassword $appPassword -luisAuthoringKey [YourLuisAuthoringKey]" -ForegroundColor Green - } - - Break - } -} - - -# Get deployment outputs -$outputs = (az group deployment show ` - --name $timestamp ` - --resource-group $resourceGroup ` - --output json) 2>> $logFile - -# If it succeeded then we perform the remainder of the steps -if ($outputs) -{ - # Log and convert to JSON - $outputs >> $logFile - $outputs = $outputs | ConvertFrom-Json - if ($outputs.properties.error) { - Write-Host "! Deployment failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($outputs.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - Break - } - - $outputs = $outputs.properties.outputs - $outputMap = @{} - $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } - - # Update appsettings.deployment.json - Write-Host "> Updating appsettings.deployment.json ..." - if (Test-Path $(Join-Path $projDir appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $projDir appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppId' -Value $appId - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppPassword' -Value $appPassword - - $settings | Add-Member -Type NoteProperty -Force -Name 'bot' -Value "ComposerDialogs" - - foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.deployment.json) - - Write-Host "> Done." - Write-Host "- App Id: $appId" - Write-Host "- App Password: $appPassword" - Write-Host "- Resource Group: $resourceGroup" - Write-Host "- ServicePlan: $servicePlanName" - Write-Host "- Bot Name: $name" - Write-Host "- Web App Name : $name" -} -else -{ - # Check for failed deployments - $operations = az group deployment operation list -g $resourceGroup -n $timestamp --output json 2>> $logFile | Out-Null - - if ($operations) { - $operations = $operations | ConvertFrom-Json - $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } - if ($failedOperations) { - foreach ($operation in $failedOperations) { - switch ($operation.properties.statusmessage.error.code) { - "MissingRegistrationForLocation" { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed - Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta - } - default { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." - Write-Host "! Code: $($operation.properties.statusMessage.error.code)." - Write-Host "! Message: $($operation.properties.statusMessage.error.message)." - } - } - } - } - } - else { - Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } - - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - Break -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/deploy.ps1 deleted file mode 100644 index 3f510dfb8f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Scripts/deploy.ps1 +++ /dev/null @@ -1,272 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path Microsoft.BotFramework.Composer.WebApp.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Init user secret id -dotnet user-secrets init - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - - -if (-not $botPath) { - # If don't provide bot path, then try to copy all dialogs except the runtime folder in parent folder to the publishing folder (bin\Realse\ Folder) - $botPath = '..' -} - -$botPath = $(Join-Path $botPath '*') -Write-Host "Publishing dialogs from external bot project: $($botPath)" -Copy-Item -Path (Get-Item -Path $botPath -Exclude ('runtime', 'generated')).FullName -Destination $remoteBotPath -Recurse -Force -Container - -# Try to get luis config from appsettings -$settings = Get-Content $(Join-Path $projFolder appsettings.deployment.json) | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisEndpointKey) { - $luisEndpointKey = $luisSettings.endpointKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - - Set-Location -Path $remoteBotPath - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - $noneEmptyModels = [System.Collections.ArrayList]@() - - foreach ($model in $models) { - $stringContent = Get-Content $model | Out-String - if ($stringContent.Length -gt 0) { - $noneEmptyModels.Add($model) - } - } - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $noneEmptyModels - } - - $luString = $noneEmptyModels | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # Execute bf luis:build command - if (Get-Command bf -errorAction SilentlyContinue) { - $customizedSettings = Get-Content $(Join-Path $remoteBotPath settings appsettings.json) | ConvertFrom-Json - $customizedEnv = $customizedSettings.luis.environment - - # create generated folder if not exists - if (!(Test-Path generated)) { - New-Item -ItemType Directory -Force -Path generated - } - - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog --out .\generated --suffix $customizedEnv -f --region $luisAuthoringRegion - } - else { - Write-Host "bf luis:build does not exist, use the following command to install:" - Write-Host "1. npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/" - Write-Host "2. npm install -g @microsoft/botframework-cli/4.9.0-preview.121555" - Write-Host "3. npm config set registry http://registry.npmjs.org" - Break - } - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - # change setting file in publish folder - if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - $luisConfig["endpointKey"] = $luisEndpointKey - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -# Enable all features to true by default -$featureConfig = @{ } -$featureConfig["UseTelementryLoggerMiddleware"] = $true -$featureConfig["UseTranscriptLoggerMiddleware"] = $true -$featureConfig["UseShowTypingMiddleware"] = $true -$featureConfig["UseInspectionMiddleware"] = $true -$featureConfig["UseCosmosDb"] = $true - -if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json -} -else { - $settings = New-Object PSObject -} - -$settings | Add-Member -Type NoteProperty -Force -Name 'feature' -Value $featureConfig -$settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Startup.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Startup.cs deleted file mode 100644 index fbdd6a153c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/Startup.cs +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.ApplicationInsights; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.BotFramework.Composer.Core; -using Microsoft.BotFramework.Composer.Core.Settings; - -//using Microsoft.BotFramework.Composer.CustomAction; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - -namespace Microsoft.BotFramework.Composer.WebAppTemplates -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, BotSettings settings) - { - if (ConfigSectionValid(settings.BlobStorage.ConnectionString) && ConfigSectionValid(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - } - - public void ConfigureShowTypingMiddleWare(BotFrameworkAdapter adapter, BotSettings settings) - { - if (settings.Feature.UseShowTypingMiddleware) - { - adapter.Use(new ShowTypingMiddleware()); - } - } - - public void ConfigureInspectionMiddleWare(BotFrameworkAdapter adapter, BotSettings settings, IStorage storage) - { - if (settings.Feature.UseInspectionMiddleware) - { - adapter.Use(new InspectionMiddleware(new InspectionState(storage))); - } - } - - public IStorage ConfigureStorage(BotSettings settings) - { - IStorage storage; - if (ConfigSectionValid(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - storage = new MemoryStorage(); - } - - return storage; - } - - public BotFrameworkHttpAdapter GetBotAdapter(IStorage storage, BotSettings settings, UserState userState, ConversationState conversationState, IServiceProvider s, TelemetryInitializerMiddleware telemetryInitializerMiddleware) - { - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - - adapter - .UseStorage(storage) - .UseBotState(userState, conversationState) - .Use(new RegisterClassMiddleware(Configuration)) - .Use(telemetryInitializerMiddleware); - - // Configure Middlewares - ConfigureTranscriptLoggerMiddleware(adapter, settings); - ConfigureInspectionMiddleWare(adapter, settings, storage); - ConfigureShowTypingMiddleWare(adapter, settings); - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - ComponentRegistration.Add(new QnAMakerComponentRegistration()); - ComponentRegistration.Add(new LuisComponentRegistration()); - - // This is for custom action component registration. - //ComponentRegistration.Add(new CustomActionComponentRegistration()); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Register telemetry client, initializers and middleware - services.AddApplicationInsightsTelemetry(settings.ApplicationInsights.InstrumentationKey); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(sp => - { - var telemetryClient = sp.GetService(); - return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: settings.Telemetry.LogPersonalInformation); - }); - services.AddSingleton(sp => - { - var httpContextAccessor = sp.GetService(); - var telemetryLoggerMiddleware = sp.GetService(); - return new TelemetryInitializerMiddleware(httpContextAccessor, telemetryLoggerMiddleware, settings.Telemetry.LogActivities); - }); - - var storage = ConfigureStorage(settings); - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - services.AddSingleton(userState); - services.AddSingleton(conversationState); - - // Configure bot loading path - var botDir = settings.Bot; - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - var defaultLocale = Configuration.GetValue("defaultLocale") ?? "en-us"; - - services.AddSingleton(resourceExplorer); - - services.AddSingleton((s) => GetBotAdapter(storage, settings, userState, conversationState, s, s.GetService())); - - var removeRecipientMention = settings?.Feature?.RemoveRecipientMention ?? false; - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog, - defaultLocale, - removeRecipientMention)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseWebSockets(); - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private static bool ConfigSectionValid(string val) - { - return !string.IsNullOrEmpty(val) && !val.StartsWith('<'); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.Deployment.json deleted file mode 100644 index 5b9a266f9e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.Deployment.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "ComposerDialogs", - "root": "ComposerDialogs" -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.Development.json deleted file mode 100644 index edb1022967..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.Development.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "bot": "../../", - "root": "../../" -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.json deleted file mode 100644 index eea4c3777e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/appsettings.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false - }, - "microsoftAppId": "", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/packages/packages.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/azurewebapp/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/.gitignore b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/ComposerBot.cs deleted file mode 100644 index 6dec73aebe..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/ComposerBot.cs +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Security.Claims; -using System.Security.Principal; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Bot.Schema; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - private readonly IBotTelemetryClient telemetryClient; - private readonly string defaultLocale; - private readonly bool removeRecipientMention; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, IBotTelemetryClient telemetryClient, string rootDialog, string defaultLocale, bool removeRecipientMention = false) - { - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - this.defaultLocale = defaultLocale; - this.telemetryClient = telemetryClient; - this.removeRecipientMention = removeRecipientMention; - - LoadRootDialogAsync(); - this.dialogManager.InitialTurnState.Set(skillClient); - this.dialogManager.InitialTurnState.Set(conversationIdFactory); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - AdaptiveDialog rootDialog = (AdaptiveDialog)this.dialogManager.RootDialog; - if (turnContext.TurnState.Get(BotAdapter.BotIdentityKey) is ClaimsIdentity claimIdentity && SkillValidation.IsSkillClaim(claimIdentity.Claims)) - { - rootDialog.AutoEndDialog = true; - } - else - { - rootDialog.AutoEndDialog = false; - } - - if (this.removeRecipientMention && turnContext?.Activity?.Type == "message") - { - turnContext.Activity.RemoveRecipientMention(); - } - - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration() - .UseLanguagePolicy(new LanguagePolicy(defaultLocale)); - - if (telemetryClient != null) - { - dialogManager.UseTelemetry(this.telemetryClient); - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/LuisConfig.cs deleted file mode 100644 index bc2ff6c834..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.Core -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/LuisConfigAdapter.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/LuisConfigAdapter.cs deleted file mode 100644 index c879fd1494..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/LuisConfigAdapter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.BotFramework.Composer.Core -{ - public static class LuisConfigAdapter - { - public static IConfigurationBuilder UseLuisConfigAdapter(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var settings = new Dictionary(); - settings["environment"] = configuration.GetValue("luis:environment"); - settings["region"] = configuration.GetValue("luis:authoringRegion"); - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Microsoft.BotFramework.Composer.Core.csproj b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Microsoft.BotFramework.Composer.Core.csproj deleted file mode 100644 index 2afb4a6f7c..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Microsoft.BotFramework.Composer.Core.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - netstandard2.0 - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Microsoft.BotFramework.Composer.Core.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BlobStorageConfiguration.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BlobStorageConfiguration.cs deleted file mode 100644 index e6ab40402f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BlobStorageConfiguration.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BotFeatureSettings.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BotFeatureSettings.cs deleted file mode 100644 index 1073ae5786..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BotFeatureSettings.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotFeatureSettings - { - // Use ShowTypingMiddleware - public bool UseShowTypingMiddleware { get; set; } - - // Use InspectionMiddleware - public bool UseInspectionMiddleware { get; set; } - - // Use RemoveRecipientMention Activity Extensions - public bool RemoveRecipientMention { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BotSettings.cs deleted file mode 100644 index dcb6394ed3..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/Settings/BotSettings.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.BotFramework.Composer.Core.Settings -{ - public class BotSettings - { - public BotFeatureSettings Feature { get; set; } - - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration ApplicationInsights { get; set; } - - public AdditionalTelemetryConfiguration Telemetry { get; set; } - - public string Bot { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - - public class AdditionalTelemetryConfiguration - { - public bool LogPersonalInformation { get; set; } - - public bool LogActivities { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/SkillConversationIdFactory.cs deleted file mode 100644 index dc1db5a1ce..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/core/SkillConversationIdFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Newtonsoft.Json; - -namespace Microsoft.BotFramework.Composer.Core -{ - /// - /// A that uses an in memory - /// to store and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly ConcurrentDictionary _conversationRefs = new ConcurrentDictionary(); - - public override Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - var skillConversationReference = new SkillConversationReference - { - ConversationReference = options.Activity.GetConversationReference(), - OAuthScope = options.FromBotOAuthScope - }; - var key = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{skillConversationReference.ConversationReference.Conversation.Id}-{skillConversationReference.ConversationReference.ChannelId}-skillconvo"; - _conversationRefs.GetOrAdd(key, JsonConvert.SerializeObject(skillConversationReference)); - return Task.FromResult(key); - } - - public override Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - var conversationReference = JsonConvert.DeserializeObject(_conversationRefs[skillConversationId]); - return Task.FromResult(conversationReference); - } - - public override Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - _conversationRefs.TryRemove(skillConversationId, out _); - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Action/MultiplyDialog.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Action/MultiplyDialog.cs deleted file mode 100644 index 81768d1b48..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Action/MultiplyDialog.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Threading; -using System.Threading.Tasks; -using AdaptiveExpressions.Properties; -using Microsoft.Bot.Builder.Dialogs; -using Newtonsoft.Json; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - /// - /// Custom command which takes takes 2 data bound arguments (arg1 and arg2) and multiplies them returning that as a databound result. - /// - public class MultiplyDialog : Dialog - { - [JsonConstructor] - public MultiplyDialog([CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) - : base() - { - // enable instances of this command as debug break point - this.RegisterSourceLocation(sourceFilePath, sourceLineNumber); - } - - [JsonProperty("$kind")] - public const string Kind = "MultiplyDialog"; - - /// - /// Gets or sets memory path to bind to arg1 (ex: conversation.width). - /// - /// - /// Memory path to bind to arg1 (ex: conversation.width). - /// - [JsonProperty("arg1")] - public NumberExpression Arg1 { get; set; } - - /// - /// Gets or sets memory path to bind to arg2 (ex: conversation.height). - /// - /// - /// Memory path to bind to arg2 (ex: conversation.height). - /// - [JsonProperty("arg2")] - public NumberExpression Arg2 { get; set; } - - /// - /// Gets or sets caller's memory path to store the result of this step in (ex: conversation.area). - /// - /// - /// Caller's memory path to store the result of this step in (ex: conversation.area). - /// - [JsonProperty("resultProperty")] - public StringExpression ResultProperty { get; set; } - - public override Task BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken)) - { - var arg1 = Arg1.GetValue(dc.State); - var arg2 = Arg2.GetValue(dc.State); - - var result = Convert.ToInt32(arg1) * Convert.ToInt32(arg2); - if (this.ResultProperty != null) - { - dc.State.SetValue(this.ResultProperty.GetValue(dc.State), result); - } - - return dc.EndDialogAsync(result: result, cancellationToken: cancellationToken); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/CustomAction.sln b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/CustomAction.sln deleted file mode 100644 index 2a2bdfab34..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/CustomAction.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30011.22 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "customaction", "customaction.csproj", "{2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2B5E9A3A-880D-4DEC-B76E-2AFDA3F05597}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {83C7CDB7-7F32-4E64-9D6D-7752806C37D6} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/CustomActionComponentRegistration.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/CustomActionComponentRegistration.cs deleted file mode 100644 index d14abbe6b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/CustomActionComponentRegistration.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Newtonsoft.Json; -using System.Collections.Generic; - -namespace Microsoft.BotFramework.Composer.CustomAction -{ - public class CustomActionComponentRegistration : ComponentRegistration, IComponentDeclarativeTypes - { - public IEnumerable GetDeclarativeTypes(ResourceExplorer resourceExplorer) - { - // Actions - yield return new DeclarativeType(MultiplyDialog.Kind); - } - - public IEnumerable GetConverters(ResourceExplorer resourceExplorer, SourceContext sourceContext) - { - yield break; - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj deleted file mode 100644 index 499b0304e2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Microsoft.BotFramework.Composer.CustomAction.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Library - netcoreapp3.1 - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Schemas/MultiplyDialog.schema b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Schemas/MultiplyDialog.schema deleted file mode 100644 index e8e651e601..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/customaction/Schemas/MultiplyDialog.schema +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botframework-sdk/master/schemas/component/component.schema", - "$role": "implements(Microsoft.IDialog)", - "title": "Multiply", - "description": "This will return the result of arg1*arg2", - "type": "object", - "additionalProperties": false, - "properties": { - "arg1": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg1", - "description": "Value from callers memory to use as arg 1" - }, - "arg2": { - "$ref": "schema:#/definitions/integerExpression", - "title": "Arg2", - "description": "Value from callers memory to use as arg 2" - }, - "resultProperty": { - "$ref": "schema:#/definitions/stringExpression", - "title": "Result", - "description": "Value from callers memory to store the result" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ActionsTests.cs deleted file mode 100644 index 0767f86d7e..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ActionsTests.cs +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ControllingConversationTests.cs deleted file mode 100644 index 8922c9b099..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ControllingConversationTests.cs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .Send("08") - .AssertReply("In continue loop, which only outputs dual.") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 3 value: 4") - .AssertReply("index: 5 value: 6") - .AssertReply("In break loop, which breaks when index > 2") - .AssertReply("index: 0 value: 1") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 2 value: 3") - .AssertReply("done") - .Send("09") - .AssertReply("counter: 1") - .AssertReply("counter: 2") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/InputsTests.cs deleted file mode 100644 index f0ef055d87..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/InputsTests.cs +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/MessageTests.cs deleted file mode 100644 index 09b27ca711..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/MessageTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj deleted file mode 100644 index e444ece921..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/Microsoft.BotFramework.Composer.Tests.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - ..\core\Microsoft.BotFramework.Composer.Core.ruleset - - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ToDoBotTests.cs deleted file mode 100644 index 00660fc3b5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/runtime/tests/ToDoBotTests.cs +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\Composer\plugins\samples\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - - // register components. - ComponentRegistration.Add(new DialogsComponentRegistration()); - ComponentRegistration.Add(new DeclarativeComponentRegistration()); - ComponentRegistration.Add(new AdaptiveComponentRegistration()); - ComponentRegistration.Add(new LanguageGenerationComponentRegistration()); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseBotState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json deleted file mode 100644 index 86871bc405..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/function-template-with-preexisting-rg.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "functionapp", - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "kind": "functionapp", - "httpsOnly": true - }, - "resources": [ - { - "name": "appsettings", - "type": "config", - "apiVersion": "2015-08-01", - "dependsOn": [ - "[concat('Microsoft.Web/Sites/', variables('webAppName'))]" - ], - "properties": { - "FUNCTIONS_EXTENSION_VERSION": "~3", - "FUNCTIONS_WORKER_RUNTIME": "dotnet", - "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components/', parameters('appInsightsName')), '2015-05-01').InstrumentationKey]", - "MicrosoftAppId": "[parameters('appId')]", - "MicrosoftAppPassword": "[parameters('appSecret')]" - } - } - ] - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index b6ede74dd1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,388 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "useAppInsights": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateLuisResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "apiVersion": "2018-02-01", - "name": "1d41002f-62a1-49f3-bd43-2f3f32a19cbb", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - }, - "condition": "[parameters('useAppInsights')]" - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - }, - "condition": "[parameters('shouldCreateLuisResource')]" - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[if(parameters('useAppInsights'), reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey, '')]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[if(parameters('shouldCreateLuisResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1, '')]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/package.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/package.json deleted file mode 100644 index 256b826ec5..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "azure_provision", - "version": "1.0.0", - "description": "provision to azure cloud", - "main": "provisionComposer.js", - "license": "MIT", - "scripts": { - "start": "node provisionComposer.js" - }, - "dependencies": { - "@azure/arm-resources": "^2.1.0", - "@azure/graph": "^5.0.1", - "@azure/ms-rest-nodeauth": "^3.0.3", - "@types/fs-extra": "^8.1.0", - "chalk": "^4.0.0", - "fs-extra": "^8.1.0", - "minimist": "^1.2.5", - "ora": "^4.0.4", - "request-promise": "^4.2.5" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/provisionComposer.js b/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/provisionComposer.js deleted file mode 100644 index 96149ffdfc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/scripts/provisionComposer.js +++ /dev/null @@ -1,599 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const chalk = require('chalk'); -const fs = require('fs-extra'); -const msRestNodeAuth = require('@azure/ms-rest-nodeauth'); -const argv = require('minimist')(process.argv.slice(2)); -const path = require('path'); -const rp = require('request-promise') -const { promisify } = require('util'); -const { GraphRbacManagementClient } = require('@azure/graph'); -const { ResourceManagementClient } = require('@azure/arm-resources'); -const readFile = promisify(fs.readFile); -const ora = require('ora'); - -const logger = msg => { - if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR) { - console.log(chalk.red(msg.message)); - } else if (msg.status === BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS) { - console.log(chalk.white(msg.message)); - } else { - console.log(chalk.green(msg.message)); - } -}; - -const usage = () => { - const options = [ - ['subscriptionId', 'Azure Subscription Id'], - ['name', 'Project Name'], - ['appPassword', '16 character password'], - ['environment', 'Environment name (Defaults to dev)'], - ['location', 'Azure Region (Defaults to westus)'], - ['appId', 'Microsoft App ID (Will create if absent)'], - ['tenantId', 'ID of your tenant if required (will choose first in list by default)'], - ['createLuisResource', 'Create a LUIS resource? Default true'], - ['createLuisAuthoringResource', 'Create a LUIS authoring resource? Default true'], - ['createCosmosDb', 'Create a CosmosDB? Default true'], - ['createStorage', 'Create a storage account? Default true'], - ['createAppInsights', 'Create an AppInsights resource? Default true'], - [ - 'customArmTemplate', - 'Path to runtime ARM template. By default it will use an Azure WebApp template. Pass `DeploymentTemplates/function-template-with-preexisting-rg.json` for Azure Functions or your own template for a custom deployment.', - ], - ]; - - const instructions = [ - ``, - chalk.bold('Provision Azure resources for use with Bot Framework Composer bots'), - `* This script will create a new resource group and the necessary Azure resources needed to operate a Bot Framework bot in the cloud.`, - `* Use this to create a publishing profile used in Composer's "Publish" toolbar.`, - ``, - chalk.bold(`Basic Usage:`), - chalk.greenBright(`node provisionComposer --subscriptionId=`) + - chalk.yellow('') + - chalk.greenBright(' --name=') + - chalk.yellow('') + - chalk.greenBright(' --appPassword=') + - chalk.yellow('<16 character password>'), - ``, - chalk.bold(`All options:`), - ...options.map(option => { - return chalk.greenBright('--' + option[0]) + '\t' + chalk.yellow(option[1]); - }), - ]; - - console.log(instructions.join('\n')); -}; - -// check for required parameters -if (Object.keys(argv).length === 0) { - return usage(); -} - -if (!argv.name || !argv.subscriptionId || !argv.appPassword) { - return usage(); -} - -// Get required fields from the arguments -const subId = argv.subscriptionId; -const name = argv.name.toString(); -const appPassword = argv.appPassword; - -// Get optional fields from the arguments -const environment = argv.environment || 'dev'; -const location = argv.location || 'westus'; -const appId = argv.appId; // MicrosoftAppId - generated if left blank - -// Get option flags -const createLuisResource = argv.createLuisResource == 'false' ? false : true; -const createLuisAuthoringResource = argv.createLuisAuthoringResource == 'false' ? false : true; -const createCosmosDb = argv.createCosmosDb == 'false' ? false : true; -const createStorage = argv.createStorage == 'false' ? false : true; -const createAppInsignts = argv.createAppInsignts == 'false' ? false : true; -var tenantId = argv.tenantId ? argv.tenantId : ''; - -const templatePath = - argv.customArmTemplate || path.join(__dirname, 'DeploymentTemplates', 'template-with-preexisting-rg.json'); - -const BotProjectDeployLoggerType = { - // Logger Type for Provision - PROVISION_INFO: 'PROVISION_INFO', - PROVISION_ERROR: 'PROVISION_ERROR', - PROVISION_WARNING: 'PROVISION_WARNING', - PROVISION_SUCCESS: 'PROVISION_SUCCESS', - PROVISION_ERROR_DETAILS: 'PROVISION_ERROR_DETAILS', -}; - -/** - * Create a Bot Framework registration - * @param {} graphClient - * @param {*} displayName - * @param {*} appPassword - */ -const createApp = async (graphClient, displayName, appPassword) => { - try { - const createRes = await graphClient.applications.create({ - displayName: displayName, - passwordCredentials: [ - { - value: appPassword, - startDate: new Date(), - endDate: new Date(new Date().setFullYear(new Date().getFullYear() + 2)), - }, - ], - availableToOtherTenants: true, - replyUrls: ['https://token.botframework.com/.auth/web/redirect'], - }); - return createRes; - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: err.body.message, - }); - return false; - } -}; - -/** - * Create an Azure resources group - * @param {} client - * @param {*} location - * @param {*} resourceGroupName - */ -const createResourceGroup = async (client, location, resourceGroupName) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Creating resource group ...`, - }); - const param = { - location: location, - }; - - return await client.resourceGroups.createOrUpdate(resourceGroupName, param); -}; - -/** - * Format parameters - * @param {} scope - */ -const pack = scope => { - return { - value: scope, - }; -}; - -const unpackObject = output => { - const unpacked = {}; - for (const key in output) { - const objValue = output[key]; - if (objValue.value) { - unpacked[key] = objValue.value; - } - } - return unpacked; -}; - -/** - * For more information about this api, please refer to this doc: https://docs.microsoft.com/en-us/rest/api/resources/Tenants/List - * @param {*} accessToken - */ -const getTenantId = async (accessToken) => { - if (!accessToken) { - throw new Error('Error: Missing access token. Please provide a non-expired Azure access token. Tokens can be obtained by running az account get-access-token'); - } - try { - const tenantUrl = `https://management.azure.com/tenants?api-version=2020-01-01`; - const options = { - headers: { Authorization: `Bearer ${accessToken}` }, - }; - const response = await rp.get(tenantUrl, options); - const jsonRes = JSON.parse(response); - if (jsonRes.value === undefined || (jsonRes.value && jsonRes.value.length === 0) || (jsonRes.value && jsonRes.value.length > 0 && jsonRes.value[0].tenantId === undefined)) { - throw new Error(`No tenants found in the account.`); - } - const selectedTenant = jsonRes.value.shift(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Using Tenant ${selectedTenant.displayName} - ID: ${selectedTenant.tenantId}`, - }); - // if alternatives exist, list htem - if (jsonRes.value.length > 0) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: chalk.yellow(` Note: You have access to multiple tenants. To specify an alternative, specify --tenantId=`), - }); - // list all available tenants - jsonRes.value.forEach((tenant) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: chalk.yellow(` * ${tenant.displayName} - ID: ${tenant.tenantId}`), - }); - }); - } - - return selectedTenant.tenantId; - } catch (err) { - throw new Error(`Get Tenant Id Failed, details: ${getErrorMesssage(err)}`); - } -} - -const getDeploymentTemplateParam = ( - appId, - appPwd, - location, - name, - shouldCreateAuthoringResource, - shouldCreateLuisResource, - useAppInsights, - useCosmosDb, - useStorage -) => { - return { - appId: pack(appId), - appSecret: pack(appPwd), - appServicePlanLocation: pack(location), - botId: pack(name), - shouldCreateAuthoringResource: pack(shouldCreateAuthoringResource), - shouldCreateLuisResource: pack(shouldCreateLuisResource), - useAppInsights: pack(useAppInsights), - useCosmosDb: pack(useCosmosDb), - useStorage: pack(useStorage), - }; -}; - -/** - * Validate the deployment using the Azure API - */ -const validateDeployment = async (client, resourceGroupName, deployName, templateParam) => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Validating Azure deployment ...', - }); - - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - return await client.deployments.validate(resourceGroupName, deployName, deployParam); -}; - -/** - * Using an ARM template, provision a bunch of resources - */ -const createDeployment = async (client, resourceGroupName, deployName, templateParam) => { - const templateFile = await readFile(templatePath, { encoding: 'utf-8' }); - const deployParam = { - properties: { - template: JSON.parse(templateFile), - parameters: templateParam, - mode: 'Incremental', - }, - }; - - return await client.deployments.createOrUpdate(resourceGroupName, deployName, deployParam); -}; - -/** - * Format the results into the expected shape - */ -const updateDeploymentJsonFile = async (client, resourceGroupName, deployName, appId, appPwd) => { - const outputs = await client.deployments.get(resourceGroupName, deployName); - if (outputs && outputs.properties && outputs.properties.outputs) { - const outputResult = outputs.properties.outputs; - const applicationResult = { - MicrosoftAppId: appId, - MicrosoftAppPassword: appPwd, - }; - const outputObj = unpackObject(outputResult); - - if (!createAppInsignts) { - delete outputObj.applicationInsights; - } - if (!createCosmosDb) { - delete outputObj.cosmosDb; - } - if (!createLuisAuthoringResource && !createLuisResource) { - delete outputObj.luis; - } - if (!createStorage) { - delete outputObj.blobStorage; - } - const result = {}; - Object.assign(result, outputObj, applicationResult); - return result; - } else { - return null; - } -}; - -const provisionFailed = msg => { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: chalk.bold('** Provision failed **'), - }); -}; - -const getErrorMesssage = (err) => { - if (err.body) { - if (err.body.error) { - if (err.body.error.details) { - const details = err.body.error.details; - let errMsg = ''; - for (let detail of details) { - errMsg += detail.message; - } - return errMsg; - } - else { - return err.body.error.message; - } - } - else { - return JSON.stringify(err.body, null, 2); - } - } - else { - return JSON.stringify(err, null, 2); - } -} - -/** - * Provision a set of Azure resources for use with a bot - */ -const create = async ( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource = true, - createLuisAuthoringResource = true, - createCosmosDb = true, - createStorage = true, - createAppInsignts = true -) => { - // If tenantId is empty string, get tenanId from API - if (!tenantId) { - const token = await creds.getToken(); - const accessToken = token.accessToken; - // the returned access token will almost surely have a tenantId. - // use this as the default if one isn't specified. - // otherwise, fetch a list and use the first, but print available options. - if (token.tenantId) { - tenantId = token.tenantId; - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Using Tenant ID: ${tenantId}`, - }); - } else { - tenantId = await getTenantId(accessToken); - } - } - - const graphCreds = new msRestNodeAuth.DeviceTokenCredentials( - creds.clientId, - tenantId, - creds.username, - 'graph', - creds.environment, - creds.tokenCache - ); - const graphClient = new GraphRbacManagementClient(graphCreds, tenantId, { - baseUri: 'https://graph.windows.net', - }); - - // If the appId is not specified, create one - if (!appId) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: '> Creating App Registration ...', - }); - - // create the app registration - const appCreated = await createApp(graphClient, name, appPassword); - if (appCreated === false) { - return provisionFailed(); - } - - // use the newly created app - appId = appCreated.appId; - } - - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Create App Id Success! ID: ${appId}`, - }); - - const resourceGroupName = `${name}-${environment}`; - - // timestamp will be used as deployment name - const timeStamp = new Date().getTime().toString(); - const client = new ResourceManagementClient(creds, subId); - - // Create a resource group to contain the new resources - try { - const rpres = await createResourceGroup(client, location, resourceGroupName); - } catch (err) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err) - }); - return provisionFailed(); - } - - // Caste the parameters into the right format - const deploymentTemplateParam = getDeploymentTemplateParam( - appId, - appPassword, - location, - name, - createLuisAuthoringResource, - createLuisResource, - createAppInsignts, - createCosmosDb, - createStorage - ); - - // Validate the deployment using the Azure API - const validation = await validateDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - - // Handle validation errors - if (validation.error) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error.message}`, - }); - if (validation.error.details) { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR_DETAILS, - message: JSON.stringify(validation.error.details, null, 2), - }); - } - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - - // Create the entire stack of resources inside the new resource group - // this is controlled by an ARM template identified in templatePath - logger({ - status: BotProjectDeployLoggerType.PROVISION_INFO, - message: `> Deploying Azure services (this could take a while)...`, - }); - const spinner = ora().start(); - try { - const deployment = await createDeployment(client, resourceGroupName, timeStamp, deploymentTemplateParam); - // Handle errors - if (deployment._response.status != 200) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Template is not valid with provided parameters. Review the log for more information.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Error: ${validation.error}`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `+ To delete this resource group, run 'az group delete -g ${resourceGroupName} --no-wait'`, - }); - return provisionFailed(); - } - } catch (err) { - spinner.fail(); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: getErrorMesssage(err) - }); - return provisionFailed(); - } - - spinner.succeed('Success!'); - - // Validate that everything was successfully created. - // Then, update the settings file with information about the new resources - const updateResult = await updateDeploymentJsonFile(client, resourceGroupName, timeStamp, appId, appPassword); - - // Handle errors - if (!updateResult) { - const operations = await client.deploymentOperations.list(resourceGroupName, timeStamp); - if (operations) { - const failedOperations = operations.filter( - value => value && value.properties && value.properties.statusMessage.error !== null - ); - if (failedOperations) { - failedOperations.forEach(operation => { - switch ( - operation && - operation.properties && - operation.properties.statusMessage.error.code && - operation.properties.targetResource - ) { - case 'MissingRegistrationForLocation': - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}. This resource is not avaliable in the location provided.`, - }); - break; - default: - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed for resource of type ${operation.properties.targetResource.resourceType}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Code: ${operation.properties.statusMessage.error.code}.`, - }); - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Message: ${operation.properties.statusMessage.error.message}.`, - }); - break; - } - }); - } - } else { - logger({ - status: BotProjectDeployLoggerType.PROVISION_ERROR, - message: `! Deployment failed. Please refer to the log file for more information.`, - }); - } - } - return updateResult; -}; - -console.log(chalk.bold('Login to Azure:')); -msRestNodeAuth - .interactiveLogin({ domain: tenantId }) - .then(async creds => { - const createResult = await create( - creds, - subId, - name, - location, - environment, - appId, - appPassword, - createLuisResource, - createLuisAuthoringResource, - createCosmosDb, - createStorage, - createAppInsignts - ); - - if (createResult) { - console.log(''); - console.log( - chalk.bold( - `Your Azure hosting environment has been created! Copy paste the following configuration into a new profile in Composer's Publishing tab.` - ) - ); - console.log(''); - - const token = await creds.getToken(); - const profile = { - accessToken: token.accessToken, - name: name, - environment: environment, - hostname: `${name}-${environment}`, - luisResource: `${name}-${environment}-luis`, - settings: createResult, - }; - - console.log(chalk.white(JSON.stringify(profile, null, 2))); - - console.log(''); - } - }) - .catch(err => { - console.error(err); - }); diff --git a/Composer/plugins/localPublish/hostedBots/88691.6992608121/settings/appsettings.json b/Composer/plugins/localPublish/hostedBots/88691.6992608121/settings/appsettings.json deleted file mode 100644 index de2cbe2dc6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/88691.6992608121/settings/appsettings.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "feature": { - "UseShowTypingMiddleware": false, - "UseInspectionMiddleware": false, - "RemoveRecipientMention": false - }, - "MicrosoftAppPassword": "", - "MicrosoftAppId": "", - "luis": { - "name": "", - "authoringKey": "", - "endpointKey": "", - "authoringRegion": "westus", - "defaultLanguage": "en-us", - "environment": "composer" - }, - "publishTargets": [], - "qna": { - "knowledgebaseid": "", - "endpointkey": "", - "hostname": "" - }, - "telemetry": { - "logPersonalInformation": false, - "logActivities": true - }, - "runtime": { - "customRuntime": false, - "path": "", - "command": "" - }, - "downsampling": { - "maxImbalanceRatio": 10, - "maxUtteranceAllowed": 15000 - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/.gitignore b/Composer/plugins/localPublish/hostedBots/89317.2709537091/.gitignore deleted file mode 100644 index 1557a3a3b1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ - -!Properties/launchSettings.json -!packages/packages.json diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.csproj b/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.csproj deleted file mode 100644 index a8f674ef9d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.csproj +++ /dev/null @@ -1,45 +0,0 @@ - - - - netcoreapp3.1 - ca88448c-6027-46ec-a27f-c76186553be1 - - - - - - - - - - Always - - - - BotProject.ruleset - - - BotProject.ruleset - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.ruleset b/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.ruleset deleted file mode 100644 index 3f028d9ac2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.ruleset +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.sln b/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.sln deleted file mode 100644 index db73c02cd8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotProject.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.136 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BotProject", "BotProject.csproj", "{80ACF5BE-4A04-46F8-A83E-530FB21948D5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{5AFADEA2-A18F-46DF-8080-2CA418880318}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {80ACF5BE-4A04-46F8-A83E-530FB21948D5}.Release|Any CPU.Build.0 = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5AFADEA2-A18F-46DF-8080-2CA418880318}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {B13FC467-1A63-4C8F-A29E-43B2D8B79B17} - EndGlobalSection -EndGlobal diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotSettings.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotSettings.cs deleted file mode 100644 index b88a4a7127..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/BotSettings.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.ApplicationInsights.Extensibility; -using Microsoft.Bot.Builder.Azure; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class BotSettings - { - public BlobStorageConfiguration BlobStorage { get; set; } - - public string MicrosoftAppId { get; set; } - - public string MicrosoftAppPassword { get; set; } - - public CosmosDbPartitionedStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration AppInsights { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerBot.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerBot.cs deleted file mode 100644 index 147c468294..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerBot.cs +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Security.Claims; -using System.Security.Principal; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.AI.QnA; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Dialogs.Declarative; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class ComposerBot : ActivityHandler - { - private readonly ResourceExplorer resourceExplorer; - private readonly UserState userState; - private DialogManager dialogManager; - private readonly ConversationState conversationState; - private readonly IStatePropertyAccessor dialogState; - private readonly string rootDialogFile; - private readonly string defaultLocale; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory, string rootDialog, string defaultLocale) - { - HostContext.Current.Set(skillClient); - HostContext.Current.Set(conversationIdFactory); - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = rootDialog; - this.defaultLocale = defaultLocale; - LoadRootDialogAsync(); - } - - public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) - { - AdaptiveDialog rootDialog = (AdaptiveDialog)this.dialogManager.RootDialog; - if (turnContext.TurnState.Get(BotAdapter.BotIdentityKey) is ClaimsIdentity claimIdentity && SkillValidation.IsSkillClaim(claimIdentity.Claims)) - { - rootDialog.AutoEndDialog = true; - } - else - { - rootDialog.AutoEndDialog = false; - } - - await this.dialogManager.OnTurnAsync(turnContext, cancellationToken: cancellationToken); - await this.conversationState.SaveChangesAsync(turnContext, false, cancellationToken); - await this.userState.SaveChangesAsync(turnContext, false, cancellationToken); - } - - private void LoadRootDialogAsync() - { - var rootFile = resourceExplorer.GetResource(rootDialogFile); - var rootDialog = resourceExplorer.LoadType(rootFile); - this.dialogManager = new DialogManager(rootDialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration() - .UseLanguagePolicy(new LanguagePolicy(defaultLocale)); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/adaptiveCard.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/adaptiveCard.json deleted file mode 100644 index 3b802eedff..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/adaptiveCard.json +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -{ - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.0", - "type": "AdaptiveCard", - "speak": "Your flight is confirmed for you and 3 other passengers from San Francisco to Amsterdam on Friday, October 10 8:30 AM", - "body": [ - { - "type": "TextBlock", - "text": "Passengers", - "weight": "bolder", - "isSubtle": false - }, - { - "type": "TextBlock", - "text": "${PassengerName()}", - "separator": true - }, - { - "type": "TextBlock", - "text": "${PassengerName()}", - "spacing": "none" - }, - { - "type": "TextBlock", - "text": "${PassengerName()}", - "spacing": "none" - }, - { - "type": "TextBlock", - "text": "2 Stops", - "weight": "bolder", - "spacing": "medium" - }, - { - "type": "TextBlock", - "text": "Fri, October 10 8:30 AM", - "weight": "bolder", - "spacing": "none" - }, - { - "type": "ColumnSet", - "separator": true, - "columns": [ - { - "type": "Column", - "width": 1, - "items": [ - { - "type": "TextBlock", - "text": "San Francisco", - "isSubtle": true - }, - { - "type": "TextBlock", - "size": "extraLarge", - "color": "accent", - "text": "SFO", - "spacing": "none" - } - ] - }, - { - "type": "Column", - "width": "auto", - "items": [ - { - "type": "TextBlock", - "text": " " - }, - { - "type": "Image", - "url": "http://adaptivecards.io/content/airplane.png", - "size": "small", - "spacing": "none" - } - ] - }, - { - "type": "Column", - "width": 1, - "items": [ - { - "type": "TextBlock", - "horizontalAlignment": "right", - "text": "Amsterdam", - "isSubtle": true - }, - { - "type": "TextBlock", - "horizontalAlignment": "right", - "size": "extraLarge", - "color": "accent", - "text": "AMS", - "spacing": "none" - } - ] - } - ] - }, - { - "type": "TextBlock", - "text": "Non-Stop", - "weight": "bolder", - "spacing": "medium" - }, - { - "type": "TextBlock", - "text": "Fri, October 18 9:50 PM", - "weight": "bolder", - "spacing": "none" - }, - { - "type": "ColumnSet", - "separator": true, - "columns": [ - { - "type": "Column", - "width": 1, - "items": [ - { - "type": "TextBlock", - "text": "Amsterdam", - "isSubtle": true - }, - { - "type": "TextBlock", - "size": "extraLarge", - "color": "accent", - "text": "AMS", - "spacing": "none" - } - ] - }, - { - "type": "Column", - "width": "auto", - "items": [ - { - "type": "TextBlock", - "text": " " - }, - { - "type": "Image", - "url": "http://adaptivecards.io/content/airplane.png", - "size": "small", - "spacing": "none" - } - ] - }, - { - "type": "Column", - "width": 1, - "items": [ - { - "type": "TextBlock", - "horizontalAlignment": "right", - "text": "San Francisco", - "isSubtle": true - }, - { - "type": "TextBlock", - "horizontalAlignment": "right", - "size": "extraLarge", - "color": "accent", - "text": "SFO", - "spacing": "none" - } - ] - } - ] - }, - { - "type": "ColumnSet", - "spacing": "medium", - "columns": [ - { - "type": "Column", - "width": "1", - "items": [ - { - "type": "TextBlock", - "text": "Total", - "size": "medium", - "isSubtle": true - } - ] - }, - { - "type": "Column", - "width": 1, - "items": [ - { - "type": "TextBlock", - "horizontalAlignment": "right", - "text": "$4,032.54", - "size": "medium", - "weight": "bolder" - } - ] - } - ] - } - ] -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/common.en-us.lg b/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/common.en-us.lg deleted file mode 100644 index 9838709b90..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/common.en-us.lg +++ /dev/null @@ -1,341 +0,0 @@ -> All cards can be defined and managed through .lg files. -> All cards use the chatdown notation - see here - https://github.com/Microsoft/botbuilder-tools/tree/master/packages/Chatdown#message-commands -> Multi-line text are enclosed in ``` -> Multi-line text can include inline expressions enclosed in ${expression}. -> ${TemplateName()} is an inline expression that uses the lgTemplate pre-built function to evaluate a template by name. - -# HeroCard -[HeroCard - title = BotFramework Hero Card - subtitle = Microsoft Bot Framework - text = Build and connect intelligent bots to interact with your users naturally wherever they are, from text/sms to Skype, Slack, Office 365 mail and other popular services. - image = https://sec.ch9.ms/ch9/7ff5/e07cfef0-aa3b-40bb-9baa-7c9ef8ff7ff5/buildreactionbotframework_960.jpg - buttons = ${cardActionTemplate('imBack', 'Show more cards', 'Show more cards')} -] - -# HeroCardWithMemory(name) -[Herocard - title=${TitleText(name)} - subtitle=${SubText()} - text=${DescriptionText()} - images=${CardImages()} - buttons=${cardActionTemplate('imBack', 'Show more cards', 'Show more cards')} -] - -# TitleText(name) -- Hello, ${name} - -# SubText -- What is your favorite? -- Don't they all look great? -- sorry, some of them are repeats - -# DescriptionText -- This is description for the hero card - -# CardImages -- https://picsum.photos/200/200?image=100 -- https://picsum.photos/300/200?image=200 -- https://picsum.photos/200/200?image=400 - -# cardActionTemplate(type, title, value) -[CardAction - Type = ${if(type == null, 'imBack', type)} - Title = ${title} - Value = ${value} - Text = ${title} -] - -# ThumbnailCard -[ThumbnailCard - title = BotFramework Thumbnail Card - subtitle = Microsoft Bot Framework - text = Build and connect intelligent bots to interact with your users naturally wherever they are, from text/sms to Skype, Slack, Office 365 mail and other popular services. - image = https://sec.ch9.ms/ch9/7ff5/e07cfef0-aa3b-40bb-9baa-7c9ef8ff7ff5/buildreactionbotframework_960.jpg - buttons = Get Started -] - -# SigninCard -[SigninCard - text = BotFramework Sign-in Card - buttons = ${cardActionTemplate('signin', 'Sign-in', 'https://login.microsoftonline.com/')} -] - -# AnimationCard -[AnimationCard - title = Microsoft Bot Framework - subtitle = Animation Card - image = https://docs.microsoft.com/en-us/bot-framework/media/how-it-works/architecture-resize.png - media = http://i.giphy.com/Ki55RUbOV5njy.gif -] - -# VideoCard -[VideoCard - title = Big Buck Bunny - subtitle = by the Blender Institute - text = Big Buck Bunny (code-named Peach) is a short computer-animated comedy film by the Blender Institute - image = https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Big_buck_bunny_poster_big.jpg/220px-Big_buck_bunny_poster_big.jpg - media = http://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4 - buttons = Learn More -] - -# AudioCard -[AudioCard - title = I am your father - subtitle = Star Wars: Episode V - The Empire Strikes Back - text = The Empire Strikes Back (also known as Star Wars: Episode V – The Empire Strikes Back) - image = https://upload.wikimedia.org/wikipedia/en/3/3c/SW_-_Empire_Strikes_Back.jpg - media = http://www.wavlist.com/movies/004/father.wav - buttons = Read More -] - -> The external file reference here 'Resources\adaptiveCard.json' should be marked as 'copy to output directory' -> Note: The external file will be read as text and any language generation templates/ expressions in the content will be evaluated. -> You can see this in Resources\adaptiveCard.json that pulls in a passenger name at random based on the call to 'PassengerName' template defined below. -> Note: Chatdown already supports the ability to create any card type from its json definition. So you can apply this for not just Adaptive cards but to all card types. - -# AdaptiveCard -[Activity - Attachments = ${json(adaptivecardjson())} -] - - -# PassengerName -- Vishwac -- Tom -- Chris -- Yochay - -# AttachmentLayoutType -- carousel -- list - -# AllCards -[Activity - Attachments = ${HeroCard()} | ${ThumbnailCard()} | ${SigninCard()} | ${AnimationCard()} | ${VideoCard()} | ${AudioCard()} | ${json(adaptivecardjson())} - AttachmentLayout = ${AttachmentLayoutType()} -] - - -# help -- ``` - I can show you examples on different Cards - [Suggestions=HeroCard|ThumbnailCard|SigninCard|AnimationCard|VideoCard|AudioCard|AdaptiveCard|AllCards] - 01 - HeroCard - 02 - ThumbnailCard - 03 - SigninCard - 04 - AnimationCard - 05 - VideoCard - 06 - AudioCard - 07 - AdaptiveCard - 08 - AllCards - ``` - - -# adaptivecardjson -- ``` -{ - "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", - "version": "1.0", - "type": "AdaptiveCard", - "speak": "Your flight is confirmed for you and 3 other passengers from San Francisco to Amsterdam on Friday, October 10 8:30 AM", - "body": [ - { - "type": "TextBlock", - "text": "Passengers", - "weight": "bolder", - "isSubtle": false - }, - { - "type": "TextBlock", - "text": "${PassengerName()}", - "separator": true - }, - { - "type": "TextBlock", - "text": "${PassengerName()}", - "spacing": "none" - }, - { - "type": "TextBlock", - "text": "${PassengerName()}", - "spacing": "none" - }, - { - "type": "TextBlock", - "text": "2 Stops", - "weight": "bolder", - "spacing": "medium" - }, - { - "type": "TextBlock", - "text": "Fri, October 10 8:30 AM", - "weight": "bolder", - "spacing": "none" - }, - { - "type": "ColumnSet", - "separator": true, - "columns": [ - { - "type": "Column", - "width": 1, - "items": [ - { - "type": "TextBlock", - "text": "San Francisco", - "isSubtle": true - }, - { - "type": "TextBlock", - "size": "extraLarge", - "color": "accent", - "text": "SFO", - "spacing": "none" - } - ] - }, - { - "type": "Column", - "width": "auto", - "items": [ - { - "type": "TextBlock", - "text": " " - }, - { - "type": "Image", - "url": "http://adaptivecards.io/content/airplane.png", - "size": "small", - "spacing": "none" - } - ] - }, - { - "type": "Column", - "width": 1, - "items": [ - { - "type": "TextBlock", - "horizontalAlignment": "right", - "text": "Amsterdam", - "isSubtle": true - }, - { - "type": "TextBlock", - "horizontalAlignment": "right", - "size": "extraLarge", - "color": "accent", - "text": "AMS", - "spacing": "none" - } - ] - } - ] - }, - { - "type": "TextBlock", - "text": "Non-Stop", - "weight": "bolder", - "spacing": "medium" - }, - { - "type": "TextBlock", - "text": "Fri, October 18 9:50 PM", - "weight": "bolder", - "spacing": "none" - }, - { - "type": "ColumnSet", - "separator": true, - "columns": [ - { - "type": "Column", - "width": 1, - "items": [ - { - "type": "TextBlock", - "text": "Amsterdam", - "isSubtle": true - }, - { - "type": "TextBlock", - "size": "extraLarge", - "color": "accent", - "text": "AMS", - "spacing": "none" - } - ] - }, - { - "type": "Column", - "width": "auto", - "items": [ - { - "type": "TextBlock", - "text": " " - }, - { - "type": "Image", - "url": "http://adaptivecards.io/content/airplane.png", - "size": "small", - "spacing": "none" - } - ] - }, - { - "type": "Column", - "width": 1, - "items": [ - { - "type": "TextBlock", - "horizontalAlignment": "right", - "text": "San Francisco", - "isSubtle": true - }, - { - "type": "TextBlock", - "horizontalAlignment": "right", - "size": "extraLarge", - "color": "accent", - "text": "SFO", - "spacing": "none" - } - ] - } - ] - }, - { - "type": "ColumnSet", - "spacing": "medium", - "columns": [ - { - "type": "Column", - "width": "1", - "items": [ - { - "type": "TextBlock", - "text": "Total", - "size": "medium", - "isSubtle": true - } - ] - }, - { - "type": "Column", - "width": 1, - "items": [ - { - "type": "TextBlock", - "horizontalAlignment": "right", - "text": "$4,032.54", - "size": "medium", - "weight": "bolder" - } - ] - } - ] - } - ] -} -``` \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/respondingwithcardssample-0.en-us.lg b/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/respondingwithcardssample-0.en-us.lg deleted file mode 100644 index 2ff9f31e7a..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-generation/en-us/respondingwithcardssample-0.en-us.lg +++ /dev/null @@ -1,34 +0,0 @@ -[import](common.lg) - -# SendActivity_159442 --${HeroCard()} - -# TextInput_Prompt_735465 -- What is your name? - -# SendActivity_167246 -- ${HeroCardWithMemory(user.name)} - -# SendActivity_762914 --${ThumbnailCard()} - -# SendActivity_241579 --${SigninCard()} - -# SendActivity_901582 --${AnimationCard()} - -# SendActivity_553859 --${VideoCard()} - -# SendActivity_190928 --${AudioCard()} - -# SendActivity_806895 --${AdaptiveCard()} - -# SendActivity_997450 --${AllCards()} - -# SendActivity_729500 --Welcome to Card Samples Bot. \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-understanding/en-us/respondingwithcardssample-0.en-us.lu b/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/language-understanding/en-us/respondingwithcardssample-0.en-us.lu deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/respondingwithcardssample-0.dialog b/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/respondingwithcardssample-0.dialog deleted file mode 100644 index d942c99d3d..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/respondingwithcardssample-0.dialog +++ /dev/null @@ -1,252 +0,0 @@ -{ - "$kind": "Microsoft.AdaptiveDialog", - "$designer": { - "id": "937757", - "name": "RespondingWithCardsSample-0" - }, - "autoEndDialog": false, - "defaultResultProperty": "dialog.result", - "triggers": [ - { - "$kind": "Microsoft.OnUnknownIntent", - "actions": [ - { - "$kind": "Microsoft.ChoiceInput", - "$designer": { - "id": "359223" - }, - "prompt": "Which card would you like to display?", - "maxTurnCount": "2147483647", - "property": "user.choice", - "alwaysPrompt": true, - "allowInterruptions": "false", - "outputFormat": "value", - "choices": [ - { - "value": "HeroCard" - }, - { - "value": "HeroCardWithMemory" - }, - { - "value": "ThumbnailCard" - }, - { - "value": "SigninCard" - }, - { - "value": "AnimationCard" - }, - { - "value": "VideoCard" - }, - { - "value": "AudioCard" - }, - { - "value": "AdaptiveCard" - }, - { - "value": "AllCards" - } - ], - "appendChoices": "true", - "defaultLocale": "en-us", - "style": "List", - "choiceOptions": { - "inlineSeparator": ", ", - "inlineOr": " or ", - "inlineOrMore": ", or ", - "includeNumbers": true - }, - "recognizerOptions": { - "noValue": false, - "noAction": false - } - }, - { - "$kind": "Microsoft.SwitchCondition", - "$designer": { - "id": "304837" - }, - "condition": "user.choice", - "cases": [ - { - "value": "HeroCard", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "name": "Send an Activity", - "id": "159442" - }, - "activity": "${SendActivity_159442()}" - } - ] - }, - { - "value": "HeroCardWithMemory", - "actions": [ - { - "$kind": "Microsoft.TextInput", - "$designer": { - "id": "735465", - "name": "Text input" - }, - "prompt": "${TextInput_Prompt_735465()}", - "maxTurnCount": 3, - "property": "user.name", - "alwaysPrompt": false, - "allowInterruptions": "false" - }, - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "167246", - "name": "Send an Activity" - }, - "activity": "${SendActivity_167246()}" - } - ] - }, - { - "value": "ThumbnailCard", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "name": "Send an Activity", - "id": "762914" - }, - "activity": "${SendActivity_762914()}" - } - ] - }, - { - "value": "SigninCard", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "name": "Send an Activity", - "id": "241579" - }, - "activity": "${SendActivity_241579()}" - } - ] - }, - { - "value": "AnimationCard", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "name": "Send an Activity", - "id": "901582" - }, - "activity": "${SendActivity_901582()}" - } - ] - }, - { - "value": "VideoCard", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "name": "Send an Activity", - "id": "553859" - }, - "activity": "${SendActivity_553859()}" - } - ] - }, - { - "value": "AudioCard", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "name": "Send an Activity", - "id": "190928" - }, - "activity": "${SendActivity_190928()}" - } - ] - }, - { - "value": "AdaptiveCard", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "name": "Send an Activity", - "id": "806895" - }, - "activity": "${SendActivity_806895()}" - } - ] - }, - { - "value": "AllCards", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "name": "Send an Activity", - "id": "997450" - }, - "activity": "${SendActivity_997450()}" - } - ] - } - ] - }, - { - "$kind": "Microsoft.RepeatDialog", - "$designer": { - "id": "831626" - } - } - ], - "$designer": { - "id": "392502" - } - }, - { - "$kind": "Microsoft.OnConversationUpdateActivity", - "actions": [ - { - "$kind": "Microsoft.Foreach", - "$designer": { - "id": "518944", - "name": "Loop: for each item" - }, - "itemsProperty": "turn.Activity.membersAdded", - "actions": [ - { - "$kind": "Microsoft.IfCondition", - "$designer": { - "id": "641773", - "name": "Branch: if/else" - }, - "condition": "string(dialog.foreach.value.id) != string(turn.Activity.Recipient.id)", - "actions": [ - { - "$kind": "Microsoft.SendActivity", - "$designer": { - "id": "729500", - "name": "Send a response" - }, - "activity": "${SendActivity_729500()}" - } - ] - } - ] - } - ] - } - ], - "generator": "respondingwithcardssample-0.lg", - "$schema": "https://raw.githubusercontent.com/microsoft/BotFramework-Composer/stable/Composer/packages/server/schemas/sdk.schema" -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/settings/appsettings.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/settings/appsettings.json deleted file mode 100644 index d2cc333e99..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/ComposerDialogs/settings/appsettings.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "MicrosoftAppId": "", - "luis": { - "name": "", - "authoringRegion": "westus", - "defaultLanguage": "en-us", - "environment": "composer" - }, - "publishTargets": [], - "qna": { - "knowledgebaseid": "", - "endpointkey": "", - "hostname": "" - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Controllers/BotController.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Controllers/BotController.cs deleted file mode 100644 index 5085705abb..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Controllers/BotController.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// -// Generated with Bot Builder V4 SDK Template for Visual Studio EchoBot v4.3.0 - -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Dialogs.Debugging; -using Microsoft.Bot.Builder.Integration.AspNet.Core; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - // This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot - // implementation at runtime. Multiple different IBot implementations running at different endpoints can be - // achieved by specifying a more specific type for the bot constructor argument. - [Route("api/messages")] - [ApiController] - public class BotController : ControllerBase - { - private readonly IBotFrameworkHttpAdapter _adapter; - - private readonly IBot _bot; - - public BotController(IBotFrameworkHttpAdapter adapter, IBot bot) - { - this._adapter = adapter; - this._bot = bot; - } - - [HttpPost] - [HttpGet] - public async Task PostAsync() - { - // Delegate the processing of the HTTP POST to the adapter. - // The adapter will invoke the bot. - await this._adapter.ProcessAsync(Request, Response, _bot); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Controllers/SkillController.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Controllers/SkillController.cs deleted file mode 100644 index 62b6390dd6..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Controllers/SkillController.cs +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; - -namespace Microsoft.Bot.Builder.TestBot.Json.Controllers -{ - /// - /// A controller that handles skill replies to the bot. - /// This example uses the that is registered as a in startup.cs. - /// - [ApiController] - [Route("api/skills")] - public class SkillController : ChannelServiceController - { - public SkillController(ChannelServiceHandler handler) - : base(handler) - { - } - - public override Task ReplyToActivityAsync(string conversationId, string activityId, Activity activity) - { - try - { - return base.ReplyToActivityAsync(conversationId, activityId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - - public override Task SendToConversationAsync(string conversationId, Activity activity) - { - try - { - return base.SendToConversationAsync(conversationId, activity); - } - catch (Exception ex) - { - Console.WriteLine(ex); - throw; - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/new-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/new-rg-parameters.json deleted file mode 100644 index ead3390932..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/new-rg-parameters.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "value": "" - }, - "groupName": { - "value": "" - }, - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "newAppServicePlanLocation": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/preexisting-rg-parameters.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/preexisting-rg-parameters.json deleted file mode 100644 index b6f5114fcc..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/preexisting-rg-parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "appId": { - "value": "" - }, - "appSecret": { - "value": "" - }, - "botId": { - "value": "" - }, - "botSku": { - "value": "" - }, - "newAppServicePlanName": { - "value": "" - }, - "newAppServicePlanSku": { - "value": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - } - }, - "appServicePlanLocation": { - "value": "" - }, - "existingAppServicePlan": { - "value": "" - }, - "newWebAppName": { - "value": "" - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/template-with-new-rg.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/template-with-new-rg.json deleted file mode 100644 index 06b8284158..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/template-with-new-rg.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "groupLocation": { - "type": "string", - "metadata": { - "description": "Specifies the location of the Resource Group." - } - }, - "groupName": { - "type": "string", - "metadata": { - "description": "Specifies the name of the Resource Group." - } - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings." - } - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "newAppServicePlanName": { - "type": "string", - "metadata": { - "description": "The name of the App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "newAppServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan. Defaults to \"westus\"." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - } - }, - "variables": { - "appServicePlanName": "[parameters('newAppServicePlanName')]", - "resourcesLocation": "[parameters('newAppServicePlanLocation')]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]" - }, - "resources": [ - { - "name": "[parameters('groupName')]", - "type": "Microsoft.Resources/resourceGroups", - "apiVersion": "2018-05-01", - "location": "[parameters('groupLocation')]", - "properties": { - } - }, - { - "type": "Microsoft.Resources/deployments", - "apiVersion": "2018-05-01", - "name": "storageDeployment", - "resourceGroup": "[parameters('groupName')]", - "dependsOn": [ - "[resourceId('Microsoft.Resources/resourceGroups/', parameters('groupName'))]" - ], - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": {}, - "variables": {}, - "resources": [ - { - "comments": "Create a new App Service Plan", - "type": "Microsoft.Web/serverfarms", - "name": "[variables('appServicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('appServicePlanName')]" - } - }, - { - "comments": "Create a Web App using the new App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('appServicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('appServicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - } - ], - "outputs": {} - } - } - } - ] -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/template-with-preexisting-rg.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index 183586e08f..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,363 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "appId": { - "type": "string", - "metadata": { - "description": "Active Directory App ID, set as MicrosoftAppId in the Web App's Application Settings." - } - }, - "appSecret": { - "type": "string", - "metadata": { - "description": "Active Directory App Password, set as MicrosoftAppPassword in the Web App's Application Settings. Defaults to \"\"." - } - }, - "useCosmosDb": { - "type": "bool", - "defaultValue": true - }, - "shouldCreateAuthoringResource": { - "type": "bool", - "defaultValue": true - }, - "cosmosDbName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "botId": { - "type": "string", - "metadata": { - "description": "The globally unique and immutable bot ID. Also used to configure the displayName of the bot, which is mutable." - } - }, - "botSku": { - "defaultValue": "F0", - "type": "string", - "metadata": { - "description": "The pricing tier of the Bot Service Registration. Acceptable values are F0 and S1." - } - }, - "luisAuthoringKey": { - "type": "string", - "defaultValue": "" - }, - "newAppServicePlanName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The name of the new App Service Plan." - } - }, - "newAppServicePlanSku": { - "type": "object", - "defaultValue": { - "name": "S1", - "tier": "Standard", - "size": "S1", - "family": "S", - "capacity": 1 - }, - "metadata": { - "description": "The SKU of the App Service Plan. Defaults to Standard values." - } - }, - "appServicePlanLocation": { - "type": "string", - "metadata": { - "description": "The location of the App Service Plan." - } - }, - "existingAppServicePlan": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Name of the existing App Service Plan used to create the Web App for the bot." - } - }, - "newWebAppName": { - "type": "string", - "defaultValue": "[resourceGroup().name]", - "metadata": { - "description": "The globally unique name of the Web App. Defaults to the value passed in for \"botId\"." - } - }, - "appInsightsName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "appInsightsLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - }, - "useStorage": { - "type": "bool", - "defaultValue": true - }, - "storageAccountName": { - "type": "string", - "defaultValue": "[resourceGroup().name]" - }, - "luisServiceName": { - "type": "string", - "defaultValue": "[concat(resourceGroup().name, '-luis')]" - }, - "luisServiceAuthoringSku": { - "type": "string", - "defaultValue": "F0" - }, - "luisServiceRunTimeSku": { - "type": "string", - "defaultValue": "S0" - }, - "luisServiceLocation": { - "type": "string", - "defaultValue": "[resourceGroup().location]" - } - }, - "variables": { - "defaultAppServicePlanName": "[if(empty(parameters('existingAppServicePlan')), 'createNewAppServicePlan', parameters('existingAppServicePlan'))]", - "useExistingAppServicePlan": "[not(equals(variables('defaultAppServicePlanName'), 'createNewAppServicePlan'))]", - "servicePlanName": "[if(variables('useExistingAppServicePlan'), parameters('existingAppServicePlan'), parameters('newAppServicePlanName'))]", - "resourcesLocation": "[parameters('appServicePlanLocation')]", - "cosmosDbAccountName": "[toLower(take(replace(parameters('cosmosDbName'), '_', ''), 31))]", - "webAppName": "[if(empty(parameters('newWebAppName')), parameters('botId'), parameters('newWebAppName'))]", - "siteHost": "[concat(variables('webAppName'), '.azurewebsites.net')]", - "botEndpoint": "[concat('https://', variables('siteHost'), '/api/messages')]", - "storageAccountName": "[toLower(take(replace(replace(parameters('storageAccountName'), '-', ''), '_', ''), 24))]", - "LuisAuthoringAccountName": "[concat(parameters('luisServiceName'), '-Authoring')]" - }, - "resources": [ - { - "comments": "Create a new App Service Plan if no existing App Service Plan name was passed in.", - "type": "Microsoft.Web/serverfarms", - "condition": "[not(variables('useExistingAppServicePlan'))]", - "name": "[variables('servicePlanName')]", - "apiVersion": "2018-02-01", - "location": "[variables('resourcesLocation')]", - "sku": "[parameters('newAppServicePlanSku')]", - "properties": { - "name": "[variables('servicePlanName')]" - } - }, - { - "comments": "Create a Web App using an App Service Plan", - "type": "Microsoft.Web/sites", - "apiVersion": "2015-08-01", - "location": "[variables('resourcesLocation')]", - "kind": "app", - "dependsOn": [ - "[resourceId('Microsoft.Web/serverfarms/', variables('servicePlanName'))]" - ], - "name": "[variables('webAppName')]", - "properties": { - "name": "[variables('webAppName')]", - "serverFarmId": "[variables('servicePlanName')]", - "siteConfig": { - "appSettings": [ - { - "name": "WEBSITE_NODE_DEFAULT_VERSION", - "value": "10.14.1" - }, - { - "name": "MicrosoftAppId", - "value": "[parameters('appId')]" - }, - { - "name": "MicrosoftAppPassword", - "value": "[parameters('appSecret')]" - } - ], - "cors": { - "allowedOrigins": [ - "https://botservice.hosting.portal.azure.net", - "https://hosting.onecloud.azure-test.net/" - ] - } - } - } - }, - { - "comments": "CosmosDB for bot state.", - "type": "Microsoft.DocumentDB/databaseAccounts", - "kind": "GlobalDocumentDB", - "apiVersion": "2015-04-08", - "name": "[variables('cosmosDbAccountName')]", - "location": "[parameters('location')]", - "properties": { - "databaseAccountOfferType": "Standard", - "locations": [ - { - "locationName": "[parameters('location')]", - "failoverPriority": 0 - } - ] - }, - "condition": "[parameters('useCosmosDb')]" - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-db" - }, - "options": {} - } - }, - { - "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", - "apiVersion": "2020-03-01", - "name": "[concat(variables('cosmosDbAccountName'), '/botstate-db/botstate-container')]", - "dependsOn": [ - "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('cosmosDbAccountName'), 'botstate-db')]", - "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))]" - ], - "properties": { - "resource": { - "id": "botstate-container", - "indexingPolicy": { - "indexingMode": "consistent", - "automatic": true, - "includedPaths": [ - { - "path": "/*" - } - ], - "excludedPaths": [ - { - "path": "/\"_etag\"/?" - } - ] - }, - "partitionKey": { - "paths": [ - "/id" - ], - "kind": "Hash" - }, - "conflictResolutionPolicy": { - "mode": "LastWriterWins", - "conflictResolutionPath": "/_ts" - } - }, - "options": {} - } - }, - { - "apiVersion": "2017-12-01", - "type": "Microsoft.BotService/botServices", - "name": "[parameters('botId')]", - "location": "global", - "kind": "bot", - "sku": { - "name": "[parameters('botSku')]" - }, - "properties": { - "name": "[parameters('botId')]", - "displayName": "[parameters('botId')]", - "endpoint": "[variables('botEndpoint')]", - "msaAppId": "[parameters('appId')]", - "developerAppInsightsApplicationId": null, - "developerAppInsightKey": null, - "publishingCredentials": null, - "storageResourceId": null - }, - "dependsOn": [ - "[resourceId('Microsoft.Web/sites/', variables('webAppName'))]" - ] - }, - { - "comments": "app insights", - "type": "Microsoft.Insights/components", - "kind": "web", - "apiVersion": "2015-05-01", - "name": "[parameters('appInsightsName')]", - "location": "[parameters('appInsightsLocation')]", - "properties": { - "Application_Type": "web" - } - }, - { - "comments": "storage account", - "type": "Microsoft.Storage/storageAccounts", - "kind": "StorageV2", - "apiVersion": "2018-07-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "condition": "[parameters('useStorage')]" - }, - { - "comments": "Cognitive service authoring key for all LUIS apps.", - "apiVersion": "2017-04-18", - "name": "[variables('LuisAuthoringAccountName')]", - "location": "[parameters('luisServiceLocation')]", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS.Authoring", - "sku": { - "name": "[parameters('luisServiceAuthoringSku')]" - }, - "condition": "[parameters('shouldCreateAuthoringResource')]" - }, - { - "comments": "Cognitive service endpoint key for all LUIS apps.", - "type": "Microsoft.CognitiveServices/accounts", - "kind": "LUIS", - "apiVersion": "2017-04-18", - "name": "[parameters('luisServiceName')]", - "location": "[parameters('luisServiceLocation')]", - "sku": { - "name": "[parameters('luisServiceRunTimeSku')]" - } - } - ], - "outputs": { - "ApplicationInsights": { - "type": "object", - "value": { - "InstrumentationKey": "[reference(resourceId('Microsoft.Insights/components', parameters('appInsightsName'))).InstrumentationKey]" - } - }, - "cosmosDb": { - "type": "object", - "value": { - "cosmosDBEndpoint": "[if(parameters('useCosmosDb'), reference(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName'))).documentEndpoint, '')]", - "authKey": "[if(parameters('useCosmosDb'), listKeys(resourceId('Microsoft.DocumentDB/databaseAccounts', variables('cosmosDbAccountName')), '2015-04-08').primaryMasterKey, '')]", - "databaseId": "botstate-db", - "collectionId": "botstate-collection", - "containerId": "botstate-container" - } - }, - "blobStorage": { - "type": "object", - "value": { - "connectionString": "[if(parameters('useStorage'), concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value, ';EndpointSuffix=core.windows.net'), '')]", - "container": "transcripts" - } - }, - "luis": { - "type": "object", - "value": { - "endpointKey": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', parameters('luisServiceName')),'2017-04-18').key1]", - "authoringKey": "[if(parameters('shouldCreateAuthoringResource'), listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('LuisAuthoringAccountName')),'2017-04-18').key1, parameters('luisAuthoringKey'))]", - "region": "[parameters('luisServiceLocation')]" - } - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/LuisConfig.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/LuisConfig.cs deleted file mode 100644 index 506d52e343..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/LuisConfig.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Generic; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class LuisConfig - { - public string Name { get; set; } - - public string DefaultLanguage { get; set; } - - public List Models { get; set; } - - public string AuthoringKey { get; set; } - - public bool Dialogs { get; set; } - - public string Environment { get; set; } - - public bool Autodelete { get; set; } - - public string AuthoringRegion { get; set; } - - public string Folder { get; set; } - - public bool Help { get; set; } - - public bool Force { get; set; } - - public string Config { get; set; } - - public string EndpointKeys { get; set; } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/LuisConfigAdaptor.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/LuisConfigAdaptor.cs deleted file mode 100644 index 6f23086f3b..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/LuisConfigAdaptor.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Configuration; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public static class LuisConfigAdaptor - { - public static IConfigurationBuilder UseLuisConfigAdaptor(this IConfigurationBuilder builder) - { - var configuration = builder.Build(); - var settings = new Dictionary(); - settings["environment"] = configuration.GetValue("luis:environment"); - settings["region"] = configuration.GetValue("luis:authoringRegion"); - builder.AddInMemoryCollection(settings); - return builder; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/NuGet.Config b/Composer/plugins/localPublish/hostedBots/89317.2709537091/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Program.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Program.cs deleted file mode 100644 index 434f5a21d2..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Program.cs +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.AI.Luis; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureAppConfiguration((hostingContext, builder) => - { - var env = hostingContext.HostingEnvironment; - - builder.AddJsonFile($"ComposerDialogs/settings/appsettings.json", optional: true, reloadOnChange: true) - .AddJsonFile("appsetting.json", optional: true, reloadOnChange: true) - .UseLuisConfigAdaptor() - .UseLuisSettings(); - - if (env.IsDevelopment()) - { - // Local Debug - builder.AddJsonFile("appsettings.development.json", optional: true, reloadOnChange: true); - } - else - { - //Azure Deploy - builder.AddJsonFile("appsettings.deployment.json", optional: true, reloadOnChange: true); - } - - if (!env.IsDevelopment()) - { - builder.AddUserSecrets(); - } - - builder.AddEnvironmentVariables() - .AddCommandLine(args); - }) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Properties/launchSettings.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Properties/launchSettings.json deleted file mode 100644 index bc05ba6986..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:3979/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "BotProject": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:3979", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/README.md b/Composer/plugins/localPublish/hostedBots/89317.2709537091/README.md deleted file mode 100644 index b096ecf323..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/README.md +++ /dev/null @@ -1,22 +0,0 @@ -## Bot Project -Bot project is the launcher project for the bots written in declarative form (JSON), using the Composer, for the Bot Framework SDK. - -## Instructions for setting up the Bot Project runtime -The Bot Project is a regular Bot Framework SDK V4 project. Before you can launch it from the emulator, you need to make sure you can run the bot. - -### Prerequisite: -* Install .Netcore 3.1 - -### Commands: - -* from root folder -* cd BotProject -* cd Templates/CSharp -* dotnet user-secrets init // init the user secret id -* dotnet build // build -* dotnet run // start the bot -* It will start a web server and listening at http://localhost:3979. - -### Test bot -* You can set you emulator to connect to http://localhost:3979/api/messages. - diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Schemas/sdk.schema b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Schemas/sdk.schema deleted file mode 100644 index 0705e3fc28..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Schemas/sdk.schema +++ /dev/null @@ -1,12245 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/microsoft/botbuilder-dotnet/master/schemas/component.schema", - "$id": "sdk.schema", - "type": "object", - "title": "Component kinds", - "description": "These are all of the kinds that can be created by the loader.", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.LanguagePolicy", - "description": "This represents a policy map for locales lookups to use for language", - "$ref": "#/definitions/Microsoft.LanguagePolicy" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "$ref": "#/definitions/Microsoft.Test.Script" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TextTemplate", - "description": "Use LG Templates to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls.", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - } - ], - "definitions": { - "Microsoft.ActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft ActivityTemplate", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to use to create the activity", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveCardRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.AdaptiveCardRecognizer" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AdaptiveDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional dialog ID." - }, - "autoEndDialog": { - "type": "boolean", - "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", - "$ref": "#/definitions/Microsoft.ITrigger" - } - }, - "schema": { - "anyOf": [ - { - "title": "The schema to be filled in.", - "type": "object", - "additionalProperties": true - }, - { - "type": "string", - "title": "Reference to JSON schema", - "description": "Reference to JSON schema .dialog file." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AgeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Age Entity Recognizer", - "description": "Recognizer which recognizes age.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Ask": { - "$role": "implements(Microsoft.IDialog)", - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - }, - "expectedProperties": { - "$role": "expression", - "title": "Expected Properties", - "description": "Properties expected to be filled by entities from the user", - "oneOf": [ - { - "type": "array", - "items": { - "type": "string", - "title": "string" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "expectedOperation": { - "$role": "expression", - "type": "string", - "title": "Expected operation to assign entity to property", - "description": "Operation to apply to entities by default." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.AttachmentInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Attachment input dialog", - "description": "Collect information - Ask for a file or image.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "=@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "all", - "first" - ], - "title": "Output format", - "description": "Attachment output format.", - "default": "first" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BeginDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a dialog", - "description": "Begin another dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$role": "expression", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "oneOf": [ - { - "$kind": "Microsoft.IDialog", - "type": "object", - "title": "object", - "$ref": "#/definitions/Microsoft.IDialog" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.BreakLoop": { - "$role": "implements(Microsoft.IDialog)", - "title": "Break Loop", - "description": "Stop executing this loop", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit." - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional).", - "additionalProperties": true - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ChoiceInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Choice input dialog", - "description": "Collect information - Pick from a list of choices", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "=@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "enum": [ - "value", - "index" - ], - "title": "Output format", - "description": "Choice output format.", - "default": "value" - }, - "choices": { - "$role": "expression", - "oneOf": [ - { - "title": "Array of strings", - "type": "array", - "items": [ - { - "type": "string", - "title": "string" - } - ] - }, - { - "title": "Array of choice objects", - "type": "array", - "items": [ - { - "title": "Choice", - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - } - } - ] - }, - { - "type": "string", - "title": "Expression" - } - ] - }, - "appendChoices": { - "type": "boolean", - "title": "Append choices", - "description": "Compose an output activity containing a set of choices", - "default": "true" - }, - "defaultLocale": { - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when 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 - } - } - }, - "recognizerOptions": { - "type": "object", - "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 the choices action.title field will NOT be searched over", - "default": false - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConditionalSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Condtional Trigger Selector", - "description": "Use a rule selector based on a condition", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "ifTrue": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - }, - "ifFalse": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "ifTrue", - "ifFalse", - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Confirm input dialog", - "description": "Collect information - Ask for confirmation (yes or no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "=@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the confirm output.", - "examples": [ - "=concat('confirmation:', this.value)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - }, - "style": { - "$role": "expression", - "type": "string", - "enum": [ - "None", - "Auto", - "Inline", - "List", - "SuggestedAction", - "HeroCard" - ], - "title": "List style", - "description": "Style to render choices.", - "default": "Auto" - }, - "choiceOptions": { - "$role": "expression", - "oneOf": [ - { - "type": "object", - "properties": { - "inlineSeparator": { - "type": "string", - "title": "Inline separator", - "description": "Character used to separate individual choices when there are more than 2 choices", - "default": ", " - }, - "inlineOr": { - "type": "string", - "title": "Inline or", - "description": "Separator inserted between the choices when their are only 2 choices", - "default": " or " - }, - "inlineOrMore": { - "type": "string", - "title": "Inline or more", - "description": "Separator inserted between the last 2 choices when their are more than 2 choices.", - "default": ", or " - }, - "includeNumbers": { - "type": "boolean", - "title": "Include numbers", - "description": "If true, inline and list style choices will be prefixed with the index of the choice.", - "default": true - } - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "confirmChoices": { - "$role": "expression", - "oneOf": [ - { - "type": "array", - "items": [ - { - "title": "Array of confirm choice objects", - "type": "object", - "properties": { - "value": { - "type": "string", - "title": "Value", - "description": "Value to return when this choice is selected." - }, - "action": { - "type": "object", - "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": "string" - } - } - } - } - ], - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ConfirmationEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Confirmation Entity Recognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.CrossTrainedRecognizerSet": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Cross-trained Recognizer Set", - "description": "Recognizer for selecting between cross trained recognizers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Currency Entity Recognizer", - "description": "Recognizer which recognizes currency.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "DateTime Entity Recognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DateTimeInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Date/time input dialog", - "description": "Collect information - Ask for date and/ or time", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "=@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the datetime output.", - "examples": [ - "=this.value[0].Value" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.DeleteActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Activity", - "description": "Delete an activity that was previously sent.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to delete", - "examples": [ - "=$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Properties", - "description": "Delete multiple properties and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "properties": { - "type": "array", - "title": "Properties", - "description": "Properties to delete.", - "items": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "properties", - "$kind" - ] - } - ] - }, - "Microsoft.DeleteProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", - "description": "Delete a property and any value it holds.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to delete." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "$kind" - ] - } - ] - }, - "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Dimension Entity Recognizer", - "description": "Recognizer which recognizes dimension.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EditActions": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit actions.", - "description": "Edit the current list of actions.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to apply to the current actions.", - "enum": [ - "insertActions", - "insertActionsBeforeTags", - "appendActions", - "endSequence", - "replaceSequence" - ] - }, - "actions": { - "type": "array", - "title": "Actions", - "description": "Actions to apply.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.EditArray": { - "$role": "implements(Microsoft.IDialog)", - "title": "Edit array", - "description": "Modify an array in memory", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "changeType": { - "$role": "expression", - "type": "string", - "title": "Type of change", - "description": "Type of change to the array in memory.", - "enum": [ - "push", - "pop", - "take", - "remove", - "clear" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array to update." - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result Property", - "description": "Property to store the result of this action." - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "milk", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "changeType", - "itemsProperty", - "$kind" - ] - } - ] - }, - "Microsoft.EmailEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Email Entity Recognizer", - "description": "Recognizer which recognizes email.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EmitEvent": { - "$role": "implements(Microsoft.IDialog)", - "title": "Emit a custom event", - "description": "Emit an event. Capture this event with a trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "eventName": { - "$role": "expression", - "type": "string", - "title": "Event name", - "description": "Name of the event to emit.", - "enum": [ - "beginDialog", - "resumeDialog", - "repromptDialog", - "cancelDialog", - "endDialog", - "activityReceived", - "recognizedIntent", - "unknownIntent", - "actionsStarted", - "actionsSaved", - "actionsEnded", - "actionsResumed" - ] - }, - "eventValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Event value", - "description": "Value to emit with the event (optional)." - }, - "bubbleEvent": { - "$role": "expression", - "title": "Bubble event", - "description": "If true this event is passed on to parent dialogs.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "eventName", - "$kind" - ] - } - ] - }, - "Microsoft.EndDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "End dialog", - "description": "End this dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Result value returned to the parent dialog.", - "examples": [ - "=dialog.userName", - "='tomato'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.EndTurn": { - "$role": "implements(Microsoft.IDialog)", - "title": "End turn", - "description": "End the current turn without ending the dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.FirstSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", - "description": "Selector for first true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Foreach": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each item", - "description": "Execute actions on each item in an a collection.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "title": "Items property", - "description": "Property that holds the array.", - "examples": [ - "user.todoList" - ] - }, - "index": { - "$role": "expression", - "type": "string", - "title": "Index property", - "description": "Property that holds the index of the item.", - "default": "dialog.foreach.index" - }, - "value": { - "$role": "expression", - "type": "string", - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.ForeachPage": { - "$role": "implements(Microsoft.IDialog)", - "title": "For each page", - "description": "Execute actions on each page (collection of items) in an array.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "itemsProperty": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "type": "string", - "title": "Index property", - "description": "Property that holds the index of the page.", - "default": "dialog.foreach.pageindex" - }, - "page": { - "$role": "expression", - "type": "string", - "title": "Page property", - "description": "Property that holds the value of the page.", - "default": "dialog.foreach.page" - }, - "pageSize": { - "$role": "expression", - "title": "Page size", - "description": "Number of items in each page.", - "oneOf": [ - { - "type": "integer", - "default": 10, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "itemsProperty", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.GetActivityMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "$lastActivity" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GetConversationMembers": { - "$role": "implements(Microsoft.IDialog)", - "title": "Get Converation Members", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.GotoAction": { - "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", - "description": "Go to an an action by id.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actionId": { - "$role": "expression", - "type": "string", - "title": "Action Id", - "description": "Action Id to execute next" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actionId", - "$kind" - ] - } - ] - }, - "Microsoft.GuidEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Guid Entity Recognizer", - "description": "Recognizer which recognizes guids.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Hashtag Entity Recognizer", - "description": "Recognizer which recognizes Hashtags.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.HttpRequest": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "HTTP request", - "description": "Make a HTTP request.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "method": { - "type": "string", - "title": "HTTP method", - "description": "HTTP method to use.", - "enum": [ - "GET", - "POST", - "PATCH", - "PUT", - "DELETE" - ], - "examples": [ - "GET", - "POST" - ] - }, - "url": { - "$role": "expression", - "type": "string", - "title": "Url", - "description": "URL to call (supports data binding).", - "examples": [ - "https://contoso.com" - ] - }, - "body": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Body", - "description": "Body to include in the HTTP call (supports data binding).", - "additionalProperties": true - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Result property", - "description": "Property to store the result of this action. The result includes 4 properties from the http response: statusCode, reasonPhrase, content and headers. If the content is json it will be a deserialized object.", - "examples": [ - "dialog.contosodata" - ] - }, - "contentType": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "type": "string" - } - }, - "responseType": { - "$role": "expression", - "type": "string", - "title": "Response type", - "description": "Defines the type of HTTP response. Automatically calls the 'Send a response' action if set to 'Activity' or 'Activities'.", - "enum": [ - "None", - "Json", - "Activity", - "Activities" - ], - "default": "Json" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "url", - "method", - "$kind" - ] - } - ] - }, - "Microsoft.IActivityTemplate": { - "title": "Microsoft ActivityTemplates", - "description": "Components which are ActivityTemplate", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.ActivityTemplate", - "description": "", - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "title": "Microsoft.StaticActivityTemplate", - "description": "This allows you to define a static Activity object", - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.IDialog": { - "title": "Microsoft Dialogs", - "description": "Components which derive from Dialog", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveDialog", - "description": "Flexible, data driven dialog that can adapt to the conversation.", - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "title": "Microsoft.Ask", - "description": "This is an action which sends an activity to the user when a response is expected", - "$ref": "#/definitions/Microsoft.Ask" - }, - { - "title": "Microsoft.AttachmentInput", - "description": "Collect information - Ask for a file or image.", - "$ref": "#/definitions/Microsoft.AttachmentInput" - }, - { - "title": "Microsoft.BeginDialog", - "description": "Begin another dialog.", - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "title": "Microsoft.BreakLoop", - "description": "Stop executing this loop", - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "title": "Microsoft.CancelAllDialogs", - "description": "Cancel all active dialogs. All dialogs in the dialog chain will need a trigger to capture the event configured in this action.", - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "title": "Microsoft.ChoiceInput", - "description": "Collect information - Pick from a list of choices", - "$ref": "#/definitions/Microsoft.ChoiceInput" - }, - { - "title": "Microsoft.ConfirmInput", - "description": "Collect information - Ask for confirmation (yes or no).", - "$ref": "#/definitions/Microsoft.ConfirmInput" - }, - { - "title": "Microsoft.ContinueLoop", - "description": "Stop executing this template and continue with the next iteration of the loop.", - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "title": "Microsoft.DateTimeInput", - "description": "Collect information - Ask for date and/ or time", - "$ref": "#/definitions/Microsoft.DateTimeInput" - }, - { - "title": "Microsoft.DebugBreak", - "description": "If debugger is attached, stop the execution at this point in the conversation.", - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "title": "Microsoft.DeleteActivity", - "description": "Delete an activity that was previously sent.", - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "title": "Microsoft.DeleteProperties", - "description": "Delete multiple properties and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "title": "Microsoft.DeleteProperty", - "description": "Delete a property and any value it holds.", - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "title": "Microsoft.EditActions", - "description": "Edit the current list of actions.", - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "title": "Microsoft.EditArray", - "description": "Modify an array in memory", - "$ref": "#/definitions/Microsoft.EditArray" - }, - { - "title": "Microsoft.EmitEvent", - "description": "Emit an event. Capture this event with a trigger.", - "$ref": "#/definitions/Microsoft.EmitEvent" - }, - { - "title": "Microsoft.EndDialog", - "description": "End this dialog.", - "$ref": "#/definitions/Microsoft.EndDialog" - }, - { - "title": "Microsoft.EndTurn", - "description": "End the current turn without ending the dialog.", - "$ref": "#/definitions/Microsoft.EndTurn" - }, - { - "title": "Microsoft.Foreach", - "description": "Execute actions on each item in an a collection.", - "$ref": "#/definitions/Microsoft.Foreach" - }, - { - "title": "Microsoft.ForeachPage", - "description": "Execute actions on each page (collection of items) in an array.", - "$ref": "#/definitions/Microsoft.ForeachPage" - }, - { - "title": "Microsoft.GetActivityMembers", - "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetActivityMembers" - }, - { - "title": "Microsoft.GetConversationMembers", - "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", - "$ref": "#/definitions/Microsoft.GetConversationMembers" - }, - { - "title": "Microsoft.GotoAction", - "description": "Go to an an action by id.", - "$ref": "#/definitions/Microsoft.GotoAction" - }, - { - "title": "Microsoft.HttpRequest", - "description": "Make a HTTP request.", - "$ref": "#/definitions/Microsoft.HttpRequest" - }, - { - "title": "Microsoft.IfCondition", - "description": "Two-way branch the conversation flow based on a condition.", - "$ref": "#/definitions/Microsoft.IfCondition" - }, - { - "title": "Microsoft.LogAction", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "$ref": "#/definitions/Microsoft.LogAction" - }, - { - "title": "Microsoft.NumberInput", - "description": "Collect information - Ask for a number.", - "$ref": "#/definitions/Microsoft.NumberInput" - }, - { - "title": "Microsoft.OAuthInput", - "description": "Collect login information.", - "$ref": "#/definitions/Microsoft.OAuthInput" - }, - { - "title": "Microsoft.QnAMakerDialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "title": "Microsoft.RepeatDialog", - "description": "Repeat current dialog.", - "$ref": "#/definitions/Microsoft.RepeatDialog" - }, - { - "title": "Microsoft.ReplaceDialog", - "description": "Replace current dialog with another dialog.", - "$ref": "#/definitions/Microsoft.ReplaceDialog" - }, - { - "title": "Microsoft.SendActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.SendActivity" - }, - { - "title": "Microsoft.SetProperties", - "description": "Set one or more property values.", - "$ref": "#/definitions/Microsoft.SetProperties" - }, - { - "title": "Microsoft.SetProperty", - "description": "Set property to a value.", - "$ref": "#/definitions/Microsoft.SetProperty" - }, - { - "title": "Microsoft.SignOutUser", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "$ref": "#/definitions/Microsoft.SignOutUser" - }, - { - "title": "Microsoft.SkillDialog", - "description": "Begin a remote skill dialog.", - "$ref": "#/definitions/Microsoft.SkillDialog" - }, - { - "title": "Microsoft.SwitchCondition", - "description": "Execute different actions based on the value of a property.", - "$ref": "#/definitions/Microsoft.SwitchCondition" - }, - { - "title": "Microsoft.Test.AssertCondition", - "description": "Assert condition is true.", - "$ref": "#/definitions/Microsoft.Test.AssertCondition" - }, - { - "title": "Microsoft.TextInput", - "description": "Collection information - Ask for a word or sentence.", - "$ref": "#/definitions/Microsoft.TextInput" - }, - { - "title": "Microsoft.TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", - "$ref": "#/definitions/Microsoft.TraceActivity" - }, - { - "title": "Microsoft.UpdateActivity", - "description": "Respond with an activity.", - "$ref": "#/definitions/Microsoft.UpdateActivity" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.IEntityRecognizer": { - "$role": "interface", - "title": "Entity Recognizers", - "description": "Components which derive from EntityRecognizer.", - "type": "object", - "oneOf": [ - { - "title": "Microsoft.AgeEntityRecognizer", - "description": "Recognizer which recognizes age.", - "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" - }, - { - "title": "Microsoft.ConfirmationEntityRecognizer", - "description": "Recognizer which recognizes confirmation choices (yes/no).", - "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" - }, - { - "title": "Microsoft.CurrencyEntityRecognizer", - "description": "Recognizer which recognizes currency.", - "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" - }, - { - "title": "Microsoft.DateTimeEntityRecognizer", - "description": "Recognizer which recognizes dates and time fragments.", - "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" - }, - { - "title": "Microsoft.DimensionEntityRecognizer", - "description": "Recognizer which recognizes dimension.", - "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" - }, - { - "title": "Microsoft.EmailEntityRecognizer", - "description": "Recognizer which recognizes email.", - "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" - }, - { - "title": "Microsoft.GuidEntityRecognizer", - "description": "Recognizer which recognizes guids.", - "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" - }, - { - "title": "Microsoft.HashtagEntityRecognizer", - "description": "Recognizer which recognizes Hashtags.", - "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" - }, - { - "title": "Microsoft.IpEntityRecognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "$ref": "#/definitions/Microsoft.IpEntityRecognizer" - }, - { - "title": "Microsoft.MentionEntityRecognizer", - "description": "Recognizer which recognizes @Mentions", - "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" - }, - { - "title": "Microsoft.NumberEntityRecognizer", - "description": "Recognizer which recognizes numbers.", - "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" - }, - { - "title": "Microsoft.NumberRangeEntityRecognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" - }, - { - "title": "Microsoft.OrdinalEntityRecognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" - }, - { - "title": "Microsoft.PercentageEntityRecognizer", - "description": "Recognizer which recognizes percentages.", - "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" - }, - { - "title": "Microsoft.PhoneNumberEntityRecognizer", - "description": "Recognizer which recognizes phone numbers.", - "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" - }, - { - "title": "Microsoft.RegExEntityRecognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "$ref": "#/definitions/Microsoft.RegExEntityRecognizer" - }, - { - "title": "Microsoft.TemperatureEntityRecognizer", - "description": "Recognizer which recognizes temperatures.", - "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" - }, - { - "title": "Microsoft.UrlEntityRecognizer", - "description": "Recognizer which recognizes urls.", - "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" - }, - { - "type": "string", - "title": "Reference to Microsoft.IEntityRecognizer", - "description": "Reference to Microsoft.IEntityRecognizer .dialog file." - } - ] - }, - "Microsoft.ILanguageGenerator": { - "title": "Microsoft LanguageGenerator", - "description": "Components which dervie from the LanguageGenerator class", - "$role": "interface", - "oneOf": [ - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.IRecognizer": { - "title": "Microsoft Recognizer", - "description": "Components which derive from Recognizer class", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.AdaptiveCardRecognizer", - "description": "Recognizer for detecting the value response from an Adaptive Card.", - "$ref": "#/definitions/Microsoft.AdaptiveCardRecognizer" - }, - { - "title": "Microsoft.CrossTrainedRecognizerSet", - "description": "Recognizer for selecting between cross trained recognizers.", - "$ref": "#/definitions/Microsoft.CrossTrainedRecognizerSet" - }, - { - "title": "Microsoft.LuisRecognizer", - "description": "LUIS recognizer.", - "$ref": "#/definitions/Microsoft.LuisRecognizer" - }, - { - "title": "Microsoft.MultiLanguageRecognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", - "$ref": "#/definitions/Microsoft.MultiLanguageRecognizer" - }, - { - "title": "Microsoft.QnAMakerRecognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "$ref": "#/definitions/Microsoft.QnAMakerRecognizer" - }, - { - "title": "Microsoft.RecognizerSet", - "description": "Creates the union of the intents and entities of the recognizers in the set.", - "$ref": "#/definitions/Microsoft.RecognizerSet" - }, - { - "title": "Microsoft.RegexRecognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "$ref": "#/definitions/Microsoft.RegexRecognizer" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Components which derive from TextTemplate class", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.TextTemplate", - "description": "Use LG Templates to create text", - "$ref": "#/definitions/Microsoft.TextTemplate" - }, - { - "type": "string", - "title": "string" - } - ] - }, - "Microsoft.ITrigger": { - "$role": "interface", - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", - "oneOf": [ - { - "title": "Microsoft.OnActivity", - "description": "Actions to perform on receipt of a generic activity.", - "$ref": "#/definitions/Microsoft.OnActivity" - }, - { - "title": "Microsoft.OnAssignEntity", - "description": "Actions to take when an entity should be assigned to a property.", - "$ref": "#/definitions/Microsoft.OnAssignEntity" - }, - { - "title": "Microsoft.OnBeginDialog", - "description": "Actions to perform when this dialog begins.", - "$ref": "#/definitions/Microsoft.OnBeginDialog" - }, - { - "title": "Microsoft.OnCancelDialog", - "description": "Actions to perform on cancel dialog event.", - "$ref": "#/definitions/Microsoft.OnCancelDialog" - }, - { - "title": "Microsoft.OnChooseEntity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "$ref": "#/definitions/Microsoft.OnChooseEntity" - }, - { - "title": "Microsoft.OnChooseIntent", - "description": "Actions to perform on when an intent is ambigious.", - "$ref": "#/definitions/Microsoft.OnChooseIntent" - }, - { - "title": "Microsoft.OnChooseProperty", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "$ref": "#/definitions/Microsoft.OnChooseProperty" - }, - { - "title": "Microsoft.OnCondition", - "description": "Actions to perform when specified condition is true.", - "$ref": "#/definitions/Microsoft.OnCondition" - }, - { - "title": "Microsoft.OnConversationUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "$ref": "#/definitions/Microsoft.OnConversationUpdateActivity" - }, - { - "title": "Microsoft.OnCustomEvent", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "$ref": "#/definitions/Microsoft.OnCustomEvent" - }, - { - "title": "Microsoft.OnDialogEvent", - "description": "Actions to perform when a specific dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnDialogEvent" - }, - { - "title": "Microsoft.OnEndOfActions", - "description": "Actions to take when there are no more actions in the current dialog.", - "$ref": "#/definitions/Microsoft.OnEndOfActions" - }, - { - "title": "Microsoft.OnEndOfConversationActivity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "$ref": "#/definitions/Microsoft.OnEndOfConversationActivity" - }, - { - "title": "Microsoft.OnError", - "description": "Action to perform when an 'Error' dialog event occurs.", - "$ref": "#/definitions/Microsoft.OnError" - }, - { - "title": "Microsoft.OnEventActivity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "$ref": "#/definitions/Microsoft.OnEventActivity" - }, - { - "title": "Microsoft.OnHandoffActivity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "$ref": "#/definitions/Microsoft.OnHandoffActivity" - }, - { - "title": "Microsoft.OnIntent", - "description": "Actions to perform when specified intent is recognized.", - "$ref": "#/definitions/Microsoft.OnIntent" - }, - { - "title": "Microsoft.OnInvokeActivity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "$ref": "#/definitions/Microsoft.OnInvokeActivity" - }, - { - "title": "Microsoft.OnMessageActivity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "$ref": "#/definitions/Microsoft.OnMessageActivity" - }, - { - "title": "Microsoft.OnMessageDeleteActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "$ref": "#/definitions/Microsoft.OnMessageDeleteActivity" - }, - { - "title": "Microsoft.OnMessageReactionActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "$ref": "#/definitions/Microsoft.OnMessageReactionActivity" - }, - { - "title": "Microsoft.OnMessageUpdateActivity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "$ref": "#/definitions/Microsoft.OnMessageUpdateActivity" - }, - { - "title": "Microsoft.OnQnAMatch", - "description": "Actions to perform on when an match from QnAMaker is found.", - "$ref": "#/definitions/Microsoft.OnQnAMatch" - }, - { - "title": "Microsoft.OnRepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "$ref": "#/definitions/Microsoft.OnRepromptDialog" - }, - { - "title": "Microsoft.OnTypingActivity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "$ref": "#/definitions/Microsoft.OnTypingActivity" - }, - { - "title": "Microsoft.OnUnknownIntent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "$ref": "#/definitions/Microsoft.OnUnknownIntent" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITrigger", - "description": "Reference to Microsoft.ITrigger .dialog file." - } - ] - }, - "Microsoft.ITriggerSelector": { - "$role": "interface", - "title": "Selectors", - "description": "Components which derive from TriggerSelector class.", - "oneOf": [ - { - "title": "Microsoft.ConditionalSelector", - "description": "Use a rule selector based on a condition", - "$ref": "#/definitions/Microsoft.ConditionalSelector" - }, - { - "title": "Microsoft.FirstSelector", - "description": "Selector for first true rule", - "$ref": "#/definitions/Microsoft.FirstSelector" - }, - { - "title": "Microsoft.MostSpecificSelector", - "description": "Select most specific true events with optional additional selector", - "$ref": "#/definitions/Microsoft.MostSpecificSelector" - }, - { - "title": "Microsoft.RandomSelector", - "description": "Select most specific true rule", - "$ref": "#/definitions/Microsoft.RandomSelector" - }, - { - "title": "Microsoft.TrueSelector", - "description": "Selector for all true events", - "$ref": "#/definitions/Microsoft.TrueSelector" - }, - { - "type": "string", - "title": "Reference to Microsoft.ITriggerSelector", - "description": "Reference to Microsoft.ITriggerSelector .dialog file." - } - ] - }, - "Microsoft.IfCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "If condition", - "description": "Two-way branch the conversation flow based on a condition.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evaluate.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.IpEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Information to log." - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "traceActivity": { - "$role": "expression", - "title": "Send Trace Activity", - "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator).", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.LuisRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "LUIS Recognizer", - "description": "LUIS recognizer.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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": { - "type": "string", - "title": "LUIS Application ID", - "description": "Application ID for your model from the LUIS service.", - "$role": "expression" - }, - "endpoint": { - "type": "string", - "title": "LUIS Endpoint", - "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com.", - "$role": "expression" - }, - "endpointKey": { - "type": "string", - "title": "LUIS prediction key", - "description": "LUIS prediction key used to call endpoint.", - "$role": "expression" - }, - "externalEntityRecognizer": { - "title": "External Entity Recognizer", - "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.", - "$kind": "Microsoft.IRecognizer", - "$ref": "#/definitions/Microsoft.IRecognizer" - }, - "dynamicLists": { - "$role": "expression", - "title": "Dynamic lists", - "description": "Runtime defined entity lists.", - "oneOf": [ - { - "type": "array", - "items": { - "title": "Entity list", - "description": "Lists of canonical values and synonyms for an entity.", - "type": "object", - "properties": { - "entity": { - "title": "Entity", - "description": "Entity to extend with a dynamic list.", - "type": "string" - }, - "list": { - "title": "Dynamic list", - "description": "List of canonical forms and synonyms.", - "type": "array", - "items": { - "type": "object", - "properties": { - "canonicalForm": { - "title": "Canonical form", - "description": "Resolution if any synonym matches.", - "type": "string" - }, - "synonyms": { - "title": "Synonyms", - "description": "List of synonyms for a canonical form.", - "type": "array", - "items": { - "type": "string", - "title": "string" - } - } - }, - "title": "object" - } - } - } - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "predictionOptions": { - "type": "object", - "properties": { - "includeAllIntents": { - "type": "boolean", - "title": "Include all intents", - "description": "True for all intents, false for only top intent." - }, - "includeInstanceData": { - "type": "boolean", - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." - }, - "log": { - "type": "boolean", - "title": "Log utterances", - "description": "True to log utterances on LUIS service." - }, - "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." - }, - "slot": { - "type": "string", - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." - }, - "version": { - "type": "string", - "title": "Version", - "description": "LUIS application version to use." - } - } - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "applicationId", - "endpoint", - "endpointKey", - "$kind" - ] - } - ] - }, - "Microsoft.MentionEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.MostSpecificSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "selector": { - "$kind": "Microsoft.ITriggerSelector", - "$ref": "#/definitions/Microsoft.ITriggerSelector" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "=@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the number output.", - "examples": [ - "=this.value", - "=int(this.text)" - ] - }, - "defaultLocale": { - "$role": "expression", - "type": "string", - "title": "Default locale", - "description": "Default locale.", - "default": "en-us" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.NumberRangeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.OAuthInput": { - "$role": "implements(Microsoft.IDialog)", - "title": "OAuthInput Dialog", - "description": "Collect login information.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection name", - "description": "The connection name configured in Azure Web App Bot OAuth settings.", - "examples": [ - "msgraphOAuthConnection" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "text": { - "$role": "expression", - "type": "string", - "title": "Text", - "description": "Text shown in the OAuth signin card.", - "examples": [ - "Please sign in. " - ] - }, - "title": { - "$role": "expression", - "type": "string", - "title": "Title", - "description": "Title shown in the OAuth signin card.", - "examples": [ - "Login" - ] - }, - "timeout": { - "$role": "expression", - "title": "Timeout", - "description": "Time out setting for the OAuth signin card.", - "oneOf": [ - { - "type": "integer", - "default": "900000", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "examples": [ - 3 - ], - "oneOf": [ - { - "type": "integer", - "default": 3, - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "Expression to examine on each turn of the conversation as possible value to the property.", - "examples": [ - "@token" - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "connectionName", - "$kind" - ] - } - ] - }, - "Microsoft.OnActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On activity", - "description": "Actions to perform on receipt of a generic activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "type": { - "type": "string", - "title": "Activity type", - "description": "The Activity.Type to match" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "type", - "$kind" - ] - } - ] - }, - "Microsoft.OnAssignEntity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On entity assignment", - "description": "Actions to take when an entity should be assigned to a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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 to use for assigning entity" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnBeginDialog": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On begin dialog", - "description": "Actions to perform when this dialog begins.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCancelDialog": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseEntity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On choose entity", - "description": "Actions to be performed when an entity value needs to be resolved.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseIntent": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On ambigious intent", - "description": "Actions to perform on when an intent is ambigious.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intents": { - "type": "array", - "title": "Intents", - "description": "Intents that must be in the ChooseIntent result for this condition to trigger.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnChooseProperty": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On choose property", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "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" - } - }, - "entities": { - "type": "array", - "title": "Possible properties", - "description": "Entities being assigned", - "items": { - "type": "string", - "title": "Entity name" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCondition": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On condition", - "description": "Actions to perform when specified condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnConversationUpdateActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On ConversationUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnCustomEvent": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On custom event", - "description": "Actions to perform when a custom event is detected. Use 'Emit a custom event' action to raise a custom event.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.OnCustomEvent" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Custom event name", - "description": "Name of the custom event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnDialogEvent": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On dialog event", - "description": "Actions to perform when a specific dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "event": { - "type": "string", - "title": "Dialog event name", - "description": "Name of dialog event." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "event", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfActions": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On end of actions", - "description": "Actions to take when there are no more actions in the current dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEndOfConversationActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On EndOfConversation activity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnError": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On Error", - "description": "Action to perform when an 'Error' dialog event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnEventActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On Event activity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnHandoffActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On Handoff activity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnIntent": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On intent recognition", - "description": "Actions to perform when specified intent is recognized.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, - "intent": { - "type": "string", - "title": "Intent", - "description": "Name of intent." - }, - "entities": { - "type": "array", - "title": "Entities", - "description": "Required entities.", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnInvokeActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On Invoke activity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On Message activity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageDeleteActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On MessageDelete activity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageReactionActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On MessageReaction activity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnMessageUpdateActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On MessageUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnQnAMatch": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On QnAMaker Match", - "description": "Actions to perform on when an match from QnAMaker is found.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnRepromptDialog": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On RepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnTypingActivity": { - "$role": "implements(Microsoft.ITrigger)", - "title": "On Typing activity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OnUnknownIntent": { - "title": "On unknown intent", - "description": "Action to perform when user input is unrecognized and if none of the 'on intent recognition' triggers match recognized intent.", - "type": "object", - "$role": "implements(Microsoft.ITrigger)", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Condition (expression).", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "actions": { - "type": "array", - "description": "Sequence of actions to execute.", - "items": { - "$kind": "Microsoft.IDialog", - "$ref": "#/definitions/Microsoft.IDialog" - } - }, - "priority": { - "title": "priority", - "description": "Priority expression of rule with 0 being the most important", - "$role": "expression", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - }, - "runOnce": { - "type": "boolean", - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "actions", - "$kind" - ] - } - ] - }, - "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", - "type": "object", - "additionalProperties": false, - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "=settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "=settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "=settings.qna.hostname", - "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": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "activeLearningCardTitle": { - "$role": "expression", - "type": "string", - "title": "Active learning card title", - "description": "Title for active learning suggestions card.", - "default": "Did you mean:" - }, - "cardNoMatchText": { - "$role": "expression", - "type": "string", - "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": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "type": "boolean", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "default": false - }, - "rankerType": { - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "enum": [ - "Default", - "QuestionOnly", - "AutoSuggestQuestion" - ], - "default": "Default" - } - }, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.QnAMakerRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional unique id using with RecognizerSet." - }, - "knowledgeBaseId": { - "$role": "expression", - "type": "string", - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "settings.qna.knowledgebaseid" - }, - "endpointKey": { - "$role": "expression", - "type": "string", - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB.", - "default": "settings.qna.endpointkey" - }, - "hostname": { - "$role": "expression", - "type": "string", - "title": "Hostname", - "description": "Hostname for your QnA Maker service.", - "default": "settings.qna.hostname", - "examples": [ - "https://yourserver.azurewebsites.net/qnamaker" - ] - }, - "threshold": { - "$role": "expression", - "title": "Threshold", - "description": "Threshold score to filter results.", - "oneOf": [ - { - "type": "number", - "default": 0.3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "strictFilters": { - "$role": "expression", - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "maximum": 100 - }, - "value": { - "type": "string", - "title": "Value", - "maximum": 100 - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "top": { - "$role": "expression", - "title": "Top", - "description": "The number of answers you want to retrieve.", - "oneOf": [ - { - "type": "number", - "default": 3, - "title": "number" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to number." - } - ] - }, - "isTest": { - "$role": "expression", - "title": "IsTest", - "description": "True, if pointing to Test environment, else false.", - "oneOf": [ - { - "type": "boolean", - "default": false, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "rankerType": { - "$role": "expression", - "type": "string", - "title": "RankerType", - "description": "Type of Ranker.", - "default": "Default" - }, - "includeDialogNameInMetadata": { - "$role": "expression", - "title": "Include Dialog Name", - "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "metadata": { - "$role": "expression", - "title": "value to ", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "oneOf": [ - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name" - }, - "value": { - "type": "string", - "title": "Value" - } - }, - "title": "object" - }, - "title": "array" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to array." - } - ] - }, - "context": { - "$role": "expression", - "title": "QnARequestContext", - "oneOf": [ - { - "type": "object", - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "qnaId": { - "$role": "expression", - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API.", - "oneOf": [ - { - "type": "integer", - "title": "integer" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to integer." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "knowledgeBaseId", - "endpointKey", - "hostname", - "$kind" - ] - } - ] - }, - "Microsoft.RandomSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Random rule selector", - "description": "Select most specific true rule", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "seed": { - "type": "integer" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "recognizers", - "$kind" - ] - } - ] - }, - "Microsoft.RegExEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "name": { - "type": "string", - "title": "Name", - "description": "Name of the entity" - }, - "pattern": { - "type": "string", - "title": "Pattern", - "description": "Pattern expressed as regular expression." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "name", - "pattern", - "$kind" - ] - } - ] - }, - "Microsoft.RegexRecognizer": { - "$role": "implements(Microsoft.IRecognizer)", - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "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", - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "intents", - "$kind" - ] - } - ] - }, - "Microsoft.RepeatDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Repeat dialog", - "description": "Repeat current dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.ReplaceDialog": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Replace dialog", - "description": "Replace current dialog with another dialog.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "$role": "expression", - "type": "string", - "title": "Dialog name", - "description": "Name of the dialog to call.", - "examples": [ - "AddToDoDialog" - ], - "$ref": "#/definitions/Microsoft.IDialog" - }, - "options": { - "$role": "expression", - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string", - "title": "Options" - }, - "title": "object" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to object." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SendActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activity": { - "$kind": "Microsoft.IActivityTemplate", - "title": "Activity", - "description": "Activity to send.", - "$ref": "#/definitions/Microsoft.IActivityTemplate" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SetProperties": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set one or more property values.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "assignments": { - "type": "array", - "title": "Assignments", - "description": "Property value assignments to set.", - "items": { - "type": "object", - "properties": { - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - } - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assignments", - "$kind" - ] - } - ] - }, - "Microsoft.SetProperty": { - "$role": "implements(Microsoft.IDialog)", - "title": "Set property", - "description": "Set property to a value.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property (named location to store information).", - "examples": [ - "user.age" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "New value or expression.", - "examples": [ - "='milk'", - "=dialog.favColor", - "=dialog.favColor == 'red'" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "property", - "value", - "$kind" - ] - } - ] - }, - "Microsoft.SignOutUser": { - "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "$role": "expression", - "type": "string", - "title": "ActivityId", - "description": "expression to an activityId to get the members. If none is defined then the current activity id will be used.", - "examples": [ - "=$lastActivity" - ] - }, - "connectionName": { - "$role": "expression", - "type": "string", - "title": "Connection Name", - "description": "Connection name that was used with OAuthInput to log a user in." - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.SkillDialog": { - "$role": "implements(Microsoft.IDialog)", - "title": "Begin a skill dialog", - "description": "Begin a remote skill dialog.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.SkillDialog" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the skill dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityProcessed": { - "$role": "expression", - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity.", - "oneOf": [ - { - "type": "boolean", - "default": true, - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "resultProperty": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store any value returned by the dialog that is called.", - "examples": [ - "dialog.userName" - ] - }, - "botId": { - "$role": "expression", - "type": "string", - "title": "Skill host bot ID", - "description": "The Microsoft App ID that will be calling the skill.", - "default": "=settings.MicrosoftAppId" - }, - "skillHostEndpoint": { - "$role": "expression", - "type": "string", - "title": "Skill host", - "description": "The callback Url for the skill host.", - "default": "=settings.skillHostEndpoint", - "examples": [ - "https://mybot.contoso.com/api/skills/" - ] - }, - "skillAppId": { - "$role": "expression", - "type": "string", - "title": "Skill App ID", - "description": "The Microsoft App ID for the skill." - }, - "skillEndpoint": { - "$role": "expression", - "type": "string", - "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.StaticActivityTemplate": { - "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft Static Activity Template", - "description": "This allows you to define a static Activity object", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "title": "Activity", - "Description": "A static Activity to used" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.SwitchCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Switch condition", - "description": "Execute different actions based on the value of a property.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "$role": "expression", - "type": "string", - "title": "Condition", - "description": "Property to evaluate.", - "examples": [ - "user.favColor" - ] - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "cases": { - "type": "array", - "title": "Cases", - "desc": "Actions for each possible condition.", - "items": { - "type": "object", - "required": [ - "value", - "case" - ], - "properties": { - "value": { - "type": [ - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Value.", - "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" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "condition", - "$kind" - ] - } - ] - }, - "Microsoft.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Temperature Recognizer", - "description": "Recognizer which recognizes temperatures.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertCondition": { - "$role": "implements(Microsoft.IDialog)", - "title": "Assert Condition", - "description": "Assert condition is true.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertCondition" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "condition": { - "$role": "expression", - "title": "Condition", - "description": "Expression to evalute", - "examples": [ - "user.age > 10" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of what the condition is testing" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReply": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply", - "description": "Asserts that a reply text is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReply" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Reply Text", - "description": "Expected reply text" - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply Activity", - "description": "Asserts that a reply activity is valid.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "assertions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.AssertReplyOneOf": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Assert Reply OneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.AssertReplyOneOf" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "array", - "title": "Replies", - "description": "Expected replies (one of which must match", - "items": { - "type": "string" - } - }, - "exact": { - "type": "boolean", - "title": "Exact Match", - "description": "If true then an exact match must happen, if false then the reply activity.text must contain the reply text. [Default:false]" - }, - "description": { - "type": "string", - "title": "Description", - "description": "The description of what the assertion is testing" - }, - "timeout": { - "type": "number", - "title": "Timeout", - "description": "The amount of time in milliseconds to wait for a reply (default is 3000)" - }, - "assertions": { - "type": "array", - "title": "Assertions to perform to validate Activity that is sent by the dialog", - "description": "Sequence of expressions which must evaluate to true.", - "items": { - "$role": "expression", - "title": "Assertion", - "description": "Assertion as an expression, which must evaluate to true or it will fail the test script.", - "examples": [ - "user.vip == true" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "replies", - "$kind" - ] - } - ] - }, - "Microsoft.Test.ITestAction": { - "title": "Microsoft Test ITestAction", - "description": "Components which derive from TestAction class", - "$role": "interface", - "oneOf": [ - { - "title": "Microsoft.Test.AssertReply", - "description": "Asserts that a reply text is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReply" - }, - { - "title": "Microsoft.Test.AssertReplyActivity", - "description": "Asserts that a reply activity is valid.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyActivity" - }, - { - "title": "Microsoft.Test.AssertReplyOneOf", - "description": "Asserts that a reply text is one of multiple optional responses.", - "$ref": "#/definitions/Microsoft.Test.AssertReplyOneOf" - }, - { - "title": "Microsoft.Test.UserActivity", - "description": "Sends activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserActivity" - }, - { - "title": "Microsoft.Test.UserConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserConversationUpdate" - }, - { - "title": "Microsoft.Test.UserDelay", - "description": "Delays text script for time period.", - "$ref": "#/definitions/Microsoft.Test.UserDelay" - }, - { - "title": "Microsoft.Test.UserSays", - "description": "Sends text to the bot from the user.", - "$ref": "#/definitions/Microsoft.Test.UserSays" - }, - { - "title": "Microsoft.Test.UserTyping", - "description": "Sends typing activity to the bot.", - "$ref": "#/definitions/Microsoft.Test.UserTyping" - }, - { - "type": "string", - "title": "Reference to Microsoft.Test.ITestAction", - "description": "Reference to Microsoft.Test.ITestAction .dialog file." - } - ] - }, - "Microsoft.Test.Script": { - "title": "Test Script", - "description": "Defines a sequence of test actions to perform to validate the behavior of dialogs.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.Script" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "dialog": { - "$kind": "Microsoft.IDialog", - "title": "Dialog", - "description": "The root dialog to execute the test script against.", - "$ref": "#/definitions/Microsoft.IDialog" - }, - "description": { - "type": "string", - "title": "Description", - "description": "Description of the test script" - }, - "script": { - "type": "array", - "description": "Sequence of test actions to execute.", - "items": { - "$kind": "Microsoft.Test.ITestAction", - "$ref": "#/definitions/Microsoft.Test.ITestAction" - } - }, - "locale": { - "type": "string", - "title": "Locale", - "description": "Set the locale for the user utterances in the script.", - "default": "en-us" - }, - "enableTrace": { - "type": "boolean", - "title": "Enable Trace Activity", - "description": "Enable trace activities in the unit test (default is false)", - "default": false - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "dialog", - "testActions", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserActivity": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Activity", - "description": "Sends activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserActivity" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "activity": { - "type": "object", - "additionalProperties": true - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "activity", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserConversationUpdate": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send ConversationUpdate", - "description": "Sends ConversationUpdate activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserConversationUpdate" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "membersAdded": { - "type": "array", - "title": "Members Added", - "description": "Names of the members to add", - "items": { - "type": "string" - } - }, - "membersRemoved": { - "type": "array", - "title": "Members Removed", - "description": "Names of the members to remove", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserDelay": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Delay Execution", - "description": "Delays text script for time period.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserDelay" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "timespan": { - "type": "number", - "title": "Timespan", - "description": "The amount of time in milliseconds to delay the execution of the test script" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "timespan", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserSays": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "User Text", - "description": "Sends text to the bot from the user.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserSays" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "text": { - "type": "string", - "title": "Text", - "description": "Text to send to the bot." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "text", - "$kind" - ] - } - ] - }, - "Microsoft.Test.UserTyping": { - "$role": "implements(Microsoft.Test.ITestAction)", - "title": "Send Typing", - "description": "Sends typing activity to the bot.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.Test.UserTyping" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "user": { - "type": "string", - "title": "User Name", - "description": "The activity.from.id and activity.from.name will be this if specified." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextInput": { - "$role": "implements(Microsoft.IDialog)", - "type": "object", - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ] - }, - "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 the recognizer does not understand the user input.", - "examples": [ - "Sorry, I do not understand '{turn.activity.text'}. Let's try again. What is your birth date?" - ], - "$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": { - "$role": "expression", - "type": [ - "integer", - "string" - ], - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information.", - "default": 3, - "examples": [ - 3 - ] - }, - "validations": { - "type": "array", - "title": "Validation expressions", - "description": "Expression to validate user input.", - "examples": [ - "int(this.value) > 1 && int(this.value) <= 150", - "count(this.value) < 300" - ], - "items": { - "$role": "expression", - "type": "string" - } - }, - "property": { - "$role": "expression", - "type": "string", - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true).", - "examples": [ - "$birthday", - "user.name", - "conversation.issueTitle", - "dialog.favColor" - ] - }, - "defaultValue": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded.", - "examples": [ - "@userName", - "coalesce(@number, @partySize)" - ] - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null.", - "examples": [ - "=@userName" - ] - }, - "alwaysPrompt": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty.", - "default": false, - "examples": [ - false - ] - }, - "allowInterruptions": { - "$role": "expression", - "type": [ - "boolean", - "string" - ], - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", - "default": "true", - "examples": [ - "true" - ] - }, - "outputFormat": { - "$role": "expression", - "type": "string", - "title": "Output format", - "description": "Expression to format the output.", - "examples": [ - "=toUpper(this.value)", - "${toUpper(this.value)}" - ] - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TextTemplate": { - "$role": "implements(Microsoft.ITextTemplate)", - "title": "Microsoft TextTemplate", - "description": "Use LG Templates to create text", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "template": { - "title": "Template", - "Description": "Language Generator template to evaluate to create the text", - "type": "string" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "template", - "$kind" - ] - } - ] - }, - "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", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "name": { - "$role": "expression", - "type": "string", - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "$role": "expression", - "type": "string", - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "$role": "expression", - "type": "string", - "title": "Value type", - "description": "Type of value" - }, - "value": { - "$role": "expression", - "type": [ - "object", - "array", - "number", - "integer", - "boolean", - "string" - ], - "title": "Value", - "description": "Property that holds the value to send as trace activity." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.TrueSelector": { - "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", - "description": "Selector for all true events", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UpdateActivity": { - "$role": "implements(Microsoft.IDialog)", - "title": "Send an activity", - "description": "Respond with an activity.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - }, - "id": { - "type": "string", - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "$role": "expression", - "title": "Disabled", - "description": "Optional condition which if true will disable this action.", - "examples": [ - "user.age > 3" - ], - "oneOf": [ - { - "type": "boolean", - "title": "boolean" - }, - { - "type": "string", - "title": "Expression", - "description": "Expression evaluating to boolean." - } - ] - }, - "activityId": { - "$role": "expression", - "type": "string", - "title": "Activity Id", - "dDescription": "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" - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - }, - "Microsoft.UrlEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Confirmation Url Recognizer", - "description": "Recognizer which recognizes urls.", - "type": "object", - "properties": { - "$kind": { - "title": "$kind", - "description": "Defines the valid 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" - }, - "$copy": { - "title": "$copy", - "description": "Copy the definition by id from a .dialog file.", - "type": "string", - "pattern": "^(([a-zA-Z][a-zA-Z0-9.]*)?(#[a-zA-Z][a-zA-Z0-9.]*)?)$" - }, - "$id": { - "title": "$id", - "description": "Inline id for reuse of an inline definition", - "type": "string", - "pattern": "^([a-zA-Z][a-zA-Z0-9.]*)$" - }, - "$designer": { - "title": "$designer", - "type": "object", - "description": "Extra information for the Bot Framework Designer." - } - }, - "additionalProperties": false, - "patternProperties": { - "^\\$": { - "type": "string" - } - }, - "anyOf": [ - { - "title": "Reference", - "required": [ - "$copy" - ] - }, - { - "title": "Type", - "required": [ - "$kind" - ] - } - ] - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/build_runtime.ps1 b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/build_runtime.ps1 +++ /dev/null @@ -1,17 +0,0 @@ -if ((dotnet --version) -lt '3.1.0') { - throw "! dotnet core 3.1 is required, please refer following documents for help. https://dotnet.microsoft.com/download/dotnet-core/3.1" - Break -} - -# This command need dotnet core more than 3.0 -dotnet user-secrets init - -# Merge all streams into stdout -$result = dotnet build *>&1 -# Evaluate success/failure -if($LASTEXITCODE -ne 0) -{ - # Failed, you can reconstruct stderr strings with: - $ErrorString = $result -join [System.Environment]::NewLine - throw $ErrorString -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/build_runtime.sh b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/build_runtime.sh +++ /dev/null @@ -1,11 +0,0 @@ -versionString=`dotnet --version` -function version_lt() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1"; } -if version_lt $versionString "3.1.0"; -then - echo "! dotnet core 3.1 is required, please refer following documents for help. -https://dotnet.microsoft.com/download/dotnet-core/3.1" - exit 1 -else - dotnet user-secrets init - dotnet build -fi diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/create.ps1 b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/create.ps1 +++ /dev/null @@ -1,211 +0,0 @@ -Param( - [string] $name, - [string] $location, - [string] $appId, - [string] $appPassword, - [string] $environment, - [string] $luisAuthoringKey, - [string] $projDir = $(Get-Location), - [string] $logFile = $(Join-Path $PSScriptRoot .. "create_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6){ - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -if (-not (Test-Path (Join-Path $projDir 'appsettings.deployment.json'))) -{ - Write-Host "! Could not find an 'appsettings.deployment.json' file in the current directory." -ForegroundColor DarkRed - Write-Host "+ Please re-run this script from your project directory." -ForegroundColor Magenta - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Name (used as default name for resource group and deployed resources)" -} - -if (-not $environment) -{ - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $location) { - $location = Read-Host "? Azure resource group region" -} - -if (-not $appPassword) { - $appPassword = Read-Host "? Password for MSA app registration (must be at least 16 characters long, contain at least 1 special character, and contain at least 1 numeric character)" -} - -if (-not $appId) { - # Create app registration - $app = (az ad app create ` - --display-name $name ` - --password `"$($appPassword)`" ` - --available-to-other-tenants ` - --reply-urls 'https://token.botframework.com/.auth/web/redirect' ` - --output json) - - # Retrieve AppId - if ($app) { - $appId = ($app | ConvertFrom-Json) | Select-Object -ExpandProperty appId - } - - if(-not $appId) { - Write-Host "! Could not provision Microsoft App Registration automatically. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ Provision an app manually in the Azure Portal, then try again providing the -appId and -appPassword arguments. See https://aka.ms/vamanualappcreation for more information." -ForegroundColor Magenta - Break - } -} - -$shouldCreateAuthoringResource = $true - -# Use pre-exsisting luis authoring key -if ($luisAuthoringKey) { - $shouldCreateAuthoringResource = $false -} - -$resourceGroup = "$name-$environment" -$servicePlanName = "$name-$environment" - -# Get timestamp -$timestamp = Get-Date -f MMddyyyyHHmmss - -# Create resource group -Write-Host "> Creating resource group ..." -(az group create --name $resourceGroup --location $location --output json) 2>> $logFile | Out-Null - -# Deploy Azure services -Write-Host "> Validating Azure deployment ..." -$validation = az group deployment validate ` - --resource-group $resourcegroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - -if ($validation) { - $validation >> $logFile - $validation = $validation | ConvertFrom-Json - - if (-not $validation.error) { - Write-Host "> Deploying Azure services (this could take a while)..." -ForegroundColor Yellow - $deployment = az group deployment create ` - --name $timestamp ` - --resource-group $resourceGroup ` - --template-file "$(Join-Path $PSScriptRoot '..' 'DeploymentTemplates' 'template-with-preexisting-rg.json')" ` - --parameters appId=$appId appSecret="`"$($appPassword)`"" appServicePlanLocation=$location botId=$name shouldCreateAuthoringResource=$shouldCreateAuthoringResource luisAuthoringKey=$luisAuthoringKey ` - --output json - } - else { - Write-Host "! Template is not valid with provided parameters. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($validation.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - if ($validation.error.details -and $validation.error.details[0].code -eq "CanNotCreateMultipleFreeAccounts") - { - Write-Host "! The subscription is exceeding the maximum number of allowed LuisAuthoringAccounts. You already have a luis authoring resource created, please get your luis authoring key and retry with the following command:" -ForegroundColor DarkRed - Write-Host "pwsh ./Scripts/create.ps1 -name $name -environment $environment -location $location -appPassword $appPassword -luisAuthoringKey [YourLuisAuthoringKey]" -ForegroundColor Green - } - - Break - } -} - - -# Get deployment outputs -$outputs = (az group deployment show ` - --name $timestamp ` - --resource-group $resourceGroup ` - --output json) 2>> $logFile - -# If it succeeded then we perform the remainder of the steps -if ($outputs) -{ - # Log and convert to JSON - $outputs >> $logFile - $outputs = $outputs | ConvertFrom-Json - if ($outputs.properties.error) { - Write-Host "! Deployment failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Error: $($outputs.error.message)" -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - - Break - } - - $outputs = $outputs.properties.outputs - $outputMap = @{} - $outputs.PSObject.Properties | Foreach-Object { $outputMap[$_.Name] = $_.Value } - - # Update appsettings.deployment.json - Write-Host "> Updating appsettings.deployment.json ..." - if (Test-Path $(Join-Path $projDir appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $projDir appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppId' -Value $appId - $settings | Add-Member -Type NoteProperty -Force -Name 'MicrosoftAppPassword' -Value $appPassword - - $settings | Add-Member -Type NoteProperty -Force -Name 'bot' -Value "ComposerDialogs" - - foreach ($key in $outputMap.Keys) { $settings | Add-Member -Type NoteProperty -Force -Name $key -Value $outputMap[$key].value } - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $projDir appsettings.deployment.json) - - Write-Host "> Done." - Write-Host "- App Id: $appId" - Write-Host "- App Password: $appPassword" - Write-Host "- Resource Group: $resourceGroup" - Write-Host "- ServicePlan: $servicePlanName" - Write-Host "- Bot Name: $name" - Write-Host "- Web App Name : $name" -} -else -{ - # Check for failed deployments - $operations = az group deployment operation list -g $resourceGroup -n $timestamp --output json 2>> $logFile | Out-Null - - if ($operations) { - $operations = $operations | ConvertFrom-Json - $failedOperations = $operations | Where { $_.properties.statusmessage.error -ne $null } - if ($failedOperations) { - foreach ($operation in $failedOperations) { - switch ($operation.properties.statusmessage.error.code) { - "MissingRegistrationForLocation" { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType). This resource is not avaliable in the location provided." -ForegroundColor DarkRed - Write-Host "+ Update the .\Deployment\Resources\parameters.template.json file with a valid region for this resource and provide the file path in the -parametersFile parameter." -ForegroundColor Magenta - } - default { - Write-Host "! Deployment failed for resource of type $($operation.properties.targetResource.resourceType)." - Write-Host "! Code: $($operation.properties.statusMessage.error.code)." - Write-Host "! Message: $($operation.properties.statusMessage.error.message)." - } - } - } - } - } - else { - Write-Host "! Deployment failed. Please refer to the log file for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } - - Write-Host "+ To delete this resource group, run 'az group delete -g $($resourceGroup) --no-wait'" -ForegroundColor Magenta - Break -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/deploy.ps1 b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/deploy.ps1 deleted file mode 100644 index 9d649810b0..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Scripts/deploy.ps1 +++ /dev/null @@ -1,253 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [string] $language, - [string] $projFolder = $(Get-Location), - [string] $botPath, - [string] $logFile = $(Join-Path $PSScriptRoot .. "deploy_log.txt") -) - -if ($PSVersionTable.PSVersion.Major -lt 6) { - Write-Host "! Powershell 6 is required, current version is $($PSVersionTable.PSVersion.Major), please refer following documents for help." - Write-Host "For Windows - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6" - Write-Host "For Mac - https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6" - Break -} - -if ((dotnet --version) -lt 3) { - Write-Host "! dotnet core 3.0 is required, please refer following documents for help." - Write-Host "https://dotnet.microsoft.com/download/dotnet-core/3.0" - Break -} - -# Get mandatory parameters -if (-not $name) { - $name = Read-Host "? Bot Web App Name" -} - -if (-not $environment) { - $environment = Read-Host "? Environment Name (single word, all lowercase)" - $environment = $environment.ToLower().Split(" ") | Select-Object -First 1 -} - -if (-not $language) { - $language = "en-us" -} - -# Reset log file -if (Test-Path $logFile) { - Clear-Content $logFile -Force | Out-Null -} -else { - New-Item -Path $logFile | Out-Null -} - -# Check for existing deployment files -if (-not (Test-Path (Join-Path $projFolder '.deployment'))) { - # Add needed deployment files for az - az bot prepare-deploy --lang Csharp --code-dir $projFolder --proj-file-path BotProject.csproj --output json | Out-Null -} - -# Delete src zip, if it exists -$zipPath = $(Join-Path $projFolder 'code.zip') -if (Test-Path $zipPath) { - Remove-Item $zipPath -Force | Out-Null -} - -# Init user secret id -dotnet user-secrets init - -# Perform dotnet publish step ahead of zipping up -$publishFolder = $(Join-Path $projFolder 'bin\Release\netcoreapp3.1') -dotnet publish -c release -o $publishFolder -v q > $logFile - - -# Copy bot files to running folder -$remoteBotPath = $(Join-Path $publishFolder "ComposerDialogs") -$localBotPath = $(Join-Path $projFolder "ComposerDialogs") -Remove-Item $remoteBotPath -Recurse -ErrorAction Ignore - -if ($botPath) { - Write-Host "Publishing dialogs from external bot project: $($botPath)" - Copy-Item -Path $botPath -Recurse -Destination $remoteBotPath -Container -Force -} -else { - Copy-Item -Path $localBotPath -Recurse -Destination $publishFolder -Container -Force -} - -# Try to get luis config from appsettings -$settings = Get-Content $(Join-Path $projFolder appsettings.deployment.json) | ConvertFrom-Json -$luisSettings = $settings.luis - -if (-not $luisAuthoringKey) { - $luisAuthoringKey = $luisSettings.authoringKey -} - -if (-not $luisEndpointKey) { - $luisEndpointKey = $luisSettings.endpointKey -} - -if (-not $luisAuthoringRegion) { - $luisAuthoringRegion = $luisSettings.region -} - -# Add Luis Config to appsettings -if ($luisAuthoringKey -and $luisAuthoringRegion) { - - Set-Location -Path $remoteBotPath - $models = Get-ChildItem $remoteBotPath -Recurse -Filter "*.lu" | Resolve-Path -Relative - - $noneEmptyModels = [System.Collections.ArrayList]@() - - foreach ($model in $models) { - $stringContent = Get-Content $model | Out-String - if ($stringContent.Length -gt 0) { - $noneEmptyModels.Add($model) - } - } - - # Generate Luconfig.json file - $luconfigjson = @{ - "name" = $name; - "defaultLanguage" = $language; - "models" = $noneEmptyModels - } - - $luString = $noneEmptyModels | Out-String - Write-Host $luString - - $luconfigjson | ConvertTo-Json -Depth 100 | Out-File $(Join-Path $remoteBotPath luconfig.json) - - # Execute bf luis:build command - if (Get-Command bf -errorAction SilentlyContinue) { - $customizedSettings = Get-Content $(Join-Path $remoteBotPath settings appsettings.json) | ConvertFrom-Json - $customizedEnv = $customizedSettings.luis.environment - - # create generated folder if not exists - if (!(Test-Path generated)) { - New-Item -ItemType Directory -Force -Path generated - } - - bf luis:build --luConfig $(Join-Path $remoteBotPath luconfig.json) --botName $name --authoringKey $luisAuthoringKey --dialog --out .\generated --suffix $customizedEnv -f --region $luisAuthoringRegion - } - else { - Write-Host "bf luis:build does not exist, use the following command to install:" - Write-Host "1. npm config set registry https://botbuilder.myget.org/F/botframework-cli/npm/" - Write-Host "2. npm install -g @microsoft/botframework-cli" - Write-Host "3. npm config set registry http://registry.npmjs.org" - Break - } - - if ($?) { - Write-Host "lubuild succeeded" - } - else { - Write-Host "lubuild failed, please verify your luis models." - Break - } - - Set-Location -Path $projFolder - - # change setting file in publish folder - if (Test-Path $(Join-Path $publishFolder appsettings.deployment.json)) { - $settings = Get-Content $(Join-Path $publishFolder appsettings.deployment.json) | ConvertFrom-Json - } - else { - $settings = New-Object PSObject - } - - $luisConfigFiles = Get-ChildItem -Path $publishFolder -Include "luis.settings*" -Recurse -Force - - $luisAppIds = @{ } - - foreach ($luisConfigFile in $luisConfigFiles) { - $luisSetting = Get-Content $luisConfigFile.FullName | ConvertFrom-Json - $luis = $luisSetting.luis - $luis.PSObject.Properties | Foreach-Object { $luisAppIds[$_.Name] = $_.Value } - } - - $luisEndpoint = "https://$luisAuthoringRegion.api.cognitive.microsoft.com" - - $luisConfig = @{ } - - $luisConfig["endpoint"] = $luisEndpoint - $luisConfig["endpointKey"] = $luisEndpointKey - - foreach ($key in $luisAppIds.Keys) { $luisConfig[$key] = $luisAppIds[$key] } - - $settings | Add-Member -Type NoteProperty -Force -Name 'luis' -Value $luisConfig - - $settings | ConvertTo-Json -depth 100 | Out-File $(Join-Path $publishFolder appsettings.deployment.json) - - $tokenResponse = (az account get-access-token) | ConvertFrom-Json - $token = $tokenResponse.accessToken - - if (-not $token) { - Write-Host "! Could not get valid Azure access token" - Break - } - - Write-Host "Getting Luis accounts..." - $luisAccountEndpoint = "$luisEndpoint/luis/api/v2.0/azureaccounts" - $luisAccount = $null - try { - $luisAccounts = Invoke-WebRequest -Method GET -Uri $luisAccountEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - - foreach ($account in $luisAccounts) { - if ($account.AccountName -eq "$name-$environment-luis") { - $luisAccount = $account - break - } - } - } - catch { - Write-Host "Return invalid status code while gettings luis accounts: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - break - } - - $luisAccountBody = $luisAccount | ConvertTo-Json - - # Assign each luis id in luisAppIds with the endpoint key - foreach ($k in $luisAppIds.Keys) { - $luisAppId = $luisAppIds.Item($k) - Write-Host "Assigning to Luis app id: $luisAppId" - $luisAssignEndpoint = "$luisEndpoint/luis/api/v2.0/apps/$luisAppId/azureaccounts" - try { - $response = Invoke-WebRequest -Method POST -ContentType application/json -Body $luisAccountBody -Uri $luisAssignEndpoint -Headers @{"Authorization" = "Bearer $token"; "Ocp-Apim-Subscription-Key" = $luisAuthoringKey } | ConvertFrom-Json - Write-Host $response - } - catch { - Write-Host "Return invalid status code while assigning key to luis apps: $($_.Exception.Response.StatusCode.Value__), error message: $($_.Exception.Response)" - exit - } - } -} - -$resourceGroup = "$name-$environment" - -if ($?) { - # Compress source code - Get-ChildItem -Path "$($publishFolder)" | Compress-Archive -DestinationPath "$($zipPath)" -Force | Out-Null - - # Publish zip to Azure - Write-Host "> Publishing to Azure ..." -ForegroundColor Green - $deployment = (az webapp deployment source config-zip ` - --resource-group $resourceGroup ` - --name "$name-$environment" ` - --src $zipPath ` - --output json) 2>> $logFile - - if ($deployment) { - Write-Host "Publish Success" - } - else { - Write-Host "! Deploy failed. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed - } -} -else { - Write-Host "! Could not deploy automatically to Azure. Review the log for more information." -ForegroundColor DarkRed - Write-Host "! Log: $($logFile)" -ForegroundColor DarkRed -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/SkillConversationIdFactory.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/SkillConversationIdFactory.cs deleted file mode 100644 index 0e2f78ada8..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/SkillConversationIdFactory.cs +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Collections.Concurrent; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Schema; -using Newtonsoft.Json; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - /// - /// A that uses an in memory - /// to store and retrieve instances. - /// - public class SkillConversationIdFactory : SkillConversationIdFactoryBase - { - private readonly ConcurrentDictionary _conversationRefs = new ConcurrentDictionary(); - - public override Task CreateSkillConversationIdAsync(SkillConversationIdFactoryOptions options, CancellationToken cancellationToken) - { - var skillConversationReference = new SkillConversationReference - { - ConversationReference = options.Activity.GetConversationReference(), - OAuthScope = options.FromBotOAuthScope - }; - var key = $"{options.FromBotId}-{options.BotFrameworkSkill.AppId}-{skillConversationReference.ConversationReference.Conversation.Id}-{skillConversationReference.ConversationReference.ChannelId}-skillconvo"; - _conversationRefs.GetOrAdd(key, JsonConvert.SerializeObject(skillConversationReference)); - return Task.FromResult(key); - } - - public override Task GetSkillConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - var conversationReference = JsonConvert.DeserializeObject(_conversationRefs[skillConversationId]); - return Task.FromResult(conversationReference); - } - - public override Task DeleteConversationReferenceAsync(string skillConversationId, CancellationToken cancellationToken) - { - _conversationRefs.TryRemove(skillConversationId, out _); - return Task.CompletedTask; - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Startup.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Startup.cs deleted file mode 100644 index 7df2301408..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Startup.cs +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Bot.Builder.Azure; -using Microsoft.Bot.Builder.BotFramework; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Builder.Integration.AspNet.Core; -using Microsoft.Bot.Builder.Integration.AspNet.Core.Skills; -using Microsoft.Bot.Builder.Skills; -using Microsoft.Bot.Connector.Authentication; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - -namespace Microsoft.Bot.Builder.ComposerBot.Json -{ - public class Startup - { - public Startup(IWebHostEnvironment env, IConfiguration configuration) - { - this.HostingEnvironment = env; - this.Configuration = configuration; - } - - public IWebHostEnvironment HostingEnvironment { get; } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers().AddNewtonsoftJson(); - - services.AddSingleton(this.Configuration); - - // Create the credential provider to be used with the Bot Framework Adapter. - services.AddSingleton(); - services.AddSingleton(sp => (BotFrameworkHttpAdapter)sp.GetService()); - - // Register AuthConfiguration to enable custom claim validation. - services.AddSingleton(); - - // Register the skills client and skills request handler. - services.AddSingleton(); - services.AddHttpClient(); - services.AddSingleton(); - - // Load settings - var settings = new BotSettings(); - Configuration.Bind(settings); - - IStorage storage = null; - - // Configure storage for deployment - if (!string.IsNullOrEmpty(settings.CosmosDb.AuthKey)) - { - storage = new CosmosDbPartitionedStorage(settings.CosmosDb); - } - else - { - Console.WriteLine("The settings of CosmosDbStorage is incomplete, please check following settings: settings.CosmosDb"); - storage = new MemoryStorage(); - } - - services.AddSingleton(storage); - var userState = new UserState(storage); - var conversationState = new ConversationState(storage); - - var botDir = Configuration.GetSection("bot").Get(); - - // manage all bot resources - var resourceExplorer = new ResourceExplorer().AddFolder(botDir); - var rootDialog = GetRootDialog(botDir); - - var defaultLocale = Configuration.GetValue("defaultLocale") ?? "en-us"; - - services.AddSingleton(userState); - services.AddSingleton(conversationState); - services.AddSingleton(resourceExplorer); - - services.AddSingleton((s) => - { - HostContext.Current.Set(Configuration); - - var adapter = new BotFrameworkHttpAdapter(new ConfigurationCredentialProvider(this.Configuration)); - adapter - .UseStorage(storage) - .UseState(userState, conversationState); - - if (!string.IsNullOrEmpty(settings.BlobStorage.ConnectionString) && !string.IsNullOrEmpty(settings.BlobStorage.Container)) - { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings.BlobStorage.ConnectionString, settings.BlobStorage.Container))); - } - else - { - Console.WriteLine("The settings of TranscriptLoggerMiddleware is incomplete, please check following settings: settings.BlobStorage.ConnectionString, settings.BlobStorage.Container"); - } - - adapter.OnTurnError = async (turnContext, exception) => - { - await turnContext.SendActivityAsync(exception.Message).ConfigureAwait(false); - await conversationState.ClearStateAsync(turnContext).ConfigureAwait(false); - await conversationState.SaveChangesAsync(turnContext).ConfigureAwait(false); - }; - return adapter; - }); - - services.AddSingleton(s => - new ComposerBot( - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - s.GetService(), - rootDialog, - defaultLocale)); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - app.UseDefaultFiles(); - app.UseStaticFiles(); - app.UseWebSockets(); - - app.UseRouting() - .UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - - private string GetRootDialog(string folderPath) - { - var dir = new DirectoryInfo(folderPath); - foreach (var f in dir.GetFiles()) - { - if (f.Extension == ".dialog") - { - return f.Name; - } - } - - throw new Exception($"Can't locate root dialog in {dir.FullName}"); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ActionsTests.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ActionsTests.cs deleted file mode 100644 index 57bbd39c51..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ActionsTests.cs +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ActionsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static string getFolderPath(string path) - { - return Path.Combine(samplesDirectory, path); - } - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory)); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Actions_01Actions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("01") - .AssertReply("Step 1") - .AssertReply("Step 2") - .AssertReply("Step 3") - .AssertReply("user.age is set to 18") - .AssertReply("user.age is set to null") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_02EndTurn() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)) - .Send("02") - .AssertReply("What's up?") - .Send("Nothing") - .AssertReply("Oh I see!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_03IfCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("03") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("Carlos") - .AssertReply("Hello Carlos, nice to talk to you!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_04EditArray() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("04") - .AssertReply("Here are the index and values in the array.") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .AssertReply("If each page shows two items, here are the index and values") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_05EndDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("05") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("I'm a joke bot. To get started say \"joke\".") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("I don't know") - .AssertReply("To get to the other side!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_06SwitchCondition() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("07") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .AssertReply("You select: 1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_07RepeatDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("08") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_08TraceAndLog() - { - await BuildTestFlow(getFolderPath("ActionsSample"), sendTrace: true) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("09") - .Send("luhan") - .AssertReply(activity => - { - var trace = (Activity)activity; - Assert.AreEqual(ActivityTypes.Trace, trace.Type, "should be trace activity"); - }) - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_09EditActions() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("10") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("Goodbye!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_10ReplaceDialog() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("11") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you! Please either enter 'joke' or 'fortune' to replace the dialog you want.") - .Send("joke") - .AssertReply("Why did the chicken cross the road?") - .Send("Why?") - .AssertReply("To get to the other side!") - .Send("future") - .AssertReply("Seeing into your future...") - .AssertReply("I see great things in your future!") - .AssertReply("Potentially a successful demo") - .StartTestAsync(); - } - - [TestMethod] - public async Task Actions_11EmitEvent() - { - await BuildTestFlow(getFolderPath("ActionsSample")) - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("I can show you examples on how to use actions. Enter the number next to the entity that you with to see in action.{0}01 - Actions{0}02 - EndTurn{0}03 - IfCondiftion{0}04 - EditArray, Foreach{0}05 - EndDialog{0}06 - HttpRequest{0}07 - SwitchCondition{0}08 - RepeatDialog{0}09 - TraceAndLog{0}10 - EditActions{0}11 - ReplaceDialog{0}12 - EmitEvent{0}13 - QnAMaker", Environment.NewLine)).Send("12") - .AssertReply("Say moo to get a response, say emit to emit a event.") - .Send("moo") - .AssertReply("Yippee ki-yay!") - .Send("emit") - .AssertReply("CustomEvent Fired.") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(string folderPath, bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - var resourceExplorer = new ResourceExplorer(); - resourceExplorer.AddFolder(folderPath); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("actionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); ; - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ControllingConversationTests.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ControllingConversationTests.cs deleted file mode 100644 index 4d90026ea4..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ControllingConversationTests.cs +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ControllingConversationTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "ControllingConversationFlowSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to the Controlling Conversation sample. Choose from the list below to try.{0}You can also type \"Cancel\" to cancel any dialog or \"Endturn\" to explicitly accept an input.", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, What's your age?") - .Send("18") - .AssertReply("Your age is 18 which satisified the condition that was evaluated") - .Send("02") - .AssertReply("Who are your?\n\n 1. Susan\n 2. Nick\n 3. Tom") - .Send("2") - .AssertReply("You selected Nick") - .AssertReply("This is the logic inside the \"Nick\" switch block.") - .Send("03") - .AssertReply("Pushed dialog.id into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("2: 222222") - .Send("04") - .AssertReply("Pushed dialog.ids into a list") - .AssertReply("0: 11111") - .AssertReply("1: 40000") - .AssertReply("0: 222222") - .Send("06") - .Send("hi") - .Send("07") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("Yes") - .AssertReply("Do you want to repeat this dialog, yes to repeat, no to end this dialog (1) Yes or (2) No") - .Send("No") - .Send("08") - .AssertReply("In continue loop, which only outputs dual.") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 3 value: 4") - .AssertReply("index: 5 value: 6") - .AssertReply("In break loop, which breaks when index > 2") - .AssertReply("index: 0 value: 1") - .AssertReply("index: 1 value: 2") - .AssertReply("index: 2 value: 3") - .AssertReply("done") - .Send("09") - .AssertReply("counter: 1") - .AssertReply("counter: 2") - .StartTestAsync(); - } - - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("controllingconversationflowsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/InputsTests.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/InputsTests.cs deleted file mode 100644 index 908f1fd898..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/InputsTests.cs +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License.// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class InputsTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "AskingQuestionsSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - [TestMethod] - public async Task Inputs_01TextInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("01") - .AssertReply("Hello, I'm Zoidberg. What is your name? (This can't be interrupted)") - .Send("02") - .AssertReply("Hello 02, nice to talk to you!") - .Send("02") - .AssertReply("What is your age?") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_02NumberInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("02") - .AssertReply("What is your age?") - .Send("18") - .AssertReply("Hello, your age is 18!") - .AssertReply("2 * 2.2 equals?") - .Send("4.4") - .AssertReply("2 * 2.2 equals 4.4, that's right!") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_03ConfirmInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)) - .Send("03") - .AssertReply("yes or no (1) Yes or (2) No") - .Send("asdasd") - .AssertReply("I need a yes or no. (1) Yes or (2) No") - .Send("yes") - .AssertReply("confirmation: True") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_04ChoiceInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("04") - .AssertReply("Please select a value from below:\n\n 1. Test1\n 2. Test2\n 3. Test3") - .Send("Test1") - .AssertReply("You select: Test1") - .StartTestAsync(); - } - - [TestMethod] - public async Task Inputs_06DateTimeInput() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply(String.Format("Welcome to Input Sample Bot.{0}I can show you examples on how to use actions, You can enter number 01-07{0}01 - TextInput{0}02 - NumberInput{0}03 - ConfirmInput{0}04 - ChoiceInput{0}05 - AttachmentInput{0}06 - DateTimeInput{0}07 - OAuthInput{0}", Environment.NewLine)).Send("06") - .AssertReply("Please enter a date.") - .Send("June 1st") - .AssertReply("You entered: 2019-06-01") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("askingquestionssample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/MessageTests.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/MessageTests.cs deleted file mode 100644 index 6b23006713..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/MessageTests.cs +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class MessageTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "RespondingWithTextSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task MessageTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("1") - .AssertReplyOneOf(new string[] { "Hi, this is simple text", "Hey, this is simple text", "Hello, this is simple text" }) - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("2") - .AssertReply("This is a text saved in memory.") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("3") - .AssertReply("Hello, I'm Zoidberg. What is your name?") - .Send("luhan") - .AssertReply("Hello luhan, nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .Send("4") - .AssertReply("luhan nice to talk to you!") - .AssertReply("What type of message would you like to send?\n\n 1. Simple Text\n 2. Text With Memory\n 3. LGWithParam\n 4. LGComposition\n 5. Structured LG\n 6. MultiLineText\n 7. IfElseCondition\n 8. SwitchCondition") - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("respondingwithtextsample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/Tests.csproj b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/Tests.csproj deleted file mode 100644 index 28a2c36621..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/Tests.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - - - - - - - - - - diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ToDoBotTests.cs b/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ToDoBotTests.cs deleted file mode 100644 index a06646c334..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/Tests/ToDoBotTests.cs +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.Bot.Builder; -using Microsoft.Bot.Builder.Adapters; -using Microsoft.Bot.Builder.Dialogs; -using Microsoft.Bot.Builder.Dialogs.Adaptive; -using Microsoft.Bot.Builder.Dialogs.Declarative.Resources; -using Microsoft.Bot.Schema; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace Tests -{ - [TestClass] - public class ToDoBotTests - { - private static string getOsPath(string path) => Path.Combine(path.TrimEnd('\\').Split('\\')); - - private static readonly string samplesDirectory = getOsPath(@"..\..\..\..\..\..\..\Composer\packages\server\assets\projects"); - - private static ResourceExplorer resourceExplorer = new ResourceExplorer(); - - - [ClassInitialize] - public static void ClassInitialize(TestContext context) - { - string path = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, samplesDirectory, "TodoSample")); - resourceExplorer.AddFolder(path); - } - - [ClassCleanup] - public static void ClassCleanup() - { - resourceExplorer.Dispose(); - } - - public TestContext TestContext { get; set; } - - // Override for locale test - public static IActivity CreateConversationUpdateActivity() - { - return new Activity(ActivityTypes.ConversationUpdate) - { - MembersAdded = new List() { new ChannelAccount(id: "test") }, - MembersRemoved = new List(), - Locale = "en-us" - }; - } - - - [TestMethod] - public async Task ToDoBotTest() - { - await BuildTestFlow() - .Send(CreateConversationUpdateActivity()) - .AssertReply("Hi! I'm a ToDo bot. Say \"add a todo named first\" to get started.") - .Send("add a todo named first") - .AssertReply("Successfully added a todo named first") - .Send("add a todo named second") - .AssertReply("Successfully added a todo named second") - .Send("add a todo") - .AssertReply("OK, please enter the title of your todo.") - .Send("third") - .AssertReply("Successfully added a todo named third") - .Send("show todos") - .AssertReply(String.Format("Your most recent 3 tasks are{0}* first\n* second\n* third", Environment.NewLine)) - .Send("delete todo named second") - .AssertReply("Successfully removed a todo named second") - .Send("show todos") - .AssertReply(String.Format("Your most recent 2 tasks are{0}* first\n* third", Environment.NewLine)) - .StartTestAsync(); - } - - private TestFlow BuildTestFlow(bool sendTrace = false) - { - var storage = new MemoryStorage(); - var convoState = new ConversationState(storage); - var userState = new UserState(storage); - var adapter = new TestAdapter(TestAdapter.CreateConversation(TestContext.TestName), sendTrace); - adapter - .UseStorage(storage) - .UseState(userState, convoState) - .Use(new TranscriptLoggerMiddleware(new FileTranscriptLogger())); - - var resource = resourceExplorer.GetResource("todosample.dialog"); - var dialog = resourceExplorer.LoadType(resource); - DialogManager dm = new DialogManager(dialog) - .UseResourceExplorer(resourceExplorer) - .UseLanguageGeneration(); - - return new TestFlow(adapter, async (turnContext, cancellationToken) => - { - if (dialog is AdaptiveDialog planningDialog) - { - await dm.OnTurnAsync(turnContext, cancellationToken).ConfigureAwait(false); - } - }); - } - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.Deployment.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.Deployment.json deleted file mode 100644 index 1797133380..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.Deployment.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.Development.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.Development.json deleted file mode 100644 index 0db3279e44..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.Development.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.json deleted file mode 100644 index cc17071455..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/appsettings.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "microsoftAppId": "", - "bot": "ComposerDialogs", - "cosmosDb": { - "authKey": "", - "collectionId": "botstate-collection", - "cosmosDBEndpoint": "", - "databaseId": "botstate-db" - }, - "applicationInsights": { - "InstrumentationKey": "" - }, - "blobStorage": { - "connectionString": "", - "container": "transcripts" - } -} diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/packages/packages.json b/Composer/plugins/localPublish/hostedBots/89317.2709537091/packages/packages.json deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Composer/plugins/localPublish/hostedBots/89317.2709537091/wwwroot/default.htm b/Composer/plugins/localPublish/hostedBots/89317.2709537091/wwwroot/default.htm deleted file mode 100644 index 636f6eab84..0000000000 --- a/Composer/plugins/localPublish/hostedBots/89317.2709537091/wwwroot/default.htm +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - __PROJECT_NAME__ - - - - - -
-
-
-
__PROJECT_NAME__
-
-
-
-
-
Your bot is ready!
-
You can test your bot in the Bot Framework Emulator
- by connecting to http://localhost:3978/api/messages.
- -
Visit Azure - Bot Service to register your bot and add it to
- various channels. The bot's endpoint URL typically looks - like this:
-
https://your_bots_hostname/api/messages
-
-
-
-
- -
- - - \ No newline at end of file diff --git a/Composer/plugins/localPublish/lib/copyDir.d.ts b/Composer/plugins/localPublish/lib/copyDir.d.ts deleted file mode 100644 index 27ab1ed294..0000000000 --- a/Composer/plugins/localPublish/lib/copyDir.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IFileStorage } from './interface'; -/** - * Copy a dir from one storage to another storage - * @param srcDir path of the src dir - * @param srcStorage src storage - * @param dstDir path of the dst dir - * @param dstStorage dst storage - */ -export declare function copyDir(srcDir: string, srcStorage: IFileStorage, dstDir: string, dstStorage: IFileStorage): Promise; diff --git a/Composer/plugins/localPublish/lib/copyDir.js b/Composer/plugins/localPublish/lib/copyDir.js deleted file mode 100644 index 64474187da..0000000000 --- a/Composer/plugins/localPublish/lib/copyDir.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.copyDir = void 0; -/** - * Copy a dir from one storage to another storage - * @param srcDir path of the src dir - * @param srcStorage src storage - * @param dstDir path of the dst dir - * @param dstStorage dst storage - */ -function copyDir(srcDir, srcStorage, dstDir, dstStorage) { - return __awaiter(this, void 0, void 0, function* () { - if (!(yield srcStorage.exists(srcDir)) || !(yield srcStorage.stat(srcDir)).isDir) { - throw new Error(`No such dir ${srcDir}}`); - } - if (!(yield dstStorage.exists(dstDir))) { - yield dstStorage.mkDir(dstDir, { recursive: true }); - } - const paths = yield srcStorage.readDir(srcDir); - for (const path of paths) { - const srcPath = `${srcDir}/${path}`; - const dstPath = `${dstDir}/${path}`; - if ((yield srcStorage.stat(srcPath)).isFile) { - // copy files - const content = yield srcStorage.readFile(srcPath); - yield dstStorage.writeFile(dstPath, content); - } - else { - // recursively copy dirs - yield copyDir(srcPath, srcStorage, dstPath, dstStorage); - } - } - }); -} -exports.copyDir = copyDir; -//# sourceMappingURL=copyDir.js.map \ No newline at end of file diff --git a/Composer/plugins/localPublish/lib/copyDir.js.map b/Composer/plugins/localPublish/lib/copyDir.js.map deleted file mode 100644 index 248d856744..0000000000 --- a/Composer/plugins/localPublish/lib/copyDir.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"copyDir.js","sourceRoot":"","sources":["../src/copyDir.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAIlC;;;;;;GAMG;AACH,SAAsB,OAAO,CAAC,MAAc,EAAE,UAAwB,EAAE,MAAc,EAAE,UAAwB;;QAC9G,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE;YAChF,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,GAAG,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;YACtC,MAAM,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SACrD;QAED,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;YAEpC,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE;gBAC3C,aAAa;gBACb,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACnD,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;aAC9C;iBAAM;gBACL,wBAAwB;gBACxB,MAAM,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;aACzD;SACF;IACH,CAAC;CAAA;AAvBD,0BAuBC"} \ No newline at end of file diff --git a/Composer/plugins/localPublish/lib/index.d.ts b/Composer/plugins/localPublish/lib/index.d.ts deleted file mode 100644 index deae25e201..0000000000 --- a/Composer/plugins/localPublish/lib/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: (composer: any) => Promise; -export default _default; diff --git a/Composer/plugins/localPublish/lib/index.js b/Composer/plugins/localPublish/lib/index.js deleted file mode 100644 index 7f4d011a4e..0000000000 --- a/Composer/plugins/localPublish/lib/index.js +++ /dev/null @@ -1,470 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const child_process_1 = require("child_process"); -const path_1 = __importDefault(require("path")); -const fs_1 = __importDefault(require("fs")); -const util_1 = require("util"); -const globby_1 = __importDefault(require("globby")); -const rimraf_1 = __importDefault(require("rimraf")); -const archiver_1 = __importDefault(require("archiver")); -const uuid_1 = require("uuid"); -const adm_zip_1 = __importDefault(require("adm-zip")); -const portfinder_1 = __importDefault(require("portfinder")); -const stat = util_1.promisify(fs_1.default.stat); -const readDir = util_1.promisify(fs_1.default.readdir); -const removeFile = util_1.promisify(fs_1.default.unlink); -const mkDir = util_1.promisify(fs_1.default.mkdir); -const removeDirAndFiles = util_1.promisify(rimraf_1.default); -const copyFile = util_1.promisify(fs_1.default.copyFile); -const readFile = util_1.promisify(fs_1.default.readFile); -const isWin = process.platform === 'win32'; -let LocalPublisher = /** @class */ (() => { - class LocalPublisher { - constructor(composer) { - this.baseDir = path_1.default.resolve(__dirname, '../'); - this.setBotStatus = (botId, status) => { - this.composer.log(`SETTING STATUS OF ${botId} to port ${status.port} and status ${status.status}`); - // preserve the pid and port if one is available - if (!status.process && LocalPublisher.runningBots[botId] && LocalPublisher.runningBots[botId].process) { - status.process = LocalPublisher.runningBots[botId].process; - } - if (!status.port && LocalPublisher.runningBots[botId] && LocalPublisher.runningBots[botId].port) { - status.port = LocalPublisher.runningBots[botId].port; - } - LocalPublisher.runningBots[botId] = status; - }; - this.publishAsync = (botId, version, fullSettings, project, user) => __awaiter(this, void 0, void 0, function* () { - try { - // if enableCustomRuntime is not true, initialize the runtime code in a tmp folder - // and export the content into that folder as well. - const runtime = this.composer.getRuntimeByProject(project); - if (!project.settings.runtime || project.settings.runtime.customRuntime !== true) { - this.composer.log('Using managed runtime'); - yield this.initBot(project); - yield this.saveContent(botId, version, project.dataDir, user); - yield runtime.setSkillManifest(this.getBotRuntimeDir(botId), project.fileStorage, this.getManifestSrcDir(project.dataDir), project.fileStorage); - } - else if (project.settings.runtime.path && project.settings.runtime.command) { - yield runtime.setSkillManifest(project.settings.runtime.path, project.fileStorage, this.getManifestSrcDir(project.dataDir), project.fileStorage); - } - else { - throw new Error('Custom runtime settings are incomplete. Please specify path and command.'); - } - yield this.setBot(botId, version, fullSettings, project); - } - catch (error) { - this.stopBot(botId); - this.setBotStatus(botId, { - status: 500, - result: { - message: error.message, - }, - }); - } - }); - // config include botId and version, project is content(ComposerDialogs) - this.publish = (config, project, metadata, user) => __awaiter(this, void 0, void 0, function* () { - const { fullSettings } = config; - const botId = project.id; - const version = 'default'; - this.composer.log('Starting publish'); - // set the running bot status - this.setBotStatus(botId, { status: 202, result: { message: 'Reloading...' } }); - try { - // start or restart the bot process - // do NOT await this, as it can take a long time - this.publishAsync(botId, version, fullSettings, project, user); - return { - status: 202, - result: { - id: uuid_1.v4(), - message: 'Local publish success.', - }, - }; - } - catch (error) { - return { - status: 500, - result: { - message: error, - }, - }; - } - }); - this.getStatus = (config, project, user) => __awaiter(this, void 0, void 0, function* () { - const botId = project.id; - if (LocalPublisher.runningBots[botId]) { - if (LocalPublisher.runningBots[botId].status === 200) { - const port = LocalPublisher.runningBots[botId].port; - const url = `http://localhost:${port}`; - return { - status: 200, - result: { - message: 'Running', - endpointURL: url, - }, - }; - } - else { - const status = { - status: LocalPublisher.runningBots[botId].status, - result: LocalPublisher.runningBots[botId].result, - }; - if (LocalPublisher.runningBots[botId].status === 500) { - // after we return the 500 status once, delete it out of the running bots list. - delete LocalPublisher.runningBots[botId]; - } - return status; - } - } - else { - return { - status: 200, - result: { - message: 'Ready', - }, - }; - } - }); - this.removeRuntimeData = (botId) => __awaiter(this, void 0, void 0, function* () { - const targetDir = path_1.default.resolve(__dirname, `../hostedBots/${botId}`); - if (!(yield this.dirExist(targetDir))) { - return { msg: `runtime path ${targetDir} does not exist` }; - } - try { - yield removeDirAndFiles(targetDir); - return { msg: `successfully removed runtime data in ${targetDir}` }; - } - catch (e) { - throw new Error(`Failed to remove ${targetDir}`); - } - }); - this.getBotsDir = () => process.env.LOCAL_PUBLISH_PATH || path_1.default.resolve(this.baseDir, 'hostedBots'); - this.getBotDir = (botId) => path_1.default.resolve(this.getBotsDir(), botId); - this.getBotRuntimeDir = (botId) => path_1.default.resolve(this.getBotDir(botId), 'runtime'); - this.getBotAssetsDir = (botId) => path_1.default.resolve(this.getBotDir(botId)); - this.getHistoryDir = (botId) => path_1.default.resolve(this.getBotDir(botId), 'history'); - this.getManifestSrcDir = (srcDir) => path_1.default.resolve(srcDir, 'manifests'); - this.getDownloadPath = (botId, version) => path_1.default.resolve(this.getHistoryDir(botId), `${version}.zip`); - this.botExist = (botId) => __awaiter(this, void 0, void 0, function* () { - try { - const status = yield stat(this.getBotDir(botId)); - return status.isDirectory(); - } - catch (error) { - return false; - } - }); - this.dirExist = (dirPath) => __awaiter(this, void 0, void 0, function* () { - try { - const status = yield stat(dirPath); - return status.isDirectory(); - } - catch (error) { - return false; - } - }); - this.initBot = (project) => __awaiter(this, void 0, void 0, function* () { - var _a, _b, _c; - this.composer.log('Initializing bot'); - const botId = project.id; - const isExist = yield this.botExist(botId); - // get runtime template - const runtime = this.composer.getRuntimeByProject(project); - try { - if (!isExist) { - const botDir = this.getBotDir(botId); - const runtimeDir = this.getBotRuntimeDir(botId); - // create bot dir - yield mkDir(botDir, { recursive: true }); - yield mkDir(runtimeDir, { recursive: true }); - // create ComposerDialogs and history folder - mkDir(this.getBotAssetsDir(botId), { recursive: true }); - mkDir(this.getHistoryDir(botId), { recursive: true }); - // copy runtime template in folder - this.composer.log('COPY FROM ', runtime.path, ' to ', runtimeDir); - yield this.copyDir(runtime.path, runtimeDir); - yield runtime.build(runtimeDir, project); - } - else { - // stop bot - this.stopBot(botId); - // get previous settings - // when changing type of runtime - const settings = JSON.parse(yield readFile(path_1.default.resolve(this.getBotDir(botId), 'settings/appsettings.json'), { - encoding: 'utf-8', - })); - if (!((_a = settings.runtime) === null || _a === void 0 ? void 0 : _a.key) || ((_b = settings.runtime) === null || _b === void 0 ? void 0 : _b.key) !== ((_c = project.settings.runtime) === null || _c === void 0 ? void 0 : _c.key)) { - // in order to change runtime type - yield removeDirAndFiles(this.getBotRuntimeDir(botId)); - // copy runtime template in folder - yield this.copyDir(runtime.path, this.getBotRuntimeDir(botId)); - yield runtime.build(this.getBotRuntimeDir(botId), project); - } - } - } - catch (error) { - // delete the folder to make sure build again. - yield removeDirAndFiles(this.getBotDir(botId)); - throw new Error(error.toString()); - } - }); - this.saveContent = (botId, version, srcDir, user) => __awaiter(this, void 0, void 0, function* () { - this.composer.log('Packaging bot assets'); - const dstPath = this.getDownloadPath(botId, version); - yield this.zipBot(dstPath, srcDir); - }); - // start bot in current version - this.setBot = (botId, version, settings, project) => __awaiter(this, void 0, void 0, function* () { - // get port, and stop previous bot if exist - try { - let port; - if (LocalPublisher.runningBots[botId]) { - this.composer.log('Bot already running. Stopping bot...'); - // this may or may not be set based on the status of the bot - port = LocalPublisher.runningBots[botId].port; - this.stopBot(botId); - } - if (!port) { - port = yield portfinder_1.default.getPortPromise({ port: 3979, stopPort: 5000 }); - } - // if not using custom runtime, update assets in tmp older - if (!settings.runtime || settings.runtime.customRuntime !== true) { - this.composer.log('Updating bot assets'); - yield this.restoreBot(botId, version); - } - else { - // if a port (e.g. --port 5000) is configured in the custom runtime command try to parse and set this port - if (settings.runtime.command && settings.runtime.command.includes('--port')) { - try { - port = /--port (\d+)/.exec(settings.runtime.command)[1]; - } - catch (err) { - console.warn(`Custom runtime command has an invalid port argument.`); - } - } - } - // start the bot process - yield this.startBot(botId, port, settings, project); - } - catch (error) { - console.error('Error in startbot: ', error); - this.stopBot(botId); - this.setBotStatus(botId, { - status: 500, - result: { - message: error, - }, - }); - } - }); - this.startBot = (botId, port, settings, project) => __awaiter(this, void 0, void 0, function* () { - var _d, _e; - const botDir = ((_d = settings.runtime) === null || _d === void 0 ? void 0 : _d.customRuntime) === true ? settings.runtime.path : this.getBotRuntimeDir(botId); - const commandAndArgs = ((_e = settings.runtime) === null || _e === void 0 ? void 0 : _e.customRuntime) === true - ? settings.runtime.command.split(/\s+/) - : this.composer.getRuntimeByProject(project).startCommand.split(/\s+/); - return new Promise((resolve, reject) => { - // ensure the specified runtime path exists - if (!fs_1.default.existsSync(botDir)) { - reject(`Runtime path ${botDir} does not exist.`); - return; - } - // take the 0th item off the array, leaving just the args - this.composer.log('Starting bot on port %d. (%s)', port, commandAndArgs.join(' ')); - const startCommand = commandAndArgs.shift(); - let spawnProcess; - try { - spawnProcess = child_process_1.spawn(startCommand, [...commandAndArgs, '--port', port, `--urls`, `http://0.0.0.0:${port}`, ...this.getConfig(settings)], { - cwd: botDir, - stdio: ['ignore', 'pipe', 'pipe'], - detached: !isWin, - }); - this.composer.log('Started process %d', spawnProcess.pid); - } - catch (err) { - return reject(err); - } - this.setBotStatus(botId, { - process: spawnProcess, - port: port, - status: 200, - result: { message: 'Runtime started' }, - }); - const processLog = this.composer.log.extend(spawnProcess.pid); - this.addListeners(spawnProcess, botId, processLog); - resolve(); - }); - }); - this.getConfig = (config) => { - const configList = []; - if (config.MicrosoftAppPassword) { - configList.push('--MicrosoftAppPassword'); - configList.push(config.MicrosoftAppPassword); - } - if (config.luis) { - configList.push('--luis:endpointKey'); - configList.push(config.luis.endpointKey || config.luis.authoringKey); - } - if (config.qna.endpointKey) { - configList.push('--qna:endpointKey'); - configList.push(config.qna.endpointKey); - } - // console.log(config.qna); - // console.log(configList); - return configList; - }; - this.removeListener = (child) => { - child.stdout.removeAllListeners('data'); - child.stderr.removeAllListeners('data'); - child.removeAllListeners('message'); - child.removeAllListeners('error'); - child.removeAllListeners('exit'); - }; - this.addListeners = (child, botId, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - logger) => { - let erroutput = ''; - child.stdout && - child.stdout.on('data', (data) => { - logger('%s', data); - }); - child.stderr && - child.stderr.on('data', (err) => { - erroutput += err.toString(); - }); - child.on('exit', (code) => { - if (code !== 0) { - logger('error on exit: %s, exit code %d', erroutput, code); - this.setBotStatus(botId, { status: 500, result: { message: erroutput } }); - } - }); - child.on('error', (err) => { - logger('error: %s', err.message); - this.setBotStatus(botId, { status: 500, result: { message: err.message } }); - }); - child.on('message', (msg) => { - logger('%s', msg); - }); - }; - this.restoreBot = (botId, version) => __awaiter(this, void 0, void 0, function* () { - const srcPath = this.getDownloadPath(botId, version); - const dstPath = this.getBotAssetsDir(botId); - yield this.unZipBot(srcPath, dstPath); - }); - this.zipBot = (dstPath, srcDir) => __awaiter(this, void 0, void 0, function* () { - // delete previous and create new - if (fs_1.default.existsSync(dstPath)) { - yield removeFile(dstPath); - } - const files = yield globby_1.default('**/*', { cwd: srcDir, dot: true, ignore: ['runtime'] }); - return new Promise((resolve, reject) => { - const archive = archiver_1.default('zip'); - const output = fs_1.default.createWriteStream(dstPath); - archive.pipe(output); - for (const file of files) { - archive.append(fs_1.default.createReadStream(path_1.default.join(srcDir, file)), { name: file }); - } - archive.finalize(); - output.on('close', () => resolve(dstPath)); - output.on('error', (err) => { - reject(err); - }); - }); - }); - this.unZipBot = (srcPath, dstPath) => __awaiter(this, void 0, void 0, function* () { - if (!fs_1.default.existsSync(srcPath)) { - throw new Error('no such version bot'); - } - const zip = new adm_zip_1.default(srcPath); - zip.extractAllTo(dstPath, true); - }); - // make it public, so that able to stop runtime before switch ejected runtime. - this.stopBot = (botId) => { - var _a; - const proc = (_a = LocalPublisher.runningBots[botId]) === null || _a === void 0 ? void 0 : _a.process; - if (proc) { - this.composer.log('Killing process %d', -proc.pid); - // Kill the bot process AND all child processes - try { - this.removeListener(proc); - process.kill(isWin ? proc.pid : -proc.pid); - } - catch (err) { - // ESRCH means pid not found - // this throws an error but doesn't indicate failure for us - if (err.code !== 'ESRCH') { - throw err; - } - } - } - delete LocalPublisher.runningBots[botId]; - }; - this.copyDir = (srcDir, dstDir) => __awaiter(this, void 0, void 0, function* () { - if (!(yield this.dirExist(srcDir))) { - throw new Error(`no such dir ${srcDir}`); - } - if (!(yield this.dirExist(dstDir))) { - yield mkDir(dstDir, { recursive: true }); - } - const paths = yield readDir(srcDir); - for (const subPath of paths) { - const srcPath = path_1.default.resolve(srcDir, subPath); - const dstPath = path_1.default.resolve(dstDir, subPath); - if (!(yield stat(srcPath)).isDirectory()) { - // copy files - yield copyFile(srcPath, dstPath); - } - else { - // recursively copy dirs - yield this.copyDir(srcPath, dstPath); - } - } - }); - this.composer = composer; - } - } - LocalPublisher.runningBots = {}; - LocalPublisher.stopAll = () => { - for (const botId in LocalPublisher.runningBots) { - const bot = LocalPublisher.runningBots[botId]; - // Kill the bot process AND all child processes - try { - process.kill(isWin ? bot.process.pid : -bot.process.pid); - } - catch (err) { - // swallow this error which happens if the child process is already gone - } - delete LocalPublisher.runningBots[botId]; - } - }; - return LocalPublisher; -})(); -exports.default = (composer) => __awaiter(void 0, void 0, void 0, function* () { - const publisher = new LocalPublisher(composer); - // register this publishing method with Composer - yield composer.addPublishMethod(publisher); -}); -// stop all the runningBot when process exit -const cleanup = () => { - LocalPublisher.stopAll(); - process.exit(0); -}; -['SIGINT', 'SIGTERM', 'SIGQUIT'].forEach((signal) => { - process.on(signal, cleanup.bind(null, signal)); -}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/Composer/plugins/localPublish/lib/index.js.map b/Composer/plugins/localPublish/lib/index.js.map deleted file mode 100644 index 176e7ac527..0000000000 --- a/Composer/plugins/localPublish/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uCAAuC;AACvC,kCAAkC;AAClC,iDAAoD;AACpD,gDAAwB;AACxB,4CAAoB;AACpB,+BAAiC;AAEjC,oDAA0B;AAC1B,oDAA4B;AAC5B,wDAAgC;AAChC,+BAAkC;AAClC,sDAA6B;AAC7B,4DAAoC;AAEpC,MAAM,IAAI,GAAG,gBAAS,CAAC,YAAE,CAAC,IAAI,CAAC,CAAC;AAChC,MAAM,OAAO,GAAG,gBAAS,CAAC,YAAE,CAAC,OAAO,CAAC,CAAC;AACtC,MAAM,UAAU,GAAG,gBAAS,CAAC,YAAE,CAAC,MAAM,CAAC,CAAC;AACxC,MAAM,KAAK,GAAG,gBAAS,CAAC,YAAE,CAAC,KAAK,CAAC,CAAC;AAClC,MAAM,iBAAiB,GAAG,gBAAS,CAAC,gBAAM,CAAC,CAAC;AAC5C,MAAM,QAAQ,GAAG,gBAAS,CAAC,YAAE,CAAC,QAAQ,CAAC,CAAC;AACxC,MAAM,QAAQ,GAAG,gBAAS,CAAC,YAAE,CAAC,QAAQ,CAAC,CAAC;AAgBxC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAE3C;IAAA,MAAM,cAAc;QAKlB,YAAY,QAAa;YAHR,YAAO,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAOlD,iBAAY,GAAG,CAAC,KAAa,EAAE,MAAkB,EAAE,EAAE;gBAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,KAAK,YAAY,MAAM,CAAC,IAAI,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnG,gDAAgD;gBAChD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;oBACrG,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;iBAC5D;gBACD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;oBAC/F,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;iBACtD;gBAED,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;YAC7C,CAAC,CAAC;YAEM,iBAAY,GAAG,CAAO,KAAa,EAAE,OAAe,EAAE,YAAiB,EAAE,OAAY,EAAE,IAAI,EAAE,EAAE;gBACrG,IAAI;oBACF,kFAAkF;oBAClF,mDAAmD;oBACnD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;oBAC3D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;wBAChF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;wBAE3C,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC5B,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;wBAC9D,MAAM,OAAO,CAAC,gBAAgB,CAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAC5B,OAAO,CAAC,WAAW,EACnB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EACvC,OAAO,CAAC,WAAW,CACpB,CAAC;qBACH;yBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;wBAC5E,MAAM,OAAO,CAAC,gBAAgB,CAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAC7B,OAAO,CAAC,WAAW,EACnB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EACvC,OAAO,CAAC,WAAW,CACpB,CAAC;qBACH;yBAAM;wBACL,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;qBAC7F;oBACD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;iBAC1D;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACpB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;wBACvB,MAAM,EAAE,GAAG;wBACX,MAAM,EAAE;4BACN,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB;qBACF,CAAC,CAAC;iBACJ;YACH,CAAC,CAAA,CAAC;YAEF,wEAAwE;YACxE,YAAO,GAAG,CAAO,MAAqB,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAgB,EAAE;gBAC/E,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;gBAChC,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,SAAS,CAAC;gBAE1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAEtC,6BAA6B;gBAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;gBAE/E,IAAI;oBACF,mCAAmC;oBACnC,gDAAgD;oBAChD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC/D,OAAO;wBACL,MAAM,EAAE,GAAG;wBACX,MAAM,EAAE;4BACN,EAAE,EAAE,SAAI,EAAE;4BACV,OAAO,EAAE,wBAAwB;yBAClC;qBACF,CAAC;iBACH;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO;wBACL,MAAM,EAAE,GAAG;wBACX,MAAM,EAAE;4BACN,OAAO,EAAE,KAAK;yBACf;qBACF,CAAC;iBACH;YACH,CAAC,CAAA,CAAC;YACF,cAAS,GAAG,CAAO,MAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;gBACzD,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;gBACzB,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE;wBACpD,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;wBACpD,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;wBACvC,OAAO;4BACL,MAAM,EAAE,GAAG;4BACX,MAAM,EAAE;gCACN,OAAO,EAAE,SAAS;gCAClB,WAAW,EAAE,GAAG;6BACjB;yBACF,CAAC;qBACH;yBAAM;wBACL,MAAM,MAAM,GAAG;4BACb,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM;4BAChD,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM;yBACjD,CAAC;wBACF,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE;4BACpD,+EAA+E;4BAC/E,OAAO,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;yBAC1C;wBACD,OAAO,MAAM,CAAC;qBACf;iBACF;qBAAM;oBACL,OAAO;wBACL,MAAM,EAAE,GAAG;wBACX,MAAM,EAAE;4BACN,OAAO,EAAE,OAAO;yBACjB;qBACF,CAAC;iBACH;YACH,CAAC,CAAA,CAAC;YAEF,sBAAiB,GAAG,CAAO,KAAa,EAAE,EAAE;gBAC1C,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,KAAK,EAAE,CAAC,CAAC;gBACpE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;oBACrC,OAAO,EAAE,GAAG,EAAE,gBAAgB,SAAS,iBAAiB,EAAE,CAAC;iBAC5D;gBACD,IAAI;oBACF,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;oBACnC,OAAO,EAAE,GAAG,EAAE,wCAAwC,SAAS,EAAE,EAAE,CAAC;iBACrE;gBAAC,OAAO,CAAC,EAAE;oBACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;iBAClD;YACH,CAAC,CAAA,CAAC;YAEM,eAAU,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAE9F,cAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;YAEtE,qBAAgB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;YAErF,oBAAe,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAEzE,kBAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;YAElF,sBAAiB,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAE1E,oBAAe,GAAG,CAAC,KAAa,EAAE,OAAe,EAAE,EAAE,CAC3D,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,MAAM,CAAC,CAAC;YAEpD,aAAQ,GAAG,CAAO,KAAa,EAAE,EAAE;gBACzC,IAAI;oBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;oBACjD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;iBAC7B;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,KAAK,CAAC;iBACd;YACH,CAAC,CAAA,CAAC;YAEM,aAAQ,GAAG,CAAO,OAAe,EAAE,EAAE;gBAC3C,IAAI;oBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;oBACnC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;iBAC7B;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,KAAK,CAAC;iBACd;YACH,CAAC,CAAA,CAAC;YAEM,YAAO,GAAG,CAAO,OAAO,EAAE,EAAE;;gBAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBACtC,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC3C,uBAAuB;gBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC3D,IAAI;oBACF,IAAI,CAAC,OAAO,EAAE;wBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;wBAChD,iBAAiB;wBACjB,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBACzC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAE7C,4CAA4C;wBAC5C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBACxD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAEtD,kCAAkC;wBAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;wBAClE,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;wBAC7C,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;qBAC1C;yBAAM;wBACL,WAAW;wBACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACpB,wBAAwB;wBACxB,gCAAgC;wBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,MAAM,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,2BAA2B,CAAC,EAAE;4BAC/E,QAAQ,EAAE,OAAO;yBAClB,CAAC,CACH,CAAC;wBACF,IAAI,QAAC,QAAQ,CAAC,OAAO,0CAAE,GAAG,CAAA,IAAI,OAAA,QAAQ,CAAC,OAAO,0CAAE,GAAG,aAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,0CAAE,GAAG,CAAA,EAAE;4BACrF,kCAAkC;4BAClC,MAAM,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;4BACtD,kCAAkC;4BAClC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC/D,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;yBAC5D;qBACF;iBACF;gBAAC,OAAO,KAAK,EAAE;oBACd,8CAA8C;oBAC9C,MAAM,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC/C,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACnC;YACH,CAAC,CAAA,CAAC;YAEM,gBAAW,GAAG,CAAO,KAAa,EAAE,OAAe,EAAE,MAAc,EAAE,IAAS,EAAE,EAAE;gBACxF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACrC,CAAC,CAAA,CAAC;YAEF,+BAA+B;YACvB,WAAM,GAAG,CAAO,KAAa,EAAE,OAAe,EAAE,QAAa,EAAE,OAAY,EAAE,EAAE;gBACrF,2CAA2C;gBAC3C,IAAI;oBACF,IAAI,IAAI,CAAC;oBACT,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;wBACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;wBAC1D,4DAA4D;wBAC5D,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;wBAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBACrB;oBACD,IAAI,CAAC,IAAI,EAAE;wBACT,IAAI,GAAG,MAAM,oBAAU,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;qBACxE;oBAED,0DAA0D;oBAC1D,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;wBAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;wBACzC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;qBACvC;yBAAM;wBACL,0GAA0G;wBAC1G,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;4BAC3E,IAAI;gCACF,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;6BACzD;4BAAC,OAAO,GAAG,EAAE;gCACZ,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;6BACtE;yBACF;qBACF;oBAED,wBAAwB;oBACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;iBACrD;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;oBAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACpB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;wBACvB,MAAM,EAAE,GAAG;wBACX,MAAM,EAAE;4BACN,OAAO,EAAE,KAAK;yBACf;qBACF,CAAC,CAAC;iBACJ;YACH,CAAC,CAAA,CAAC;YAEM,aAAQ,GAAG,CAAO,KAAa,EAAE,IAAY,EAAE,QAAa,EAAE,OAAY,EAAmB,EAAE;;gBACrG,MAAM,MAAM,GAAG,OAAA,QAAQ,CAAC,OAAO,0CAAE,aAAa,MAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC/G,MAAM,cAAc,GAClB,OAAA,QAAQ,CAAC,OAAO,0CAAE,aAAa,MAAK,IAAI;oBACtC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAE3E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACrC,2CAA2C;oBAC3C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;wBAC1B,MAAM,CAAC,gBAAgB,MAAM,kBAAkB,CAAC,CAAC;wBACjD,OAAO;qBACR;oBACD,yDAAyD;oBACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnF,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;oBAC5C,IAAI,YAAY,CAAC;oBACjB,IAAI;wBACF,YAAY,GAAG,qBAAK,CAClB,YAAY,EACZ,CAAC,GAAG,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EACpG;4BACE,GAAG,EAAE,MAAM;4BACX,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;4BACjC,QAAQ,EAAE,CAAC,KAAK;yBACjB,CACF,CAAC;wBACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;qBAC3D;oBAAC,OAAO,GAAG,EAAE;wBACZ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;qBACpB;oBACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;wBACvB,OAAO,EAAE,YAAY;wBACrB,IAAI,EAAE,IAAI;wBACV,MAAM,EAAE,GAAG;wBACX,MAAM,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;qBACvC,CAAC,CAAC;oBACH,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC9D,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;oBACnD,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAA,CAAC;YAEM,cAAS,GAAG,CAAC,MAAW,EAAE,EAAE;gBAClC,MAAM,UAAU,GAAa,EAAE,CAAC;gBAChC,IAAI,MAAM,CAAC,oBAAoB,EAAE;oBAC/B,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;oBAC1C,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;iBAC9C;gBACD,IAAI,MAAM,CAAC,IAAI,EAAE;oBACf,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBACtC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBACtE;gBACD,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;oBACrC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;iBACzC;gBACD,2BAA2B;gBAC3B,2BAA2B;gBAC3B,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC;YAEM,mBAAc,GAAG,CAAC,KAAmB,EAAE,EAAE;gBAC/C,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBACxC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAExC,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBACpC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAClC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC,CAAC;YAEM,iBAAY,GAAG,CACrB,KAAmB,EACnB,KAAa;YACb,8DAA8D;YAC9D,MAAgC,EAChC,EAAE;gBACF,IAAI,SAAS,GAAG,EAAE,CAAC;gBACnB,KAAK,CAAC,MAAM;oBACV,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE;wBACpC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACrB,CAAC,CAAC,CAAC;gBAEL,KAAK,CAAC,MAAM;oBACV,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAQ,EAAE,EAAE;wBACnC,SAAS,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAC9B,CAAC,CAAC,CAAC;gBAEL,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACxB,IAAI,IAAI,KAAK,CAAC,EAAE;wBACd,MAAM,CAAC,iCAAiC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;wBAC3D,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;qBAC3E;gBACH,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACxB,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;oBACjC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC9E,CAAC,CAAC,CAAC;gBAEH,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC1B,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACpB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YAEM,eAAU,GAAG,CAAO,KAAa,EAAE,OAAe,EAAE,EAAE;gBAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC,CAAA,CAAC;YAEM,WAAM,GAAG,CAAO,OAAe,EAAE,MAAc,EAAE,EAAE;gBACzD,iCAAiC;gBACjC,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;oBAC1B,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;iBAC3B;gBACD,MAAM,KAAK,GAAG,MAAM,gBAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAClF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACrC,MAAM,OAAO,GAAG,kBAAQ,CAAC,KAAK,CAAC,CAAC;oBAChC,MAAM,MAAM,GAAG,YAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;wBACxB,OAAO,CAAC,MAAM,CAAC,YAAE,CAAC,gBAAgB,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC9E;oBACD,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACnB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC3C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;wBACzB,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAA,CAAC;YAEM,aAAQ,GAAG,CAAO,OAAe,EAAE,OAAe,EAAE,EAAE;gBAC5D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;oBAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;iBACxC;gBACD,MAAM,GAAG,GAAG,IAAI,iBAAM,CAAC,OAAO,CAAC,CAAC;gBAChC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAClC,CAAC,CAAA,CAAC;YAEF,8EAA8E;YACvE,YAAO,GAAG,CAAC,KAAa,EAAE,EAAE;;gBACjC,MAAM,IAAI,SAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,0CAAE,OAAO,CAAC;gBAExD,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnD,+CAA+C;oBAC/C,IAAI;wBACF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;wBAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBAC5C;oBAAC,OAAO,GAAG,EAAE;wBACZ,4BAA4B;wBAC5B,2DAA2D;wBAC3D,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;4BACxB,MAAM,GAAG,CAAC;yBACX;qBACF;iBACF;gBACD,OAAO,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC,CAAC;YAEM,YAAO,GAAG,CAAO,MAAc,EAAE,MAAc,EAAE,EAAE;gBACzD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;oBAClC,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;iBAC1C;gBACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;oBAClC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC1C;gBACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpC,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;oBAC3B,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC9C,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC9C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;wBACxC,aAAa;wBACb,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;qBAClC;yBAAM;wBACL,wBAAwB;wBACxB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;qBACtC;iBACF;YACH,CAAC,CAAA,CAAC;YA3bA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,CAAC;;IANM,0BAAW,GAAkC,EAAE,CAAC;IAkchD,sBAAO,GAAG,GAAG,EAAE;QACpB,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,WAAW,EAAE;YAC9C,MAAM,GAAG,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC9C,+CAA+C;YAC/C,IAAI;gBACF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aAC1D;YAAC,OAAO,GAAG,EAAE;gBACZ,wEAAwE;aACzE;YACD,OAAO,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC1C;IACH,CAAC,CAAC;IACJ,qBAAC;KAAA;AAED,kBAAe,CAAO,QAAa,EAAiB,EAAE;IACpD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,gDAAgD;IAChD,MAAM,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC,CAAA,CAAC;AAEF,4CAA4C;AAC5C,MAAM,OAAO,GAAG,GAAG,EAAE;IACnB,cAAc,CAAC,OAAO,EAAE,CAAC;IACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAED,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAsB,CAAC,OAAO,CAAC,CAAC,MAAsB,EAAE,EAAE;IACxF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/Composer/plugins/localPublish/lib/interface.d.ts b/Composer/plugins/localPublish/lib/interface.d.ts deleted file mode 100644 index 87857a4a11..0000000000 --- a/Composer/plugins/localPublish/lib/interface.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -export interface Stat { - isDir: boolean; - isFile: boolean; - lastModified: string; - size: string; -} -export interface MakeDirectoryOptions { - recursive?: boolean; -} -export interface IFileStorage { - stat(path: string): Promise; - readFile(path: string): Promise; - readDir(path: string): Promise; - exists(path: string): Promise; - writeFile(path: string, content: any): Promise; - removeFile(path: string): Promise; - mkDir(path: string, options?: MakeDirectoryOptions): Promise; - rmDir(path: string): Promise; - glob(pattern: string, path: string): Promise; - copyFile(src: string, dest: string): Promise; - rename(oldPath: string, newPath: string): Promise; -} diff --git a/Composer/plugins/localPublish/lib/interface.js b/Composer/plugins/localPublish/lib/interface.js deleted file mode 100644 index e3a4630bc8..0000000000 --- a/Composer/plugins/localPublish/lib/interface.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=interface.js.map \ No newline at end of file diff --git a/Composer/plugins/localPublish/lib/interface.js.map b/Composer/plugins/localPublish/lib/interface.js.map deleted file mode 100644 index 0905bdc0d7..0000000000 --- a/Composer/plugins/localPublish/lib/interface.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC"} \ No newline at end of file diff --git a/Composer/plugins/runtimes/lib/copyDir.d.ts b/Composer/plugins/runtimes/lib/copyDir.d.ts deleted file mode 100644 index 3f9de214e6..0000000000 --- a/Composer/plugins/runtimes/lib/copyDir.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { IFileStorage } from './interface'; -export declare function copyDir(srcDir: string, srcStorage: IFileStorage, dstDir: string, dstStorage: IFileStorage, pathsToExclude?: Set): Promise; diff --git a/Composer/plugins/runtimes/lib/copyDir.js b/Composer/plugins/runtimes/lib/copyDir.js deleted file mode 100644 index 12df815976..0000000000 --- a/Composer/plugins/runtimes/lib/copyDir.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.copyDir = void 0; -const path_1 = __importDefault(require("path")); -function copyDir(srcDir, srcStorage, dstDir, dstStorage, pathsToExclude) { - return __awaiter(this, void 0, void 0, function* () { - if (!(yield srcStorage.exists(srcDir)) || !(yield srcStorage.stat(srcDir)).isDir) { - throw new Error(`No such dir ${srcDir}}`); - } - if (!(yield dstStorage.exists(dstDir))) { - yield dstStorage.mkDir(dstDir, { recursive: true }); - } - const paths = yield srcStorage.readDir(srcDir); - for (const path of paths) { - const srcPath = path_1.default.join(srcDir, path); - if (pathsToExclude && pathsToExclude.has(srcPath)) { - continue; - } - const dstPath = path_1.default.join(dstDir, path); - if ((yield srcStorage.stat(srcPath)).isFile) { - // copy files - const content = yield srcStorage.readFile(srcPath); - yield dstStorage.writeFile(dstPath, content); - } - else { - // recursively copy dirs - yield copyDir(srcPath, srcStorage, dstPath, dstStorage, pathsToExclude); - } - } - }); -} -exports.copyDir = copyDir; -//# sourceMappingURL=copyDir.js.map \ No newline at end of file diff --git a/Composer/plugins/runtimes/lib/copyDir.js.map b/Composer/plugins/runtimes/lib/copyDir.js.map deleted file mode 100644 index ec3ecd05a7..0000000000 --- a/Composer/plugins/runtimes/lib/copyDir.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"copyDir.js","sourceRoot":"","sources":["../src/copyDir.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;;;;AAElC,gDAAwB;AAIxB,SAAsB,OAAO,CAC3B,MAAc,EACd,UAAwB,EACxB,MAAc,EACd,UAAwB,EACxB,cAA4B;;QAE5B,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE;YAChF,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,GAAG,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;YACtC,MAAM,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SACrD;QAED,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACxC,IAAI,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBACjD,SAAS;aACV;YACD,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAExC,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE;gBAC3C,aAAa;gBACb,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACnD,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;aAC9C;iBAAM;gBACL,wBAAwB;gBACxB,MAAM,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;aACzE;SACF;IACH,CAAC;CAAA;AAjCD,0BAiCC"} \ No newline at end of file diff --git a/Composer/plugins/runtimes/lib/index.d.ts b/Composer/plugins/runtimes/lib/index.d.ts deleted file mode 100644 index deae25e201..0000000000 --- a/Composer/plugins/runtimes/lib/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: (composer: any) => Promise; -export default _default; diff --git a/Composer/plugins/runtimes/lib/index.js b/Composer/plugins/runtimes/lib/index.js deleted file mode 100644 index a8ce67a871..0000000000 --- a/Composer/plugins/runtimes/lib/index.js +++ /dev/null @@ -1,244 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const path_1 = __importDefault(require("path")); -const util_1 = require("util"); -const child_process_1 = require("child_process"); -const rimraf_1 = __importDefault(require("rimraf")); -const fs = __importStar(require("fs-extra")); -const copyDir_1 = require("./copyDir"); -const execAsync = util_1.promisify(child_process_1.exec); -const removeDirAndFiles = util_1.promisify(rimraf_1.default); -exports.default = (composer) => __awaiter(void 0, void 0, void 0, function* () { - // register the bundled c# runtime used by the local publisher with the eject feature - composer.addRuntimeTemplate({ - key: 'csharp-azurewebapp', - name: 'C#', - startCommand: 'dotnet run --project azurewebapp', - path: path_1.default.resolve(__dirname, '../../../../runtime/dotnet'), - build: (runtimePath, _project) => __awaiter(void 0, void 0, void 0, function* () { - composer.log(`BUILD THIS C# PROJECT! at ${runtimePath}...`); - composer.log('Run dotnet user-secrets init...'); - // TODO: capture output of this and store it somewhere useful - const { stderr: initErr } = yield execAsync('dotnet user-secrets init --project azurewebapp', { - cwd: runtimePath, - }); - if (initErr) { - throw new Error(initErr); - } - composer.log('Run dotnet build...'); - const { stderr: buildErr } = yield execAsync('dotnet build', { cwd: runtimePath }); - if (buildErr) { - throw new Error(buildErr); - } - composer.log('FINISHED BUILDING!'); - }), - run: (project, localDisk) => __awaiter(void 0, void 0, void 0, function* () { - composer.log('RUN THIS C# PROJECT!'); - }), - buildDeploy: (runtimePath, project, settings, profileName) => __awaiter(void 0, void 0, void 0, function* () { - composer.log('BUILD FOR DEPLOY TO AZURE!'); - let csproj = ''; - // find publishing profile in list - const profile = project.settings.publishTargets.find((p) => p.name === profileName); - if (profile.type === 'azurePublish') { - csproj = 'Microsoft.BotFramework.Composer.WebApp.csproj'; - } - else if (profile.type === 'azureFunctionsPublish') { - csproj = 'Microsoft.BotFramework.Composer.Functions.csproj'; - } - const publishFolder = path_1.default.join(runtimePath, 'bin', 'Release', 'netcoreapp3.1'); - const deployFilePath = path_1.default.join(runtimePath, '.deployment'); - const dotnetProjectPath = path_1.default.join(runtimePath, csproj); - // Check for existing .deployment file, if missing, write it. - if (!(yield fs.pathExists(deployFilePath))) { - const data = `[config]\nproject = ${csproj}`; - yield fs.writeFile(deployFilePath, data); - } - // do the dotnet publish - try { - const { stdout, stderr } = yield execAsync(`dotnet publish "${dotnetProjectPath}" -c release -o "${publishFolder}" -v q`, { - cwd: runtimePath, - }); - composer.log('OUTPUT FROM BUILD', stdout); - if (stderr) { - composer.log('ERR FROM BUILD: ', stderr); - } - } - catch (err) { - composer.log('Error doing dotnet publish', err); - throw err; - return; - } - // Then, copy the declarative assets into the build artifacts folder. - const remoteBotPath = path_1.default.join(publishFolder, 'ComposerDialogs'); - const localBotPath = path_1.default.join(runtimePath, 'ComposerDialogs'); - yield fs.copy(localBotPath, remoteBotPath, { - overwrite: true, - recursive: true, - }); - // write settings to disk in the appropriate location - const settingsPath = path_1.default.join(publishFolder, 'ComposerDialogs', 'settings', 'appsettings.json'); - if (!(yield fs.pathExists(path_1.default.dirname(settingsPath)))) { - yield fs.mkdirp(path_1.default.dirname(settingsPath)); - } - yield fs.writeFile(settingsPath, JSON.stringify(settings, null, 2)); - // return the location of the build artifiacts - return publishFolder; - }), - eject: (project, localDisk, isReplace) => __awaiter(void 0, void 0, void 0, function* () { - const sourcePath = path_1.default.resolve(__dirname, '../../../../runtime/dotnet'); - const destPath = path_1.default.join(project.dir, 'runtime'); - if ((yield project.fileStorage.exists(destPath)) && isReplace) { - // remove runtime folder - yield removeDirAndFiles(destPath); - } - if (!(yield project.fileStorage.exists(destPath))) { - // used to read bot project template from source (bundled in plugin) - yield copyDir_1.copyDir(sourcePath, localDisk, destPath, project.fileStorage); - const schemaDstPath = path_1.default.join(project.dir, 'schemas'); - const schemaSrcPath = path_1.default.join(sourcePath, 'azurewebapp/Schemas'); - const customSchemaExists = fs.existsSync(schemaDstPath); - const pathsToExclude = new Set(); - if (customSchemaExists) { - const sdkExcludePath = yield localDisk.glob('sdk.schema', schemaSrcPath); - if (sdkExcludePath.length > 0) { - pathsToExclude.add(path_1.default.join(schemaSrcPath, sdkExcludePath[0])); - } - } - yield copyDir_1.copyDir(schemaSrcPath, localDisk, schemaDstPath, project.fileStorage, pathsToExclude); - const schemaFolderInRuntime = path_1.default.join(destPath, 'azurewebapp/Schemas'); - yield removeDirAndFiles(schemaFolderInRuntime); - return destPath; - } - throw new Error(`Runtime already exists at ${destPath}`); - }), - setSkillManifest: (dstRuntimePath, dstStorage, srcManifestDir, srcStorage, mode = 'azurewebapp' // set default as azurewebapp - ) => __awaiter(void 0, void 0, void 0, function* () { - // update manifst into runtime wwwroot - if (mode === 'azurewebapp') { - const manifestDstDir = path_1.default.resolve(dstRuntimePath, 'azurewebapp', 'wwwroot', 'manifests'); - if (yield fs.pathExists(manifestDstDir)) { - yield removeDirAndFiles(manifestDstDir); - } - if (yield fs.pathExists(srcManifestDir)) { - yield copyDir_1.copyDir(srcManifestDir, srcStorage, manifestDstDir, dstStorage); - } - } - }), - }); - composer.addRuntimeTemplate({ - key: 'node-azurewebapp', - name: 'JS (preview)', - startCommand: 'node ./lib/webapp.js', - path: path_1.default.resolve(__dirname, '../../../../runtime/node'), - build: (runtimePath, _project) => __awaiter(void 0, void 0, void 0, function* () { - // do stuff - composer.log('BUILD THIS JS PROJECT'); - // install dev dependencies in production, make sure typescript is installed - const { stderr: installErr } = yield execAsync('npm install && npm install --only=dev', { - cwd: runtimePath, - }); - if (installErr) { - // in order to not throw warning, we just log all warning and error message - composer.log(installErr); - } - const { stderr: install2Err } = yield execAsync('npm run build', { - cwd: runtimePath, - }); - if (install2Err) { - throw new Error(install2Err); - } - composer.log('BUILD COMPLETE'); - }), - run: (project, localDisk) => __awaiter(void 0, void 0, void 0, function* () { - // do stuff - }), - buildDeploy: (runtimePath, project, settings, profileName) => __awaiter(void 0, void 0, void 0, function* () { - // do stuff - composer.log('BUILD THIS JS PROJECT'); - const { stderr: installErr } = yield execAsync('npm install', { - cwd: path_1.default.resolve(runtimePath, '../'), - }); - if (installErr) { - composer.log(installErr); - } - const { stderr: install2Err } = yield execAsync('npm run build', { - cwd: path_1.default.resolve(runtimePath, '../'), - }); - if (install2Err) { - throw new Error(install2Err); - } - // write settings to disk in the appropriate location - const settingsPath = path_1.default.join(runtimePath, 'ComposerDialogs', 'settings', 'appsettings.json'); - if (!(yield fs.pathExists(path_1.default.dirname(settingsPath)))) { - yield fs.mkdirp(path_1.default.dirname(settingsPath)); - } - yield fs.writeFile(settingsPath, JSON.stringify(settings, null, 2)); - composer.log('BUILD COMPLETE'); - return path_1.default.resolve(runtimePath, '../'); - }), - eject: (project, localDisk, isReplace) => __awaiter(void 0, void 0, void 0, function* () { - const sourcePath = path_1.default.resolve(__dirname, '../../../../runtime/node'); - const destPath = path_1.default.join(project.dir, 'runtime'); - if ((yield project.fileStorage.exists(destPath)) && isReplace) { - // remove runtime folder - yield removeDirAndFiles(destPath); - } - if (!(yield project.fileStorage.exists(destPath))) { - // used to read bot project template from source (bundled in plugin) - const excludeFolder = new Set().add(path_1.default.resolve(sourcePath, 'node_modules')); - yield copyDir_1.copyDir(sourcePath, localDisk, destPath, project.fileStorage, excludeFolder); - // install dev dependencies in production, make sure typescript is installed - const { stderr: initErr } = yield execAsync('npm install && npm install --only=dev', { - cwd: destPath, - }); - if (initErr) { - composer.log(initErr); - } - const { stderr: initErr2 } = yield execAsync('npm run build', { cwd: destPath }); - if (initErr2) { - throw new Error(initErr2); - } - return destPath; - } - else { - throw new Error(`Runtime already exists at ${destPath}`); - } - }), - setSkillManifest: (dstRuntimePath, dstStorage, srcManifestDir, srcStorage, mode = 'azurewebapp') => __awaiter(void 0, void 0, void 0, function* () { }), - }); -}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/Composer/plugins/runtimes/lib/index.js.map b/Composer/plugins/runtimes/lib/index.js.map deleted file mode 100644 index 09e63b1aba..0000000000 --- a/Composer/plugins/runtimes/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAuC;AACvC,kCAAkC;AAClC,gDAAwB;AACxB,+BAAiC;AACjC,iDAAqC;AAErC,oDAA4B;AAC5B,6CAA+B;AAE/B,uCAAoC;AAGpC,MAAM,SAAS,GAAG,gBAAS,CAAC,oBAAI,CAAC,CAAC;AAClC,MAAM,iBAAiB,GAAG,gBAAS,CAAC,gBAAM,CAAC,CAAC;AAE5C,kBAAe,CAAO,QAAa,EAAiB,EAAE;IACpD,qFAAqF;IACrF,QAAQ,CAAC,kBAAkB,CAAC;QAC1B,GAAG,EAAE,oBAAoB;QACzB,IAAI,EAAE,IAAI;QACV,YAAY,EAAE,kCAAkC;QAChD,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,4BAA4B,CAAC;QAC3D,KAAK,EAAE,CAAO,WAAmB,EAAE,QAAa,EAAE,EAAE;YAClD,QAAQ,CAAC,GAAG,CAAC,6BAA6B,WAAW,KAAK,CAAC,CAAC;YAC5D,QAAQ,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAChD,6DAA6D;YAC7D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,gDAAgD,EAAE;gBAC5F,GAAG,EAAE,WAAW;aACjB,CAAC,CAAC;YACH,IAAI,OAAO,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;YACD,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACpC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;YACnF,IAAI,QAAQ,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC3B;YACD,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACrC,CAAC,CAAA;QACD,GAAG,EAAE,CAAO,OAAY,EAAE,SAAuB,EAAE,EAAE;YACnD,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACvC,CAAC,CAAA;QACD,WAAW,EAAE,CAAO,WAAmB,EAAE,OAAY,EAAE,QAAa,EAAE,WAAmB,EAAmB,EAAE;YAC5G,QAAQ,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAE3C,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,kCAAkC;YAClC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YACpF,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE;gBACnC,MAAM,GAAG,+CAA+C,CAAC;aAC1D;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,uBAAuB,EAAE;gBACnD,MAAM,GAAG,kDAAkD,CAAC;aAC7D;YACD,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YAChF,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YAC7D,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAEzD,6DAA6D;YAC7D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE;gBAC1C,MAAM,IAAI,GAAG,uBAAuB,MAAM,EAAE,CAAC;gBAE7C,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;aAC1C;YAED,wBAAwB;YACxB,IAAI;gBACF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CACxC,mBAAmB,iBAAiB,oBAAoB,aAAa,QAAQ,EAC7E;oBACE,GAAG,EAAE,WAAW;iBACjB,CACF,CAAC;gBACF,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;gBAC1C,IAAI,MAAM,EAAE;oBACV,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;iBAC1C;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,QAAQ,CAAC,GAAG,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;gBAChD,MAAM,GAAG,CAAC;gBACV,OAAO;aACR;YACD,qEAAqE;YACrE,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAClE,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAC/D,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE;gBACzC,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YAEH,qDAAqD;YACrD,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;YACjG,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gBACtD,MAAM,EAAE,CAAC,MAAM,CAAC,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;aAC7C;YACD,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEpE,8CAA8C;YAC9C,OAAO,aAAa,CAAC;QACvB,CAAC,CAAA;QACD,KAAK,EAAE,CAAO,OAAO,EAAE,SAAuB,EAAE,SAAkB,EAAE,EAAE;YACpE,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,SAAS,EAAE;gBAC7D,wBAAwB;gBACxB,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;aACnC;YACD,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE;gBACjD,oEAAoE;gBACpE,MAAM,iBAAO,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;gBACpE,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACxD,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;gBACnE,MAAM,kBAAkB,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACxD,MAAM,cAAc,GAAgB,IAAI,GAAG,EAAE,CAAC;gBAC9C,IAAI,kBAAkB,EAAE;oBACtB,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;oBACzE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC7B,cAAc,CAAC,GAAG,CAAC,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACjE;iBACF;gBACD,MAAM,iBAAO,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;gBAC5F,MAAM,qBAAqB,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;gBACzE,MAAM,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;gBAC/C,OAAO,QAAQ,CAAC;aACjB;YACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAA;QACD,gBAAgB,EAAE,CAChB,cAAsB,EACtB,UAAwB,EACxB,cAAsB,EACtB,UAAwB,EACxB,IAAI,GAAG,aAAa,CAAC,6BAA6B;UAClD,EAAE;YACF,sCAAsC;YACtC,IAAI,IAAI,KAAK,aAAa,EAAE;gBAC1B,MAAM,cAAc,GAAG,cAAI,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;gBAE3F,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;oBACvC,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAC;iBACzC;gBAED,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;oBACvC,MAAM,iBAAO,CAAC,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;iBACvE;aACF;QACH,CAAC,CAAA;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,CAAC;QAC1B,GAAG,EAAE,kBAAkB;QACvB,IAAI,EAAE,cAAc;QACpB,YAAY,EAAE,sBAAsB;QACpC,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,0BAA0B,CAAC;QACzD,KAAK,EAAE,CAAO,WAAmB,EAAE,QAAa,EAAE,EAAE;YAClD,WAAW;YACX,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACtC,4EAA4E;YAC5E,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,uCAAuC,EAAE;gBACtF,GAAG,EAAE,WAAW;aACjB,CAAC,CAAC;YACH,IAAI,UAAU,EAAE;gBACd,2EAA2E;gBAC3E,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aAC1B;YACD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE;gBAC/D,GAAG,EAAE,WAAW;aACjB,CAAC,CAAC;YACH,IAAI,WAAW,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;aAC9B;YACD,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACjC,CAAC,CAAA;QACD,GAAG,EAAE,CAAO,OAAY,EAAE,SAAuB,EAAE,EAAE;YACnD,WAAW;QACb,CAAC,CAAA;QACD,WAAW,EAAE,CAAO,WAAmB,EAAE,OAAY,EAAE,QAAa,EAAE,WAAmB,EAAmB,EAAE;YAC5G,WAAW;YACX,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACtC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE;gBAC5D,GAAG,EAAE,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;aACtC,CAAC,CAAC;YACH,IAAI,UAAU,EAAE;gBACd,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aAC1B;YACD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE;gBAC/D,GAAG,EAAE,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;aACtC,CAAC,CAAC;YACH,IAAI,WAAW,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;aAC9B;YACD,qDAAqD;YACrD,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAC/F,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gBACtD,MAAM,EAAE,CAAC,MAAM,CAAC,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;aAC7C;YACD,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEpE,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC/B,OAAO,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAA;QACD,KAAK,EAAE,CAAO,OAAY,EAAE,SAAuB,EAAE,SAAkB,EAAE,EAAE;YACzE,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEnD,IAAI,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,SAAS,EAAE;gBAC7D,wBAAwB;gBACxB,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;aACnC;YAED,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE;gBACjD,oEAAoE;gBACpE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC,GAAG,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;gBACtF,MAAM,iBAAO,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;gBACnF,4EAA4E;gBAC5E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,uCAAuC,EAAE;oBACnF,GAAG,EAAE,QAAQ;iBACd,CAAC,CAAC;gBACH,IAAI,OAAO,EAAE;oBACX,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;iBACvB;gBACD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACjF,IAAI,QAAQ,EAAE;oBACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;iBAC3B;gBACD,OAAO,QAAQ,CAAC;aACjB;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;aAC1D;QACH,CAAC,CAAA;QACD,gBAAgB,EAAE,CAChB,cAAsB,EACtB,UAAwB,EACxB,cAAsB,EACtB,UAAwB,EACxB,IAAI,GAAG,aAAa,EACpB,EAAE,kDAAE,CAAC,CAAA;KACR,CAAC,CAAC;AACL,CAAC,CAAA,CAAC"} \ No newline at end of file diff --git a/Composer/plugins/runtimes/lib/interface.d.ts b/Composer/plugins/runtimes/lib/interface.d.ts deleted file mode 100644 index 87857a4a11..0000000000 --- a/Composer/plugins/runtimes/lib/interface.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -export interface Stat { - isDir: boolean; - isFile: boolean; - lastModified: string; - size: string; -} -export interface MakeDirectoryOptions { - recursive?: boolean; -} -export interface IFileStorage { - stat(path: string): Promise; - readFile(path: string): Promise; - readDir(path: string): Promise; - exists(path: string): Promise; - writeFile(path: string, content: any): Promise; - removeFile(path: string): Promise; - mkDir(path: string, options?: MakeDirectoryOptions): Promise; - rmDir(path: string): Promise; - glob(pattern: string, path: string): Promise; - copyFile(src: string, dest: string): Promise; - rename(oldPath: string, newPath: string): Promise; -} diff --git a/Composer/plugins/runtimes/lib/interface.js b/Composer/plugins/runtimes/lib/interface.js deleted file mode 100644 index e3a4630bc8..0000000000 --- a/Composer/plugins/runtimes/lib/interface.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=interface.js.map \ No newline at end of file diff --git a/Composer/plugins/runtimes/lib/interface.js.map b/Composer/plugins/runtimes/lib/interface.js.map deleted file mode 100644 index 0905bdc0d7..0000000000 --- a/Composer/plugins/runtimes/lib/interface.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC"} \ No newline at end of file diff --git a/Composer/plugins/samples/lib/index.d.ts b/Composer/plugins/samples/lib/index.d.ts deleted file mode 100644 index deae25e201..0000000000 --- a/Composer/plugins/samples/lib/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: (composer: any) => Promise; -export default _default; diff --git a/Composer/plugins/samples/lib/index.js b/Composer/plugins/samples/lib/index.js deleted file mode 100644 index 44383ff61e..0000000000 --- a/Composer/plugins/samples/lib/index.js +++ /dev/null @@ -1,129 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const path_1 = __importDefault(require("path")); -const fs_1 = __importDefault(require("fs")); -const samplesDir = path_1.default.resolve(__dirname, '../assets/projects'); -const boilerplateDir = path_1.default.resolve(__dirname, '../assets/shared'); -const samplesRegitry = { - '*': { - tags: ["Basic"], - support: ["C#", "JS"] - }, - EchoBot: { - name: 'Echo Bot', - description: 'A bot that echoes and responds with whatever message the user entered', - index: 1, - }, - EmptyBot: { - name: 'Empty Bot', - description: 'A basic bot template that is ready for your creativity', - index: 2, - }, - TodoSample: { - name: 'Simple Todo', - description: 'A sample bot that allows you to add, list, and remove to do items.', - index: 3, - }, - ToDoBotWithLuisSample: { - name: 'Todo with LUIS', - description: 'A sample bot that allows you to add, list, and remove to do items using Language Understanding', - index: 4, - }, - RespondingWithCardsSample: { - name: 'Responding with Cards', - description: 'A sample bot that uses Language Generation to create cards.', - }, - AskingQuestionsSample: { - name: 'Asking Questions', - description: 'A sample bot that shows how to ask questions and capture user input.', - }, - InterruptionSample: { - name: 'Interruptions', - description: 'An advanced sample bot that shows how to handle context switching and interruption in a conversation.', - }, - RespondingWithTextSample: { - name: 'Responding with Text', - description: 'A sample bot that uses Language Generation to create bot responses.', - }, - ControllingConversationFlowSample: { - name: 'Controlling Conversation Flow', - description: 'A sample bot that shows how to control the flow of a conversation.', - }, - ActionsSample: { - name: 'Dialog Actions', - description: 'A sample bot that shows how to use Dialog Actions.', - }, - QnAMakerLUISSample: { - name: 'QnA Maker and LUIS', - description: 'A sample bot that demonstrates use of both QnA Maker & LUIS', - }, - QnASample: { - name: 'QnA Sample', - description: 'A sample bot that import online QnA resource', - } -}; -function getSamples() { - const subPaths = fs_1.default.readdirSync(samplesDir); - const samples = []; - for (const subPath of subPaths) { - const fullPath = samplesDir + "/" + subPath; - if (!fs_1.default.statSync(fullPath).isDirectory()) { - continue; - } - // only looking for directories - const dirname = subPath; - let sample = Object.assign({ id: dirname, name: dirname, description: dirname, path: fullPath }, samplesRegitry['*']); - if (samplesRegitry[sample.id]) { - sample = Object.assign(Object.assign({}, sample), samplesRegitry[sample.id]); - } - samples.push(sample); - } - samples.sort((a, b) => { - if (a.index && b.index) { - return a.index - b.index; - } - if (a.index) { - return -1; - } - return 1; - }); - return samples; -} -function getBoilerplates() { - return [ - { - id: "boilerplate", - name: "boilerplate", - description: "base template for every bot template", - path: boilerplateDir, - tags: ["boilerplate"], - support: ["*"], - } - ]; -} -const samples = getSamples(); -const boilerplates = getBoilerplates(); -exports.default = (composer) => __awaiter(void 0, void 0, void 0, function* () { - // register this publishing method with Composer - for (const temlate of samples) { - yield composer.addBotTemplate(temlate); - } - for (const temlate of boilerplates) { - yield composer.addBaseTemplate(temlate); - } -}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/Composer/plugins/samples/lib/index.js.map b/Composer/plugins/samples/lib/index.js.map deleted file mode 100644 index b4416454f9..0000000000 --- a/Composer/plugins/samples/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;;;AAElC,gDAAwB;AACxB,4CAAoB;AAEpB,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACjE,MAAM,cAAc,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAEnE,MAAM,cAAc,GAAG;IACrB,GAAG,EAAE;QACH,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;KACtB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,uEAAuE;QACpF,KAAK,EAAE,CAAC;KACT;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,wDAAwD;QACrE,KAAK,EAAE,CAAC;KACT;IACD,UAAU,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,oEAAoE;QACjF,KAAK,EAAE,CAAC;KACT;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,gGAAgG;QAC7G,KAAK,EAAE,CAAC;KACT;IACD,yBAAyB,EAAE;QACzB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,6DAA6D;KAC3E;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,sEAAsE;KACpF;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uGAAuG;KACrH;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,qEAAqE;KACnF;IACD,iCAAiC,EAAE;QACjC,IAAI,EAAE,+BAA+B;QACrC,WAAW,EAAE,oEAAoE;KAClF;IACD,aAAa,EAAE;QACb,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oDAAoD;KAClE;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,6DAA6D;KAC3E;IACD,SAAS,EAAE;QACT,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,8CAA8C;KAC5D;CACF,CAAA;AAGD,SAAS,UAAU;IACjB,MAAM,QAAQ,GAAG,YAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,QAAQ,GAAG,UAAU,GAAG,GAAG,GAAG,OAAO,CAAC;QAC5C,IAAI,CAAC,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE;YACxC,SAAS;SACV;QAED,+BAA+B;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC;QACxB,IAAI,MAAM,mBAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAK,cAAc,CAAC,GAAG,CAAC,CAAE,CAAC;QAC1G,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;YAC7B,MAAM,mCAAQ,MAAM,GAAK,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAE,CAAC;SACtD;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACtB;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE;YACtB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SAC1B;QACD,IAAI,CAAC,CAAC,KAAK,EAAE;YACX,OAAO,CAAC,CAAC,CAAC;SACX;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAA;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe;IACtB,OAAO;QACL;YACE,EAAE,EAAE,aAAa;YACjB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,sCAAsC;YACnD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,CAAC,aAAa,CAAC;YACrB,OAAO,EAAE,CAAC,GAAG,CAAC;SACf;KACF,CAAA;AACH,CAAC;AAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;AAC7B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AAEvC,kBAAe,CAAO,QAAa,EAAiB,EAAE;IACpD,gDAAgD;IAChD,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE;QAC7B,MAAM,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;KACxC;IAED,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE;QAClC,MAAM,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;KACzC;AACH,CAAC,CAAA,CAAC"} \ No newline at end of file diff --git a/Composer/plugins/vacore/lib/index.d.ts b/Composer/plugins/vacore/lib/index.d.ts deleted file mode 100644 index deae25e201..0000000000 --- a/Composer/plugins/vacore/lib/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: (composer: any) => Promise; -export default _default; diff --git a/Composer/plugins/vacore/lib/index.js b/Composer/plugins/vacore/lib/index.js deleted file mode 100644 index 2a7fbb690f..0000000000 --- a/Composer/plugins/vacore/lib/index.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. -const path_1 = __importDefault(require("path")); -const format_message_1 = __importDefault(require("format-message")); -exports.default = (composer) => __awaiter(void 0, void 0, void 0, function* () { - if (process.env.VA_CREATION) { - // register the base template which will appear in the new bot modal - composer.addBotTemplate({ - id: 'va-core', - name: format_message_1.default('VA Core'), - description: format_message_1.default('The core of your new VA - ready to run, just add skills!'), - path: path_1.default.resolve(__dirname, '../template'), - }); - } -}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/Composer/plugins/vacore/lib/index.js.map b/Composer/plugins/vacore/lib/index.js.map deleted file mode 100644 index b161c1984a..0000000000 --- a/Composer/plugins/vacore/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uCAAuC;AACvC,kCAAkC;AAClC,gDAAwB;AAExB,oEAA2C;AAE3C,kBAAe,CAAO,QAAa,EAAiB,EAAE;IACpD,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;QAC3B,oEAAoE;QACpE,QAAQ,CAAC,cAAc,CAAC;YACtB,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,wBAAa,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,wBAAa,CAAC,0DAA0D,CAAC;YACtF,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC;SAC7C,CAAC,CAAC;KACJ;AACH,CAAC,CAAA,CAAC"} \ No newline at end of file From c013116fe7c3b2848d83ea40ba439853f2a42ff7 Mon Sep 17 00:00:00 2001 From: hond Date: Mon, 19 Oct 2020 14:40:21 +0800 Subject: [PATCH 08/10] update yarn.lock --- extensions/azurePublish/yarn.lock | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/extensions/azurePublish/yarn.lock b/extensions/azurePublish/yarn.lock index a1183834a5..ac24f128e8 100644 --- a/extensions/azurePublish/yarn.lock +++ b/extensions/azurePublish/yarn.lock @@ -171,15 +171,9 @@ "@bfc/indexers@../../Composer/packages/lib/indexers": version "0.0.0" dependencies: -<<<<<<< HEAD:Composer/plugins/azurePublish/yarn.lock - "@microsoft/bf-lu" "^4.11.0-dev.20201005.7e5e1b8" + "@microsoft/bf-lu" "^4.11.0-dev.20201013.7ccb128" adaptive-expressions "^4.11.0-dev.20201013.d5458bf" botbuilder-lg "4.11.0-dev.20201010.6e4a99e" -======= - "@microsoft/bf-lu" "^4.11.0-dev.20201013.7ccb128" - adaptive-expressions "4.10.0-preview-147186" - botbuilder-lg "^4.10.0-preview-150886" ->>>>>>> main:extensions/azurePublish/yarn.lock lodash "^4.17.19" "@bfc/shared@../../Composer/packages/lib/shared": From ce4a3ef8ffdc3dbe51e3fac27458aca1b70086b5 Mon Sep 17 00:00:00 2001 From: hond Date: Mon, 19 Oct 2020 17:39:58 +0800 Subject: [PATCH 09/10] fix comments --- .../packages/client/src/hooks/useResolver.ts | 7 +- .../parsers/workers/lgParser.worker.ts | 17 +--- Composer/packages/lib/indexers/src/index.ts | 11 ++- .../packages/lib/indexers/src/utils/lgUtil.ts | 8 +- .../lib/shared/src/resolverFactory.ts | 8 +- .../server/schemas/sdk.en-US.uischema | 94 +++++++++---------- .../packages/server/src/locales/en-US.json | 18 ++-- .../packages/server/src/services/project.ts | 10 +- .../language-generation/src/LGServer.ts | 17 ++-- .../language-generation/src/lgParser.ts | 6 +- Composer/packages/types/src/indexers.ts | 4 + Composer/yarn.lock | 2 +- 12 files changed, 90 insertions(+), 112 deletions(-) diff --git a/Composer/packages/client/src/hooks/useResolver.ts b/Composer/packages/client/src/hooks/useResolver.ts index 3fd00a727d..7637ceb894 100644 --- a/Composer/packages/client/src/hooks/useResolver.ts +++ b/Composer/packages/client/src/hooks/useResolver.ts @@ -3,7 +3,6 @@ import { useRef } from 'react'; import { lgImportResolverGenerator } from '@bfc/shared'; import { useRecoilValue } from 'recoil'; -import { LGResource } from 'botbuilder-lg'; import { dialogsState, luFilesState, lgFilesState, localeState, qnaFilesState } from '../recoilModel'; @@ -29,11 +28,7 @@ export const useResolvers = (projectId: string) => { const dialogsRef = useRef(dialogs); dialogsRef.current = dialogs; - const lgImportresolver = () => - lgImportResolverGenerator( - lgFilesRef.current.map((u) => new LGResource(u.id, u.id, u.content)), - '.lg' - ); + const lgImportresolver = () => lgImportResolverGenerator(lgFilesRef.current, '.lg'); const lgFileResolver = (id: string) => { const fileId = id.includes('.') ? id : `${id}.${localeRef.current}`; diff --git a/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts b/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts index c8a9719190..f36e3db387 100644 --- a/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts +++ b/Composer/packages/client/src/recoilModel/parsers/workers/lgParser.worker.ts @@ -2,7 +2,6 @@ // Licensed under the MIT License. import { lgUtil } from '@bfc/indexers'; import { lgImportResolverGenerator, LgFile } from '@bfc/shared'; -import { LGResource } from 'botbuilder-lg'; import { LgActionType, @@ -92,11 +91,8 @@ type LgMessageEvent = type LgResources = Map; -const lgFileResolver = (lgFiles: LgFile[]) => { - return lgImportResolverGenerator( - lgFiles.map((u) => new LGResource(u.id, u.id, u.content)), - '.lg' - ); +const lgFileResolver = (lgFiles) => { + return lgImportResolverGenerator(lgFiles, '.lg'); }; export class LgCache { @@ -123,8 +119,7 @@ export class LgCache { public addProject(projectId: string, lgFiles: LgFile[]) { const lgResources = new Map(); lgFiles.forEach((file) => { - const resources = lgFiles.map((u) => new LGResource(u.id, u.id, u.content)); - lgResources.set(file.id, lgUtil.parse(file.id, file.content, resources)); + lgResources.set(file.id, lgUtil.parse(file.id, file.content, lgFiles)); }); this.projects.set(projectId, lgResources); } @@ -166,11 +161,7 @@ export const handleMessage = (msg: LgMessageEvent) => { case LgActionType.Parse: { const { id, content, lgFiles, projectId } = msg.payload; - const lgFile = lgUtil.parse( - id, - content, - lgFiles.map((u) => new LGResource(u.id, u.id, u.content)) - ); + const lgFile = lgUtil.parse(id, content, lgFiles); cache.set(projectId, lgFile); payload = filterParseResult(lgFile); break; diff --git a/Composer/packages/lib/indexers/src/index.ts b/Composer/packages/lib/indexers/src/index.ts index bce2ca52b6..3504f196cf 100644 --- a/Composer/packages/lib/indexers/src/index.ts +++ b/Composer/packages/lib/indexers/src/index.ts @@ -1,7 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { DialogSetting, FileInfo, lgImportResolverGenerator } from '@bfc/shared'; -import { LGResource } from 'botbuilder-lg'; import { dialogIndexer } from './dialogIndexer'; import { dialogSchemaIndexer } from './dialogSchemaIndexer'; @@ -40,12 +39,14 @@ class Indexer { } private getLgImportResolver = (files: FileInfo[], locale: string) => { - const lgResources = files.map(({ name, content }) => { - const id = getBaseName(name, '.lg'); - return new LGResource(id, id, content); + const lgFiles = files.map(({ name, content }) => { + return { + id: getBaseName(name, '.lg'), + content, + }; }); - return lgImportResolverGenerator(lgResources, '.lg', locale); + return lgImportResolverGenerator(lgFiles, '.lg', locale); }; public index(files: FileInfo[], botName: string, locale: string, skillContent: any, settings: DialogSetting) { diff --git a/Composer/packages/lib/indexers/src/utils/lgUtil.ts b/Composer/packages/lib/indexers/src/utils/lgUtil.ts index 889e67c4f0..c3e55bb56d 100644 --- a/Composer/packages/lib/indexers/src/utils/lgUtil.ts +++ b/Composer/packages/lib/indexers/src/utils/lgUtil.ts @@ -7,8 +7,8 @@ * */ -import { Templates, Template, Diagnostic as LGDiagnostic, LGResource, ImportResolverDelegate } from 'botbuilder-lg'; -import { LgTemplate, lgImportResolverGenerator, Diagnostic, Position, Range, LgFile } from '@bfc/shared'; +import { Templates, Template, Diagnostic as LGDiagnostic, ImportResolverDelegate } from 'botbuilder-lg'; +import { LgTemplate, lgImportResolverGenerator, TextFile, Diagnostic, Position, Range, LgFile } from '@bfc/shared'; import formatMessage from 'format-message'; import isEmpty from 'lodash/isEmpty'; import { SourceRange } from 'botbuilder-lg/lib/sourceRange'; @@ -259,8 +259,8 @@ export function extractOptionByKey(nameOfKey: string, options: string[]): string return result; } -export function parse(id: string, content: string, lgResources: LGResource[]): LgFile { - const lgImportResolver = lgImportResolverGenerator(lgResources, '.lg'); +export function parse(id: string, content: string, lgFiles: TextFile[]): LgFile { + const lgImportResolver = lgImportResolverGenerator(lgFiles, '.lg'); return lgIndexer.parse(content, id, lgImportResolver); } diff --git a/Composer/packages/lib/shared/src/resolverFactory.ts b/Composer/packages/lib/shared/src/resolverFactory.ts index bdff5ef8c7..89dd224139 100644 --- a/Composer/packages/lib/shared/src/resolverFactory.ts +++ b/Composer/packages/lib/shared/src/resolverFactory.ts @@ -4,8 +4,8 @@ import formatMessage from 'format-message'; import { LGResource, ImportResolverDelegate } from 'botbuilder-lg'; -export declare type LUResolverResource = { content: string; id: string }; -export declare type LUImportResolverDelegate = (source: string, resourceId: string) => LUResolverResource; +export declare type ResolverResource = { content: string; id: string }; +export declare type LUImportResolverDelegate = (source: string, resourceId: string) => ResolverResource; function getFileName(path: string): string { return path.split('/').pop() || path; @@ -18,7 +18,7 @@ function getFileName(path: string): string { * @param defaultLocale complete resource id = [id].[locale][ext] */ export function luImportResolverGenerator( - resources: LUResolverResource[], + resources: ResolverResource[], ext = '', defaultLocale = 'en-us' ): LUImportResolverDelegate { @@ -60,7 +60,7 @@ export function luImportResolverGenerator( * @param defaultLocale complete resource id = [id].[locale][ext] */ export function lgImportResolverGenerator( - resources: LGResource[], + resources: ResolverResource[], ext = '', defaultLocale = 'en-us' ): ImportResolverDelegate { diff --git a/Composer/packages/server/schemas/sdk.en-US.uischema b/Composer/packages/server/schemas/sdk.en-US.uischema index 817509983b..1e197b386c 100644 --- a/Composer/packages/server/schemas/sdk.en-US.uischema +++ b/Composer/packages/server/schemas/sdk.en-US.uischema @@ -11,48 +11,6 @@ } } }, - "Microsoft.AttachmentInput": { - "form": { - "label": "Prompt for a file or an attachment", - "subtitle": "Attachment Input" - } - }, - "Microsoft.ChoiceInput": { - "form": { - "label": "Prompt with multi-choice", - "subtitle": "Choice Input" - } - }, - "Microsoft.ConfirmInput": { - "form": { - "label": "Prompt for confirmation", - "subtitle": "Confirm Input" - } - }, - "Microsoft.DateTimeInput": { - "form": { - "label": "Prompt for a date or a time", - "subtitle": "Date Time Input" - } - }, - "Microsoft.NumberInput": { - "form": { - "label": "Prompt for a number", - "subtitle": "Number Input" - } - }, - "Microsoft.OAuthInput": { - "form": { - "label": "OAuth login", - "subtitle": "OAuth Input" - } - }, - "Microsoft.TextInput": { - "form": { - "label": "Prompt for text", - "subtitle": "Text Input" - } - }, "Microsoft.BeginDialog": { "form": { "label": "Begin a new dialog", @@ -100,11 +58,6 @@ "subtitle": "Delete Property" } }, - "Microsoft.DeleteActivity": { - "form": { - "label": "Delete activity" - } - }, "Microsoft.EditActions": { "form": { "label": "Modify active dialog", @@ -213,9 +166,46 @@ "subtitle": "Trace Activity" } }, - "Microsoft.UpdateActivity": { + "Microsoft.AttachmentInput": { + "form": { + "label": "Prompt for a file or an attachment", + "subtitle": "Attachment Input" + } + }, + "Microsoft.ChoiceInput": { + "form": { + "label": "Prompt with multi-choice", + "subtitle": "Choice Input" + } + }, + "Microsoft.ConfirmInput": { "form": { - "label": "Update an activity" + "label": "Prompt for confirmation", + "subtitle": "Confirm Input" + } + }, + "Microsoft.DateTimeInput": { + "form": { + "label": "Prompt for a date or a time", + "subtitle": "Date Time Input" + } + }, + "Microsoft.NumberInput": { + "form": { + "label": "Prompt for a number", + "subtitle": "Number Input" + } + }, + "Microsoft.OAuthInput": { + "form": { + "label": "OAuth login", + "subtitle": "OAuth Input" + } + }, + "Microsoft.TextInput": { + "form": { + "label": "Prompt for text", + "subtitle": "Text Input" } }, "Microsoft.OnActivity": { @@ -279,6 +269,12 @@ "subtitle": "Handoff activity" } }, + "Microsoft.OnInstallationUpdateActivity": { + "form": { + "label": "Installation updated", + "subtitle": "Installation updated activity" + } + }, "Microsoft.OnIntent": { "form": { "label": "Intent recognized", diff --git a/Composer/packages/server/src/locales/en-US.json b/Composer/packages/server/src/locales/en-US.json index 841a65d73f..1b78503583 100644 --- a/Composer/packages/server/src/locales/en-US.json +++ b/Composer/packages/server/src/locales/en-US.json @@ -1088,9 +1088,6 @@ "export_de71cd8e": { "message": "Export" }, - "export_json_2e2981f5": { - "message": "Export JSON" - }, "expression_7f906a13": { "message": "Expression" }, @@ -1811,6 +1808,9 @@ "open_inline_editor_a5aabcfa": { "message": "Open inline editor" }, + "open_skills_page_for_configuration_details_a2a484ea": { + "message": "Open Skills page for configuration details" + }, "optional_221bcc9d": { "message": "Optional" }, @@ -1955,9 +1955,6 @@ "property_actions_9c1a20d9": { "message": "Property actions" }, - "property_array_help_text_126845dc": { - "message": "Property array help text" - }, "property_description_8d21ea2e": { "message": "Property description." }, @@ -1970,12 +1967,6 @@ "property_name_914371f5": { "message": "Property name" }, - "property_name_help_text_421a5f7f": { - "message": "Property name help text" - }, - "property_required_help_text_57f027ad": { - "message": "Property required help text" - }, "property_title_f2b443b7": { "message": "Property title" }, @@ -2088,6 +2079,9 @@ "message": "RegEx { intent } is already defined" }, "regular_expression_855557bf": { + "message": "Regular Expression" + }, + "regular_expression_recognizer_44664557": { "message": "Regular expression recognizer" }, "release_1af20f26": { diff --git a/Composer/packages/server/src/services/project.ts b/Composer/packages/server/src/services/project.ts index 3cc2f0b203..3558741b18 100644 --- a/Composer/packages/server/src/services/project.ts +++ b/Composer/packages/server/src/services/project.ts @@ -4,10 +4,9 @@ import merge from 'lodash/merge'; import find from 'lodash/find'; import flatten from 'lodash/flatten'; -import { luImportResolverGenerator, LUResolverResource } from '@bfc/shared'; +import { luImportResolverGenerator, ResolverResource } from '@bfc/shared'; import extractMemoryPaths from '@bfc/indexers/lib/dialogUtils/extractMemoryPaths'; import { UserIdentity } from '@bfc/extension'; -import { LGResource } from 'botbuilder-lg'; import { BotProject } from '../models/bot/botProject'; import { LocationRef } from '../models/bot/interface'; @@ -36,19 +35,18 @@ export class BotProjectService { } } - public static getLgResources(projectId?: string): LGResource[] { + public static getLgResources(projectId?: string): ResolverResource[] { BotProjectService.initialize(); const project = BotProjectService.getIndexedProjectById(projectId); if (!project) throw new Error('project not found'); const resources = project.lgFiles.map((file) => { const { name, content } = file; - const id = Path.basename(name, '.lg'); - return new LGResource(id, id, content); + return { id: Path.basename(name, '.lg'), content }; }); return resources; } - public static luImportResolver(source: string, id: string, projectId: string): LUResolverResource { + public static luImportResolver(source: string, id: string, projectId: string): ResolverResource { BotProjectService.initialize(); const project = BotProjectService.getIndexedProjectById(projectId); if (!project) throw new Error('project not found'); diff --git a/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts b/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts index 4e71c37dac..368932bac3 100644 --- a/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts +++ b/Composer/packages/tools/language-servers/language-generation/src/LGServer.ts @@ -16,9 +16,8 @@ import { import { TextDocumentPositionParams, DocumentOnTypeFormattingParams } from 'vscode-languageserver-protocol'; import get from 'lodash/get'; import { filterTemplateDiagnostics, isValid, lgUtil } from '@bfc/indexers'; -import { MemoryResolver, LgFile, lgImportResolverGenerator } from '@bfc/shared'; +import { MemoryResolver, ResolverResource, LgFile, lgImportResolverGenerator } from '@bfc/shared'; import { buildInFunctionsMap } from '@bfc/built-in-functions'; -import { LGResource } from 'botbuilder-lg'; import { LgParser } from './lgParser'; import { @@ -48,7 +47,7 @@ export class LGServer { constructor( protected readonly connection: IConnection, - protected readonly getLgResources: (projectId?: string) => LGResource[], + protected readonly getLgResources: (projectId?: string) => ResolverResource[], protected readonly memoryResolver?: MemoryResolver ) { this.documents.listen(this.connection); @@ -162,17 +161,17 @@ export class LGServer { const index = (): LgFile => { const content = this.documents.get(uri)?.getText() || ''; // if inline mode, composite local with server resolved file. - const lgResources = projectId ? this.getLgResources(projectId) : []; + const lgTextFiles = projectId ? this.getLgResources(projectId) : []; if (fileId && templateId) { - const lgResource = lgResources.find((item) => item.id === fileId); - if (lgResource) { - const lgFile = lgUtil.parse(lgResource.id, lgResource.content, lgResources); - const lgResolver = lgImportResolverGenerator(lgResources, '.lg'); + const lgTextFile = lgTextFiles.find((item) => item.id === fileId); + if (lgTextFile) { + const lgFile = lgUtil.parse(lgTextFile.id, lgTextFile.content, lgTextFiles); + const lgResolver = lgImportResolverGenerator(lgTextFiles, '.lg'); return lgUtil.updateTemplate(lgFile, templateId, { body: content }, lgResolver); } } - return lgUtil.parse(fileId || uri, content, lgResources); + return lgUtil.parse(fileId || uri, content, lgTextFiles); }; const lgDocument: LGDocument = { uri, diff --git a/Composer/packages/tools/language-servers/language-generation/src/lgParser.ts b/Composer/packages/tools/language-servers/language-generation/src/lgParser.ts index e4078d95fd..a35feb740b 100644 --- a/Composer/packages/tools/language-servers/language-generation/src/lgParser.ts +++ b/Composer/packages/tools/language-servers/language-generation/src/lgParser.ts @@ -5,9 +5,9 @@ import { fork, ChildProcess } from 'child_process'; import path from 'path'; import { lgImportResolverGenerator } from '@bfc/shared'; +import { ResolverResource } from '@bfc/shared'; import uniqueId from 'lodash/uniqueId'; import { lgIndexer } from '@bfc/indexers'; -import { LGResource } from 'botbuilder-lg'; const isTest = process.env?.NODE_ENV === 'test'; export interface WorkerMsg { @@ -17,7 +17,7 @@ export interface WorkerMsg { } class LgParserWithoutWorker { - public async parseText(content: string, id: string, resources: LGResource[]) { + public async parseText(content: string, id: string, resources: ResolverResource[]) { const lgImportResolver = lgImportResolverGenerator(resources, '.lg'); return lgIndexer.parse(content, id, lgImportResolver); } @@ -32,7 +32,7 @@ class LgParserWithWorker { LgParserWithWorker.worker.on('message', this.handleMsg.bind(this)); } - public async parseText(content: string, id: string, resources: LGResource[]): Promise { + public async parseText(content: string, id: string, resources: ResolverResource[]): Promise { const msgId = uniqueId(); const msg = { id: msgId, payload: { content, id, resources } }; return new Promise((resolve, reject) => { diff --git a/Composer/packages/types/src/indexers.ts b/Composer/packages/types/src/indexers.ts index 6aab8ca1bf..c0293bce42 100644 --- a/Composer/packages/types/src/indexers.ts +++ b/Composer/packages/types/src/indexers.ts @@ -176,6 +176,10 @@ export type JsonSchemaFile = { content: string; }; +export type TextFile = { + id: string; + content: string; +}; export type FileResolver = (id: string) => FileInfo | undefined; export type MemoryResolver = (id: string) => string[] | undefined; diff --git a/Composer/yarn.lock b/Composer/yarn.lock index d78cfcf941..3a88ee7e69 100644 --- a/Composer/yarn.lock +++ b/Composer/yarn.lock @@ -4524,7 +4524,7 @@ acorn@^7.4.0: resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha1-4a1IbmxUUBY0xsOXxcEh2qODYHw= -adaptive-expressions@4.11.0-dev.20200929.ca9de94, adaptive-expressions@^4.11.0-dev.20200916.f8fef0f: +adaptive-expressions@4.11.0-dev.20200929.ca9de94: version "4.11.0-dev.20200929.ca9de94" resolved "https://registry.yarnpkg.com/adaptive-expressions/-/adaptive-expressions-4.11.0-dev.20200929.ca9de94.tgz#305c8462e7e0c329f55aa8cd2b2496bb81c2490c" integrity sha512-xq5QG19kIPio6piHEA4aPkqqi2ejYoYCBEovF55gJXaW5jKG+Q7bao3yqb2VTq9vISEyIq9VabmIlHzRQrOXyg== From 182bd6eead1d8ca980d21be3f78283a22b3de65c Mon Sep 17 00:00:00 2001 From: Hongyang Date: Mon, 19 Oct 2020 20:06:46 +0800 Subject: [PATCH 10/10] revert schema file --- .../server/schemas/sdk.en-US.uischema | 94 ++++++++++--------- .../packages/server/src/locales/en-US.json | 18 ++-- 2 files changed, 61 insertions(+), 51 deletions(-) diff --git a/Composer/packages/server/schemas/sdk.en-US.uischema b/Composer/packages/server/schemas/sdk.en-US.uischema index 1e197b386c..817509983b 100644 --- a/Composer/packages/server/schemas/sdk.en-US.uischema +++ b/Composer/packages/server/schemas/sdk.en-US.uischema @@ -11,6 +11,48 @@ } } }, + "Microsoft.AttachmentInput": { + "form": { + "label": "Prompt for a file or an attachment", + "subtitle": "Attachment Input" + } + }, + "Microsoft.ChoiceInput": { + "form": { + "label": "Prompt with multi-choice", + "subtitle": "Choice Input" + } + }, + "Microsoft.ConfirmInput": { + "form": { + "label": "Prompt for confirmation", + "subtitle": "Confirm Input" + } + }, + "Microsoft.DateTimeInput": { + "form": { + "label": "Prompt for a date or a time", + "subtitle": "Date Time Input" + } + }, + "Microsoft.NumberInput": { + "form": { + "label": "Prompt for a number", + "subtitle": "Number Input" + } + }, + "Microsoft.OAuthInput": { + "form": { + "label": "OAuth login", + "subtitle": "OAuth Input" + } + }, + "Microsoft.TextInput": { + "form": { + "label": "Prompt for text", + "subtitle": "Text Input" + } + }, "Microsoft.BeginDialog": { "form": { "label": "Begin a new dialog", @@ -58,6 +100,11 @@ "subtitle": "Delete Property" } }, + "Microsoft.DeleteActivity": { + "form": { + "label": "Delete activity" + } + }, "Microsoft.EditActions": { "form": { "label": "Modify active dialog", @@ -166,46 +213,9 @@ "subtitle": "Trace Activity" } }, - "Microsoft.AttachmentInput": { - "form": { - "label": "Prompt for a file or an attachment", - "subtitle": "Attachment Input" - } - }, - "Microsoft.ChoiceInput": { - "form": { - "label": "Prompt with multi-choice", - "subtitle": "Choice Input" - } - }, - "Microsoft.ConfirmInput": { + "Microsoft.UpdateActivity": { "form": { - "label": "Prompt for confirmation", - "subtitle": "Confirm Input" - } - }, - "Microsoft.DateTimeInput": { - "form": { - "label": "Prompt for a date or a time", - "subtitle": "Date Time Input" - } - }, - "Microsoft.NumberInput": { - "form": { - "label": "Prompt for a number", - "subtitle": "Number Input" - } - }, - "Microsoft.OAuthInput": { - "form": { - "label": "OAuth login", - "subtitle": "OAuth Input" - } - }, - "Microsoft.TextInput": { - "form": { - "label": "Prompt for text", - "subtitle": "Text Input" + "label": "Update an activity" } }, "Microsoft.OnActivity": { @@ -269,12 +279,6 @@ "subtitle": "Handoff activity" } }, - "Microsoft.OnInstallationUpdateActivity": { - "form": { - "label": "Installation updated", - "subtitle": "Installation updated activity" - } - }, "Microsoft.OnIntent": { "form": { "label": "Intent recognized", diff --git a/Composer/packages/server/src/locales/en-US.json b/Composer/packages/server/src/locales/en-US.json index 1b78503583..841a65d73f 100644 --- a/Composer/packages/server/src/locales/en-US.json +++ b/Composer/packages/server/src/locales/en-US.json @@ -1088,6 +1088,9 @@ "export_de71cd8e": { "message": "Export" }, + "export_json_2e2981f5": { + "message": "Export JSON" + }, "expression_7f906a13": { "message": "Expression" }, @@ -1808,9 +1811,6 @@ "open_inline_editor_a5aabcfa": { "message": "Open inline editor" }, - "open_skills_page_for_configuration_details_a2a484ea": { - "message": "Open Skills page for configuration details" - }, "optional_221bcc9d": { "message": "Optional" }, @@ -1955,6 +1955,9 @@ "property_actions_9c1a20d9": { "message": "Property actions" }, + "property_array_help_text_126845dc": { + "message": "Property array help text" + }, "property_description_8d21ea2e": { "message": "Property description." }, @@ -1967,6 +1970,12 @@ "property_name_914371f5": { "message": "Property name" }, + "property_name_help_text_421a5f7f": { + "message": "Property name help text" + }, + "property_required_help_text_57f027ad": { + "message": "Property required help text" + }, "property_title_f2b443b7": { "message": "Property title" }, @@ -2079,9 +2088,6 @@ "message": "RegEx { intent } is already defined" }, "regular_expression_855557bf": { - "message": "Regular Expression" - }, - "regular_expression_recognizer_44664557": { "message": "Regular expression recognizer" }, "release_1af20f26": {