diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..8fbda57fdb --- /dev/null +++ b/.dockerignore @@ -0,0 +1,25 @@ +**/node_modules +**/package-lock.json +**/dist +**/build +**/server/data.json +**/server/tmp.zip +# not ignore all lib folder because packages/lib, so probably we should rename that to libs +packages/lib/*/lib + +Dockerfile +.dockerignore + +# ignore local bots +extensions/localPublish/hostedBots/* + +# ignore test +Composer/coverage +Composer/packages/server/.composer + +extensions/.build-cache.json +extensions/**/lib +extensions/**/dist + +# ignore .git folders +**/.git \ No newline at end of file diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f880e48f21..c640447209 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,10 +2,10 @@ * @cwhitten @boydc2014 @a-b-r-o-w-n -/BotProject/ @boydc2014 @luhan2017 +/runtime/ @boydc2014 @luhan2017 @carlosscastro @benbrown -/Composer/ @cwhitten @boydc2014 @a-b-r-o-w-n @corinagum +/Composer/ @cwhitten @boydc2014 @a-b-r-o-w-n @beyackle @srinaath @tonyanziano @geoffcoxmsft @hatpick -/Composer/packages/extensions/visual-designer @yeze322 @cwhitten @boydc2014 @a-b-r-o-w-n +/Composer/packages/adaptive-flow @yeze322 @cwhitten @boydc2014 @a-b-r-o-w-n -/docs/ @cwhitten @boydc2014 @benbrown +/docs/ @cwhitten @boydc2014 @benbrown @geoffcoxmsft diff --git a/.github/ISSUE_TEMPLATE/bot-framework-composer-bug.md b/.github/ISSUE_TEMPLATE/bot-framework-composer-bug.md index c36d280efb..b97967cc7c 100644 --- a/.github/ISSUE_TEMPLATE/bot-framework-composer-bug.md +++ b/.github/ISSUE_TEMPLATE/bot-framework-composer-bug.md @@ -22,6 +22,7 @@ assignees: "" +- [ ] Electron distribution - [ ] Chrome - [ ] Safari - [ ] Firefox diff --git a/.github/ISSUE_TEMPLATE/bot-framework-composer-feature-request.md b/.github/ISSUE_TEMPLATE/bot-framework-composer-feature-request.md index a23aa308dd..2f71c038ba 100644 --- a/.github/ISSUE_TEMPLATE/bot-framework-composer-feature-request.md +++ b/.github/ISSUE_TEMPLATE/bot-framework-composer-feature-request.md @@ -1,23 +1,13 @@ --- name: Feature Request -about: Suggest an idea for the Bot Framework Composer +about: "Deprecated: Use 'Feature Request' discussion." title: "" labels: "Type: Enhancement, Needs-triage" assignees: "" --- -## Is your feature request related to a problem? Please describe. +> This issue template is deprecated. - +Please search Feature Request discussions for your feature request and create a new one if not found. -## Describe the solution you'd like - - - -## Describe alternatives you've considered - - - -## Additional context - - +You can create a new discussion [here](https://github.com/microsoft/BotFramework-Composer/discussions/new). diff --git a/.github/actions/conventional-pr/action.yml b/.github/actions/conventional-pr/action.yml index bd30409f25..0ee62201cc 100644 --- a/.github/actions/conventional-pr/action.yml +++ b/.github/actions/conventional-pr/action.yml @@ -6,3 +6,7 @@ runs: branding: icon: "briefcase" color: "purple" +inputs: + repo-token: + description: "Token used to interact with the Github API." + required: true diff --git a/.github/actions/conventional-pr/package-lock.json b/.github/actions/conventional-pr/package-lock.json index 2b71e6a526..be661096d9 100644 --- a/.github/actions/conventional-pr/package-lock.json +++ b/.github/actions/conventional-pr/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@actions/core": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.0.tgz", - "integrity": "sha512-ZKdyhlSlyz38S6YFfPnyNgCDZuAF2T0Qv5eHflNWytPS8Qjvz39bZFMry9Bb/dpSnqWcNeav5yM2CTYpJeY+Dw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz", + "integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA==" }, "@actions/github": { "version": "1.1.0", @@ -235,9 +235,9 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, "npm-run-path": { "version": "2.0.2", @@ -317,9 +317,9 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "typescript": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", - "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.2.tgz", + "integrity": "sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw==", "dev": true }, "universal-user-agent": { diff --git a/.github/actions/conventional-pr/package.json b/.github/actions/conventional-pr/package.json index 4601198225..6f8d689e91 100644 --- a/.github/actions/conventional-pr/package.json +++ b/.github/actions/conventional-pr/package.json @@ -10,10 +10,10 @@ "author": "", "license": "ISC", "dependencies": { - "@actions/core": "^1.2.0", + "@actions/core": "^1.2.6", "@actions/github": "^1.1.0" }, "devDependencies": { - "typescript": "^3.7.2" + "typescript": "3.9.2" } } diff --git a/.github/actions/conventional-pr/src/conventional-pr.ts b/.github/actions/conventional-pr/src/conventional-pr.ts index 6794cbc873..9ab7bb748b 100644 --- a/.github/actions/conventional-pr/src/conventional-pr.ts +++ b/.github/actions/conventional-pr/src/conventional-pr.ts @@ -1,13 +1,7 @@ import * as core from '@actions/core'; import * as github from '@actions/github'; -import { - validateTitle, - validateBody, - validateBaseBranch, - PullRequestInfo, - isRelease, -} from './utils'; +import { validateTitle, validateBody, PullRequestInfo } from './utils'; const OWNER = github.context.repo.owner; const REPO = github.context.repo.repo; @@ -26,6 +20,9 @@ const prQuery = ` query PRInfo($owner: String!, $repo: String!, $prNumber: Int!) { repository(owner: $owner, name: $repo) { pullRequest(number: $prNumber) { + author { + login + } title body baseRefName @@ -57,22 +54,20 @@ async function run() { return; } - if (!isRelease(pr)) { - const titleErrors = validateTitle(pr.title); - const bodyErrors = validateBody(pr.body); - const branchErrors = validateBaseBranch(pr.title, pr.baseRefName); + if (pr.author?.login === 'dependabot') { + core.info('This is a Dependabot PR; no verification needed.') + return; + } - if (titleErrors.length) { - core.setFailed(titleErrors.join('\n')); - } + const titleErrors = validateTitle(pr.title); + const bodyErrors = validateBody(pr.body); - if (bodyErrors.length) { - core.setFailed(bodyErrors.join('\n')); - } + if (titleErrors.length) { + core.setFailed(titleErrors.join('\n')); + } - if (branchErrors.length) { - core.setFailed(branchErrors.join('\n')); - } + if (bodyErrors.length) { + core.setFailed(bodyErrors.join('\n')); } } catch (err) { core.error(err); @@ -80,7 +75,7 @@ async function run() { } } -run().catch(err => { +run().catch((err) => { core.error(err); core.setFailed('Error verifying conventional PR.'); }); diff --git a/.github/actions/conventional-pr/src/utils.ts b/.github/actions/conventional-pr/src/utils.ts index 4e4f1a484a..d0c455988b 100644 --- a/.github/actions/conventional-pr/src/utils.ts +++ b/.github/actions/conventional-pr/src/utils.ts @@ -4,12 +4,15 @@ export interface PullRequestInfo { title: string; body: string; baseRefName: string; + author: {login: string}; } type ValidationResult = string[]; const validTypes = [ 'feat', + 'feature', 'fix', + 'doc', 'docs', 'style', 'refactor', @@ -23,7 +26,7 @@ const validTypes = [ 'a11y', ]; -const typeList = validTypes.map(t => ` - ${t}`).join('\n'); +const typeList = validTypes.map((t) => ` - ${t}`).join('\n'); export function validateTitle(title: string): ValidationResult { const errors: ValidationResult = []; @@ -32,7 +35,7 @@ export function validateTitle(title: string): ValidationResult { errors.push('[Title] Must be present.'); } - const hastype = validTypes.some(t => title.startsWith(`${t}: `)); + const hastype = validTypes.some((t) => title.startsWith(`${t}: `)); if (!hastype) { errors.push( @@ -43,7 +46,7 @@ export function validateTitle(title: string): ValidationResult { return errors; } -const refMatch = /(refs?|close(d|s)?|fix(ed|es)?) \#\d+/i; +const refMatch = /((refs?|close(d|s)?|fix(ed|es)?) \#\d+)|(#minor)|(#release)/i; const helpLink = 'https://help.github.com/en/github/managing-your-work-on-github/closing-issues-using-keywords'; @@ -52,28 +55,7 @@ export function validateBody(body: string): ValidationResult { if (!refMatch.test(body)) { errors.push( - `[Body] Must reference an issue (ex. 'fixes #1234').\nSee ${helpLink} for more details.` - ); - } - - return errors; -} - -export function isRelease(pr: PullRequestInfo) { - return pr.title.startsWith('release: ') && pr.baseRefName === 'stable'; -} - -export function validateBaseBranch( - title: string, - baseBranch: string -): ValidationResult { - let errors: ValidationResult = []; - - if (title.startsWith('release: ') && baseBranch !== 'stable') { - errors.push("[Release] Release pull request must target 'stable' branch."); - } else if (baseBranch === 'stable') { - errors.push( - "[Branch] Pull requests cannot target 'stable' branch. Perhaps you meant to create a release or are targeting the wrong branch." + `[Body] Must either reference an issue (ex. 'fixes #1234') or, if this is a minor change with no related issue, tag it as '#minor'.\nSee ${helpLink} for more details.` ); } diff --git a/.github/workflows/add-pr-owner.yml b/.github/workflows/add-pr-owner.yml new file mode 100644 index 0000000000..65f5410ea4 --- /dev/null +++ b/.github/workflows/add-pr-owner.yml @@ -0,0 +1,13 @@ +name: Add PR Owner + +on: + pull_request_review: + types: [submitted] + +jobs: + add-pr-owner: + runs-on: ubuntu-latest + steps: + - uses: a-b-r-o-w-n/add-pr-owner-action@v1 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000000..a58188d734 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,45 @@ +name: Docker Build Validation + +on: + push: + branches: [main] + pull_request: + types: [opened, reopened, synchronize] + workflow_dispatch: + +jobs: + build: + timeout-minutes: 60 + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: free disk space + run: | + sudo swapoff -a + sudo rm -f /swapfile + sudo apt clean + docker rmi $(docker image ls -aq) + df -h + + - name: Build + uses: docker/build-push-action@v2 + with: + push: false + context: . + file: Dockerfile + tags: botframework-composer + + - name: Health check + run: | + containerId=$(docker run -d -p "5000:5000" botframework-composer) + sleep 10 + docker logs $containerId + curl -Is http://localhost:5000 | grep -q "200 OK" + shell: bash + + - name: Clean up + if: always() + run: docker rm -f $(docker ps -a -q) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2fdb51fd8e..69b0c159be 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,8 +5,7 @@ on: types: [opened, reopened, synchronize] push: branches: - - master - - stable + - main schedule: - cron: "0 0 * * *" @@ -14,7 +13,10 @@ jobs: ci: name: Unit Tests runs-on: ubuntu-latest - timeout-minutes: 20 + timeout-minutes: 30 + defaults: + run: + working-directory: Composer steps: - name: Checkout @@ -23,34 +25,33 @@ jobs: uses: actions/setup-node@v1 with: node-version: 12.13.0 - - name: Restore yarn cache - uses: actions/cache@preview - with: - path: ~/.cache/yarn - key: ${{ runner.os }}-yarn-${{ hashFiles(format('{0}{1}', github.workspace, '/Composer/yarn.lock')) }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: yarn install - run: yarn - working-directory: Composer + #- name: Restore yarn cache + # uses: actions/cache@v2.1.2 + # with: + # path: ~/.cache/yarn + # key: ${{ runner.os }}-yarn-new-${{ hashFiles(format('{0}{1}', github.workspace, '/Composer/yarn.lock')) }} + # restore-keys: | + # ${{ runner.os }}-yarn-new- + - name: Clear global yarn cache + run: yarn cache clean + - name: yarn --update-checksums + run: yarn --update-checksums - name: yarn build:dev run: yarn build:dev - working-directory: Composer - name: yarn lint run: yarn lint - working-directory: Composer - name: yarn test:coverage run: yarn test:coverage - working-directory: Composer - name: Coveralls - uses: coverallsapp/github-action@master + uses: coverallsapp/github-action@v1.1.1 continue-on-error: true with: github-token: ${{ secrets.GITHUB_TOKEN }} path-to-lcov: ./Composer/coverage/lcov.info + base-path: ./Composer botproject: - name: BotProject + name: BotProject-dotnet runs-on: windows-latest timeout-minutes: 20 @@ -63,27 +64,47 @@ jobs: dotnet-version: "3.1.102" # SDK Version to use. - name: dotnet build run: dotnet build - working-directory: BotProject/Templates/CSharp + working-directory: runtime/dotnet - name: dotnet test run: dotnet test - working-directory: BotProject/Templates/CSharp + working-directory: runtime/dotnet/tests - docker-build: - name: Docker Build - timeout-minutes: 20 + nodejs: + name: BotProject-nodejs runs-on: ubuntu-latest + timeout-minutes: 20 steps: - name: Checkout uses: actions/checkout@v2 - - name: docker-compose build - run: docker-compose build - - name: Health check - run: | - docker-compose up -d - sleep 10 - curl -Is http://localhost:3000 | grep -q "200 OK" - shell: bash - - name: Cleanup - if: always() - run: docker-compose down + - name: Set Node Version + uses: actions/setup-node@v1 + with: + node-version: 12.13.0 + - name: npm install + run: npm install + working-directory: runtime/node + - name: npm build + run: npm run build + working-directory: runtime/node + - name: npm test + run: npm run test + working-directory: runtime/node + # docker-build: + # name: Docker Build + # timeout-minutes: 20 + # runs-on: ubuntu-latest + # steps: + # - name: Checkout + # uses: actions/checkout@v2 + # - name: docker-compose build + # run: docker-compose build + # - name: Health check + # run: | + # docker-compose up -d + # sleep 10 + # curl -Is http://localhost:3000 | grep -q "200 OK" + # shell: bash + # - name: Cleanup + # if: always() + # run: docker-compose down diff --git a/.github/workflows/validate-pr.yml b/.github/workflows/validate-pr.yml index 3d6f84f147..e6a8c8c84c 100644 --- a/.github/workflows/validate-pr.yml +++ b/.github/workflows/validate-pr.yml @@ -1,6 +1,8 @@ name: Pull Request Validation -on: pull_request +on: + pull_request: + types: [opened, edited, synchronize] jobs: conventional-pr: diff --git a/.gitignore b/.gitignore index 0a31f22255..b23316c221 100644 --- a/.gitignore +++ b/.gitignore @@ -160,9 +160,6 @@ DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html -# Click-Once directory -publish/ - # Publish Web Output *.[Pp]ublish.xml *.azurePubxml @@ -400,3 +397,5 @@ Composer/.vscode/ # Docker App Data .appdata docker-compose.override.yml + +*.tsbuildinfo diff --git a/.vscode/launch.json b/.vscode/launch.json index 4b0516a1ef..2ec6965abc 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -22,7 +22,7 @@ ], "sourceMaps": true, "cwd": "${workspaceFolder}/Composer/packages/tools/language-servers/language-understanding/demo/src", - "protocol": "inspector", + "protocol": "inspector" }, { "name": "LG LSP Server", @@ -38,21 +38,19 @@ ], "sourceMaps": true, "cwd": "${workspaceFolder}/Composer/packages/tools/language-servers/language-generation/demo/src", - "protocol": "inspector", + "protocol": "inspector" }, { "type": "node", "request": "launch", "name": "Server: Launch", - "args": [ - "./build/server.js" - ], - "preLaunchTask": "server: build", + "program": "${workspaceFolder}/Composer/packages/server/src/init.ts", + "env": { + "DEBUG": "composer*" + }, "restart": true, - "outFiles": [ - "./build/*" - ], - "envFile": "${workspaceFolder}/Composer/packages/server/.env", + "outFiles": ["${workspaceFolder}/Composer/packages/server/build/**/*.js"], + "preLaunchTask": "server: build", "outputCapture": "std", "cwd": "${workspaceFolder}/Composer/packages/server" }, @@ -63,14 +61,8 @@ "name": "Jest Debug", "program": "${workspaceRoot}/Composer/node_modules/jest/bin/jest", "stopOnEntry": false, - "args": [ - "--runInBand", - "--env=jsdom", - "--config=jest.config.js" - ], - "runtimeArgs": [ - "--inspect-brk" - ], + "args": ["--runInBand", "--env=jsdom", "--config=jest.config.js"], + "runtimeArgs": ["--inspect-brk"], "cwd": "${workspaceRoot}/Composer/packages/server", "sourceMaps": true, "console": "integratedTerminal" @@ -81,6 +73,43 @@ "name": "Server: Attach", "port": 9228, "sourceMaps": true + }, + { + "type": "node", + "request": "launch", + "name": "Electron Main Process", + "runtimeExecutable": "${workspaceRoot}/Composer/node_modules/.bin/electron", + "windows": { + "runtimeExecutable": "${workspaceRoot}/Composer/node_modules/.bin/electron.cmd" + }, + "args": ["${workspaceRoot}/Composer/packages/electron-server"], + "env": { + "NODE_ENV": "development", + "DEBUG": "composer*", + "COMPOSER_ENABLE_ONEAUTH": "false" + }, + "outputCapture": "std", + "preLaunchTask": "electron: build", + "outFiles": [ + "${workspaceRoot}/Composer/packages/electron-server/build/**/*.js", + "${workspaceRoot}/Composer/packages/server/build/**/*.js", + "${workspaceRoot}/extensions/**/*.js" + ], + "sourceMaps": true + }, + { + "name": "Debug current jest test", + "type": "node", + "request": "launch", + "runtimeArgs": [ + "--inspect-brk", + "${workspaceRoot}/Composer/node_modules/jest/bin/jest", + "--runInBand" + ], + "args": ["${fileBasename}"], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "port": 9229 } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 0c35c861eb..e0fb28effd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,19 +1,27 @@ { + "files.trimTrailingWhitespace": true, "files.associations": { "*.dialog": "json", "*.botproj": "json", "*.schema": "json" }, + "files.exclude": { + "**/.git": true, + "**/.DS_Store": true, + "**/node_modules": true, + "**/build": true + }, "eslint.enable": true, "eslint.packageManager": "yarn", "eslint.validate": [ "javascript", "javascriptreact", "typescript", - "typescriptreact", + "typescriptreact" ], "eslint.workingDirectories": ["./Composer"], "typescript.tsdk": "./Composer/node_modules/typescript/lib", + "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": { "source.fixAll.eslint": true } diff --git a/.vscode/snippets.json.code-snippets b/.vscode/snippets.json.code-snippets new file mode 100644 index 0000000000..038c4adab4 --- /dev/null +++ b/.vscode/snippets.json.code-snippets @@ -0,0 +1,26 @@ +{ + // Place your BotFramework-Composer workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + "React component test scaffolding": { + "prefix": "rct", + "body": [ + "import React from 'react';", + "import { render } from '@botframework-composer/test-utils';", + "import assign from 'lodash/assign';\n", + "import { $1 } from '$2';\n", + "const defaultProps = {\n $3\n};\n", + "function renderSubject(overrides = {}) {", + " const props = assign({}, defaultProps, overrides);", + " return render(<$1 {...props} />);", + "}\n", + "describe('<$1 />', () => {", + " it.todo('$0');", + "});\n" + ], + "description": "React component test scaffolding" + } +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 04e7393d24..96c80556cf 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -5,10 +5,29 @@ "tasks": [ { "label": "server: build", - "type": "npm", - "script": "build", - "path": "Composer/packages/server/", - "problemMatcher": [] + "type": "shell", + "command": "yarn build", + "options": { + "cwd": "Composer/packages/server" + } + }, + { + "label": "electron: build", + "type": "shell", + "command": "yarn build", + "options": { + "cwd": "Composer/packages/electron-server" + }, + "dependsOn": ["server: build", "client: ping"] + }, + { + "label": "client: ping", + "type": "shell", + "command": "./node_modules/.bin/wait-on", + "args": ["-t", "300000", "http://localhost:3000"], + "options": { + "cwd": "Composer" + } } ] } diff --git a/BotProject/Node/README.md b/BotProject/Node/README.md deleted file mode 100644 index e35d9cbaa5..0000000000 --- a/BotProject/Node/README.md +++ /dev/null @@ -1 +0,0 @@ -# Bot Launcher in Node \ No newline at end of file diff --git a/BotProject/Templates/CSharp/BotProject.csproj b/BotProject/Templates/CSharp/BotProject.csproj deleted file mode 100644 index 90fe771a8e..0000000000 --- a/BotProject/Templates/CSharp/BotProject.csproj +++ /dev/null @@ -1,44 +0,0 @@ - - - - netcoreapp3.1 - - - - - - - - - - Always - - - - BotProject.ruleset - - - BotProject.ruleset - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - \ No newline at end of file diff --git a/BotProject/Templates/CSharp/BotProject.sln b/BotProject/Templates/CSharp/BotProject.sln deleted file mode 100644 index db73c02cd8..0000000000 --- a/BotProject/Templates/CSharp/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/BotProject/Templates/CSharp/BotSettings.cs b/BotProject/Templates/CSharp/BotSettings.cs deleted file mode 100644 index d62831398a..0000000000 --- a/BotProject/Templates/CSharp/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 CosmosDbStorageOptions CosmosDb { get; set; } - - public TelemetryConfiguration AppInsights { get; set; } - - public class BlobStorageConfiguration - { - public string ConnectionString { get; set; } - - public string Container { get; set; } - } - } -} diff --git a/BotProject/Templates/CSharp/ComposerBot.cs b/BotProject/Templates/CSharp/ComposerBot.cs deleted file mode 100644 index 09ffcbc8f5..0000000000 --- a/BotProject/Templates/CSharp/ComposerBot.cs +++ /dev/null @@ -1,54 +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 ISourceMap sourceMap; - private readonly string rootDialogFile; - - public ComposerBot(ConversationState conversationState, UserState userState, ResourceExplorer resourceExplorer, BotFrameworkClient skillClient, SkillConversationIdFactoryBase conversationIdFactory) - { - HostContext.Current.Set(skillClient); - HostContext.Current.Set(conversationIdFactory); - this.conversationState = conversationState; - this.userState = userState; - this.dialogState = conversationState.CreateProperty("DialogState"); - this.resourceExplorer = resourceExplorer; - this.rootDialogFile = "Main.dialog"; - 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/BotProject/Templates/CSharp/DeploymentTemplates/template-with-preexisting-rg.json b/BotProject/Templates/CSharp/DeploymentTemplates/template-with-preexisting-rg.json deleted file mode 100644 index eca012a001..0000000000 --- a/BotProject/Templates/CSharp/DeploymentTemplates/template-with-preexisting-rg.json +++ /dev/null @@ -1,309 +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')]" - }, - { - "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" - } - }, - "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')]" - } - } - } -} \ No newline at end of file diff --git a/BotProject/Templates/CSharp/LuisConfigAdaptor.cs b/BotProject/Templates/CSharp/LuisConfigAdaptor.cs deleted file mode 100644 index 6f23086f3b..0000000000 --- a/BotProject/Templates/CSharp/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/BotProject/Templates/CSharp/NuGet.Config b/BotProject/Templates/CSharp/NuGet.Config deleted file mode 100644 index 11ff1952c1..0000000000 --- a/BotProject/Templates/CSharp/NuGet.Config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/BotProject/Templates/CSharp/Program.cs b/BotProject/Templates/CSharp/Program.cs deleted file mode 100644 index 434f5a21d2..0000000000 --- a/BotProject/Templates/CSharp/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/BotProject/Templates/CSharp/README.md b/BotProject/Templates/CSharp/README.md deleted file mode 100644 index b096ecf323..0000000000 --- a/BotProject/Templates/CSharp/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/BotProject/Templates/CSharp/Schemas/sdk.schema b/BotProject/Templates/CSharp/Schemas/sdk.schema deleted file mode 100644 index 28b9155a61..0000000000 --- a/BotProject/Templates/CSharp/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/BotProject/Templates/CSharp/Scripts/build_runtime.ps1 b/BotProject/Templates/CSharp/Scripts/build_runtime.ps1 deleted file mode 100644 index 902d302c47..0000000000 --- a/BotProject/Templates/CSharp/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/BotProject/Templates/CSharp/Scripts/build_runtime.sh b/BotProject/Templates/CSharp/Scripts/build_runtime.sh deleted file mode 100644 index 51e0b0ae12..0000000000 --- a/BotProject/Templates/CSharp/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/BotProject/Templates/CSharp/Scripts/create.ps1 b/BotProject/Templates/CSharp/Scripts/create.ps1 deleted file mode 100644 index d3ac6cac73..0000000000 --- a/BotProject/Templates/CSharp/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/BotProject/Templates/CSharp/Scripts/deploy.ps1 b/BotProject/Templates/CSharp/Scripts/deploy.ps1 deleted file mode 100644 index 15f9bfc469..0000000000 --- a/BotProject/Templates/CSharp/Scripts/deploy.ps1 +++ /dev/null @@ -1,246 +0,0 @@ -Param( - [string] $name, - [string] $environment, - [string] $luisAuthoringKey, - [string] $luisAuthoringRegion, - [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 -} - - -# 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" = "en-us"; - "models" = $noneEmptyModels - } - - $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 --in .\ --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/BotProject/Templates/CSharp/SkillConversationIdFactory.cs b/BotProject/Templates/CSharp/SkillConversationIdFactory.cs deleted file mode 100644 index 0e2f78ada8..0000000000 --- a/BotProject/Templates/CSharp/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/BotProject/Templates/CSharp/Startup.cs b/BotProject/Templates/CSharp/Startup.cs deleted file mode 100644 index 274e9d0599..0000000000 --- a/BotProject/Templates/CSharp/Startup.cs +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -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 CosmosDbStorage(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 botFile = Configuration.GetSection("bot").Get(); - - // manage all bot resources - var resourceExplorer = new ResourceExplorer().AddFolder(botFile); - - 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(); - } - - // 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(); - }); - } - } -} diff --git a/BotProject/Templates/CSharp/Tests/ControllingConversationTests.cs b/BotProject/Templates/CSharp/Tests/ControllingConversationTests.cs deleted file mode 100644 index a100e4565e..0000000000 --- a/BotProject/Templates/CSharp/Tests/ControllingConversationTests.cs +++ /dev/null @@ -1,107 +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.Extensions.Configuration; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -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; } - - [TestMethod] - public async Task ControllingConversationBotTest() - { - await BuildTestFlow() - .SendConversationUpdate() - .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("Main.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/BotProject/Templates/CSharp/Tests/Tests.csproj b/BotProject/Templates/CSharp/Tests/Tests.csproj deleted file mode 100644 index 28a2c36621..0000000000 --- a/BotProject/Templates/CSharp/Tests/Tests.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - netcoreapp3.1 - - false - - - - - - - - - - - - - diff --git a/BotProject/Templates/CSharp/appsettings.Deployment.json b/BotProject/Templates/CSharp/appsettings.Deployment.json deleted file mode 100644 index 1797133380..0000000000 --- a/BotProject/Templates/CSharp/appsettings.Deployment.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/BotProject/Templates/CSharp/appsettings.Development.json b/BotProject/Templates/CSharp/appsettings.Development.json deleted file mode 100644 index 0db3279e44..0000000000 --- a/BotProject/Templates/CSharp/appsettings.Development.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/BotProject/Templates/CSharp/appsettings.json b/BotProject/Templates/CSharp/appsettings.json deleted file mode 100644 index cc17071455..0000000000 --- a/BotProject/Templates/CSharp/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/CHANGELOG.md b/CHANGELOG.md index 01cc4c0467..936bae7f3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,7 +41,7 @@ - chore: update bug issue template to create correct label ([#2303](https://github.com/microsoft/BotFramework-Composer/pull/2303)) ([@a-b-r-o-w-n](https://github.com/a-b-r-o-w-n)) - chore: change templates to use $type over $kind ([#2302](https://github.com/microsoft/BotFramework-Composer/pull/2302)) ([@cwhitten](https://github.com/cwhitten)) -- chore: merge stable into master ([#2223](https://github.com/microsoft/BotFramework-Composer/pull/2223)) ([@a-b-r-o-w-n](https://github.com/a-b-r-o-w-n)) +- chore: merge stable into main ([#2223](https://github.com/microsoft/BotFramework-Composer/pull/2223)) ([@a-b-r-o-w-n](https://github.com/a-b-r-o-w-n)) - chore: deploy to publish ([#2227](https://github.com/microsoft/BotFramework-Composer/pull/2227)) ([@cwhitten](https://github.com/cwhitten)) ### 03-09-2020 @@ -90,7 +90,7 @@ - ci: add a11y pr title prefix for accessibility prs ([#2171](https://github.com/microsoft/BotFramework-Composer/pull/2171)) ([@a-b-r-o-w-n](https://github.com/a-b-r-o-w-n)) - docs: update docs to fix LU file format link ([#2071](https://github.com/microsoft/BotFramework-Composer/pull/2071)) ([@vishwacsena](https://github.com/vishwacsena)) -- chore: merge stable release into master ([@a-b-r-o-w-n](https://github.com/a-b-r-o-w-n)) +- chore: merge stable release into main ([@a-b-r-o-w-n](https://github.com/a-b-r-o-w-n)) - docs: clarify setup ([#2145](https://github.com/microsoft/BotFramework-Composer/pull/2145)) ([@DaraOladapo](https://github.com/DaraOladapo)) - docs: update dotnet requirement in setup docs ([#2160](https://github.com/microsoft/BotFramework-Composer/pull/2160)) ([@vkacherov](https://github.com/vkacherov)) - samples: Update HttpRequest sample ([#2161](https://github.com/microsoft/BotFramework-Composer/pull/2161)) ([@luhan2017](https://github.com/luhan2017)) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 83e1342079..694aaae0b8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,14 +1,14 @@ ### Guidelines for contributing to Composer -- Nothing gets pushed to the `master` branch. Use github pull-request's to submit new code. +- Nothing gets pushed to the `main` branch. Use github pull-request's to submit new code. - Use the "Description" field of the new Pull Request form to describe the change in detail. Assume reviewers are taking on a context switch to review your code and need a refresher on context. Reference & link to any pertinent tickets in project tracking software. This will also act as a paper trail of changes and it should be logical for one to use `git blame` to look up the commit and understand why the change was made. - Keep your pull-requests small and concise. If you are working on a substantially large change in lines of code, it is OK to open a pull-request that is a partial implementation; please make it clear in the description and keep the boundaries between diffs logical. - If the change includes non-trivial changes in UI, include a screenshot and tag a designer on the project. Be sure to show any border or layout changes clearly. Use your best judgement if you would like a designer to explicitly sign off on it, such as a deviation from the design artifacts. - If the change includes a non-trivial change in UX, include a gif demonstrating the interaction. Tag a designer and use your judgement if you would like explicit sign off from them on it. - At least one approver is required on a pull-request prior to merging it. -- Programatic testing for each change is a requirement. Comprehensive unit tests for every change is not. _"Write tests, not too many, mostly integration"_. We should be using [Jest](https://jestjs.io/) & [react-testing-library](https://github.com/kentcdodds/react-testing-library) for this in the client. Code coverage benchmarks will be introduced and need to be met with each change (TBD). +- Programatic testing for each change is a requirement. Comprehensive unit tests for every change is not. _"Write tests, not too many, mostly integration"_. We should be using [Jest](https://jestjs.io/) & [@testing-library/react](https://github.com/testing-library/react-testing-library) for this in the client. Code coverage benchmarks will be introduced and need to be met with each change (TBD). - Write code with Internationalization & Accessibility in mind. Every rendered string should be wrapped in an i18n API. Scrub through each UI change for keyboard-navigation and focus-indication. This will prevent most accessibility bugs. -- Use `rebase` when merging changes into to the master branch. This can be done using the _“Squash and Merge”_ technique in the GitHub UI. Local branches will need to be updated using rebase as well. This will keep a clean commit history. Reach out to me if you need help understanding rebase. +- Use `rebase` when merging changes into to the main branch. This can be done using the _“Squash and Merge”_ technique in the GitHub UI. Local branches will need to be updated using rebase as well. This will keep a clean commit history. Reach out to me if you need help understanding rebase. ### Forking @@ -37,42 +37,42 @@ git remote add upstream git@github.com:microsoft/BotFramework-Composer.git ``` - update your upstream remote -- merge upstream changes into your local master branch +- merge upstream changes into your local main branch ```bash git fetch upstream -git checkout master -git pull upstream master +git checkout main +git pull upstream main ``` -#### Updating your feature branch with latest master +#### Updating your feature branch with latest main -- update your local master by following the previous section -- merge/rebase master into your feature branch +- update your local main by following the previous section +- merge/rebase main into your feature branch ```bash git checkout -git merge master # git rebase master +git merge main # git rebase main git push origin ``` #### Checking out a pull request from a fork ```bash -git checkout -b pull-request-branch master +git checkout -b pull-request-branch main git pull git://github.com//BotFramework-Composer.git ``` For example, if there were a PR from the user AwesomeDev's branch my-awesome-feature: ```bash -git checkout -b AwesomeDev/my-awesome-feature master +git checkout -b AwesomeDev/my-awesome-feature main git pull git://github.com/AwesomeDev/BotFramework-Composer.git my-awesome-feature ``` #### Things to keep in mind -- Always work off of branches; don't commit directly to your master branch. This will help avoid conflicts and keep your master branch pristine. +- Always work off of branches; don't commit directly to your main branch. This will help avoid conflicts and keep your main branch pristine. - When creating pull requests check the `Allow edits from maintainers` option so that others can make changes if necessary. ### Testing diff --git a/Composer/.dockerignore b/Composer/.dockerignore deleted file mode 100644 index 19245eab5f..0000000000 --- a/Composer/.dockerignore +++ /dev/null @@ -1,13 +0,0 @@ -**/node_modules -**/package-lock.json -**/dist -**/build -**/es -**/server/data.json -**/server/tmp.zip -# not ignore all lib folder because packages/lib, so probably we should rename that to libs -packages/lib/*/lib -packages/extensions/*/lib - -Dockerfile -.dockerignore diff --git a/Composer/.eslintrc.js b/Composer/.eslintrc.js index 39a1885f6e..667013b624 100644 --- a/Composer/.eslintrc.js +++ b/Composer/.eslintrc.js @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + module.exports = { extends: [ 'eslint:recommended', @@ -29,6 +32,7 @@ module.exports = { '@typescript-eslint/no-empty-function': 'off', '@typescript-eslint/no-unnecessary-type-assertion': 'off', '@typescript-eslint/no-use-before-define': 'warn', + '@typescript-eslint/prefer-optional-chain': 'error', // eslint rules 'no-dupe-class-members': 'off', @@ -37,7 +41,19 @@ module.exports = { 'no-console': 'warn', 'dot-notation': 'error', yoda: 'error', + 'no-bitwise': 'error', // eqeqeq: 'error', + 'no-underscore-dangle': [ + 'error', + { + // add special window.__foo__ names as exceptions here + allow: ['__nonce__', '__IS_ELECTRON__'], + // allow this._name so custom getters and setters can be written gracefully + allowAfterThis: true, + enforceInMethodNames: true, + }, + ], + 'prefer-arrow-callback': 'error', // plugin: import 'import/first': 'error', @@ -87,8 +103,10 @@ module.exports = { }, rules: { '@typescript-eslint/ban-ts-ignore': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-object-literal-type-assertion': 'off', '@typescript-eslint/unbound-method': 'off', + '@typescript-eslint/no-explicit-any': 'off', 'security/detect-buffer-noassert': 'off', 'security/detect-child-process': 'off', diff --git a/Composer/.eslintrc.react.js b/Composer/.eslintrc.react.js index 5463727b2f..2455cdc1c3 100644 --- a/Composer/.eslintrc.react.js +++ b/Composer/.eslintrc.react.js @@ -1,9 +1,12 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + module.exports = { extends: ['./.eslintrc.js', 'plugin:react/recommended'], - plugins: ['react-hooks', 'format-message', 'emotion'], + plugins: ['react-hooks', 'format-message', 'emotion', 'jsx-a11y'], settings: { react: { - version: '16.9.0', + version: '16.9.16', }, }, parserOptions: { @@ -28,9 +31,114 @@ module.exports = { 'react/no-danger': 'error', 'react/no-deprecated': 'warn', 'react/prop-types': 'warn', + 'react/no-unknown-property': 'error', + 'react/jsx-boolean-value': ['error', 'never'], + 'react/jsx-filename-extension': ['error', { extensions: ['.jsx', '.tsx'] }], + // https://github.com/yannickcr/eslint-plugin-react/blob/HEAD/docs/rules/jsx-sort-props.md + 'react/jsx-sort-props': [ + 'error', + { callbacksLast: true, ignoreCase: true, shorthandFirst: true, reservedFirst: true }, + ], // emotion 'emotion/jsx-import': 'error', + + // jsx-a11y + // taken from https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/src/index.js + 'jsx-a11y/accessible-emoji': 'warn', + 'jsx-a11y/alt-text': 'warn', + 'jsx-a11y/anchor-has-content': 'warn', + 'jsx-a11y/anchor-is-valid': 'warn', + 'jsx-a11y/aria-activedescendant-has-tabindex': 'warn', + 'jsx-a11y/aria-props': 'warn', + 'jsx-a11y/aria-proptypes': 'warn', + 'jsx-a11y/aria-role': 'warn', + 'jsx-a11y/aria-unsupported-elements': 'warn', + 'jsx-a11y/click-events-have-key-events': 'warn', + 'jsx-a11y/control-has-associated-label': [ + 'off', + { + ignoreElements: ['audio', 'canvas', 'embed', 'input', 'textarea', 'tr', 'video'], + ignoreRoles: [ + 'grid', + 'listbox', + 'menu', + 'menubar', + 'radiogroup', + 'row', + 'tablist', + 'toolbar', + 'tree', + 'treegrid', + ], + includeRoles: ['alert', 'dialog'], + }, + ], + 'jsx-a11y/heading-has-content': 'warn', + 'jsx-a11y/html-has-lang': 'warn', + 'jsx-a11y/iframe-has-title': 'warn', + 'jsx-a11y/img-redundant-alt': 'warn', + 'jsx-a11y/interactive-supports-focus': [ + 'warn', + { + tabbable: ['button', 'checkbox', 'link', 'searchbox', 'spinbutton', 'switch', 'textbox'], + }, + ], + 'jsx-a11y/label-has-associated-control': 'warn', + 'jsx-a11y/label-has-for': 'off', + 'jsx-a11y/media-has-caption': 'warn', + 'jsx-a11y/mouse-events-have-key-events': 'warn', + 'jsx-a11y/no-access-key': 'warn', + 'jsx-a11y/no-autofocus': 'warn', + 'jsx-a11y/no-distracting-elements': 'warn', + 'jsx-a11y/no-interactive-element-to-noninteractive-role': [ + 'warn', + { + tr: ['none', 'presentation'], + }, + ], + 'jsx-a11y/no-noninteractive-element-interactions': [ + 'warn', + { + handlers: ['onClick', 'onError', 'onLoad', 'onMouseDown', 'onMouseUp', 'onKeyPress', 'onKeyDown', 'onKeyUp'], + alert: ['onKeyUp', 'onKeyDown', 'onKeyPress'], + body: ['onError', 'onLoad'], + dialog: ['onKeyUp', 'onKeyDown', 'onKeyPress'], + iframe: ['onError', 'onLoad'], + img: ['onError', 'onLoad'], + }, + ], + 'jsx-a11y/no-noninteractive-element-to-interactive-role': [ + 'warn', + { + ul: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'], + ol: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'], + li: ['menuitem', 'option', 'row', 'tab', 'treeitem'], + table: ['grid'], + td: ['gridcell'], + }, + ], + 'jsx-a11y/no-noninteractive-tabindex': [ + 'warn', + { + tags: [], + roles: ['tabpanel'], + allowExpressionValues: true, + }, + ], + 'jsx-a11y/no-onchange': 'warn', + 'jsx-a11y/no-redundant-roles': 'warn', + 'jsx-a11y/no-static-element-interactions': [ + 'warn', + { + allowExpressionValues: true, + handlers: ['onClick', 'onMouseDown', 'onMouseUp', 'onKeyPress', 'onKeyDown', 'onKeyUp'], + }, + ], + 'jsx-a11y/role-has-required-aria-props': 'warn', + 'jsx-a11y/role-supports-aria-props': 'warn', + 'jsx-a11y/scope': 'warn', + 'jsx-a11y/tabindex-no-positive': 'warn', }, overrides: [ { diff --git a/Composer/.gitignore b/Composer/.gitignore index 1603d74bba..f7af5d4fc6 100644 --- a/Composer/.gitignore +++ b/Composer/.gitignore @@ -6,3 +6,8 @@ cypress/results cypress/videos TestBots/ + +l10ntemp/ + +# remote extensions +.composer diff --git a/Composer/.npmrc b/Composer/.npmrc index 2ae06b6797..5fca0d518b 100644 --- a/Composer/.npmrc +++ b/Composer/.npmrc @@ -1 +1 @@ -@bfcomposer:registry=https://botbuilder.myget.org/F/botbuilder-declarative/npm/ +scripts-prepend-node-path=true diff --git a/Composer/.prettierrc b/Composer/.prettierrc index b2d34be576..26b0b5ab92 100644 --- a/Composer/.prettierrc +++ b/Composer/.prettierrc @@ -1,7 +1,7 @@ { "printWidth": 120, "parser": "typescript", - "trailingComma": "es5", "singleQuote": true, "tabWidth": 2, -} \ No newline at end of file + "endOfLine": "auto" +} diff --git a/Composer/Dockerfile b/Composer/Dockerfile deleted file mode 100644 index 8b891fd187..0000000000 --- a/Composer/Dockerfile +++ /dev/null @@ -1,83 +0,0 @@ -################# -# -# Because Composer is organized as a monorepo with multiple packages -# managed by yarn workspaces, our Dockerfile may not look like other -# node / react projects. Specifically, we have to add all source files -# before doing yarn install due to yarn workspace symlinking. -# -################ - -FROM node:12-alpine as build - -WORKDIR /src/Composer -COPY . . -# run yarn install as a distinct layer -RUN yarn install --frozen-lock-file -ENV NODE_OPTIONS "--max-old-space-size=4096" -ENV NODE_ENV "production" -RUN yarn build:prod - - - -FROM node:12-alpine as composerbasic - -WORKDIR /app/Composer -COPY --from=build /src/Composer/yarn.lock . -COPY --from=build /src/Composer/package.json . -COPY --from=build /src/Composer/packages/server ./packages/server -COPY --from=build /src/Composer/packages/lib ./packages/lib -COPY --from=build /src/Composer/packages/tools ./packages/tools - -ENV NODE_ENV "production" -RUN yarn --production --frozen-lockfile --force && yarn cache clean -WORKDIR /app/Composer - - -FROM composerbasic - -RUN apk add --no-cache \ - ca-certificates \ - \ - # .NET Core dependencies - krb5-libs \ - libgcc \ - libintl \ - libssl1.1 \ - libstdc++ \ - zlib - -# Install .Net Core SDK -ENV \ - # Unset the value from the base image - ASPNETCORE_URLS= \ - # Disable the invariant mode (set in base image) - DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \ - # Enable correct mode for dotnet watch (only mode supported in a container) - DOTNET_USE_POLLING_FILE_WATCHER=true \ - LC_ALL=en_US.UTF-8 \ - LANG=en_US.UTF-8 \ - # Skip extraction of XML docs - generally not useful within an image/container - helps performance - NUGET_XMLDOC_MODE=skip \ - # PowerShell telemetry for docker image usage - POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetCoreSDK-Alpine-3.10 - -# Add dependencies for disabling invariant mode (set in base image) -RUN apk add --no-cache icu-libs - -# Install .NET Core SDK 3.1 -ENV DOTNET_SDK_VERSION 3.1.101 - -RUN wget -O dotnet.tar.gz https://dotnetcli.azureedge.net/dotnet/Sdk/$DOTNET_SDK_VERSION/dotnet-sdk-$DOTNET_SDK_VERSION-linux-musl-x64.tar.gz \ - && dotnet_sha512='ce386da8bc07033957fd404909fc230e8ab9e29929675478b90f400a1838223379595a4459056c6c2251ab5c722f80858b9ca536db1a2f6d1670a97094d0fe55' \ - && echo "$dotnet_sha512 dotnet.tar.gz" | sha512sum -c - \ - && mkdir -p /usr/share/dotnet \ - && tar -C /usr/share/dotnet -oxzf dotnet.tar.gz \ - && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \ - && rm dotnet.tar.gz - -# Enable detection of running in a container -ENV DOTNET_RUNNING_IN_CONTAINER=true \ - # Set the invariant mode since icu_libs isn't included (see https://github.com/dotnet/announcements/issues/20) - DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true - -CMD ["yarn","start:server"] diff --git a/Composer/README.md b/Composer/README.md index c4395a8faa..f2b9bc0bc4 100644 --- a/Composer/README.md +++ b/Composer/README.md @@ -1,5 +1,5 @@ -[![Build Status](https://github.com/microsoft/BotFramework-Composer/workflows/Composer%20CI/badge.svg?branch=master)](https://github.com/microsoft/BotFramework-Composer/actions?query=branch%3Amaster) -[![Coverage Status](https://coveralls.io/repos/github/microsoft/BotFramework-Composer/badge.svg?branch=master)](https://coveralls.io/github/microsoft/BotFramework-Composer?branch=master) +[![Build Status](https://github.com/microsoft/BotFramework-Composer/workflows/Composer%20CI/badge.svg?branch=main)](https://github.com/microsoft/BotFramework-Composer/actions?query=branch%3Amain) +[![Coverage Status](https://coveralls.io/repos/github/microsoft/BotFramework-Composer/badge.svg?branch=main)](https://coveralls.io/github/microsoft/BotFramework-Composer?branch=main) [![Total alerts](https://img.shields.io/lgtm/alerts/g/microsoft/BotFramework-Composer.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/microsoft/BotFramework-Composer/alerts/) # Composer @@ -30,166 +30,3 @@ If you run into the issue of `There appears to be trouble with your network conn ## Documentation The documentation for Composer [can be found here](/toc.md). - -## Extension Framework -Composer is built on top of an extension framework, which allows anyone to provide an extension as the editor of certain type of bot assets. - -All editors, 1st party or 3rd party, are loaded in the same way by the extension framework. - -Non-editor extensions are not supported at this time, though the mechanisms for providing extensions will scale outside the dialog editor's. - -### What's an extension? what's in it -Each extension is a standalone React component package ([why React component](#why-react-component)) under Composer's `/packages/extensions` folder, which implements the extension `interface`. - -Composer is managed via yarn workspaces, producing such a folder layout. -``` -|- Composer - |- package.json // define the workspaces - |- packages - |- client // composer main app - |- server // composer api server - |- extensions - |- package.json // put all extension as one package - |- obiformeditor // dialog property editor - |- lib - |- shared // shared code -``` - -All extensions under `/extensions` folder will be eventually packed into one `extensions` package, then the `client` package will depends on this `extensions` package. - -### Extension Interface -The extension interface defines the way how an extension comminutes to the host. - -In React world, interface means the props passed into a component. An extension will be passed ino 3 props: -- data:any. which is the data to be edited by this editor. -- onChange: (newData) => void. which is the callback enables an editor to save the edited data. -- [shellApi](#shell-api). which is a set of apis providing other capabilities than data in\out. - -The rendering code of an extension will be sth like this: -``` - import SomeEditor from 'someplace' - - -``` - -#### data in\out story - -With this interface, it's pretty clear how data is in\out extension. Data is passed in through `data` prop, and been saved with `onChange` prop. - -#### shell api - -Shell api is a set of apis that provides other important functionalities that empower an extension to provide a more powerful and smooth editing experience. including - -* OpenSubEditor - ``` - openSubEditor(location:string, data:any, onChange:(newData:any) => void) - ``` - This is the most important api that support a [multiple editors](#multiple-editors) scenario, which allows an editor to delegate some editing task to another editor, and listen the changes. - - Note that, this api doesn't allow you to specify the type or the name of the sub editor. You only get to specify a data, the shell will use a centralized way to manage how editors are registered and picked up. See registration section in the below for more details. - - We may suppport other forms of openSubEditor later, but we expect this is the mosted used one. - -* ObjectGraph - - TBD, this will be an api that enable each extension have the knowledge of a global object graph. -* Alert -* ReadFile -* Prompt - -### Why React component - -There are many options to choose when picking an abstraction for an extension. Different level abstractions have different impacts on many aspects, like developing, testing, debuging and running the extension. - -A low-level abstraction like HTML page will give us perfect isolation, great flexibilty (use whatever language you want to build that), but usually result in a relatively high amount of effort to develop a robust api between host and extension because it's using the low-level messaging primitives, and also not good for performance because of the extreme isolation. - -A high-level abstraction like React component, will cost a little bit on isolation, but gain the best support from a mature and powerful framework, in every cycle of the development of extensions. It will help most of boosting the productivity, simplifying the architecure, and gain the best performance. - -Based on our scenario, we will use React as a start point, and host the extension in an `