diff --git a/Composer/packages/client/src/components/CreationFlow/DefineConversation.tsx b/Composer/packages/client/src/components/CreationFlow/DefineConversation.tsx index 4fcf9292fb..4197a28de0 100644 --- a/Composer/packages/client/src/components/CreationFlow/DefineConversation.tsx +++ b/Composer/packages/client/src/components/CreationFlow/DefineConversation.tsx @@ -8,7 +8,7 @@ import { DialogFooter } from 'office-ui-fabric-react/lib/Dialog'; import formatMessage from 'format-message'; import { PrimaryButton, DefaultButton } from 'office-ui-fabric-react/lib/Button'; import { Stack, StackItem } from 'office-ui-fabric-react/lib/Stack'; -import React, { Fragment, useEffect, useCallback } from 'react'; +import React, { Fragment, useEffect, useCallback, useMemo } from 'react'; import { TextField } from 'office-ui-fabric-react/lib/TextField'; import { RouteComponentProps } from '@reach/router'; import querystring from 'query-string'; @@ -212,6 +212,18 @@ const DefineConversation: React.FC = (props) => { updateField('location', location); }, [focusedStorageFolder]); + const locationSelectContent = useMemo(() => { + return ( + + ); + }, [focusedStorageFolder]); + return ( = (props) => { /> - - + {locationSelectContent} void; + onToggle?: (newState: boolean) => void; + defaultState?: boolean; }; const summaryStyle = css` @@ -20,7 +24,7 @@ const summaryStyle = css` `; const nodeStyle = (depth: number) => css` - margin-left: ${depth * 16}px; + margin-left: ${depth * INDENT_PER_LEVEL}px; `; const TRIANGLE_SCALE = 0.6; @@ -28,25 +32,32 @@ const TRIANGLE_SCALE = 0.6; const detailsStyle = css` &:not([open]) > summary::-webkit-details-marker { transform: scaleX(${TRIANGLE_SCALE}); + min-width: 10px; } &[open] > summary::-webkit-details-marker { transform: scaleY(${TRIANGLE_SCALE}); + min-width: 10px; } `; -export const ExpandableNode = ({ children, summary, detailsRef, depth = 0 }: Props) => { - const [isExpanded, setExpanded] = useState(true); +export const ExpandableNode = ({ children, summary, detailsRef, depth = 0, onToggle, defaultState = true }: Props) => { + const [isExpanded, setExpanded] = useState(defaultState); + + function setExpandedWithCallback(newState: boolean) { + setExpanded(newState); + onToggle?.(newState); + } function handleClick(ev: MouseEvent) { if ((ev.target as Element)?.tagName.toLowerCase() === 'summary') { - setExpanded(!isExpanded); + setExpandedWithCallback(!isExpanded); } ev.preventDefault(); } function handleKey(ev: KeyboardEvent) { - if (ev.key === 'Enter' || ev.key === 'Space') setExpanded(!isExpanded); + if (ev.key === 'Enter' || ev.key === 'Space') setExpandedWithCallback(!isExpanded); } return ( diff --git a/Composer/packages/client/src/components/ProjectTree/ProjectTree.tsx b/Composer/packages/client/src/components/ProjectTree/ProjectTree.tsx index 49ffc6cfb4..bfe779e1c6 100644 --- a/Composer/packages/client/src/components/ProjectTree/ProjectTree.tsx +++ b/Composer/packages/client/src/components/ProjectTree/ProjectTree.tsx @@ -2,7 +2,7 @@ // Licensed under the MIT License. /** @jsx jsx */ -import React, { useCallback, useState, useEffect } from 'react'; +import React, { useCallback, useState, useEffect, useRef } from 'react'; import { jsx, css } from '@emotion/core'; import { SearchBox } from 'office-ui-fabric-react/lib/SearchBox'; import { FocusZone, FocusZoneDirection } from 'office-ui-fabric-react/lib/FocusZone'; @@ -20,6 +20,7 @@ import { rootBotProjectIdSelector, botProjectSpaceSelector, jsonSchemaFilesByProjectIdSelector, + pageElementState, } from '../../recoilModel'; import { getFriendlyName } from '../../utils/dialogUtil'; import { triggerNotSupported } from '../../utils/dialogValidator'; @@ -28,6 +29,7 @@ import { LoadingSpinner } from '../LoadingSpinner'; import { TreeItem } from './treeItem'; import { ExpandableNode } from './ExpandableNode'; +import { INDENT_PER_LEVEL } from './constants'; // -------------------- Styles -------------------- // @@ -65,8 +67,6 @@ const tree = css` label: tree; `; -const SUMMARY_ARROW_SPACE = 28; // the rough pixel size of the dropdown arrow to the left of a Details/Summary element - // -------------------- Helper functions -------------------- // const getTriggerIndex = (trigger: ITrigger, dialog: DialogInfo): number => { @@ -139,6 +139,8 @@ type Props = { defaultSelected?: Partial; }; +const TREE_PADDING = 100; // the horizontal space taken up by stuff in the tree other than text or indentation + export const ProjectTree: React.FC = ({ onSelectAllLink: onAllSelected = undefined, showTriggers = true, @@ -148,7 +150,16 @@ export const ProjectTree: React.FC = ({ onSelect, defaultSelected, }) => { - const { onboardingAddCoachMarkRef, navigateToFormDialogSchema } = useRecoilValue(dispatcherState); + const { onboardingAddCoachMarkRef, navigateToFormDialogSchema, setPageElementState } = useRecoilValue( + dispatcherState + ); + const treeRef = useRef(null); + + const pageElements = useRecoilValue(pageElementState).design; + const leftSplitWidth = pageElements?.leftSplitWidth ?? treeRef?.current?.clientWidth ?? 0; + const getPageElement = (name: string) => pageElements?.[name]; + const setPageElement = (name: string, value: any) => + setPageElementState('design', { ...pageElements, [name]: value }); const [filter, setFilter] = useState(''); const formDialogComposerFeatureEnabled = useFeatureFlag('FORM_DIALOG'); @@ -254,18 +265,19 @@ export const ProjectTree: React.FC = ({ > {} }]} + textWidth={leftSplitWidth - TREE_PADDING} onSelect={handleOnSelect} /> ); }; - const renderDialogHeader = (skillId: string, dialog: DialogInfo) => { + const renderDialogHeader = (skillId: string, dialog: DialogInfo, depth: number) => { const warningContent = notificationMap[skillId][dialog.id] ?.filter((diag) => diag.severity === DiagnosticSeverity.Warning) .map((diag) => diag.message) @@ -301,8 +313,8 @@ export const ProjectTree: React.FC = ({ role="grid" > = ({ ] : []), ]} + textWidth={leftSplitWidth - TREE_PADDING} onSelect={handleOnSelect} /> @@ -337,7 +350,13 @@ export const ProjectTree: React.FC = ({ }; }; - const renderTrigger = (item: any, dialog: DialogInfo, projectId: string, dialogLink?: TreeLink): React.ReactNode => { + const renderTrigger = ( + item: any, + dialog: DialogInfo, + projectId: string, + dialogLink: TreeLink, + depth: number + ): React.ReactNode => { const link: TreeLink = { projectId: rootProjectId, skillId: projectId === rootProjectId ? undefined : projectId, @@ -354,7 +373,7 @@ export const ProjectTree: React.FC = ({ = ({ }, }, ]} + textWidth={leftSplitWidth - TREE_PADDING} onSelect={handleOnSelect} /> ); @@ -382,7 +402,13 @@ export const ProjectTree: React.FC = ({ return scope.toLowerCase().includes(filter.toLowerCase()); }; - const renderTriggerList = (triggers: ITrigger[], dialog: DialogInfo, projectId: string, dialogLink?: TreeLink) => { + const renderTriggerList = ( + triggers: ITrigger[], + dialog: DialogInfo, + projectId: string, + dialogLink: TreeLink, + depth: number + ) => { return triggers .filter((tr) => filterMatch(dialog.displayName) || filterMatch(getTriggerName(tr))) .map((tr) => { @@ -395,17 +421,18 @@ export const ProjectTree: React.FC = ({ { ...tr, index, displayName: getTriggerName(tr), warningContent, errorContent }, dialog, projectId, - dialogLink + dialogLink, + depth ); }); }; - const renderTriggerGroupHeader = (displayName: string, dialog: DialogInfo, projectId: string) => { + const renderTriggerGroupHeader = (displayName: string, dialog: DialogInfo, projectId: string, depth: number) => { const link: TreeLink = { dialogId: dialog.id, displayName, isRoot: false, - projectId: projectId, + projectId, }; return ( = ({ `} role="grid" > - + ); }; - // renders a named expandible node with the triggers as items underneath + // renders a named expandable node with the triggers as items underneath const renderTriggerGroup = ( projectId: string, dialog: DialogInfo, @@ -432,14 +459,21 @@ export const ProjectTree: React.FC = ({ const groupDisplayName = groupName === NoGroupingTriggerGroupName ? formatMessage('form-wide operations') : groupName; const key = `${projectId}.${dialog.id}.group-${groupName}`; + const link: TreeLink = { + dialogId: dialog.id, + displayName: groupName, + isRoot: false, + projectId, + }; return ( setPageElement(key, newState)} > -
{renderTriggerList(triggers, dialog, projectId)}
+
{renderTriggerList(triggers, dialog, projectId, link, startDepth + 1)}
); }; @@ -457,10 +491,10 @@ export const ProjectTree: React.FC = ({ }); }; - const renderDialogTriggers = (dialog: DialogInfo, projectId: string, startDepth: number, dialogLink?: TreeLink) => { + const renderDialogTriggers = (dialog: DialogInfo, projectId: string, startDepth: number, dialogLink: TreeLink) => { return dialogIsFormDialog(dialog) - ? renderDialogTriggersByProperty(dialog, projectId, startDepth) - : renderTriggerList(dialog.triggers, dialog, projectId, dialogLink); + ? renderDialogTriggersByProperty(dialog, projectId, startDepth + 1) + : renderTriggerList(dialog.triggers, dialog, projectId, dialogLink, startDepth + 1); }; const createDetailsTree = (bot: BotInProject, startDepth: number) => { @@ -477,27 +511,36 @@ export const ProjectTree: React.FC = ({ if (showTriggers) { return filteredDialogs.map((dialog: DialogInfo) => { - const { summaryElement, dialogLink } = renderDialogHeader(projectId, dialog); + const { summaryElement, dialogLink } = renderDialogHeader(projectId, dialog, startDepth); + const key = 'dialog-' + dialog.id; return ( setPageElement(key, newState)} >
{renderDialogTriggers(dialog, projectId, startDepth + 1, dialogLink)}
); }); } else { - return filteredDialogs.map((dialog: DialogInfo) => renderDialogHeader(projectId, dialog)); + return filteredDialogs.map((dialog: DialogInfo) => renderDialogHeader(projectId, dialog, startDepth)); } }; const createBotSubtree = (bot: BotInProject & { hasWarnings: boolean }) => { + const key = 'bot-' + bot.projectId; if (showDialogs && !bot.isRemote) { return ( - + setPageElement(key, newState)} + >
{createDetailsTree(bot, 1)}
); @@ -513,6 +556,7 @@ export const ProjectTree: React.FC = ({ return (
= ({
{onAllSelected != null ? ( ) : null} diff --git a/Composer/packages/client/src/components/ProjectTree/constants.ts b/Composer/packages/client/src/components/ProjectTree/constants.ts new file mode 100644 index 0000000000..a447dd3f8e --- /dev/null +++ b/Composer/packages/client/src/components/ProjectTree/constants.ts @@ -0,0 +1,5 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +export const SUMMARY_ARROW_SPACE = 28; // the rough pixel size of the dropdown arrow to the left of a Details/Summary element +export const INDENT_PER_LEVEL = 16; diff --git a/Composer/packages/client/src/components/ProjectTree/treeItem.tsx b/Composer/packages/client/src/components/ProjectTree/treeItem.tsx index 400b22932e..3db255b2d6 100644 --- a/Composer/packages/client/src/components/ProjectTree/treeItem.tsx +++ b/Composer/packages/client/src/components/ProjectTree/treeItem.tsx @@ -17,16 +17,16 @@ import { IContextualMenuStyles } from 'office-ui-fabric-react/lib/ContextualMenu import { ICalloutContentStyles } from 'office-ui-fabric-react/lib/Callout'; import { TreeLink, TreeMenuItem } from './ProjectTree'; +import { SUMMARY_ARROW_SPACE } from './constants'; // -------------------- Styles -------------------- // -const indent = 8; -const itemText = css` + +const iconAndText = css` outline: none; :focus { outline: rgb(102, 102, 102) solid 1px; z-index: 1; } - padding-left: ${indent}px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; @@ -41,6 +41,7 @@ const content = css` outline: none; display: flex; align-items: center; + height: 24px; label: ProjectTreeItem; `; @@ -61,7 +62,7 @@ const menuStyle: Partial = { const moreButton = (isActive: boolean): IButtonStyles => { return { root: { - padding: '0 4px', + padding: '4px 4px 0 4px', alignSelf: 'stretch', visibility: isActive ? 'visible' : 'hidden', height: 'auto', @@ -74,15 +75,20 @@ const moreButton = (isActive: boolean): IButtonStyles => { }; }; -const navItem = (isActive: boolean, shift: number) => css` - width: calc(100%-${shift}px); +const navItem = (isActive: boolean) => css` + label: navItem; + min-width: 100%; position: relative; height: 24px; font-size: 12px; - margin-left: ${shift}px; color: ${isActive ? '#ffffff' : '#545454'}; background: ${isActive ? '#0078d4' : 'transparent'}; font-weight: ${isActive ? FontWeights.semibold : FontWeights.regular}; + + display: flex; + flex-direction: row; + align-items: center; + &:hover { color: #545454; background: #f2f2f2; @@ -91,6 +97,7 @@ const navItem = (isActive: boolean, shift: number) => css` visibility: visible; } } + &:focus { outline: none; .ms-Fabric--isFocusVisible &::after { @@ -111,17 +118,17 @@ const navItem = (isActive: boolean, shift: number) => css` export const overflowSet = css` width: 100%; height: 100%; - padding-right: 12px; box-sizing: border-box; line-height: 24px; justify-content: space-between; display: flex; + margin-top: 2px; `; const statusIcon = { - width: '24px', + width: '12px', height: '18px', - fontSize: 16, + fontSize: 11, marginLeft: 6, }; @@ -135,6 +142,13 @@ const errorIcon = { color: '#CC3F3F', }; +const itemName = (nameWidth: number) => css` + max-width: ${nameWidth}px; + overflow: hidden; + text-overflow: ellipsis; + flex-shrink: 1; +`; + // -------------------- TreeItem -------------------- // interface ITreeItemProps { @@ -146,7 +160,9 @@ interface ITreeItemProps { icon?: string; dialogName?: string; showProps?: boolean; - forceIndent?: number; // needed to make an outline look right; should be the size of the "details" reveal arrow + textWidth?: number; + extraSpace?: number; + hasChildren?: boolean; } const renderTreeMenuItem = (link: TreeLink) => (item: TreeMenuItem) => { @@ -167,13 +183,13 @@ const renderTreeMenuItem = (link: TreeLink) => (item: TreeMenuItem) => { }; }; -const onRenderItem = (item: IOverflowSetItemProps) => { +const onRenderItem = (textWidth: number) => (item: IOverflowSetItemProps) => { const { warningContent, errorContent } = item; return (
{ tabIndex={-1} /> )} - {item.displayName} + {item.displayName} {item.errorContent && ( - + )} {item.warningContent && ( - + )}
@@ -240,20 +256,23 @@ export const TreeItem: React.FC = ({ isActive = false, icon, dialogName, - forceIndent, onSelect, + textWidth = 100, + hasChildren = false, menu = [], + extraSpace = 0, }) => { const a11yLabel = `${dialogName ?? '$Root'}_${link.displayName}`; const overflowMenu = menu.map(renderTreeMenuItem(link)); const linkString = `${link.projectId}_DialogTreeItem${link.dialogId}_${link.trigger ?? ''}`; + const spacerWidth = hasChildren ? 0 : SUMMARY_ARROW_SPACE + extraSpace; return (
= ({ } }} > +
= ({ overflowItems={overflowMenu} role="row" styles={{ item: { flex: 1 } }} - onRenderItem={onRenderItem} + onRenderItem={onRenderItem(textWidth - spacerWidth + extraSpace)} onRenderOverflowButton={onRenderOverflowButton(!!isActive)} />
diff --git a/Composer/packages/client/src/components/Split/LeftRightSplit.tsx b/Composer/packages/client/src/components/Split/LeftRightSplit.tsx index 50f5bb550c..918b777ad8 100644 --- a/Composer/packages/client/src/components/Split/LeftRightSplit.tsx +++ b/Composer/packages/client/src/components/Split/LeftRightSplit.tsx @@ -4,6 +4,9 @@ import * as React from 'react'; import styled from '@emotion/styled'; import { default as Measure, ContentRect } from 'react-measure'; +import { useRecoilValue } from 'recoil'; + +import { dispatcherState, currentModeState } from '../../recoilModel'; const defaultSplitterWidth = 5; @@ -163,6 +166,9 @@ export const LeftRightSplit = (props: React.PropsWithChildren) => { const [leftStart, setLeftStart] = React.useState(0); const [screenStart, setScreenStart] = React.useState(0); + const currentPageMode = useRecoilValue(currentModeState); + const { setPageElementState } = useRecoilValue(dispatcherState); + const constrainLeft = (value: number): number => { return constrainPaneExtent(value, { total: currentContentWidth, @@ -198,6 +204,7 @@ export const LeftRightSplit = (props: React.PropsWithChildren) => { // calculate candidate left const newLeft = constrainLeft(leftStart + (event.screenX - screenStart)); setLeftWidth(newLeft); + setPageElementState(currentPageMode, { leftSplitWidth: newLeft }); } }; diff --git a/Composer/packages/client/src/pages/design/DesignPage.tsx b/Composer/packages/client/src/pages/design/DesignPage.tsx index 5bb9b395bb..7ead51d14a 100644 --- a/Composer/packages/client/src/pages/design/DesignPage.tsx +++ b/Composer/packages/client/src/pages/design/DesignPage.tsx @@ -707,7 +707,7 @@ const DesignPage: React.FC { setWarningIsVisible(false); }} - onOk={() => navigateTo(`/bot/${projectId}/knowledge-base/all`)} + onOk={() => navigateTo(`/bot/${projectId}`)} /> ) ) : ( diff --git a/Composer/packages/client/src/pages/notifications/NotificationList.tsx b/Composer/packages/client/src/pages/notifications/NotificationList.tsx index a50bf2e88a..9aadd3b14e 100644 --- a/Composer/packages/client/src/pages/notifications/NotificationList.tsx +++ b/Composer/packages/client/src/pages/notifications/NotificationList.tsx @@ -43,6 +43,7 @@ const columns: IColumn[] = [ return ; }, }, + { key: 'NotificationType', name: formatMessage('Type'), @@ -68,6 +69,31 @@ const columns: IColumn[] = [ }, isPadded: true, }, + { + key: 'NotificationBotName', + name: formatMessage('Bot'), + className: notification.columnCell, + fieldName: 'botName', + minWidth: 70, + maxWidth: 90, + isRowHeader: true, + isResizable: true, + data: 'string', + onRender: (item: INotification) => { + return ( +
+
+ {item.botName} +
+
+ ); + }, + isPadded: true, + }, { key: 'NotificationLocation', name: formatMessage('Location'), diff --git a/Composer/packages/client/src/pages/notifications/Notifications.tsx b/Composer/packages/client/src/pages/notifications/Notifications.tsx index 89d0377eed..4057f06db6 100644 --- a/Composer/packages/client/src/pages/notifications/Notifications.tsx +++ b/Composer/packages/client/src/pages/notifications/Notifications.tsx @@ -20,13 +20,18 @@ const Notifications: React.FC> = (pro const { projectId = '' } = props; const [filter, setFilter] = useState(''); const notifications = useNotifications(projectId, filter); + const rootProjectId = projectId; + const navigations = { [NotificationType.LG]: (item: INotification) => { const { projectId, resourceId, diagnostic, dialogPath } = item; let uri = `/bot/${projectId}/language-generation/${resourceId}/edit#L=${diagnostic.range?.start.line || 0}`; //the format of item.id is lgFile#inlineTemplateId if (dialogPath) { - uri = convertPathToUrl(projectId, resourceId, dialogPath); + uri = + rootProjectId === projectId + ? convertPathToUrl(projectId, null, resourceId, dialogPath) + : convertPathToUrl(rootProjectId, projectId, resourceId, dialogPath); } navigateTo(uri); }, @@ -34,7 +39,10 @@ const Notifications: React.FC> = (pro const { projectId, resourceId, diagnostic, dialogPath } = item; let uri = `/bot/${projectId}/language-understanding/${resourceId}/edit#L=${diagnostic.range?.start.line || 0}`; if (dialogPath) { - uri = convertPathToUrl(projectId, resourceId, dialogPath); + uri = + rootProjectId === projectId + ? convertPathToUrl(projectId, null, resourceId, dialogPath) + : convertPathToUrl(rootProjectId, projectId, resourceId, dialogPath); } navigateTo(uri); }, @@ -46,8 +54,11 @@ const Notifications: React.FC> = (pro [NotificationType.DIALOG]: (item: INotification) => { //path is like main.trigers[0].actions[0] //uri = id?selected=triggers[0]&focused=triggers[0].actions[0] - const { projectId, id, dialogPath } = item; - const uri = convertPathToUrl(projectId, id, dialogPath ?? ''); + const { projectId, id, dialogPath = '' } = item; + const uri = + rootProjectId === projectId + ? convertPathToUrl(projectId, null, id, dialogPath) + : convertPathToUrl(rootProjectId, projectId, id, dialogPath); navigateTo(uri); }, [NotificationType.SKILL]: (item: INotification) => { diff --git a/Composer/packages/client/src/pages/notifications/types.ts b/Composer/packages/client/src/pages/notifications/types.ts index 1253df95c2..fbde0a273b 100644 --- a/Composer/packages/client/src/pages/notifications/types.ts +++ b/Composer/packages/client/src/pages/notifications/types.ts @@ -20,6 +20,7 @@ export enum NotificationType { export interface INotification { projectId: string; + botName: string; id: string; severity: string; type: NotificationType; @@ -32,6 +33,7 @@ export interface INotification { export abstract class Notification implements INotification { projectId: string; + botName: string; id: string; severity: string; type = NotificationType.GENERAL; @@ -40,8 +42,9 @@ export abstract class Notification implements INotification { diagnostic: Diagnostic; dialogPath?: string; resourceId: string; - constructor(projectId: string, id: string, location: string, diagnostic: Diagnostic) { + constructor(projectId: string, botName: string, id: string, location: string, diagnostic: Diagnostic) { this.projectId = projectId; + this.botName = botName; this.id = id; this.resourceId = getBaseName(id); this.severity = DiagnosticSeverity[diagnostic.severity] || ''; @@ -52,16 +55,16 @@ export abstract class Notification implements INotification { export class ServerNotification extends Notification { type = NotificationType.GENERAL; - constructor(projectId: string, id: string, location: string, diagnostic: Diagnostic) { - super(projectId, id, location, diagnostic); + constructor(projectId: string, botName: string, id: string, location: string, diagnostic: Diagnostic) { + super(projectId, botName, id, location, diagnostic); this.message = diagnostic.message; } } export class DialogNotification extends Notification { type = NotificationType.DIALOG; - constructor(projectId: string, id: string, location: string, diagnostic: Diagnostic) { - super(projectId, id, location, diagnostic); + constructor(projectId: string, botName: string, id: string, location: string, diagnostic: Diagnostic) { + super(projectId, botName, id, location, diagnostic); this.message = `In ${replaceDialogDiagnosticLabel(diagnostic.path)} ${diagnostic.message}`; this.dialogPath = diagnostic.path; } @@ -69,8 +72,8 @@ export class DialogNotification extends Notification { export class SkillNotification extends Notification { type = NotificationType.SKILL; - constructor(projectId: string, id: string, location: string, diagnostic: Diagnostic) { - super(projectId, id, location, diagnostic); + constructor(projectId: string, botName: string, id: string, location: string, diagnostic: Diagnostic) { + super(projectId, botName, id, location, diagnostic); this.message = `${replaceDialogDiagnosticLabel(diagnostic.path)} ${diagnostic.message}`; this.dialogPath = diagnostic.path; } @@ -78,8 +81,8 @@ export class SkillNotification extends Notification { export class SettingNotification extends Notification { type = NotificationType.SETTING; - constructor(projectId: string, id: string, location: string, diagnostic: Diagnostic) { - super(projectId, id, location, diagnostic); + constructor(projectId: string, botName: string, id: string, location: string, diagnostic: Diagnostic) { + super(projectId, botName, id, location, diagnostic); this.message = `${replaceDialogDiagnosticLabel(diagnostic.path)} ${diagnostic.message}`; this.dialogPath = diagnostic.path; } @@ -89,13 +92,14 @@ export class LgNotification extends Notification { type = NotificationType.LG; constructor( projectId: string, + botName: string, id: string, location: string, diagnostic: Diagnostic, lgFile: LgFile, dialogs: DialogInfo[] ) { - super(projectId, id, location, diagnostic); + super(projectId, botName, id, location, diagnostic); this.message = createSingleMessage(diagnostic); this.dialogPath = this.findDialogPath(lgFile, dialogs, diagnostic); } @@ -120,13 +124,14 @@ export class LuNotification extends Notification { type = NotificationType.LU; constructor( projectId: string, + botName: string, id: string, location: string, diagnostic: Diagnostic, luFile: LuFile, dialogs: DialogInfo[] ) { - super(projectId, id, location, diagnostic); + super(projectId, botName, id, location, diagnostic); this.dialogPath = this.findDialogPath(luFile, dialogs, diagnostic); this.message = createSingleMessage(diagnostic); } @@ -146,8 +151,8 @@ export class LuNotification extends Notification { export class QnANotification extends Notification { type = NotificationType.QNA; - constructor(projectId: string, id: string, location: string, diagnostic: Diagnostic) { - super(projectId, id, location, diagnostic); + constructor(projectId: string, botName: string, id: string, location: string, diagnostic: Diagnostic) { + super(projectId, botName, id, location, diagnostic); this.dialogPath = ''; this.message = createSingleMessage(diagnostic); } diff --git a/Composer/packages/client/src/pages/notifications/useNotifications.tsx b/Composer/packages/client/src/pages/notifications/useNotifications.tsx index 08997f0e14..365502a4e2 100644 --- a/Composer/packages/client/src/pages/notifications/useNotifications.tsx +++ b/Composer/packages/client/src/pages/notifications/useNotifications.tsx @@ -1,116 +1,11 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { BotIndexer } from '@bfc/indexers'; -import { BotAssets } from '@bfc/shared'; -import get from 'lodash/get'; -import { useMemo } from 'react'; import { useRecoilValue } from 'recoil'; -import { - botDiagnosticsState, - botProjectFileState, - crossTrainConfigState, - dialogSchemasState, - formDialogSchemasSelectorFamily, - jsonSchemaFilesState, - lgFilesState, - luFilesState, - qnaFilesState, - settingsState, - skillManifestsState, - validateDialogsSelectorFamily, -} from '../../recoilModel'; -import { recognizersSelectorFamily } from '../../recoilModel/selectors/recognizers'; +import { messagersSelector } from '../../recoilModel/selectors'; -import { getReferredLuFiles } from './../../utils/luUtil'; -import { - DialogNotification, - LgNotification, - LuNotification, - Notification, - QnANotification, - ServerNotification, - SettingNotification, - SkillNotification, -} from './types'; - -export default function useNotifications(projectId: string, filter?: string) { - const dialogs = useRecoilValue(validateDialogsSelectorFamily(projectId)); - const luFiles = useRecoilValue(luFilesState(projectId)); - const lgFiles = useRecoilValue(lgFilesState(projectId)); - const diagnostics = useRecoilValue(botDiagnosticsState(projectId)); - const setting = useRecoilValue(settingsState(projectId)); - const skillManifests = useRecoilValue(skillManifestsState(projectId)); - const dialogSchemas = useRecoilValue(dialogSchemasState(projectId)); - const qnaFiles = useRecoilValue(qnaFilesState(projectId)); - const formDialogSchemas = useRecoilValue(formDialogSchemasSelectorFamily(projectId)); - const botProjectFile = useRecoilValue(botProjectFileState(projectId)); - const jsonSchemaFiles = useRecoilValue(jsonSchemaFilesState(projectId)); - const recognizers = useRecoilValue(recognizersSelectorFamily(projectId)); - const crossTrainConfig = useRecoilValue(crossTrainConfigState(projectId)); - const botAssets: BotAssets = { - projectId, - dialogs, - luFiles, - qnaFiles, - lgFiles, - skillManifests, - setting, - dialogSchemas, - formDialogSchemas, - botProjectFile, - jsonSchemaFiles, - recognizers, - crossTrainConfig, - }; - - const memoized = useMemo(() => { - const notifications: Notification[] = []; - diagnostics.forEach((d) => { - notifications.push(new ServerNotification(projectId, '', d.source, d)); - }); - const skillDiagnostics = BotIndexer.checkSkillSetting(botAssets); - skillDiagnostics.forEach((item) => { - if (item.source.endsWith('.json')) { - notifications.push(new SkillNotification(projectId, item.source, item.source, item)); - } else { - notifications.push(new DialogNotification(projectId, item.source, item.source, item)); - } - }); - const luisLocaleDiagnostics = BotIndexer.checkLUISLocales(botAssets); - - luisLocaleDiagnostics.forEach((item) => { - notifications.push(new SettingNotification(projectId, item.source, item.source, item)); - }); - - dialogs.forEach((dialog) => { - dialog.diagnostics.forEach((diagnostic) => { - const location = `${dialog.id}.dialog`; - notifications.push(new DialogNotification(projectId, dialog.id, location, diagnostic)); - }); - }); - getReferredLuFiles(luFiles, dialogs).forEach((lufile) => { - lufile.diagnostics.forEach((diagnostic) => { - const location = `${lufile.id}.lu`; - notifications.push(new LuNotification(projectId, lufile.id, location, diagnostic, lufile, dialogs)); - }); - }); - lgFiles.forEach((lgFile) => { - lgFile.diagnostics.forEach((diagnostic) => { - const location = `${lgFile.id}.lg`; - notifications.push(new LgNotification(projectId, lgFile.id, location, diagnostic, lgFile, dialogs)); - }); - }); - qnaFiles.forEach((qnaFile) => { - get(qnaFile, 'diagnostics', []).forEach((diagnostic) => { - const location = `${qnaFile.id}.qna`; - notifications.push(new QnANotification(projectId, qnaFile.id, location, diagnostic)); - }); - }); - return notifications; - }, [botAssets, diagnostics]); - - const notifications: Notification[] = filter ? memoized.filter((x) => x.severity === filter) : memoized; - return notifications; +export default function useNotifications(_projectId: string, filter?: string) { + const messagers = useRecoilValue(messagersSelector); + return filter ? messagers.filter((x) => x.severity === filter) : messagers; } diff --git a/Composer/packages/client/src/pages/publish/createPublishTarget.tsx b/Composer/packages/client/src/pages/publish/createPublishTarget.tsx index 57c00bc018..21a1e82ed2 100644 --- a/Composer/packages/client/src/pages/publish/createPublishTarget.tsx +++ b/Composer/packages/client/src/pages/publish/createPublishTarget.tsx @@ -145,10 +145,10 @@ const CreatePublishTarget: React.FC = (props) => {
{ - if (item.empty || !item.id.startsWith(target)) return; + if (item.empty || getBaseName(item.id) !== target) return; const locale = getExtension(item.id); const fileName = `${item.id}.${fileType}`; multiLanguageRecognizer.recognizers[locale] = fileName; @@ -69,7 +69,7 @@ export const getMultiLanguagueRecognizerDialog = ( export const getLuisRecognizerDialogs = (target: string, luFiles: LuFile[]) => { return luFiles - .filter((item) => !item.empty && item.id.startsWith(target)) + .filter((item) => !item.empty && getBaseName(item.id) === target) .map((item) => ({ id: `${item.id}.lu.dialog`, content: LuisRecognizerTemplate(target, item.id) })); }; @@ -147,8 +147,8 @@ export const Recognizer = React.memo((props: { projectId: string }) => { .filter((dialog) => !dialog.isFormDialog) .filter((dialog) => isCrossTrainedRecognizerSet(dialog) || isLuisRecognizer(dialog)) .forEach((dialog) => { - const filtedLus = luFiles.filter((item) => item.id.startsWith(dialog.id)); - const filtedQnas = qnaFiles.filter((item) => item.id.startsWith(dialog.id)); + const filtedLus = luFiles.filter((item) => getBaseName(item.id) === dialog.id); + const filtedQnas = qnaFiles.filter((item) => getBaseName(item.id) === dialog.id); const { isCrossTrain, luisRecognizers, diff --git a/Composer/packages/client/src/recoilModel/atoms/appState.ts b/Composer/packages/client/src/recoilModel/atoms/appState.ts index c9d812051a..6760acd45a 100644 --- a/Composer/packages/client/src/recoilModel/atoms/appState.ts +++ b/Composer/packages/client/src/recoilModel/atoms/appState.ts @@ -221,3 +221,13 @@ export const formDialogGenerationProgressingState = atom({ key: getFullyQualifiedKey('formDialogGenerationProgressing'), default: false, }); + +export const pageElementState = atom<{ [page in PageMode]?: { [key: string]: any } }>({ + key: getFullyQualifiedKey('pageElement'), + default: { + design: {}, + lg: {}, + lu: {}, + qna: {}, + }, +}); diff --git a/Composer/packages/client/src/recoilModel/dispatchers/application.ts b/Composer/packages/client/src/recoilModel/dispatchers/application.ts index 9bd22e28f7..aab3bf32be 100644 --- a/Composer/packages/client/src/recoilModel/dispatchers/application.ts +++ b/Composer/packages/client/src/recoilModel/dispatchers/application.ts @@ -12,6 +12,7 @@ import { creationFlowStatusState, currentModeState, PageMode, + pageElementState, } from '../atoms/appState'; import { AppUpdaterStatus, CreationFlowStatus } from '../../constants'; import OnboardingState from '../../utils/onboardingStorage'; @@ -79,6 +80,13 @@ export const applicationDispatcher = () => { set(currentModeState, mode); }); + const setPageElementState = useRecoilCallback(({ set }: CallbackInterface) => (mode: PageMode, settings: {}) => { + set(pageElementState, (currentElementState) => ({ + ...currentElementState, + [mode]: settings, + })); + }); + const onboardingAddCoachMarkRef = useRecoilCallback( ({ set }: CallbackInterface) => (coachMarkRef: { [key: string]: any }) => { set(onboardingState, (onboardingObj) => ({ @@ -120,5 +128,6 @@ export const applicationDispatcher = () => { setCreationFlowStatus, setApplicationLevelError, setCurrentPageMode, + setPageElementState, }; }; diff --git a/Composer/packages/client/src/recoilModel/selectors/index.ts b/Composer/packages/client/src/recoilModel/selectors/index.ts index 062b4fdbe0..37b4503a74 100644 --- a/Composer/packages/client/src/recoilModel/selectors/index.ts +++ b/Composer/packages/client/src/recoilModel/selectors/index.ts @@ -8,3 +8,4 @@ export * from './validatedDialogs'; export * from './dialogs'; export * from './dialogImports'; export * from './projectTemplates'; +export * from './messagers'; diff --git a/Composer/packages/client/src/recoilModel/selectors/messagers.ts b/Composer/packages/client/src/recoilModel/selectors/messagers.ts new file mode 100644 index 0000000000..50a97e00d4 --- /dev/null +++ b/Composer/packages/client/src/recoilModel/selectors/messagers.ts @@ -0,0 +1,123 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. +import { selector } from 'recoil'; +import { BotIndexer } from '@bfc/indexers'; +import { BotAssets } from '@bfc/shared'; + +import { + botDiagnosticsState, + botProjectFileState, + botProjectSpaceSelector, + crossTrainConfigState, + dialogSchemasState, + formDialogSchemasSelectorFamily, + jsonSchemaFilesState, + lgFilesState, + luFilesState, + qnaFilesState, + settingsState, + skillManifestsState, + validateDialogsSelectorFamily, +} from '../../recoilModel'; +import { recognizersSelectorFamily } from '../../recoilModel/selectors/recognizers'; +import { + DialogNotification, + LgNotification, + LuNotification, + Notification, + QnANotification, + ServerNotification, + SettingNotification, + SkillNotification, +} from '../../pages/notifications/types'; + +import { getReferredLuFiles } from './../../utils/luUtil'; + +export const messagersSelector = selector({ + key: 'messagersSelector', + get: ({ get }) => { + const botProjectSpace = get(botProjectSpaceSelector); + const allMessage: Notification[] = []; + + for (const project of botProjectSpace) { + const { projectId, name } = project; + const dialogs = get(validateDialogsSelectorFamily(projectId)); + const luFiles = get(luFilesState(projectId)); + const lgFiles = get(lgFilesState(projectId)); + const diagnostics = get(botDiagnosticsState(projectId)); + const setting = get(settingsState(projectId)); + const skillManifests = get(skillManifestsState(projectId)); + const dialogSchemas = get(dialogSchemasState(projectId)); + const qnaFiles = get(qnaFilesState(projectId)); + const formDialogSchemas = get(formDialogSchemasSelectorFamily(projectId)); + const botProjectFile = get(botProjectFileState(projectId)); + const jsonSchemaFiles = get(jsonSchemaFilesState(projectId)); + const recognizers = get(recognizersSelectorFamily(projectId)); + const crossTrainConfig = get(crossTrainConfigState(projectId)); + const botAssets: BotAssets = { + projectId, + dialogs, + luFiles, + qnaFiles, + lgFiles, + skillManifests, + setting, + dialogSchemas, + formDialogSchemas, + botProjectFile, + jsonSchemaFiles, + recognizers, + crossTrainConfig, + }; + + const notifications: Notification[] = []; + diagnostics.forEach((d) => { + notifications.push(new ServerNotification(projectId, name, '', d.source, d)); + }); + const skillDiagnostics = BotIndexer.checkSkillSetting(botAssets); + skillDiagnostics.forEach((item) => { + if (item.source.endsWith('.json')) { + notifications.push(new SkillNotification(projectId, name, item.source, item.source, item)); + } else { + notifications.push(new DialogNotification(projectId, name, item.source, item.source, item)); + } + }); + const luisLocaleDiagnostics = BotIndexer.checkLUISLocales(botAssets); + + luisLocaleDiagnostics.forEach((item) => { + notifications.push(new SettingNotification(projectId, name, item.source, item.source, item)); + }); + + dialogs.forEach((dialog) => { + dialog.diagnostics.forEach((diagnostic) => { + const location = `${dialog.id}.dialog`; + notifications.push(new DialogNotification(projectId, name, dialog.id, location, diagnostic)); + }); + }); + getReferredLuFiles(luFiles, dialogs).forEach((lufile) => { + lufile.diagnostics.forEach((diagnostic) => { + const location = `${lufile.id}.lu`; + notifications.push(new LuNotification(projectId, name, lufile.id, location, diagnostic, lufile, dialogs)); + }); + }); + lgFiles.forEach((lgFile) => { + lgFile.diagnostics.forEach((diagnostic) => { + const location = `${lgFile.id}.lg`; + notifications.push(new LgNotification(projectId, name, lgFile.id, location, diagnostic, lgFile, dialogs)); + }); + }); + qnaFiles.forEach((qnaFile) => { + qnaFile.diagnostics.forEach((diagnostic) => { + const location = `${qnaFile.id}.qna`; + notifications.push(new QnANotification(projectId, name, qnaFile.id, location, diagnostic)); + }); + }); + allMessage.push(...notifications); + } + + return allMessage; + }, +}); diff --git a/Composer/packages/server/src/models/bot/__tests__/luResolver.test.ts b/Composer/packages/lib/shared/__tests__/luBuildResolver.test.ts similarity index 99% rename from Composer/packages/server/src/models/bot/__tests__/luResolver.test.ts rename to Composer/packages/lib/shared/__tests__/luBuildResolver.test.ts index d5447e9487..4be4825568 100644 --- a/Composer/packages/server/src/models/bot/__tests__/luResolver.test.ts +++ b/Composer/packages/lib/shared/__tests__/luBuildResolver.test.ts @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { FileInfo } from '@bfc/shared'; - -import { luImportResolverGenerator, getLUFiles, getQnAFiles } from '../luResolver'; +import { FileInfo } from '../src'; +import { luImportResolverGenerator, getLUFiles, getQnAFiles } from '../src/luBuildResolver'; const files = [ { diff --git a/Composer/packages/lib/shared/package.json b/Composer/packages/lib/shared/package.json index 2feaab041a..ee3a72f7c8 100644 --- a/Composer/packages/lib/shared/package.json +++ b/Composer/packages/lib/shared/package.json @@ -39,6 +39,7 @@ "@botframework-composer/types": "*", "format-message": "6.2.3", "json-schema": "^0.2.5", + "multimatch": "^5.0.0", "nanoid": "^3.1.3", "nanoid-dictionary": "^3.0.0" } diff --git a/Composer/packages/server/src/models/bot/luResolver.ts b/Composer/packages/lib/shared/src/luBuildResolver.ts similarity index 98% rename from Composer/packages/server/src/models/bot/luResolver.ts rename to Composer/packages/lib/shared/src/luBuildResolver.ts index 64c5a9590c..2b08d2f058 100644 --- a/Composer/packages/server/src/models/bot/luResolver.ts +++ b/Composer/packages/lib/shared/src/luBuildResolver.ts @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { FileInfo } from '@bfc/shared'; +import { FileInfo } from '@botframework-composer/types'; import multimatch from 'multimatch'; -import { Path } from '../../utility/path'; +import { Path } from './path'; // eslint-disable-next-line @typescript-eslint/no-var-requires const luObject = require('@microsoft/bf-lu/lib/parser/lu/lu.js'); diff --git a/Composer/packages/lib/shared/src/path.ts b/Composer/packages/lib/shared/src/path.ts new file mode 100644 index 0000000000..402ee8e2fd --- /dev/null +++ b/Composer/packages/lib/shared/src/path.ts @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import path from 'path'; + +// handle all the path to unix pattern +class PathHandler { + resolve(...params: string[]) { + const pathToTransform = path.join(...params); + if (path.isAbsolute(pathToTransform)) { + return pathToTransform.replace(/\\/g, '/'); + } else { + return path.resolve(...params).replace(/\\/g, '/'); + } + } + relative(from: string, to: string) { + return path.relative(from, to).replace(/\\/g, '/'); + } + basename(param: string, ext: string | undefined = undefined) { + return path.basename(param, ext).replace(/\\/g, '/'); + } + dirname(param: string) { + return path.dirname(param).replace(/\\/g, '/'); + } + extname(param: string) { + return path.extname(param).replace(/\\/g, '/'); + } + join(...params: string[]) { + return path.join(...params).replace(/\\/g, '/'); + } + isAbsolute(param: string) { + return path.isAbsolute(param); + } +} +export const Path = new PathHandler(); diff --git a/Composer/packages/server/package.json b/Composer/packages/server/package.json index d7441653a5..658b4cd8e3 100644 --- a/Composer/packages/server/package.json +++ b/Composer/packages/server/package.json @@ -89,7 +89,6 @@ "luis-apis": "2.5.1", "minimatch": "^3.0.4", "morgan": "^1.9.1", - "multimatch": "^4.0.0", "passport": "^0.4.1", "path-to-regexp": "^6.1.0", "portfinder": "1.0.25", diff --git a/Composer/packages/server/schemas/sdk.en-US.schema b/Composer/packages/server/schemas/sdk.en-US.schema index e01bec488d..245790cd7a 100644 --- a/Composer/packages/server/schemas/sdk.en-US.schema +++ b/Composer/packages/server/schemas/sdk.en-US.schema @@ -3,7 +3,7 @@ "description": "These are all of the kinds that can be created by the loader.", "definitions": { "Microsoft.ActivityTemplate": { - "title": "Microsoft ActivityTemplate", + "title": "Microsoft activity template", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -26,7 +26,7 @@ } }, "Microsoft.AdaptiveDialog": { - "title": "Adaptive Dialog", + "title": "Adaptive dialog", "description": "Flexible, data driven dialog that can adapt to the conversation.", "patternProperties": { "^\\$": { @@ -52,7 +52,7 @@ "description": "Input recognizer that interprets user input into intent and entities." }, "generator": { - "title": "Language Generator", + "title": "Language generator", "description": "Language generator that generates bot responses." }, "selector": { @@ -71,6 +71,9 @@ "title": "Schema", "description": "Schema to fill in.", "anyOf": { + "0": { + "title": "Core schema meta-schema" + }, "1": { "title": "Reference to JSON schema", "description": "Reference to JSON schema .dialog file." @@ -88,7 +91,7 @@ } }, "Microsoft.AgeEntityRecognizer": { - "title": "Age Entity Recognizer", + "title": "Age entity recognizer", "description": "Recognizer which recognizes age.", "patternProperties": { "^\\$": { @@ -108,7 +111,7 @@ } }, "Microsoft.Ask": { - "title": "Send Activity to Ask a question", + "title": "Send activity to ask a question", "description": "This is an action which sends an activity to the user when a response is expected", "patternProperties": { "^\\$": { @@ -118,7 +121,7 @@ }, "properties": { "expectedProperties": { - "title": "Expected Properties", + "title": "Expected properties", "description": "Properties expected from the user.", "items": { "title": "Name", @@ -126,7 +129,7 @@ } }, "defaultOperation": { - "title": "Default Operation", + "title": "Default operation", "description": "Sets the default operation that will be used when no operation is recognized in the response to this Ask." }, "id": { @@ -285,7 +288,7 @@ } }, "activityProcessed": { - "title": "Activity Processed", + "title": "Activity processed", "description": "When set to false, the dialog that is called can process the current activity." }, "resultProperty": { @@ -321,7 +324,7 @@ "description": "Optional condition which if true will disable this action." }, "activityProcessed": { - "title": "Activity Processed", + "title": "Activity processed", "description": "When set to false, the skill will be started using the activity in the current turn context instead of the activity in the Activity property." }, "resultProperty": { @@ -337,11 +340,11 @@ "description": "The callback Url for the skill host." }, "connectionName": { - "title": "OAuth Connection Name (SSO)", + "title": "OAuth connection name (SSO)", "description": "The OAuth Connection Name, that would be used to perform Single SignOn with a skill." }, "skillAppId": { - "title": "Skill App ID", + "title": "Skill App Id", "description": "The Microsoft App ID for the skill." }, "skillEndpoint": { @@ -353,7 +356,7 @@ "description": "The activity to send to the skill." }, "allowInterruptions": { - "title": "Allow Interruptions", + "title": "Allow interruptions", "description": "A boolean expression that determines whether the parent should be allowed to interrupt the skill." }, "$kind": { @@ -367,7 +370,7 @@ } }, "Microsoft.BreakLoop": { - "title": "Break Loop", + "title": "Break loop", "description": "Stop executing this loop", "patternProperties": { "^\\$": { @@ -413,7 +416,7 @@ "description": "Optional condition which if true will disable this action." }, "activityProcessed": { - "title": "Activity Processed", + "title": "Activity processed", "description": "When set to false, the caller dialog is told it should process the current activity." }, "eventName": { @@ -453,7 +456,7 @@ "description": "Optional condition which if true will disable this action." }, "activityProcessed": { - "title": "Activity Processed", + "title": "Activity processed", "description": "When set to false, the caller dialog is told it should process the current activity." }, "eventName": { @@ -474,6 +477,26 @@ } } }, + "Microsoft.ChannelMentionEntityRecognizer": { + "title": "Channel mention entity recognizer", + "description": "Promotes mention entities passed by a channel via the activity.entities into recognizer result.", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, "Microsoft.ChoiceInput": { "title": "Choice input dialog", "description": "Collect information - Pick from a list of choices", @@ -675,7 +698,7 @@ } }, "Microsoft.ConditionalSelector": { - "title": "Conditional Trigger Selector", + "title": "Conditional trigger selector", "description": "Use a rule selector based on a condition", "patternProperties": { "^\\$": { @@ -727,7 +750,7 @@ } }, "choiceOptions": { - "title": "Choice Options", + "title": "Choice options", "description": "Choice Options or expression which provides Choice Options to control display choices to the user.", "oneOf": { "0": { @@ -865,7 +888,7 @@ } }, "Microsoft.ConfirmationEntityRecognizer": { - "title": "Confirmation Entity Recognizer", + "title": "Confirmation entity recognizer", "description": "Recognizer which recognizes confirmation choices (yes/no).", "patternProperties": { "^\\$": { @@ -884,8 +907,44 @@ } } }, + "Microsoft.ContinueConversationLater": { + "title": "Continue conversation later (Queue)", + "description": "Continue conversation at later time (via Azure Storage Queue).", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "date": { + "title": "Date", + "description": "Date in the future as a ISO string when the conversation should continue." + }, + "value": { + "title": "Value", + "description": "Value to send in the activity.value." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, "Microsoft.ContinueLoop": { - "title": "Continue Loop", + "title": "Continue loop", "description": "Stop executing this template and continue with the next iteration of the loop.", "patternProperties": { "^\\$": { @@ -913,7 +972,7 @@ } }, "Microsoft.CrossTrainedRecognizerSet": { - "title": "Cross-trained Recognizer Set", + "title": "Cross-trained recognizer set", "description": "Recognizer for selecting between cross trained recognizers.", "patternProperties": { "^\\$": { @@ -941,7 +1000,7 @@ } }, "Microsoft.CurrencyEntityRecognizer": { - "title": "Currency Entity Recognizer", + "title": "Currency entity recognizer", "description": "Recognizer which recognizes currency.", "patternProperties": { "^\\$": { @@ -961,7 +1020,7 @@ } }, "Microsoft.DateTimeEntityRecognizer": { - "title": "DateTime Entity Recognizer", + "title": "Date and time entity recognizer", "description": "Recognizer which recognizes dates and time fragments.", "patternProperties": { "^\\$": { @@ -995,7 +1054,7 @@ }, "properties": { "defaultValue": { - "title": "Default Date", + "title": "Default date", "description": "'Property' will be set to the value or the result of the expression when max turn count is exceeded." }, "value": { @@ -1161,7 +1220,7 @@ } }, "Microsoft.DeleteProperty": { - "title": "Delete Property", + "title": "Delete property", "description": "Delete a property and any value it holds.", "patternProperties": { "^\\$": { @@ -1193,7 +1252,7 @@ } }, "Microsoft.DimensionEntityRecognizer": { - "title": "Dimension Entity Recognizer", + "title": "Dimension entity recognizer", "description": "Recognizer which recognizes dimension.", "patternProperties": { "^\\$": { @@ -1273,7 +1332,7 @@ "description": "Type of change to the array in memory.", "oneOf": { "0": { - "title": "Enum", + "title": "Change type", "description": "Standard change type." } } @@ -1287,7 +1346,7 @@ "description": "Property that holds the array to update." }, "resultProperty": { - "title": "Result Property", + "title": "Result property", "description": "Property to store the result of this action." }, "value": { @@ -1305,7 +1364,7 @@ } }, "Microsoft.EmailEntityRecognizer": { - "title": "Email Entity Recognizer", + "title": "Email entity recognizer", "description": "Recognizer which recognizes email.", "patternProperties": { "^\\$": { @@ -1435,7 +1494,7 @@ } }, "Microsoft.FirstSelector": { - "title": "First Trigger Selector", + "title": "First trigger selector", "description": "Selector for first true rule", "patternProperties": { "^\\$": { @@ -1547,7 +1606,7 @@ } }, "Microsoft.GetActivityMembers": { - "title": "Get Activity Members", + "title": "Get activity members", "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", "patternProperties": { "^\\$": { @@ -1565,7 +1624,7 @@ "description": "Property (named location to store information)." }, "activityId": { - "title": "ActivityId", + "title": "Activity Id", "description": "Activity ID or expression to an activityId to use to get the members. If none is defined then the current activity id will be used." }, "disabled": { @@ -1583,7 +1642,7 @@ } }, "Microsoft.GetConversationMembers": { - "title": "Get Converation Members", + "title": "Get conversation members", "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", "patternProperties": { "^\\$": { @@ -1615,7 +1674,7 @@ } }, "Microsoft.GotoAction": { - "title": "Go to Action", + "title": "Go to action", "description": "Go to an an action by id.", "patternProperties": { "^\\$": { @@ -1647,7 +1706,7 @@ } }, "Microsoft.GuidEntityRecognizer": { - "title": "Guid Entity Recognizer", + "title": "Guid entity recognizer", "description": "Recognizer which recognizes guids.", "patternProperties": { "^\\$": { @@ -1667,7 +1726,7 @@ } }, "Microsoft.HashtagEntityRecognizer": { - "title": "Hashtag Entity Recognizer", + "title": "Hashtag entity recognizer", "description": "Recognizer which recognizes Hashtags.", "patternProperties": { "^\\$": { @@ -1750,397 +1809,425 @@ }, "Microsoft.IActivityTemplate": { "title": "Microsoft ActivityTemplates", - "description": "Components which are ActivityTemplate, which is string template, an activity, or a implementation of ActivityTemplate" - }, - "Microsoft.IDialog": { - "title": "Microsoft Dialogs", - "description": "Components which derive from Dialog" - }, - "Microsoft.IEntityRecognizer": { - "title": "Entity Recognizers", - "description": "Components which derive from EntityRecognizer.", - "oneOf": { - "0": { - "title": "Reference to Microsoft.IEntityRecognizer", - "description": "Reference to Microsoft.IEntityRecognizer .dialog file." - } - } - }, - "Microsoft.ILanguageGenerator": { - "title": "Microsoft LanguageGenerator", - "description": "Components which dervie from the LanguageGenerator class" - }, - "Microsoft.IRecognizer": { - "title": "Microsoft Recognizer", - "description": "Components which derive from Recognizer class" - }, - "Microsoft.ITextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Components which derive from TextTemplate class" - }, - "Microsoft.ITrigger": { - "title": "Microsoft Triggers", - "description": "Components which derive from OnCondition class.", + "description": "Components which are ActivityTemplate, which is string template, an activity, or a implementation of ActivityTemplate", "oneOf": { - "0": { - "title": "Reference to Microsoft.ITrigger", - "description": "Reference to Microsoft.ITrigger .dialog file." - } - } - }, - "Microsoft.ITriggerSelector": { - "title": "Selectors", - "description": "Components which derive from TriggerSelector class.", - "oneOf": { - "0": { - "title": "Reference to Microsoft.ITriggerSelector", - "description": "Reference to Microsoft.ITriggerSelector .dialog file." - } - } - }, - "Microsoft.IfCondition": { - "title": "If condition", - "description": "Two-way branch the conversation flow based on a condition.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "title": "Condition", - "description": "Expression to evaluate." - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "actions": { - "title": "Actions", - "description": "Actions to execute if condition is true." - }, - "elseActions": { - "title": "Else", - "description": "Actions to execute if condition is false." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.InputDialog": { - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "prompt": { - "title": "Initial prompt", - "description": "Message to send to collect information." - }, - "unrecognizedPrompt": { - "title": "Unrecognized prompt", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression." - }, - "defaultValueResponse": { - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "validations": { - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid" - } - }, - "property": { - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.IpEntityRecognizer": { - "title": "Ip Entity Recognizer", - "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LanguagePolicy": { - "title": "Language Policy", - "description": "This represents a policy map for locales lookups to use for language", - "additionalProperties": { - "title": "Per-locale policy", - "description": "Language policy per locale.", - "items": { - "title": "Locale", - "description": "Locale like en-us." - } - }, - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LogAction": { - "title": "Log to console", - "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "text": { - "title": "Text", - "description": "Information to log." - }, - "label": { - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "traceActivity": { - "title": "Send Trace Activity", - "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator)." - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.LuisRecognizer": { - "title": "LUIS Recognizer", - "description": "LUIS recognizer.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "applicationId": { - "title": "LUIS Application ID", - "description": "Application ID for your model from the LUIS service." - }, - "endpoint": { - "title": "LUIS Endpoint", - "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com." - }, - "endpointKey": { - "title": "LUIS prediction key", - "description": "LUIS prediction key used to call endpoint." - }, - "externalEntityRecognizer": { - "title": "External Entity Recognizer", - "description": "Entities recognized by this recognizer will be passed to LUIS as external entities." - }, - "dynamicLists": { - "title": "Dynamic lists", - "description": "Runtime defined entity lists.", - "items": { - "title": "Entity list", - "description": "Lists of canonical values and synonyms for an entity.", - "properties": { - "entity": { - "title": "Entity", - "description": "Entity to extend with a dynamic list." - }, - "list": { - "title": "Dynamic list", - "description": "List of canonical forms and synonyms.", - "items": { - "title": "List entry", - "description": "Canonical form and synonynms.", - "properties": { - "canonicalForm": { - "title": "Canonical form", - "description": "Resolution if any synonym matches." - }, - "synonyms": { - "title": "Synonyms", - "description": "List of synonyms for a canonical form.", - "items": { - "title": "Synonym", - "description": "Synonym for canonical form." + "1": { + "description": "An Activity is the basic communication type for the Bot Framework 3.0 protocol.", + "title": "Activity", + "properties": { + "type": { + "description": "Contains the activity type. Possible values include: 'message', 'contactRelationUpdate',\n'conversationUpdate', 'typing', 'endOfConversation', 'event', 'invoke', 'deleteUserData',\n'messageUpdate', 'messageDelete', 'installationUpdate', 'messageReaction', 'suggestion',\n'trace', 'handoff'", + "title": "type" + }, + "id": { + "description": "Contains an ID that uniquely identifies the activity on the channel.", + "title": "id" + }, + "timestamp": { + "description": "Contains the date and time that the message was sent, in UTC, expressed in ISO-8601 format.", + "title": "timestamp" + }, + "localTimestamp": { + "description": "Contains the date and time that the message was sent, in local time, expressed in ISO-8601\nformat.\nFor example, 2016-09-23T13:07:49.4714686-07:00.", + "title": "localTimestamp" + }, + "localTimezone": { + "description": "Contains the name of the timezone in which the message, in local time, expressed in IANA Time\nZone database format.\nFor example, America/Los_Angeles.", + "title": "localTimezone" + }, + "serviceUrl": { + "description": "Contains the URL that specifies the channel's service endpoint. Set by the channel.", + "title": "serviceUrl" + }, + "channelId": { + "description": "Contains an ID that uniquely identifies the channel. Set by the channel.", + "title": "channelId" + }, + "from": { + "description": "Identifies the sender of the message.", + "title": "from" + }, + "conversation": { + "description": "Identifies the conversation to which the activity belongs.", + "title": "conversation", + "properties": { + "isGroup": { + "description": "Indicates whether the conversation contains more than two participants at the time the\nactivity was generated", + "title": "isGroup" + }, + "conversationType": { + "description": "Indicates the type of the conversation in channels that distinguish between conversation types", + "title": "conversationType" + }, + "id": { + "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", + "title": "id" + }, + "name": { + "description": "Display friendly name", + "title": "name" + }, + "aadObjectId": { + "description": "This account's object ID within Azure Active Directory (AAD)", + "title": "aadObjectId" + }, + "role": { + "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", + "title": "role" + } + } + }, + "recipient": { + "description": "Identifies the recipient of the message.", + "title": "recipient" + }, + "textFormat": { + "description": "Format of text fields Default:markdown. Possible values include: 'markdown', 'plain', 'xml'", + "title": "textFormat" + }, + "attachmentLayout": { + "description": "The layout hint for multiple attachments. Default: list. Possible values include: 'list',\n'carousel'", + "title": "attachmentLayout" + }, + "membersAdded": { + "description": "The collection of members added to the conversation.", + "title": "membersAdded", + "items": { + "description": "Channel account information needed to route a message", + "title": "ChannelAccount", + "properties": { + "id": { + "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", + "title": "id" + }, + "name": { + "description": "Display friendly name", + "title": "name" + }, + "aadObjectId": { + "description": "This account's object ID within Azure Active Directory (AAD)", + "title": "aadObjectId" + }, + "role": { + "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", + "title": "role" + } + } + } + }, + "membersRemoved": { + "description": "The collection of members removed from the conversation.", + "title": "membersRemoved" + }, + "reactionsAdded": { + "description": "The collection of reactions added to the conversation.", + "title": "reactionsAdded", + "items": { + "description": "Message reaction object", + "title": "MessageReaction", + "properties": { + "type": { + "description": "Message reaction type. Possible values include: 'like', 'plusOne'", + "title": "type" + } + } + } + }, + "reactionsRemoved": { + "description": "The collection of reactions removed from the conversation.", + "title": "reactionsRemoved" + }, + "topicName": { + "description": "The updated topic name of the conversation.", + "title": "topicName" + }, + "historyDisclosed": { + "description": "Indicates whether the prior history of the channel is disclosed.", + "title": "historyDisclosed" + }, + "locale": { + "description": "A locale name for the contents of the text field.\nThe locale name is a combination of an ISO 639 two- or three-letter culture code associated\nwith a language\nand an ISO 3166 two-letter subculture code associated with a country or region.\nThe locale name can also correspond to a valid BCP-47 language tag.", + "title": "locale" + }, + "text": { + "description": "The text content of the message.", + "title": "text" + }, + "speak": { + "description": "The text to speak.", + "title": "speak" + }, + "inputHint": { + "description": "Indicates whether your bot is accepting,\nexpecting, or ignoring user input after the message is delivered to the client. Possible\nvalues include: 'acceptingInput', 'ignoringInput', 'expectingInput'", + "title": "inputHint" + }, + "summary": { + "description": "The text to display if the channel cannot render cards.", + "title": "summary" + }, + "suggestedActions": { + "description": "The suggested actions for the activity.", + "title": "suggestedActions", + "properties": { + "to": { + "description": "Ids of the recipients that the actions should be shown to. These Ids are relative to the\nchannelId and a subset of all recipients of the activity", + "title": "to", + "items": { + "title": "Id", + "description": "Id of recipient." + } + }, + "actions": { + "description": "Actions that can be shown to the user", + "title": "actions", + "items": { + "description": "A clickable action", + "title": "CardAction", + "properties": { + "type": { + "description": "The type of action implemented by this button. Possible values include: 'openUrl', 'imBack',\n'postBack', 'playAudio', 'playVideo', 'showImage', 'downloadFile', 'signin', 'call',\n'payment', 'messageBack'", + "title": "type" + }, + "title": { + "description": "Text description which appears on the button", + "title": "title" + }, + "image": { + "description": "Image URL which will appear on the button, next to text label", + "title": "image" + }, + "text": { + "description": "Text for this action", + "title": "text" + }, + "displayText": { + "description": "(Optional) text to display in the chat feed if the button is clicked", + "title": "displayText" + }, + "value": { + "description": "Supplementary parameter for action. Content of this property depends on the ActionType", + "title": "value" + }, + "channelData": { + "description": "Channel-specific data associated with this action", + "title": "channelData" } } } } } - } - } - }, - "predictionOptions": { - "title": "Prediction options", - "description": "Options to control LUIS prediction behavior.", - "properties": { - "includeAllIntents": { - "title": "Include all intents", - "description": "True for all intents, false for only top intent." }, - "includeInstanceData": { - "title": "Include $instance", - "description": "True to include $instance metadata in the LUIS response." + "attachments": { + "description": "Attachments", + "title": "attachments", + "items": { + "description": "An attachment within an activity", + "title": "Attachment", + "properties": { + "contentType": { + "description": "mimetype/Contenttype for the file", + "title": "contentType" + }, + "contentUrl": { + "description": "Content Url", + "title": "contentUrl" + }, + "content": { + "description": "Embedded content", + "title": "content" + }, + "name": { + "description": "(OPTIONAL) The name of the attachment", + "title": "name" + }, + "thumbnailUrl": { + "description": "(OPTIONAL) Thumbnail associated with attachment", + "title": "thumbnailUrl" + } + } + } }, - "log": { - "title": "Log utterances", - "description": "True to log utterances on LUIS service." + "entities": { + "description": "Represents the entities that were mentioned in the message.", + "title": "entities", + "items": { + "description": "Metadata object pertaining to an activity", + "title": "Entity", + "properties": { + "type": { + "description": "Type of this entity (RFC 3987 IRI)", + "title": "type" + } + } + } }, - "preferExternalEntities": { - "title": "Prefer External Entities", - "description": "True to prefer external entities to those generated by LUIS models." + "channelData": { + "description": "Contains channel-specific content.", + "title": "channelData" }, - "slot": { - "title": "Slot", - "description": "Slot to use for talking to LUIS service like production or staging." + "action": { + "description": "Indicates whether the recipient of a contactRelationUpdate was added or removed from the\nsender's contact list.", + "title": "action" }, - "version": { - "title": "Version", - "description": "LUIS application version to use." - } - } - }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.MentionEntityRecognizer": { - "title": "Mentions Entity Recognizer", - "description": "Recognizer which recognizes @Mentions", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." + "replyToId": { + "description": "Contains the ID of the message to which this message is a reply.", + "title": "replyToId" + }, + "label": { + "description": "A descriptive label for the activity.", + "title": "label" + }, + "valueType": { + "description": "The type of the activity's value object.", + "title": "valueType" + }, + "value": { + "description": "A value that is associated with the activity.", + "title": "value" + }, + "name": { + "description": "The name of the operation associated with an invoke or event activity.", + "title": "name" + }, + "relatesTo": { + "description": "A reference to another conversation or activity.", + "title": "relatesTo", + "properties": { + "activityId": { + "description": "(Optional) ID of the activity to refer to", + "title": "activityId" + }, + "user": { + "description": "(Optional) User participating in this conversation", + "title": "user" + }, + "bot": { + "description": "Bot participating in this conversation", + "title": "bot" + }, + "conversation": { + "description": "Conversation reference", + "title": "conversation" + }, + "channelId": { + "description": "Channel ID", + "title": "channelId" + }, + "serviceUrl": { + "description": "Service endpoint where operations concerning the referenced conversation may be performed", + "title": "serviceUrl" + } + } + }, + "code": { + "description": "The a code for endOfConversation activities that indicates why the conversation ended.\nPossible values include: 'unknown', 'completedSuccessfully', 'userCancelled', 'botTimedOut',\n'botIssuedInvalidMessage', 'channelFailed'", + "title": "code" + }, + "expiration": { + "description": "The time at which the activity should be considered to be \"expired\" and should not be\npresented to the recipient.", + "title": "expiration" + }, + "importance": { + "description": "The importance of the activity. Possible values include: 'low', 'normal', 'high'", + "title": "importance" + }, + "deliveryMode": { + "description": "A delivery hint to signal to the recipient alternate delivery paths for the activity.\nThe default delivery mode is \"default\". Possible values include: 'normal', 'notification'", + "title": "deliveryMode" + }, + "listenFor": { + "description": "List of phrases and references that speech and language priming systems should listen for", + "title": "listenFor", + "items": { + "title": "Phrase", + "description": "Phrase to listen for." + } + }, + "textHighlights": { + "description": "The collection of text fragments to highlight when the activity contains a ReplyToId value.", + "title": "textHighlights", + "items": { + "description": "Refers to a substring of content within another field", + "title": "TextHighlight", + "properties": { + "text": { + "description": "Defines the snippet of text to highlight", + "title": "text" + }, + "occurrence": { + "description": "Occurrence of the text field within the referenced text, if multiple exist.", + "title": "occurrence" + } + } + } + }, + "semanticAction": { + "description": "An optional programmatic action accompanying this request", + "title": "semanticAction", + "properties": { + "id": { + "description": "ID of this action", + "title": "id" + }, + "entities": { + "description": "Entities associated with this action", + "title": "entities" + } + } + } + } } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." + } + }, + "Microsoft.IDialog": { + "title": "Microsoft dialogs", + "description": "Components which derive from Dialog" + }, + "Microsoft.IEntityRecognizer": { + "title": "Entity recognizers", + "description": "Components which derive from EntityRecognizer.", + "oneOf": { + "0": { + "title": "Reference to Microsoft.IEntityRecognizer", + "description": "Reference to Microsoft.IEntityRecognizer .dialog file." } } }, - "Microsoft.MostSpecificSelector": { - "title": "Most Specific Trigger Selector", - "description": "Select most specific true events with optional additional selector", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." + "Microsoft.ILanguageGenerator": { + "title": "Microsoft LanguageGenerator", + "description": "Components which dervie from the LanguageGenerator class" + }, + "Microsoft.IRecognizer": { + "title": "Microsoft recognizer", + "description": "Components which derive from Recognizer class" + }, + "Microsoft.ITextTemplate": { + "title": "Microsoft TextTemplate", + "description": "Components which derive from TextTemplate class" + }, + "Microsoft.ITrigger": { + "title": "Microsoft Triggers", + "description": "Components which derive from OnCondition class.", + "oneOf": { + "0": { + "title": "Reference to Microsoft.ITrigger", + "description": "Reference to Microsoft.ITrigger .dialog file." } - }, - "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" - }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." + } + }, + "Microsoft.ITriggerSelector": { + "title": "Selectors", + "description": "Components which derive from TriggerSelector class.", + "oneOf": { + "0": { + "title": "Reference to Microsoft.ITriggerSelector", + "description": "Reference to Microsoft.ITriggerSelector .dialog file." } } }, - "Microsoft.MultiLanguageRecognizer": { - "title": "Multi-language recognizer", - "description": "Configure one recognizer per language and the specify the language fallback policy.", + "Microsoft.IfCondition": { + "title": "If condition", + "description": "Two-way branch the conversation flow based on a condition.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2150,36 +2237,24 @@ "properties": { "id": { "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." + "description": "Optional id for the dialog" }, - "languagePolicy": { - "title": "Language policy", - "description": "Defines fall back languages to try per user input language." + "condition": { + "title": "Condition", + "description": "Expression to evaluate." }, - "recognizers": { - "title": "Recognizers", - "description": "Map of language -> Recognizer" + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + "actions": { + "title": "Actions", + "description": "Actions to execute if condition is true." + }, + "elseActions": { + "title": "Else", + "description": "Actions to execute if condition is false." }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.NumberEntityRecognizer": { - "title": "Number Entity Recognizer", - "description": "Recognizer which recognizes numbers.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -2190,9 +2265,7 @@ } } }, - "Microsoft.NumberInput": { - "title": "Number input dialog", - "description": "Collect information - Ask for a number.", + "Microsoft.InputDialog": { "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2200,22 +2273,6 @@ } }, "properties": { - "defaultValue": { - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded." - }, - "value": { - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null." - }, - "outputFormat": { - "title": "Output format", - "description": "Expression to format the number output." - }, - "defaultLocale": { - "title": "Default locale", - "description": "Default locale to use if there is no locale available.." - }, "id": { "title": "Id", "description": "Optional id for the dialog" @@ -2274,9 +2331,9 @@ } } }, - "Microsoft.NumberRangeEntityRecognizer": { - "title": "NumberRange Entity Recognizer", - "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", + "Microsoft.IpEntityRecognizer": { + "title": "IP entity recognizer", + "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2294,9 +2351,17 @@ } } }, - "Microsoft.OAuthInput": { - "title": "OAuthInput Dialog", - "description": "Collect login information.", + "Microsoft.LanguagePolicy": { + "title": "Language policy", + "description": "This represents a policy map for locales lookups to use for language", + "additionalProperties": { + "title": "Per-locale policy", + "description": "Language policy per locale.", + "items": { + "title": "Locale", + "description": "Locale like en-us." + } + }, "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2304,9 +2369,29 @@ } }, "properties": { - "connectionName": { - "title": "Connection name", - "description": "The connection name configured in Azure Web App Bot OAuth settings." + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.LogAction": { + "title": "Log to console", + "description": "Log a message to the host application. Send a TraceActivity to Bot Framework Emulator (optional).", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "title": "Id", + "description": "Optional id for the dialog" }, "disabled": { "title": "Disabled", @@ -2314,43 +2399,15 @@ }, "text": { "title": "Text", - "description": "Text shown in the OAuth signin card." + "description": "Information to log." }, - "title": { - "title": "Title", - "description": "Title shown in the OAuth signin card." + "label": { + "title": "Label", + "description": "Label for the trace activity (used to identify it in a list of trace activities.)" }, - "timeout": { - "title": "Timeout", - "description": "Time out setting for the OAuth signin card." - }, - "property": { - "title": "Token property", - "description": "Property to store the OAuth token result." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send if user response is invalid." - }, - "defaultValueResponse": { - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "defaultValue": { - "title": "Default value", - "description": "Expression to examine on each turn of the conversation as possible value to the property." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." + "traceActivity": { + "title": "Send trace activity", + "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator)." }, "$kind": { "title": "Kind of dialog object", @@ -2362,9 +2419,9 @@ } } }, - "Microsoft.OnActivity": { - "title": "On activity", - "description": "Actions to perform on receipt of a generic activity.", + "Microsoft.LuisRecognizer": { + "title": "LUIS Recognizer", + "description": "LUIS recognizer.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2372,25 +2429,91 @@ } }, "properties": { - "type": { - "title": "Activity type", - "description": "The Activity.Type to match" + "id": { + "title": "Id", + "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." + "applicationId": { + "title": "LUIS application id", + "description": "Application ID for your model from the LUIS service." }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." + "version": { + "title": "LUIS version", + "description": "Optional version to target. If null then predictionOptions.Slot is used." }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." + "endpoint": { + "title": "LUIS endpoint", + "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com." }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" + "endpointKey": { + "title": "LUIS prediction key", + "description": "LUIS prediction key used to call endpoint." + }, + "externalEntityRecognizer": { + "title": "External entity recognizer", + "description": "Entities recognized by this recognizer will be passed to LUIS as external entities." + }, + "dynamicLists": { + "title": "Dynamic lists", + "description": "Runtime defined entity lists.", + "items": { + "title": "Entity list", + "description": "Lists of canonical values and synonyms for an entity.", + "properties": { + "entity": { + "title": "Entity", + "description": "Entity to extend with a dynamic list." + }, + "list": { + "title": "Dynamic list", + "description": "List of canonical forms and synonyms.", + "items": { + "title": "List entry", + "description": "Canonical form and synonynms.", + "properties": { + "canonicalForm": { + "title": "Canonical form", + "description": "Resolution if any synonym matches." + }, + "synonyms": { + "title": "Synonyms", + "description": "List of synonyms for a canonical form.", + "items": { + "title": "Synonym", + "description": "Synonym for canonical form." + } + } + } + } + } + } + } + }, + "predictionOptions": { + "title": "Prediction options", + "description": "Options to control LUIS prediction behavior.", + "properties": { + "includeAllIntents": { + "title": "Include all intents", + "description": "True for all intents, false for only top intent." + }, + "includeInstanceData": { + "title": "Include $instance", + "description": "True to include $instance metadata in the LUIS response." + }, + "log": { + "title": "Log utterances", + "description": "True to log utterances on LUIS service." + }, + "preferExternalEntities": { + "title": "Prefer external entities", + "description": "True to prefer external entities to those generated by LUIS models." + }, + "slot": { + "title": "Slot", + "description": "Slot to use for talking to LUIS service like production or staging." + } + } }, "$kind": { "title": "Kind of dialog object", @@ -2402,9 +2525,9 @@ } } }, - "Microsoft.OnAssignEntity": { - "title": "On entity assignment", - "description": "Actions to take when an entity should be assigned to a property.", + "Microsoft.MentionEntityRecognizer": { + "title": "Mentions entity recognizer", + "description": "Recognizer which recognizes @Mentions", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2412,34 +2535,6 @@ } }, "properties": { - "property": { - "title": "Property", - "description": "Property that will be set after entity is selected." - }, - "entity": { - "title": "Entity", - "description": "Entity being put into property" - }, - "operation": { - "title": "Operation", - "description": "Operation for assigning entity." - }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -2450,9 +2545,9 @@ } } }, - "Microsoft.OnBeginDialog": { - "title": "On begin dialog", - "description": "Actions to perform when this dialog begins.", + "Microsoft.MostSpecificSelector": { + "title": "Most specific trigger selector", + "description": "Select most specific true events with optional additional selector", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2460,22 +2555,6 @@ } }, "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -2486,9 +2565,9 @@ } } }, - "Microsoft.OnCancelDialog": { - "title": "On cancel dialog", - "description": "Actions to perform on cancel dialog event.", + "Microsoft.MultiLanguageRecognizer": { + "title": "Multi-language recognizer", + "description": "Configure one recognizer per language and the specify the language fallback policy.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2496,21 +2575,17 @@ } }, "properties": { - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." + "id": { + "title": "Id", + "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." + "languagePolicy": { + "title": "Language policy", + "description": "Defines fall back languages to try per user input language." }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" + "recognizers": { + "title": "Recognizers", + "description": "Map of language -> Recognizer" }, "$kind": { "title": "Kind of dialog object", @@ -2522,9 +2597,9 @@ } } }, - "Microsoft.OnChooseEntity": { - "title": "On choose entity", - "description": "Actions to be performed when an entity value needs to be resolved.", + "Microsoft.NumberEntityRecognizer": { + "title": "Number entity recognizer", + "description": "Recognizer which recognizes numbers.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2532,30 +2607,6 @@ } }, "properties": { - "property": { - "title": "Property to be set", - "description": "Property that will be set after entity is selected." - }, - "entity": { - "title": "Ambiguous entity", - "description": "Ambiguous entity" - }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." - }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." - }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." - }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" - }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -2566,9 +2617,9 @@ } } }, - "Microsoft.OnChooseIntent": { - "title": "On ambigious intent", - "description": "Actions to perform on when an intent is ambigious.", + "Microsoft.NumberInput": { + "title": "Number input dialog", + "description": "Collect information - Ask for a number.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2576,29 +2627,69 @@ } }, "properties": { - "intents": { - "title": "Intents", - "description": "Intents that must be in the ChooseIntent result for this condition to trigger.", - "items": { - "title": "Intent", - "description": "Intent name to trigger on." - } + "defaultValue": { + "title": "Default value", + "description": "'Property' will be set to the value of this expression when max turn count is exceeded." }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." + "value": { + "title": "Value", + "description": "'Property' will be set to the value of this expression unless it evaluates to null." }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." + "outputFormat": { + "title": "Output format", + "description": "Expression to format the number output." }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." + "defaultLocale": { + "title": "Default locale", + "description": "Default locale to use if there is no locale available.." }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" + "id": { + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "prompt": { + "title": "Initial prompt", + "description": "Message to send to collect information." + }, + "unrecognizedPrompt": { + "title": "Unrecognized prompt", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value." + }, + "invalidPrompt": { + "title": "Invalid prompt", + "description": "Message to send when the user input does not meet any validation expression." + }, + "defaultValueResponse": { + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value." + }, + "maxTurnCount": { + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information." + }, + "validations": { + "title": "Validation expressions", + "description": "Expression to validate user input.", + "items": { + "title": "Condition", + "description": "Expression which needs to met for the input to be considered valid" + } + }, + "property": { + "title": "Property", + "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." + }, + "alwaysPrompt": { + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty." + }, + "allowInterruptions": { + "title": "Allow Interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." }, "$kind": { "title": "Kind of dialog object", @@ -2610,9 +2701,9 @@ } } }, - "Microsoft.OnChooseProperty": { - "title": "On choose property", - "description": "Actions to take when there are multiple possible mappings of entities to properties.", + "Microsoft.NumberRangeEntityRecognizer": { + "title": "Number range entity recognizer", + "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2620,41 +2711,73 @@ } }, "properties": { - "entity": { - "title": "Entity being assigned", - "description": "Entity being assigned to property choice" + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" }, - "properties": { - "title": "Possible properties", - "description": "Properties to be chosen between.", - "items": { - "title": "Property name", - "description": "Possible property to choose." - } + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.OAuthInput": { + "title": "OAuthInput Dialog", + "description": "Collect login information.", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "connectionName": { + "title": "Connection name", + "description": "The connection name configured in Azure Web App Bot OAuth settings." }, - "entities": { - "title": "Entities", - "description": "Ambiguous entity names.", - "items": { - "title": "Entity name", - "description": "Entity name being chosen between." - } + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." }, - "condition": { - "title": "Condition", - "description": "Condition (expression)." + "text": { + "title": "Text", + "description": "Text shown in the OAuth signin card." }, - "actions": { - "title": "Actions", - "description": "Sequence of actions to execute." + "title": { + "title": "Title", + "description": "Title shown in the OAuth signin card." }, - "priority": { - "title": "Priority", - "description": "Priority for trigger with 0 being the highest and < 0 ignored." + "timeout": { + "title": "Timeout", + "description": "Time out setting for the OAuth signin card." }, - "runOnce": { - "title": "Run Once", - "description": "True if rule should run once per unique conditions" + "property": { + "title": "Token property", + "description": "Property to store the OAuth token result." + }, + "invalidPrompt": { + "title": "Invalid prompt", + "description": "Message to send if user response is invalid." + }, + "defaultValueResponse": { + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value." + }, + "maxTurnCount": { + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information." + }, + "defaultValue": { + "title": "Default value", + "description": "Expression to examine on each turn of the conversation as possible value to the property." + }, + "allowInterruptions": { + "title": "Allow interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." + }, + "alwaysPrompt": { + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty." }, "$kind": { "title": "Kind of dialog object", @@ -2666,9 +2789,9 @@ } } }, - "Microsoft.OnCondition": { - "title": "On condition", - "description": "Actions to perform when specified condition is true.", + "Microsoft.OnActivity": { + "title": "On activity", + "description": "Actions to perform on receipt of a generic activity.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2676,6 +2799,10 @@ } }, "properties": { + "type": { + "title": "Activity type", + "description": "The Activity.Type to match" + }, "condition": { "title": "Condition", "description": "Condition (expression)." @@ -2702,9 +2829,9 @@ } } }, - "Microsoft.OnContinueConversation": { - "title": "On Continue Conversation", - "description": "Actions to perform when a conversation is started up again from a ContinueConversationLater action.", + "Microsoft.OnAssignEntity": { + "title": "On entity assignment", + "description": "Actions to take when an entity should be assigned to a property.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2712,6 +2839,18 @@ } }, "properties": { + "property": { + "title": "Property", + "description": "Property that will be set after entity is selected." + }, + "entity": { + "title": "Entity", + "description": "Entity being put into property" + }, + "operation": { + "title": "Operation", + "description": "Operation for assigning entity." + }, "condition": { "title": "Condition", "description": "Condition (expression)." @@ -2738,9 +2877,9 @@ } } }, - "Microsoft.OnConversationUpdateActivity": { - "title": "On ConversationUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", + "Microsoft.OnBeginDialog": { + "title": "On begin dialog", + "description": "Actions to perform when this dialog begins.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2774,9 +2913,9 @@ } } }, - "Microsoft.OnDialogEvent": { - "title": "On dialog event", - "description": "Actions to perform when a specific dialog event occurs.", + "Microsoft.OnCancelDialog": { + "title": "On cancel dialog", + "description": "Actions to perform on cancel dialog event.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2784,10 +2923,6 @@ } }, "properties": { - "event": { - "title": "Dialog event name", - "description": "Name of dialog event." - }, "condition": { "title": "Condition", "description": "Condition (expression)." @@ -2814,9 +2949,9 @@ } } }, - "Microsoft.OnEndOfActions": { - "title": "On end of actions", - "description": "Actions to take when there are no more actions in the current dialog.", + "Microsoft.OnChooseEntity": { + "title": "On choose entity", + "description": "Actions to be performed when an entity value needs to be resolved.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2824,6 +2959,14 @@ } }, "properties": { + "property": { + "title": "Property to be set", + "description": "Property that will be set after entity is selected." + }, + "entity": { + "title": "Ambiguous entity", + "description": "Ambiguous entity" + }, "condition": { "title": "Condition", "description": "Condition (expression)." @@ -2850,9 +2993,9 @@ } } }, - "Microsoft.OnEndOfConversationActivity": { - "title": "On EndOfConversation activity", - "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", + "Microsoft.OnChooseIntent": { + "title": "On ambigious intent", + "description": "Actions to perform on when an intent is ambigious.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2860,6 +3003,14 @@ } }, "properties": { + "intents": { + "title": "Intents", + "description": "Intents that must be in the ChooseIntent result for this condition to trigger.", + "items": { + "title": "Intent", + "description": "Intent name to trigger on." + } + }, "condition": { "title": "Condition", "description": "Condition (expression)." @@ -2886,9 +3037,9 @@ } } }, - "Microsoft.OnError": { - "title": "On Error", - "description": "Action to perform when an 'Error' dialog event occurs.", + "Microsoft.OnChooseProperty": { + "title": "On choose property", + "description": "Actions to take when there are multiple possible mappings of entities to properties.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2896,6 +3047,26 @@ } }, "properties": { + "entity": { + "title": "Entity being assigned", + "description": "Entity being assigned to property choice" + }, + "properties": { + "title": "Possible properties", + "description": "Properties to be chosen between.", + "items": { + "title": "Property name", + "description": "Possible property to choose." + } + }, + "entities": { + "title": "Entities", + "description": "Ambiguous entity names.", + "items": { + "title": "Entity name", + "description": "Entity name being chosen between." + } + }, "condition": { "title": "Condition", "description": "Condition (expression)." @@ -2922,10 +3093,10 @@ } } }, - "Microsoft.OnEventActivity": { - "title": "On Event activity", - "description": "Actions to perform on receipt of an activity with type 'Event'.", - "patternProperties": { + "Microsoft.OnCondition": { + "title": "On condition", + "description": "Actions to perform when specified condition is true.", + "patternProperties": { "^\\$": { "title": "Tooling property", "description": "Open ended property for tooling." @@ -2958,9 +3129,9 @@ } } }, - "Microsoft.OnHandoffActivity": { - "title": "On Handoff activity", - "description": "Actions to perform on receipt of an activity with type 'HandOff'.", + "Microsoft.OnContinueConversation": { + "title": "On continue conversation", + "description": "Actions to perform when a conversation is started up again from a ContinueConversationLater action.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -2994,9 +3165,9 @@ } } }, - "Microsoft.OnIntent": { - "title": "On intent recognition", - "description": "Actions to perform when specified intent is recognized.", + "Microsoft.OnConversationUpdateActivity": { + "title": "On ConversationUpdate activity", + "description": "Actions to perform on receipt of an activity with type 'ConversationUpdate'.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3004,18 +3175,6 @@ } }, "properties": { - "intent": { - "title": "Intent", - "description": "Name of intent." - }, - "entities": { - "title": "Entities", - "description": "Required entities.", - "items": { - "title": "Entity", - "description": "Entity that must be present." - } - }, "condition": { "title": "Condition", "description": "Condition (expression)." @@ -3042,9 +3201,9 @@ } } }, - "Microsoft.OnInvokeActivity": { - "title": "On Invoke activity", - "description": "Actions to perform on receipt of an activity with type 'Invoke'.", + "Microsoft.OnDialogEvent": { + "title": "On dialog event", + "description": "Actions to perform when a specific dialog event occurs.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3052,6 +3211,10 @@ } }, "properties": { + "event": { + "title": "Dialog event name", + "description": "Name of dialog event." + }, "condition": { "title": "Condition", "description": "Condition (expression)." @@ -3078,9 +3241,9 @@ } } }, - "Microsoft.OnMessageActivity": { - "title": "On Message activity", - "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", + "Microsoft.OnEndOfActions": { + "title": "On end of actions", + "description": "Actions to take when there are no more actions in the current dialog.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3114,9 +3277,9 @@ } } }, - "Microsoft.OnMessageDeleteActivity": { - "title": "On MessageDelete activity", - "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", + "Microsoft.OnEndOfConversationActivity": { + "title": "On EndOfConversation activity", + "description": "Actions to perform on receipt of an activity with type 'EndOfConversation'.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3150,9 +3313,9 @@ } } }, - "Microsoft.OnMessageReactionActivity": { - "title": "On MessageReaction activity", - "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", + "Microsoft.OnError": { + "title": "On error", + "description": "Action to perform when an 'Error' dialog event occurs.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3186,9 +3349,9 @@ } } }, - "Microsoft.OnMessageUpdateActivity": { - "title": "On MessageUpdate activity", - "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", + "Microsoft.OnEventActivity": { + "title": "On Event activity", + "description": "Actions to perform on receipt of an activity with type 'Event'.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3222,9 +3385,9 @@ } } }, - "Microsoft.OnQnAMatch": { - "title": "On QnAMaker Match", - "description": "Actions to perform on when an match from QnAMaker is found.", + "Microsoft.OnHandoffActivity": { + "title": "On Handoff activity", + "description": "Actions to perform on receipt of an activity with type 'HandOff'.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3258,9 +3421,9 @@ } } }, - "Microsoft.OnRepromptDialog": { - "title": "On RepromptDialog", - "description": "Actions to perform when 'RepromptDialog' event occurs.", + "Microsoft.OnInstallationUpdateActivity": { + "title": "On InstallationUpdate activity", + "description": "Actions to perform on receipt of an activity with type 'InstallationUpdate'.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3294,9 +3457,9 @@ } } }, - "Microsoft.OnTypingActivity": { - "title": "On Typing activity", - "description": "Actions to perform on receipt of an activity with type 'Typing'.", + "Microsoft.OnIntent": { + "title": "On intent recognition", + "description": "Actions to perform when specified intent is recognized.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3304,6 +3467,18 @@ } }, "properties": { + "intent": { + "title": "Intent", + "description": "Name of intent." + }, + "entities": { + "title": "Entities", + "description": "Required entities.", + "items": { + "title": "Entity", + "description": "Entity that must be present." + } + }, "condition": { "title": "Condition", "description": "Condition (expression)." @@ -3330,9 +3505,9 @@ } } }, - "Microsoft.OnUnknownIntent": { - "title": "On unknown intent", - "description": "Action to perform when user input is unrecognized or if none of the 'on intent recognition' triggers match recognized intent.", + "Microsoft.OnInvokeActivity": { + "title": "On Invoke activity", + "description": "Actions to perform on receipt of an activity with type 'Invoke'.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3366,9 +3541,9 @@ } } }, - "Microsoft.OrdinalEntityRecognizer": { - "title": "Ordinal Entity Recognizer", - "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", + "Microsoft.OnMessageActivity": { + "title": "On Message activity", + "description": "Actions to perform on receipt of an activity with type 'Message'. Overrides Intent trigger.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3376,6 +3551,22 @@ } }, "properties": { + "condition": { + "title": "Condition", + "description": "Condition (expression)." + }, + "actions": { + "title": "Actions", + "description": "Sequence of actions to execute." + }, + "priority": { + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "title": "Run Once", + "description": "True if rule should run once per unique conditions" + }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -3386,9 +3577,9 @@ } } }, - "Microsoft.PercentageEntityRecognizer": { - "title": "Percentage Entity Recognizer", - "description": "Recognizer which recognizes percentages.", + "Microsoft.OnMessageDeleteActivity": { + "title": "On MessageDelete activity", + "description": "Actions to perform on receipt of an activity with type 'MessageDelete'.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3396,6 +3587,22 @@ } }, "properties": { + "condition": { + "title": "Condition", + "description": "Condition (expression)." + }, + "actions": { + "title": "Actions", + "description": "Sequence of actions to execute." + }, + "priority": { + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "title": "Run Once", + "description": "True if rule should run once per unique conditions" + }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -3406,9 +3613,9 @@ } } }, - "Microsoft.PhoneNumberEntityRecognizer": { - "title": "Phone Number Entity Recognizer", - "description": "Recognizer which recognizes phone numbers.", + "Microsoft.OnMessageReactionActivity": { + "title": "On MessageReaction activity", + "description": "Actions to perform on receipt of an activity with type 'MessageReaction'.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3416,6 +3623,22 @@ } }, "properties": { + "condition": { + "title": "Condition", + "description": "Condition (expression)." + }, + "actions": { + "title": "Actions", + "description": "Sequence of actions to execute." + }, + "priority": { + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "title": "Run Once", + "description": "True if rule should run once per unique conditions" + }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -3426,9 +3649,9 @@ } } }, - "Microsoft.QnAMakerDialog": { - "title": "QnAMaker Dialog", - "description": "Dialog which uses QnAMAker knowledge base to answer questions.", + "Microsoft.OnMessageUpdateActivity": { + "title": "On MessageUpdate activity", + "description": "Actions to perform on receipt of an activity with type 'MessageUpdate'.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3436,73 +3659,21 @@ } }, "properties": { - "knowledgeBaseId": { - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase." - }, - "endpointKey": { - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB." - }, - "hostname": { - "title": "Hostname", - "description": "Hostname for your QnA Maker service." - }, - "noAnswer": { - "title": "Fallback answer", - "description": "Default answer to return when none found in KB." - }, - "threshold": { - "title": "Threshold", - "description": "Threshold score to filter results." - }, - "activeLearningCardTitle": { - "title": "Active learning card title", - "description": "Title for active learning suggestions card." - }, - "cardNoMatchText": { - "title": "Card no match text", - "description": "Text for no match option." - }, - "cardNoMatchResponse": { - "title": "Card no match response", - "description": "Custom response when no match option was selected." - }, - "strictFilters": { - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "title": "Metadata filter", - "description": "Metadata filter.", - "properties": { - "name": { - "title": "Name", - "description": "Name of filter property." - }, - "value": { - "title": "Value", - "description": "Value to filter on." - } - } - } + "condition": { + "title": "Condition", + "description": "Condition (expression)." }, - "top": { - "title": "Top", - "description": "The number of answers you want to retrieve." + "actions": { + "title": "Actions", + "description": "Sequence of actions to execute." }, - "isTest": { - "title": "IsTest", - "description": "True, if pointing to Test environment, else false." + "priority": { + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." }, - "rankerType": { - "title": "Ranker Type", - "description": "Type of Ranker.", - "oneOf": { - "0": { - "title": "Standard ranker", - "description": "Standard ranker types." - } - } + "runOnce": { + "title": "Run Once", + "description": "True if rule should run once per unique conditions" }, "$kind": { "title": "Kind of dialog object", @@ -3514,9 +3685,9 @@ } } }, - "Microsoft.QnAMakerRecognizer": { - "title": "QnAMaker Recognizer", - "description": "Recognizer for generating QnAMatch intents from a KB.", + "Microsoft.OnQnAMatch": { + "title": "On QnAMaker match", + "description": "Actions to perform on when an match from QnAMaker is found.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3524,91 +3695,21 @@ } }, "properties": { - "id": { - "title": "Id", - "description": "Optional unique id using with RecognizerSet." + "condition": { + "title": "Condition", + "description": "Condition (expression)." }, - "knowledgeBaseId": { - "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase." + "actions": { + "title": "Actions", + "description": "Sequence of actions to execute." }, - "endpointKey": { - "title": "Endpoint Key", - "description": "Endpoint key for the QnA Maker KB." + "priority": { + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." }, - "hostname": { - "title": "Hostname", - "description": "Hostname for your QnA Maker service." - }, - "threshold": { - "title": "Threshold", - "description": "Threshold score to filter results." - }, - "strictFilters": { - "title": "Strict Filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "title": "Metadata filters", - "description": "Metadata filters to use when querying QnA Maker KB.", - "properties": { - "name": { - "title": "Name", - "description": "Name to filter on." - }, - "value": { - "title": "Value", - "description": "Value to restrict filter." - } - } - } - }, - "top": { - "title": "Top", - "description": "The number of answers you want to retrieve." - }, - "isTest": { - "title": "IsTest", - "description": "True, if pointing to Test environment, else false." - }, - "rankerType": { - "title": "Ranker Type", - "description": "Type of Ranker.", - "oneOf": { - "0": { - "title": "Ranker type", - "description": "Type of Ranker." - } - } - }, - "includeDialogNameInMetadata": { - "title": "Include Dialog Name", - "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true" - }, - "metadata": { - "title": "Metadata filters", - "description": "Metadata filters to use when calling the QnA Maker KB.", - "items": { - "title": "Metadata filter", - "description": "Metadata filter to use when calling the QnA Maker KB.", - "properties": { - "name": { - "title": "Name", - "description": "Name of value to test." - }, - "value": { - "title": "Value", - "description": "Value to filter against." - } - } - } - }, - "context": { - "title": "QnARequestContext", - "description": "Context to use for ranking." - }, - "qnaId": { - "title": "QnAId", - "description": "A number or expression which is the QnAId to paass to QnAMaker API." + "runOnce": { + "title": "Run Once", + "description": "True if rule should run once per unique conditions" }, "$kind": { "title": "Kind of dialog object", @@ -3620,9 +3721,9 @@ } } }, - "Microsoft.RandomSelector": { - "title": "Random rule selector", - "description": "Select most specific true rule.", + "Microsoft.OnRepromptDialog": { + "title": "On RepromptDialog", + "description": "Actions to perform when 'RepromptDialog' event occurs.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3630,9 +3731,21 @@ } }, "properties": { - "seed": { - "title": "Random seed", - "description": "Random seed to start random number generation." + "condition": { + "title": "Condition", + "description": "Condition (expression)." + }, + "actions": { + "title": "Actions", + "description": "Sequence of actions to execute." + }, + "priority": { + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "title": "Run Once", + "description": "True if rule should run once per unique conditions" }, "$kind": { "title": "Kind of dialog object", @@ -3644,9 +3757,9 @@ } } }, - "Microsoft.RecognizerSet": { - "title": "Recognizer Set", - "description": "Creates the union of the intents and entities of the recognizers in the set.", + "Microsoft.OnTypingActivity": { + "title": "On Typing activity", + "description": "Actions to perform on receipt of an activity with type 'Typing'.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3654,13 +3767,21 @@ } }, "properties": { - "id": { - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." + "condition": { + "title": "Condition", + "description": "Condition (expression)." }, - "recognizers": { - "title": "Recognizers", - "description": "List of Recognizers defined for this set." + "actions": { + "title": "Actions", + "description": "Sequence of actions to execute." + }, + "priority": { + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "title": "Run Once", + "description": "True if rule should run once per unique conditions" }, "$kind": { "title": "Kind of dialog object", @@ -3672,9 +3793,9 @@ } } }, - "Microsoft.RegexEntityRecognizer": { - "title": "Regex Entity Recognizer", - "description": "Recognizer which recognizes patterns of input based on regex.", + "Microsoft.OnUnknownIntent": { + "title": "On unknown intent", + "description": "Action to perform when user input is unrecognized or if none of the 'on intent recognition' triggers match recognized intent.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3682,13 +3803,21 @@ } }, "properties": { - "name": { - "title": "Name", - "description": "Name of the entity" + "condition": { + "title": "Condition", + "description": "Condition (expression)." }, - "pattern": { - "title": "Pattern", - "description": "Pattern expressed as regular expression." + "actions": { + "title": "Actions", + "description": "Sequence of actions to execute." + }, + "priority": { + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "title": "Run Once", + "description": "True if rule should run once per unique conditions" }, "$kind": { "title": "Kind of dialog object", @@ -3700,9 +3829,9 @@ } } }, - "Microsoft.RegexRecognizer": { - "title": "Regex recognizer", - "description": "Use regular expressions to recognize intents and entities from user input.", + "Microsoft.OrdinalEntityRecognizer": { + "title": "Ordinal entity recognizer", + "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3710,32 +3839,6 @@ } }, "properties": { - "id": { - "title": "Id", - "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." - }, - "intents": { - "title": "RegEx patterns to intents", - "description": "Collection of patterns to match for an intent.", - "items": { - "title": "Pattern", - "description": "Intent and regex pattern.", - "properties": { - "intent": { - "title": "Intent", - "description": "The intent name." - }, - "pattern": { - "title": "Pattern", - "description": "The regular expression pattern." - } - } - } - }, - "entities": { - "title": "Entity recognizers", - "description": "Collection of entity recognizers to use." - }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -3746,9 +3849,9 @@ } } }, - "Microsoft.RepeatDialog": { - "title": "Repeat dialog", - "description": "Repeat current dialog.", + "Microsoft.PercentageEntityRecognizer": { + "title": "Percentage entity recognizer", + "description": "Recognizer which recognizes percentages.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3756,30 +3859,6 @@ } }, "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "allowLoop": { - "title": "AllowLoop", - "description": "Optional condition which if true will allow loop of the repeated dialog." - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "options": { - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "title": "Options", - "description": "Options for repeating dialog." - } - }, - "activityProcessed": { - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity." - }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -3790,9 +3869,9 @@ } } }, - "Microsoft.ReplaceDialog": { - "title": "Replace dialog", - "description": "Replace current dialog with another dialog.", + "Microsoft.PhoneNumberEntityRecognizer": { + "title": "Phone number entity recognizer", + "description": "Recognizer which recognizes phone numbers.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3800,35 +3879,6 @@ } }, "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "dialog": { - "oneOf": { - "0": { - "title": "Dialog" - } - }, - "title": "Dialog name", - "description": "Name of the dialog to call." - }, - "options": { - "title": "Options", - "description": "One or more options that are passed to the dialog that is called.", - "additionalProperties": { - "title": "Options", - "description": "Options for replacing dialog." - } - }, - "activityProcessed": { - "title": "Activity Processed", - "description": "When set to false, the dialog that is called can process the current activity." - }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -3839,9 +3889,9 @@ } } }, - "Microsoft.ResourceMultiLanguageGenerator": { - "title": "Resource Multi-Language Generator", - "description": "MultiLanguage Generator which is bound to resource by resource Id.", + "Microsoft.QnAMakerDialog": { + "title": "QnAMaker dialog", + "description": "Dialog which uses QnAMAker knowledge base to answer questions.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3849,49 +3899,83 @@ } }, "properties": { - "id": { - "title": "Id", - "description": "Optional generator ID." + "knowledgeBaseId": { + "title": "KnowledgeBase Id", + "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase." }, - "resourceId": { - "title": "Resource Id", - "description": "Resource which is the root language generator. Other generaters with the same name and language suffix will be loaded into this generator and used based on the Language Policy." + "endpointKey": { + "title": "Endpoint key", + "description": "Endpoint key for the QnA Maker KB." }, - "languagePolicy": { - "title": "Language Policy", - "description": "Set alternate language policy for this generator. If not set, the global language policy will be used." + "hostname": { + "title": "Hostname", + "description": "Hostname for your QnA Maker service." }, - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + "noAnswer": { + "title": "Fallback answer", + "description": "Default answer to return when none found in KB." }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "Microsoft.SendActivity": { - "title": "Send an activity", - "description": "Respond with an activity.", - "patternProperties": { - "^\\$": { - "title": "Tooling property", - "description": "Open ended property for tooling." - } - }, - "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" + "threshold": { + "title": "Threshold", + "description": "Threshold score to filter results." }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." + "activeLearningCardTitle": { + "title": "Active learning card title", + "description": "Title for active learning suggestions card." }, - "activity": { - "title": "Activity", - "description": "Activity to send." + "cardNoMatchText": { + "title": "Card no match text", + "description": "Text for no match option." + }, + "cardNoMatchResponse": { + "title": "Card no match response", + "description": "Custom response when no match option was selected." + }, + "strictFilters": { + "title": "Strict filters", + "description": "Metadata filters to use when calling the QnA Maker KB.", + "items": { + "title": "Metadata filter", + "description": "Metadata filter.", + "properties": { + "name": { + "title": "Name", + "description": "Name of filter property." + }, + "value": { + "title": "Value", + "description": "Value to filter on." + } + } + } + }, + "top": { + "title": "Top", + "description": "The number of answers you want to retrieve." + }, + "isTest": { + "title": "IsTest", + "description": "True, if pointing to Test environment, else false." + }, + "rankerType": { + "title": "Ranker type", + "description": "Type of Ranker.", + "oneOf": { + "0": { + "title": "Standard ranker", + "description": "Standard ranker types." + } + } + }, + "strictFiltersJoinOperator": { + "title": "StrictFiltersJoinOperator", + "description": "Join operator for Strict Filters.", + "oneOf": { + "0": { + "title": "Join operator", + "description": "Value of Join Operator to be used as conjunction with Strict Filter values." + } + } }, "$kind": { "title": "Kind of dialog object", @@ -3903,9 +3987,9 @@ } } }, - "Microsoft.SetProperties": { - "title": "Set property", - "description": "Set one or more property values.", + "Microsoft.QnAMakerRecognizer": { + "title": "QnAMaker recognizer", + "description": "Recognizer for generating QnAMatch intents from a KB.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3915,30 +3999,100 @@ "properties": { "id": { "title": "Id", - "description": "Optional id for the dialog" + "description": "Optional unique id using with RecognizerSet." }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." + "knowledgeBaseId": { + "title": "KnowledgeBase Id", + "description": "Knowledge base Id of your QnA Maker knowledge base." }, - "assignments": { - "title": "Assignments", - "description": "Property value assignments to set.", + "endpointKey": { + "title": "Endpoint key", + "description": "Endpoint key for the QnA Maker KB." + }, + "hostname": { + "title": "Hostname", + "description": "Hostname for your QnA Maker service." + }, + "threshold": { + "title": "Threshold", + "description": "Threshold score to filter results." + }, + "strictFilters": { + "title": "Strict filters", + "description": "Metadata filters to use when calling the QnA Maker KB.", "items": { - "title": "Assignment", - "description": "Property assignment.", + "title": "Metadata filters", + "description": "Metadata filters to use when querying QnA Maker KB.", "properties": { - "property": { - "title": "Property", - "description": "Property (named location to store information)." + "name": { + "title": "Name", + "description": "Name to filter on." }, "value": { "title": "Value", - "description": "New value or expression." + "description": "Value to restrict filter." + } + } + } + }, + "top": { + "title": "Top", + "description": "The number of answers you want to retrieve." + }, + "isTest": { + "title": "Use test environment", + "description": "True, if pointing to Test environment, else false." + }, + "rankerType": { + "title": "Ranker type", + "description": "Type of Ranker.", + "oneOf": { + "0": { + "title": "Ranker type", + "description": "Type of Ranker." + } + } + }, + "strictFiltersJoinOperator": { + "title": "StrictFiltersJoinOperator", + "description": "Join operator for Strict Filters.", + "oneOf": { + "0": { + "title": "Join operator", + "description": "Value of Join Operator to be used as onjuction with Strict Filter values." + } + } + }, + "includeDialogNameInMetadata": { + "title": "Include dialog name", + "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true" + }, + "metadata": { + "title": "Metadata filters", + "description": "Metadata filters to use when calling the QnA Maker KB.", + "items": { + "title": "Metadata filter", + "description": "Metadata filter to use when calling the QnA Maker KB.", + "properties": { + "name": { + "title": "Name", + "description": "Name of value to test." + }, + "value": { + "title": "Value", + "description": "Value to filter against." } } } }, + "context": { + "title": "QnA request context", + "description": "Context to use for ranking." + }, + "qnaId": { + "title": "QnA Id", + "description": "A number or expression which is the QnAId to paass to QnAMaker API." + }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -3949,9 +4103,9 @@ } } }, - "Microsoft.SetProperty": { - "title": "Set property", - "description": "Set property to a value.", + "Microsoft.RandomSelector": { + "title": "Random rule selector", + "description": "Select most specific true rule.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3959,21 +4113,9 @@ } }, "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "property": { - "title": "Property", - "description": "Property (named location to store information)." - }, - "value": { - "title": "Value", - "description": "New value or expression." + "seed": { + "title": "Random seed", + "description": "Random seed to start random number generation." }, "$kind": { "title": "Kind of dialog object", @@ -3985,9 +4127,9 @@ } } }, - "Microsoft.SignOutUser": { - "title": "Sign Out User", - "description": "Sign a user out that was logged in previously using OAuthInput.", + "Microsoft.RecognizerSet": { + "title": "Recognizer set", + "description": "Creates the union of the intents and entities of the recognizers in the set.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -3997,19 +4139,11 @@ "properties": { "id": { "title": "Id", - "description": "Optional id for the dialog" - }, - "userId": { - "title": "UserId", - "description": "Expression to an user to signout. Default is user.id." - }, - "connectionName": { - "title": "Connection Name", - "description": "Connection name that was used with OAuthInput to log a user in." + "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." + "recognizers": { + "title": "Recognizers", + "description": "List of Recognizers defined for this set." }, "$kind": { "title": "Kind of dialog object", @@ -4021,9 +4155,9 @@ } } }, - "Microsoft.StaticActivityTemplate": { - "title": "Microsoft Static Activity Template", - "description": "This allows you to define a static Activity object", + "Microsoft.RegexEntityRecognizer": { + "title": "Regex entity recognizer", + "description": "Recognizer which recognizes patterns of input based on regex.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4031,9 +4165,13 @@ } }, "properties": { - "activity": { - "title": "Activity", - "description": "A static Activity to used." + "name": { + "title": "Name", + "description": "Name of the entity" + }, + "pattern": { + "title": "Pattern", + "description": "Pattern expressed as regular expression." }, "$kind": { "title": "Kind of dialog object", @@ -4045,9 +4183,9 @@ } } }, - "Microsoft.SwitchCondition": { - "title": "Switch condition", - "description": "Execute different actions based on the value of a property.", + "Microsoft.RegexRecognizer": { + "title": "Regex recognizer", + "description": "Use regular expressions to recognize intents and entities from user input.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4057,37 +4195,29 @@ "properties": { "id": { "title": "Id", - "description": "Optional id for the dialog" - }, - "condition": { - "title": "Condition", - "description": "Property to evaluate." - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." + "description": "Optional unique id using with RecognizerSet. Other recognizers should return 'DeferToRecognizer_{Id}' intent when cross training data for this recognizer." }, - "cases": { - "title": "Cases", - "description": "Actions for each possible condition.", + "intents": { + "title": "RegEx patterns to intents", + "description": "Collection of patterns to match for an intent.", "items": { - "title": "Case", - "description": "Case and actions.", + "title": "Pattern", + "description": "Intent and regex pattern.", "properties": { - "value": { - "title": "Value", - "description": "The value to compare the condition with." + "intent": { + "title": "Intent", + "description": "The intent name." }, - "actions": { - "title": "Actions", - "description": "Actions to execute." + "pattern": { + "title": "Pattern", + "description": "The regular expression pattern." } } } }, - "default": { - "title": "Default", - "description": "Actions to execute if none of the cases meet the condition." + "entities": { + "title": "Entity recognizers", + "description": "Collection of entity recognizers to use." }, "$kind": { "title": "Kind of dialog object", @@ -4099,9 +4229,9 @@ } } }, - "Microsoft.TelemetryTrackEvent": { - "title": "Telemetry - Track Event", - "description": "Track a custom event using the registered Telemetry Client.", + "Microsoft.RepeatDialog": { + "title": "Repeat dialog", + "description": "Repeat current dialog.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4113,17 +4243,25 @@ "title": "Id", "description": "Optional id for the dialog" }, + "allowLoop": { + "title": "AllowLoop", + "description": "Optional condition which if true will allow loop of the repeated dialog." + }, "disabled": { "title": "Disabled", "description": "Optional condition which if true will disable this action." }, - "eventName": { - "title": "Event Name", - "description": "The name of the event to track." + "options": { + "title": "Options", + "description": "One or more options that are passed to the dialog that is called.", + "additionalProperties": { + "title": "Options", + "description": "Options for repeating dialog." + } }, - "properties": { - "title": "Properties", - "description": "One or more properties to attach to the event being tracked." + "activityProcessed": { + "title": "Activity processed", + "description": "When set to false, the dialog that is called can process the current activity." }, "$kind": { "title": "Kind of dialog object", @@ -4135,9 +4273,9 @@ } } }, - "Microsoft.TemperatureEntityRecognizer": { - "title": "Temperature Recognizer", - "description": "Recognizer which recognizes temperatures.", + "Microsoft.ReplaceDialog": { + "title": "Replace dialog", + "description": "Replace current dialog with another dialog.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4145,6 +4283,35 @@ } }, "properties": { + "id": { + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "dialog": { + "oneOf": { + "0": { + "title": "Dialog" + } + }, + "title": "Dialog name", + "description": "Name of the dialog to call." + }, + "options": { + "title": "Options", + "description": "One or more options that are passed to the dialog that is called.", + "additionalProperties": { + "title": "Options", + "description": "Options for replacing dialog." + } + }, + "activityProcessed": { + "title": "Activity processed", + "description": "When set to false, the dialog that is called can process the current activity." + }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -4155,9 +4322,9 @@ } } }, - "Microsoft.TemplateEngineLanguageGenerator": { - "title": "Template Multi-Language Generator", - "description": "Template Generator which allows only inline evaluation of templates.", + "Microsoft.ResourceMultiLanguageGenerator": { + "title": "Resource multi-language generator", + "description": "MultiLanguage Generator which is bound to resource by resource Id.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4169,6 +4336,14 @@ "title": "Id", "description": "Optional generator ID." }, + "resourceId": { + "title": "Resource Id", + "description": "Resource which is the root language generator. Other generaters with the same name and language suffix will be loaded into this generator and used based on the Language Policy." + }, + "languagePolicy": { + "title": "Language policy", + "description": "Set alternate language policy for this generator. If not set, the global language policy will be used." + }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -4179,9 +4354,9 @@ } } }, - "Microsoft.TextInput": { - "title": "Text input dialog", - "description": "Collection information - Ask for a word or sentence.", + "Microsoft.SendActivity": { + "title": "Send an activity", + "description": "Respond with an activity.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4189,18 +4364,6 @@ } }, "properties": { - "defaultValue": { - "title": "Default value", - "description": "'Property' will be set to the value of this expression when max turn count is exceeded." - }, - "value": { - "title": "Value", - "description": "'Property' will be set to the value of this expression unless it evaluates to null." - }, - "outputFormat": { - "title": "Output format", - "description": "Expression to format the output." - }, "id": { "title": "Id", "description": "Optional id for the dialog" @@ -4209,45 +4372,9 @@ "title": "Disabled", "description": "Optional condition which if true will disable this action." }, - "prompt": { - "title": "Initial prompt", - "description": "Message to send to collect information." - }, - "unrecognizedPrompt": { - "title": "Unrecognized prompt", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value." - }, - "invalidPrompt": { - "title": "Invalid prompt", - "description": "Message to send when the user input does not meet any validation expression." - }, - "defaultValueResponse": { - "title": "Default value response", - "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value." - }, - "maxTurnCount": { - "title": "Max turn count", - "description": "Maximum number of re-prompt attempts to collect information." - }, - "validations": { - "title": "Validation expressions", - "description": "Expression to validate user input.", - "items": { - "title": "Condition", - "description": "Expression which needs to met for the input to be considered valid" - } - }, - "property": { - "title": "Property", - "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." - }, - "alwaysPrompt": { - "title": "Always prompt", - "description": "Collect information even if the specified 'property' is not empty." - }, - "allowInterruptions": { - "title": "Allow Interruptions", - "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." + "activity": { + "title": "Activity", + "description": "Activity to send." }, "$kind": { "title": "Kind of dialog object", @@ -4259,9 +4386,9 @@ } } }, - "Microsoft.TextTemplate": { - "title": "Microsoft TextTemplate", - "description": "Use LG Templates to create text", + "Microsoft.SetProperties": { + "title": "Set property", + "description": "Set one or more property values.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4269,9 +4396,31 @@ } }, "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to evaluate to create the text." + "id": { + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "assignments": { + "title": "Assignments", + "description": "Property value assignments to set.", + "items": { + "title": "Assignment", + "description": "Property assignment.", + "properties": { + "property": { + "title": "Property", + "description": "Property (named location to store information)." + }, + "value": { + "title": "Value", + "description": "New value or expression." + } + } + } }, "$kind": { "title": "Kind of dialog object", @@ -4283,9 +4432,9 @@ } } }, - "Microsoft.TraceActivity": { - "title": "Send a TraceActivity", - "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", + "Microsoft.SetProperty": { + "title": "Set property", + "description": "Set property to a value.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4301,21 +4450,13 @@ "title": "Disabled", "description": "Optional condition which if true will disable this action." }, - "name": { - "title": "Name", - "description": "Name of the trace activity" - }, - "label": { - "title": "Label", - "description": "Label for the trace activity (used to identify it in a list of trace activities.)" - }, - "valueType": { - "title": "Value type", - "description": "Type of value" + "property": { + "title": "Property", + "description": "Property (named location to store information)." }, "value": { "title": "Value", - "description": "Property that holds the value to send as trace activity." + "description": "New value or expression." }, "$kind": { "title": "Kind of dialog object", @@ -4327,9 +4468,9 @@ } } }, - "Microsoft.TrueSelector": { - "title": "True Trigger Selector", - "description": "Selector for all true events", + "Microsoft.SignOutUser": { + "title": "Sign out user", + "description": "Sign a user out that was logged in previously using OAuthInput.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4337,6 +4478,22 @@ } }, "properties": { + "id": { + "title": "Id", + "description": "Optional id for the dialog" + }, + "userId": { + "title": "UserId", + "description": "Expression to an user to signout. Default is user.id." + }, + "connectionName": { + "title": "Connection name", + "description": "Connection name that was used with OAuthInput to log a user in." + }, + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -4347,9 +4504,9 @@ } } }, - "Microsoft.UpdateActivity": { - "title": "Update an activity", - "description": "Respond with an activity.", + "Microsoft.StaticActivityTemplate": { + "title": "Microsoft static activity template", + "description": "This allows you to define a static Activity object", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4357,21 +4514,9 @@ } }, "properties": { - "id": { - "title": "Id", - "description": "Optional id for the dialog" - }, - "disabled": { - "title": "Disabled", - "description": "Optional condition which if true will disable this action." - }, - "activityId": { - "title": "Activity Id", - "description": "An string expression with the activity id to update." - }, "activity": { "title": "Activity", - "description": "Activity to send." + "description": "A static Activity to used." }, "$kind": { "title": "Kind of dialog object", @@ -4383,9 +4528,9 @@ } } }, - "Microsoft.UrlEntityRecognizer": { - "title": "Confirmation Url Recognizer", - "description": "Recognizer which recognizes urls.", + "Microsoft.SwitchCondition": { + "title": "Switch condition", + "description": "Execute different actions based on the value of a property.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4393,37 +4538,53 @@ } }, "properties": { - "$kind": { - "title": "Kind of dialog object", - "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + "id": { + "title": "Id", + "description": "Optional id for the dialog" }, - "$designer": { - "title": "Designer information", - "description": "Extra information for the Bot Framework Composer." - } - } - }, - "arrayExpression": { - "title": "Array or expression", - "description": "Array or expression to evaluate.", - "oneOf": { - "0": { - "title": "Array", - "description": "Array constant." - } - } - }, - "booleanExpression": { - "title": "Boolean or expression", - "description": "Boolean constant or expression to evaluate.", - "oneOf": { - "0": { - "title": "Boolean", - "description": "Boolean constant." + "condition": { + "title": "Condition", + "description": "Property to evaluate." + }, + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "cases": { + "title": "Cases", + "description": "Actions for each possible condition.", + "items": { + "title": "Case", + "description": "Case and actions.", + "properties": { + "value": { + "title": "Value", + "description": "The value to compare the condition with." + }, + "actions": { + "title": "Actions", + "description": "Actions to execute." + } + } + } + }, + "default": { + "title": "Default", + "description": "Actions to execute if none of the cases meet the condition." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." } } }, - "component": { + "Microsoft.TelemetryTrackEvent": { + "title": "Telemetry - track event", + "description": "Track a custom event using the registered Telemetry Client.", "patternProperties": { "^\\$": { "title": "Tooling property", @@ -4431,6 +4592,22 @@ } }, "properties": { + "id": { + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "eventName": { + "title": "Event name", + "description": "The name of the event to track." + }, + "properties": { + "title": "Properties", + "description": "One or more properties to attach to the event being tracked." + }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" @@ -4441,480 +4618,429 @@ } } }, - "condition": { - "title": "Boolean condition", - "description": "Boolean constant or expression to evaluate.", - "oneOf": { - "1": { - "title": "Boolean", - "description": "Boolean value." + "Microsoft.TemperatureEntityRecognizer": { + "title": "Temperature recognizer", + "description": "Recognizer which recognizes temperatures.", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." } - } - }, - "equalsExpression": { - "title": "Expression", - "description": "Expression starting with =." - }, - "expression": { - "title": "Expression", - "description": "Expression to evaluate." - }, - "integerExpression": { - "title": "Integer or expression", - "description": "Integer constant or expression to evaluate.", - "oneOf": { - "0": { - "title": "Integer", - "description": "Integer constant." + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." } } }, - "numberExpression": { - "title": "Number or expression", - "description": "Number constant or expression to evaluate.", - "oneOf": { - "0": { - "title": "Number", - "description": "Number constant." + "Microsoft.TemplateEngineLanguageGenerator": { + "title": "Template multi-language generator", + "description": "Template Generator which allows only inline evaluation of templates.", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." } - } - }, - "objectExpression": { - "title": "Object or expression", - "description": "Object or expression to evaluate.", - "oneOf": { - "0": { - "title": "Object", - "description": "Object constant." + }, + "properties": { + "id": { + "title": "Id", + "description": "Optional generator ID." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." } } }, - "role": { - "title": "$role", - "description": "Defines the role played in the dialog schema from [expression|interface|implements($kind)|extends($kind)]." - }, - "stringExpression": { - "title": "String or expression", - "description": "Interpolated string or expression to evaluate.", - "oneOf": { - "0": { - "title": "String", - "description": "Interpolated string" + "Microsoft.TextInput": { + "title": "Text input dialog", + "description": "Collection information - Ask for a word or sentence.", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." } - } - }, - "valueExpression": { - "title": "Any or expression", - "description": "Any constant or expression to evaluate.", - "oneOf": { - "0": { - "title": "Object", - "description": "Object constant." + }, + "properties": { + "defaultValue": { + "title": "Default value", + "description": "'Property' will be set to the value of this expression when max turn count is exceeded." }, - "1": { - "title": "Array", - "description": "Array constant." + "value": { + "title": "Value", + "description": "'Property' will be set to the value of this expression unless it evaluates to null." }, - "2": { - "title": "String", - "description": "Interpolated string." + "outputFormat": { + "title": "Output format", + "description": "Expression to format the output." }, - "3": { - "title": "Boolean", - "description": "Boolean constant" + "id": { + "title": "Id", + "description": "Optional id for the dialog" }, - "4": { - "title": "Number", - "description": "Number constant." - } - } - }, - "schema": { - "title": "Core schema meta-schema" - }, - "botframework.json": { - "definitions": { - "ChannelAccount": { - "description": "Channel account information needed to route a message", - "title": "ChannelAccount", - "properties": { - "id": { - "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", - "title": "id" - }, - "name": { - "description": "Display friendly name", - "title": "name" - }, - "aadObjectId": { - "description": "This account's object ID within Azure Active Directory (AAD)", - "title": "aadObjectId" - }, - "role": { - "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", - "title": "role" - } - } + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." }, - "ConversationAccount": { - "description": "Channel account information for a conversation", - "title": "ConversationAccount", - "properties": { - "isGroup": { - "description": "Indicates whether the conversation contains more than two participants at the time the\nactivity was generated", - "title": "isGroup" - }, - "conversationType": { - "description": "Indicates the type of the conversation in channels that distinguish between conversation types", - "title": "conversationType" - }, - "id": { - "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", - "title": "id" - }, - "name": { - "description": "Display friendly name", - "title": "name" - }, - "aadObjectId": { - "description": "This account's object ID within Azure Active Directory (AAD)", - "title": "aadObjectId" - }, - "role": { - "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", - "title": "role" - } - } + "prompt": { + "title": "Initial prompt", + "description": "Message to send to collect information." }, - "MessageReaction": { - "description": "Message reaction object", - "title": "MessageReaction", - "properties": { - "type": { - "description": "Message reaction type. Possible values include: 'like', 'plusOne'", - "title": "type" - } - } + "unrecognizedPrompt": { + "title": "Unrecognized prompt", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value." }, - "CardAction": { - "description": "A clickable action", - "title": "CardAction", - "properties": { - "type": { - "description": "The type of action implemented by this button. Possible values include: 'openUrl', 'imBack',\n'postBack', 'playAudio', 'playVideo', 'showImage', 'downloadFile', 'signin', 'call',\n'payment', 'messageBack'", - "title": "type" - }, - "title": { - "description": "Text description which appears on the button", - "title": "title" - }, - "image": { - "description": "Image URL which will appear on the button, next to text label", - "title": "image" - }, - "text": { - "description": "Text for this action", - "title": "text" - }, - "displayText": { - "description": "(Optional) text to display in the chat feed if the button is clicked", - "title": "displayText" - }, - "value": { - "description": "Supplementary parameter for action. Content of this property depends on the ActionType", - "title": "value" - }, - "channelData": { - "description": "Channel-specific data associated with this action", - "title": "channelData" - } - } + "invalidPrompt": { + "title": "Invalid prompt", + "description": "Message to send when the user input does not meet any validation expression." }, - "SuggestedActions": { - "description": "SuggestedActions that can be performed", - "title": "SuggestedActions", - "properties": { - "to": { - "description": "Ids of the recipients that the actions should be shown to. These Ids are relative to the\nchannelId and a subset of all recipients of the activity", - "title": "to", - "items": { - "title": "Id", - "description": "Id of recipient." - } - }, - "actions": { - "description": "Actions that can be shown to the user", - "title": "actions" - } - } + "defaultValueResponse": { + "title": "Default value response", + "description": "Message to send when max turn count (if specified) has been exceeded and the default value is selected as the value." }, - "Attachment": { - "description": "An attachment within an activity", - "title": "Attachment", - "properties": { - "contentType": { - "description": "mimetype/Contenttype for the file", - "title": "contentType" - }, - "contentUrl": { - "description": "Content Url", - "title": "contentUrl" - }, - "content": { - "description": "Embedded content", - "title": "content" - }, - "name": { - "description": "(OPTIONAL) The name of the attachment", - "title": "name" - }, - "thumbnailUrl": { - "description": "(OPTIONAL) Thumbnail associated with attachment", - "title": "thumbnailUrl" - } - } + "maxTurnCount": { + "title": "Max turn count", + "description": "Maximum number of re-prompt attempts to collect information." }, - "Entity": { - "description": "Metadata object pertaining to an activity", - "title": "Entity", - "properties": { - "type": { - "description": "Type of this entity (RFC 3987 IRI)", - "title": "type" - } + "validations": { + "title": "Validation expressions", + "description": "Expression to validate user input.", + "items": { + "title": "Condition", + "description": "Expression which needs to met for the input to be considered valid" } }, - "ConversationReference": { - "description": "An object relating to a particular point in a conversation", - "title": "ConversationReference", - "properties": { - "activityId": { - "description": "(Optional) ID of the activity to refer to", - "title": "activityId" - }, - "user": { - "description": "(Optional) User participating in this conversation", - "title": "user" - }, - "bot": { - "description": "Bot participating in this conversation", - "title": "bot" - }, - "conversation": { - "description": "Conversation reference", - "title": "conversation" - }, - "channelId": { - "description": "Channel ID", - "title": "channelId" - }, - "serviceUrl": { - "description": "Service endpoint where operations concerning the referenced conversation may be performed", - "title": "serviceUrl" - } - } + "property": { + "title": "Property", + "description": "Property to store collected information. Input will be skipped if property has value (unless 'Always prompt' is true)." }, - "TextHighlight": { - "description": "Refers to a substring of content within another field", - "title": "TextHighlight", - "properties": { - "text": { - "description": "Defines the snippet of text to highlight", - "title": "text" - }, - "occurrence": { - "description": "Occurrence of the text field within the referenced text, if multiple exist.", - "title": "occurrence" - } - } + "alwaysPrompt": { + "title": "Always prompt", + "description": "Collect information even if the specified 'property' is not empty." }, - "SemanticAction": { - "description": "Represents a reference to a programmatic action", - "title": "SemanticAction", - "properties": { - "id": { - "description": "ID of this action", - "title": "id" - }, - "entities": { - "description": "Entities associated with this action", - "title": "entities" - } - } + "allowInterruptions": { + "title": "Allow Interruptions", + "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input." }, - "Activity": { - "description": "An Activity is the basic communication type for the Bot Framework 3.0 protocol.", + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TextTemplate": { + "title": "Microsoft TextTemplate", + "description": "Use LG Templates to create text", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "template": { + "title": "Template", + "description": "Language Generator template to evaluate to create the text." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ThrowException": { + "title": "Throw an exception", + "description": "Throw an exception. Capture this exception with OnError trigger.", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "errorValue": { + "title": "Error value", + "description": "Error value to throw." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TraceActivity": { + "title": "Send a TraceActivity", + "description": "Send a trace activity to the transcript logger and/ or Bot Framework Emulator.", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "name": { + "title": "Name", + "description": "Name of the trace activity" + }, + "label": { + "title": "Label", + "description": "Label for the trace activity (used to identify it in a list of trace activities.)" + }, + "valueType": { + "title": "Value type", + "description": "Type of value" + }, + "value": { + "title": "Value", + "description": "Property that holds the value to send as trace activity." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.TrueSelector": { + "title": "True trigger selector", + "description": "Selector for all true events", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.UpdateActivity": { + "title": "Update an activity", + "description": "Respond with an activity.", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "title": "Disabled", + "description": "Optional condition which if true will disable this action." + }, + "activityId": { + "title": "Activity Id", + "description": "An string expression with the activity id to update." + }, + "activity": { "title": "Activity", - "properties": { - "type": { - "description": "Contains the activity type. Possible values include: 'message', 'contactRelationUpdate',\n'conversationUpdate', 'typing', 'endOfConversation', 'event', 'invoke', 'deleteUserData',\n'messageUpdate', 'messageDelete', 'installationUpdate', 'messageReaction', 'suggestion',\n'trace', 'handoff'", - "title": "type" - }, - "id": { - "description": "Contains an ID that uniquely identifies the activity on the channel.", - "title": "id" - }, - "timestamp": { - "description": "Contains the date and time that the message was sent, in UTC, expressed in ISO-8601 format.", - "title": "timestamp" - }, - "localTimestamp": { - "description": "Contains the date and time that the message was sent, in local time, expressed in ISO-8601\nformat.\nFor example, 2016-09-23T13:07:49.4714686-07:00.", - "title": "localTimestamp" - }, - "localTimezone": { - "description": "Contains the name of the timezone in which the message, in local time, expressed in IANA Time\nZone database format.\nFor example, America/Los_Angeles.", - "title": "localTimezone" - }, - "serviceUrl": { - "description": "Contains the URL that specifies the channel's service endpoint. Set by the channel.", - "title": "serviceUrl" - }, - "channelId": { - "description": "Contains an ID that uniquely identifies the channel. Set by the channel.", - "title": "channelId" - }, - "from": { - "description": "Identifies the sender of the message.", - "title": "from" - }, - "conversation": { - "description": "Identifies the conversation to which the activity belongs.", - "title": "conversation" - }, - "recipient": { - "description": "Identifies the recipient of the message.", - "title": "recipient" - }, - "textFormat": { - "description": "Format of text fields Default:markdown. Possible values include: 'markdown', 'plain', 'xml'", - "title": "textFormat" - }, - "attachmentLayout": { - "description": "The layout hint for multiple attachments. Default: list. Possible values include: 'list',\n'carousel'", - "title": "attachmentLayout" - }, - "membersAdded": { - "description": "The collection of members added to the conversation.", - "title": "membersAdded" - }, - "membersRemoved": { - "description": "The collection of members removed from the conversation.", - "title": "membersRemoved" - }, - "reactionsAdded": { - "description": "The collection of reactions added to the conversation.", - "title": "reactionsAdded" - }, - "reactionsRemoved": { - "description": "The collection of reactions removed from the conversation.", - "title": "reactionsRemoved" - }, - "topicName": { - "description": "The updated topic name of the conversation.", - "title": "topicName" - }, - "historyDisclosed": { - "description": "Indicates whether the prior history of the channel is disclosed.", - "title": "historyDisclosed" - }, - "locale": { - "description": "A locale name for the contents of the text field.\nThe locale name is a combination of an ISO 639 two- or three-letter culture code associated\nwith a language\nand an ISO 3166 two-letter subculture code associated with a country or region.\nThe locale name can also correspond to a valid BCP-47 language tag.", - "title": "locale" - }, - "text": { - "description": "The text content of the message.", - "title": "text" - }, - "speak": { - "description": "The text to speak.", - "title": "speak" - }, - "inputHint": { - "description": "Indicates whether your bot is accepting,\nexpecting, or ignoring user input after the message is delivered to the client. Possible\nvalues include: 'acceptingInput', 'ignoringInput', 'expectingInput'", - "title": "inputHint" - }, - "summary": { - "description": "The text to display if the channel cannot render cards.", - "title": "summary" - }, - "suggestedActions": { - "description": "The suggested actions for the activity.", - "title": "suggestedActions" - }, - "attachments": { - "description": "Attachments", - "title": "attachments" - }, - "entities": { - "description": "Represents the entities that were mentioned in the message.", - "title": "entities" - }, - "channelData": { - "description": "Contains channel-specific content.", - "title": "channelData" - }, - "action": { - "description": "Indicates whether the recipient of a contactRelationUpdate was added or removed from the\nsender's contact list.", - "title": "action" - }, - "replyToId": { - "description": "Contains the ID of the message to which this message is a reply.", - "title": "replyToId" - }, - "label": { - "description": "A descriptive label for the activity.", - "title": "label" - }, - "valueType": { - "description": "The type of the activity's value object.", - "title": "valueType" - }, - "value": { - "description": "A value that is associated with the activity.", - "title": "value" - }, - "name": { - "description": "The name of the operation associated with an invoke or event activity.", - "title": "name" - }, - "relatesTo": { - "description": "A reference to another conversation or activity.", - "title": "relatesTo" - }, - "code": { - "description": "The a code for endOfConversation activities that indicates why the conversation ended.\nPossible values include: 'unknown', 'completedSuccessfully', 'userCancelled', 'botTimedOut',\n'botIssuedInvalidMessage', 'channelFailed'", - "title": "code" - }, - "expiration": { - "description": "The time at which the activity should be considered to be \"expired\" and should not be\npresented to the recipient.", - "title": "expiration" - }, - "importance": { - "description": "The importance of the activity. Possible values include: 'low', 'normal', 'high'", - "title": "importance" - }, - "deliveryMode": { - "description": "A delivery hint to signal to the recipient alternate delivery paths for the activity.\nThe default delivery mode is \"default\". Possible values include: 'normal', 'notification'", - "title": "deliveryMode" - }, - "listenFor": { - "description": "List of phrases and references that speech and language priming systems should listen for", - "title": "listenFor", - "items": { - "title": "Phrase", - "description": "Phrase to listen for." - } - }, - "textHighlights": { - "description": "The collection of text fragments to highlight when the activity contains a ReplyToId value.", - "title": "textHighlights" - }, - "semanticAction": { - "description": "An optional programmatic action accompanying this request", - "title": "semanticAction" - } - } + "description": "Activity to send." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.UrlEntityRecognizer": { + "title": "Url recognizer", + "description": "Recognizer which recognizes urls.", + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "arrayExpression": { + "title": "Array or expression", + "description": "Array or expression to evaluate.", + "oneOf": { + "0": { + "title": "Array", + "description": "Array constant." + } + } + }, + "booleanExpression": { + "title": "Boolean or expression", + "description": "Boolean constant or expression to evaluate.", + "oneOf": { + "0": { + "title": "Boolean", + "description": "Boolean constant." + } + } + }, + "component": { + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)" + }, + "$designer": { + "title": "Designer information", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "condition": { + "title": "Boolean condition", + "description": "Boolean constant or expression to evaluate.", + "oneOf": { + "1": { + "title": "Boolean", + "description": "Boolean value." + } + } + }, + "equalsExpression": { + "title": "Expression", + "description": "Expression starting with =." + }, + "expression": { + "title": "Expression", + "description": "Expression to evaluate." + }, + "integerExpression": { + "title": "Integer or expression", + "description": "Integer constant or expression to evaluate.", + "oneOf": { + "0": { + "title": "Integer", + "description": "Integer constant." + } + } + }, + "numberExpression": { + "title": "Number or expression", + "description": "Number constant or expression to evaluate.", + "oneOf": { + "0": { + "title": "Number", + "description": "Number constant." + } + } + }, + "objectExpression": { + "title": "Object or expression", + "description": "Object or expression to evaluate.", + "oneOf": { + "0": { + "title": "Object", + "description": "Object constant." + } + } + }, + "role": { + "title": "$role", + "description": "Defines the role played in the dialog schema from [expression|interface|implements($kind)|extends($kind)]." + }, + "stringExpression": { + "title": "String or expression", + "description": "Interpolated string or expression to evaluate.", + "oneOf": { + "0": { + "title": "String", + "description": "Interpolated string" + } + } + }, + "valueExpression": { + "title": "Any or expression", + "description": "Any constant or expression to evaluate.", + "oneOf": { + "0": { + "title": "Object", + "description": "Object constant." + }, + "1": { + "title": "Array", + "description": "Array constant." + }, + "2": { + "title": "String", + "description": "Interpolated string." + }, + "3": { + "title": "Boolean", + "description": "Boolean constant" + }, + "4": { + "title": "Number", + "description": "Number constant." } } } diff --git a/Composer/packages/server/schemas/sdk.en-US.uischema b/Composer/packages/server/schemas/sdk.en-US.uischema index 4e9c20df03..ee6a4a14c3 100644 --- a/Composer/packages/server/schemas/sdk.en-US.uischema +++ b/Composer/packages/server/schemas/sdk.en-US.uischema @@ -11,6 +11,54 @@ } } }, + "Microsoft.Ask": { + "form": { + "label": "Send a response to ask a question", + "subtitle": "Ask Activity" + } + }, + "Microsoft.AttachmentInput": { + "form": { + "label": "Prompt for a file or an attachment", + "subtitle": "Attachment Input" + } + }, + "Microsoft.ChoiceInput": { + "form": { + "label": "Prompt with multi-choice", + "subtitle": "Choice Input" + } + }, + "Microsoft.ConfirmInput": { + "form": { + "label": "Prompt for confirmation", + "subtitle": "Confirm Input" + } + }, + "Microsoft.DateTimeInput": { + "form": { + "label": "Prompt for a date or a time", + "subtitle": "Date Time Input" + } + }, + "Microsoft.NumberInput": { + "form": { + "label": "Prompt for a number", + "subtitle": "Number Input" + } + }, + "Microsoft.OAuthInput": { + "form": { + "label": "OAuth login", + "subtitle": "OAuth Input" + } + }, + "Microsoft.TextInput": { + "form": { + "label": "Prompt for text", + "subtitle": "Text Input" + } + }, "Microsoft.BeginDialog": { "form": { "label": "Begin a new dialog", @@ -172,54 +220,6 @@ "subtitle": "Trace Activity" } }, - "Microsoft.Ask": { - "form": { - "label": "Send a response to ask a question", - "subtitle": "Ask Activity" - } - }, - "Microsoft.AttachmentInput": { - "form": { - "label": "Prompt for a file or an attachment", - "subtitle": "Attachment Input" - } - }, - "Microsoft.ChoiceInput": { - "form": { - "label": "Prompt with multi-choice", - "subtitle": "Choice Input" - } - }, - "Microsoft.ConfirmInput": { - "form": { - "label": "Prompt for confirmation", - "subtitle": "Confirm Input" - } - }, - "Microsoft.DateTimeInput": { - "form": { - "label": "Prompt for a date or a time", - "subtitle": "Date Time Input" - } - }, - "Microsoft.NumberInput": { - "form": { - "label": "Prompt for a number", - "subtitle": "Number Input" - } - }, - "Microsoft.OAuthInput": { - "form": { - "label": "OAuth login", - "subtitle": "OAuth Input" - } - }, - "Microsoft.TextInput": { - "form": { - "label": "Prompt for text", - "subtitle": "Text Input" - } - }, "Microsoft.OnActivity": { "form": { "label": "Activities", diff --git a/Composer/packages/server/schemas/sdk.schema b/Composer/packages/server/schemas/sdk.schema index 4b8c835ad4..a1f0436797 100644 --- a/Composer/packages/server/schemas/sdk.schema +++ b/Composer/packages/server/schemas/sdk.schema @@ -34,6 +34,9 @@ { "$ref": "#/definitions/Microsoft.CancelDialog" }, + { + "$ref": "#/definitions/Microsoft.ChannelMentionEntityRecognizer" + }, { "$ref": "#/definitions/Microsoft.ChoiceInput" }, @@ -46,6 +49,9 @@ { "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" }, + { + "$ref": "#/definitions/Microsoft.ContinueConversationLater" + }, { "$ref": "#/definitions/Microsoft.ContinueLoop" }, @@ -202,6 +208,9 @@ { "$ref": "#/definitions/Microsoft.OnHandoffActivity" }, + { + "$ref": "#/definitions/Microsoft.OnInstallationUpdateActivity" + }, { "$ref": "#/definitions/Microsoft.OnIntent" }, @@ -301,6 +310,9 @@ { "$ref": "#/definitions/Microsoft.TextTemplate" }, + { + "$ref": "#/definitions/Microsoft.ThrowException" + }, { "$ref": "#/definitions/Microsoft.TraceActivity" }, @@ -317,7 +329,7 @@ "definitions": { "Microsoft.ActivityTemplate": { "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft ActivityTemplate", + "title": "Microsoft activity template", "type": "object", "required": [ "template", @@ -325,7 +337,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -356,12 +368,12 @@ }, "Microsoft.AdaptiveDialog": { "$role": "implements(Microsoft.IDialog)", - "title": "Adaptive Dialog", + "title": "Adaptive dialog", "description": "Flexible, data driven dialog that can adapt to the conversation.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -399,7 +411,7 @@ }, "generator": { "$kind": "Microsoft.ILanguageGenerator", - "title": "Language Generator", + "title": "Language generator", "description": "Language generator that generates bot responses.", "$ref": "#/definitions/Microsoft.ILanguageGenerator" }, @@ -425,7 +437,239 @@ "description": "Schema to fill in.", "anyOf": [ { - "$ref": "#/definitions/schema" + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Core schema meta-schema", + "definitions": { + "schemaArray": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + } + }, + "nonNegativeInteger": { + "type": "integer", + "minimum": 0 + }, + "nonNegativeIntegerDefault0": { + "type": "integer", + "minimum": 0, + "default": 0 + }, + "simpleTypes": { + "enum": [ + "array", + "boolean", + "integer", + "null", + "number", + "object", + "string" + ] + }, + "stringArray": { + "type": "array", + "uniqueItems": true, + "default": [], + "items": { + "type": "string" + } + } + }, + "type": [ + "object", + "boolean" + ], + "properties": { + "$schema": { + "type": "string", + "format": "uri" + }, + "$ref": { + "type": "string", + "format": "uri-reference" + }, + "$comment": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "default": true, + "readOnly": { + "type": "boolean", + "default": false + }, + "writeOnly": { + "type": "boolean", + "default": false + }, + "examples": { + "type": "array", + "items": true + }, + "multipleOf": { + "type": "number", + "exclusiveMinimum": 0 + }, + "maximum": { + "type": "number" + }, + "exclusiveMaximum": { + "type": "number" + }, + "minimum": { + "type": "number" + }, + "exclusiveMinimum": { + "type": "number" + }, + "maxLength": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeInteger" + }, + "minLength": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeIntegerDefault0" + }, + "pattern": { + "type": "string", + "format": "regex" + }, + "additionalItems": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + }, + "items": { + "anyOf": [ + { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + }, + { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/schemaArray" + } + ], + "default": true + }, + "maxItems": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeInteger" + }, + "minItems": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeIntegerDefault0" + }, + "uniqueItems": { + "type": "boolean", + "default": false + }, + "contains": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + }, + "maxProperties": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeInteger" + }, + "minProperties": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/nonNegativeIntegerDefault0" + }, + "required": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/stringArray" + }, + "additionalProperties": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + }, + "definitions": { + "type": "object", + "default": {}, + "additionalProperties": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + } + }, + "properties": { + "type": "object", + "default": {}, + "additionalProperties": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + } + }, + "patternProperties": { + "type": "object", + "propertyNames": { + "format": "regex" + }, + "default": {}, + "additionalProperties": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + } + }, + "dependencies": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + }, + { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/stringArray" + } + ] + } + }, + "propertyNames": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + }, + "const": true, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": true + }, + "type": { + "anyOf": [ + { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/simpleTypes" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/simpleTypes" + }, + "minItems": 1, + "uniqueItems": true + } + ] + }, + "format": { + "type": "string" + }, + "contentMediaType": { + "type": "string" + }, + "contentEncoding": { + "type": "string" + }, + "if": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + }, + "then": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + }, + "else": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + }, + "allOf": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/schemaArray" + }, + "anyOf": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/schemaArray" + }, + "oneOf": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0/definitions/schemaArray" + }, + "not": { + "$ref": "#/definitions/Microsoft.AdaptiveDialog/properties/schema/anyOf/0" + } + }, + "default": true }, { "type": "string", @@ -449,13 +693,16 @@ } }, "Microsoft.AgeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Age Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Age entity recognizer", "description": "Recognizer which recognizes age.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -487,12 +734,12 @@ "implements(Microsoft.IDialog)", "extends(Microsoft.SendActivity)" ], - "title": "Send Activity to Ask a question", + "title": "Send activity to ask a question", "description": "This is an action which sends an activity to the user when a response is expected", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -507,7 +754,7 @@ "properties": { "expectedProperties": { "$ref": "#/definitions/arrayExpression", - "title": "Expected Properties", + "title": "Expected properties", "description": "Properties expected from the user.", "examples": [ [ @@ -523,7 +770,7 @@ }, "defaultOperation": { "$ref": "#/definitions/stringExpression", - "title": "Default Operation", + "title": "Default operation", "description": "Sets the default operation that will be used when no operation is recognized in the response to this Ask.", "examples": [ "Add()", @@ -536,7 +783,7 @@ "description": "Optional id for the dialog" }, "disabled": { - "$ref": "#/definitions/stringExpression", + "$ref": "#/definitions/booleanExpression", "title": "Disabled", "description": "Optional condition which if true will disable this action.", "examples": [ @@ -572,7 +819,7 @@ "description": "Collect information - Ask for a file or image.", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "type": "object", "required": [ @@ -592,7 +839,7 @@ "description": "'Property' will be set to the object or the result of this expression when max turn count is exceeded.", "oneOf": [ { - "$ref": "#/definitions/botframework.json/definitions/Attachment", + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/attachments/items", "title": "Object", "description": "Attachment object." }, @@ -607,7 +854,7 @@ "description": "'Property' will be set to the object or the result of this expression unless it evaluates to null.", "oneOf": [ { - "$ref": "#/definitions/botframework.json/definitions/Attachment", + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/attachments/items", "title": "Object", "description": "Attachment object." }, @@ -762,7 +1009,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -823,7 +1070,7 @@ }, "activityProcessed": { "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", + "title": "Activity processed", "description": "When set to false, the dialog that is called can process the current activity.", "default": true }, @@ -856,7 +1103,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -885,7 +1132,7 @@ }, "activityProcessed": { "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", + "title": "Activity processed", "description": "When set to false, the skill will be started using the activity in the current turn context instead of the activity in the Activity property.", "default": true, "examples": [ @@ -918,13 +1165,13 @@ }, "connectionName": { "$ref": "#/definitions/stringExpression", - "title": "OAuth Connection Name (SSO)", + "title": "OAuth connection name (SSO)", "description": "The OAuth Connection Name, that would be used to perform Single SignOn with a skill.", "default": "=settings.connectionName" }, "skillAppId": { "$ref": "#/definitions/stringExpression", - "title": "Skill App ID", + "title": "Skill App Id", "description": "The Microsoft App ID for the skill." }, "skillEndpoint": { @@ -942,13 +1189,13 @@ "$ref": "#/definitions/Microsoft.IActivityTemplate" }, "allowInterruptions": { - "$ref": "schema:#/definitions/booleanExpression", - "title": "Allow Interruptions", + "$ref": "#/definitions/booleanExpression", + "title": "Allow interruptions", "description": "A boolean expression that determines whether the parent should be allowed to interrupt the skill.", "default": true, "examples": [ - true, - "=user.xyz" + true, + "=user.xyz" ] }, "$kind": { @@ -967,7 +1214,7 @@ }, "Microsoft.BreakLoop": { "$role": "implements(Microsoft.IDialog)", - "title": "Break Loop", + "title": "Break loop", "description": "Stop executing this loop", "type": "object", "required": [ @@ -975,7 +1222,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -1019,7 +1266,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -1047,7 +1294,7 @@ }, "activityProcessed": { "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", + "title": "Activity processed", "description": "When set to false, the caller dialog is told it should process the current activity.", "default": true }, @@ -1083,7 +1330,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -1111,7 +1358,7 @@ }, "activityProcessed": { "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", + "title": "Activity processed", "description": "When set to false, the caller dialog is told it should process the current activity.", "default": true }, @@ -1140,6 +1387,42 @@ } } }, + "Microsoft.ChannelMentionEntityRecognizer": { + "$role": [ + "implements(Microsoft.IRecognizer)" + ], + "title": "Channel mention entity recognizer", + "description": "Promotes mention entities passed by a channel via the activity.entities into recognizer result.", + "type": "object", + "$package": { + "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", + "version": "4.11.0-rc2" + }, + "required": [ + "$kind" + ], + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ChannelMentionEntityRecognizer" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, "Microsoft.ChoiceInput": { "$role": [ "implements(Microsoft.IDialog)", @@ -1150,7 +1433,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -1236,7 +1519,7 @@ "description": "Value to return when this choice is selected." }, "action": { - "$ref": "#/definitions/botframework.json/definitions/CardAction", + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/suggestedActions/properties/actions/items", "title": "Action", "description": "Card action for the choice." }, @@ -1493,7 +1776,7 @@ }, "Microsoft.ConditionalSelector": { "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Conditional Trigger Selector", + "title": "Conditional trigger selector", "description": "Use a rule selector based on a condition", "type": "object", "required": [ @@ -1504,7 +1787,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -1551,7 +1834,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -1606,7 +1889,7 @@ ] }, "choiceOptions": { - "title": "Choice Options", + "title": "Choice options", "description": "Choice Options or expression which provides Choice Options to control display choices to the user.", "oneOf": [ { @@ -1696,7 +1979,7 @@ "description": "Value to return when this choice is selected." }, "action": { - "$ref": "#/definitions/botframework.json/definitions/CardAction", + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/suggestedActions/properties/actions/items", "title": "Action", "description": "Card action for the choice." }, @@ -1839,13 +2122,16 @@ } }, "Microsoft.ConfirmationEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Confirmation Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Confirmation entity recognizer", "description": "Recognizer which recognizes confirmation choices (yes/no).", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -1872,9 +2158,71 @@ } } }, + "Microsoft.ContinueConversationLater": { + "$role": "implements(Microsoft.IDialog)", + "title": "Continue conversation later (Queue)", + "description": "Continue conversation at later time (via Azure Storage Queue).", + "type": "object", + "required": [ + "date", + "connectionString", + "$kind" + ], + "$package": { + "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", + "version": "4.11.0-rc2" + }, + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "date": { + "$ref": "#/definitions/stringExpression", + "title": "Date", + "description": "Date in the future as a ISO string when the conversation should continue.", + "examples": [ + "=addHours(utcNow(), 1)" + ] + }, + "value": { + "$ref": "#/definitions/valueExpression", + "title": "Value", + "description": "Value to send in the activity.value." + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.ContinueConversationLater" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, "Microsoft.ContinueLoop": { "$role": "implements(Microsoft.IDialog)", - "title": "Continue Loop", + "title": "Continue loop", "description": "Stop executing this template and continue with the next iteration of the loop.", "type": "object", "required": [ @@ -1882,7 +2230,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -1921,7 +2269,7 @@ }, "Microsoft.CrossTrainedRecognizerSet": { "$role": "implements(Microsoft.IRecognizer)", - "title": "Cross-trained Recognizer Set", + "title": "Cross-trained recognizer set", "description": "Recognizer for selecting between cross trained recognizers.", "type": "object", "required": [ @@ -1930,7 +2278,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -1969,13 +2317,16 @@ } }, "Microsoft.CurrencyEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Currency Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Currency entity recognizer", "description": "Recognizer which recognizes currency.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -2003,13 +2354,16 @@ } }, "Microsoft.DateTimeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "DateTime Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Date and time entity recognizer", "description": "Recognizer which recognizes dates and time fragments.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -2052,7 +2406,7 @@ }, "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -2068,7 +2422,7 @@ "defaultValue": { "$ref": "#/definitions/stringExpression", "format": "date-time", - "title": "Default Date", + "title": "Default date", "description": "'Property' will be set to the value or the result of the expression when max turn count is exceeded.", "examples": [ "=user.birthday" @@ -2217,7 +2571,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -2268,7 +2622,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -2324,7 +2678,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -2373,7 +2727,7 @@ }, "Microsoft.DeleteProperty": { "$role": "implements(Microsoft.IDialog)", - "title": "Delete Property", + "title": "Delete property", "description": "Delete a property and any value it holds.", "type": "object", "required": [ @@ -2382,7 +2736,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -2425,13 +2779,16 @@ } }, "Microsoft.DimensionEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Dimension Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Dimension entity recognizer", "description": "Recognizer which recognizes dimension.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -2470,7 +2827,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -2548,7 +2905,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -2569,7 +2926,7 @@ "oneOf": [ { "type": "string", - "title": "Enum", + "title": "Change type", "description": "Standard change type.", "enum": [ "push", @@ -2599,7 +2956,7 @@ }, "resultProperty": { "$ref": "#/definitions/stringExpression", - "title": "Result Property", + "title": "Result property", "description": "Property to store the result of this action." }, "value": { @@ -2627,13 +2984,16 @@ } }, "Microsoft.EmailEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Email Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Email entity recognizer", "description": "Recognizer which recognizes email.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -2671,7 +3031,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -2760,7 +3120,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -2816,7 +3176,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -2858,12 +3218,12 @@ }, "Microsoft.FirstSelector": { "$role": "implements(Microsoft.ITriggerSelector)", - "title": "First Trigger Selector", + "title": "First trigger selector", "description": "Selector for first true rule", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -2902,7 +3262,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -2980,7 +3340,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -3054,12 +3414,12 @@ }, "Microsoft.GetActivityMembers": { "$role": "implements(Microsoft.IDialog)", - "title": "Get Activity Members", + "title": "Get activity members", "description": "Get the members who are participating in an activity. (BotFrameworkAdapter only)", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -3087,7 +3447,7 @@ }, "activityId": { "$ref": "#/definitions/stringExpression", - "title": "ActivityId", + "title": "Activity Id", "description": "Activity ID or expression to an activityId to use to get the members. If none is defined then the current activity id will be used.", "examples": [ "$lastActivity" @@ -3117,12 +3477,12 @@ }, "Microsoft.GetConversationMembers": { "$role": "implements(Microsoft.IDialog)", - "title": "Get Converation Members", + "title": "Get conversation members", "description": "Get the members who are participating in an conversation. (BotFrameworkAdapter only)", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -3172,7 +3532,7 @@ }, "Microsoft.GotoAction": { "$role": "implements(Microsoft.IDialog)", - "title": "Go to Action", + "title": "Go to action", "description": "Go to an an action by id.", "type": "object", "required": [ @@ -3181,7 +3541,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -3224,13 +3584,16 @@ } }, "Microsoft.GuidEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Guid Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Guid entity recognizer", "description": "Recognizer which recognizes guids.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -3258,13 +3621,16 @@ } }, "Microsoft.HashtagEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Hashtag Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Hashtag entity recognizer", "description": "Recognizer which recognizes Hashtags.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -3303,7 +3669,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -3427,73 +3793,579 @@ "type": "string" }, { - "$ref": "#/definitions/botframework.json/definitions/Activity", "required": [ "type" - ] - }, - { - "$ref": "#/definitions/Microsoft.ActivityTemplate" - }, - { - "$ref": "#/definitions/Microsoft.StaticActivityTemplate" - } - ], - "$package": { - "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.10.0" - } - }, - "Microsoft.IDialog": { - "title": "Microsoft Dialogs", - "description": "Components which derive from Dialog", - "$role": "interface", - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/Microsoft.QnAMakerDialog" - }, - { - "$ref": "#/definitions/Microsoft.AdaptiveDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginDialog" - }, - { - "$ref": "#/definitions/Microsoft.BeginSkill" - }, - { - "$ref": "#/definitions/Microsoft.BreakLoop" - }, - { - "$ref": "#/definitions/Microsoft.CancelAllDialogs" - }, - { - "$ref": "#/definitions/Microsoft.CancelDialog" - }, - { - "$ref": "#/definitions/Microsoft.ContinueLoop" - }, - { - "$ref": "#/definitions/Microsoft.DebugBreak" - }, - { - "$ref": "#/definitions/Microsoft.DeleteActivity" - }, - { - "$ref": "#/definitions/Microsoft.DeleteProperties" - }, - { - "$ref": "#/definitions/Microsoft.DeleteProperty" - }, - { - "$ref": "#/definitions/Microsoft.EditActions" - }, - { - "$ref": "#/definitions/Microsoft.EditArray" - }, + ], + "description": "An Activity is the basic communication type for the Bot Framework 3.0 protocol.", + "title": "Activity", + "type": "object", + "properties": { + "type": { + "description": "Contains the activity type. Possible values include: 'message', 'contactRelationUpdate',\n'conversationUpdate', 'typing', 'endOfConversation', 'event', 'invoke', 'deleteUserData',\n'messageUpdate', 'messageDelete', 'installationUpdate', 'messageReaction', 'suggestion',\n'trace', 'handoff'", + "type": "string", + "title": "type" + }, + "id": { + "description": "Contains an ID that uniquely identifies the activity on the channel.", + "type": "string", + "title": "id" + }, + "timestamp": { + "description": "Contains the date and time that the message was sent, in UTC, expressed in ISO-8601 format.", + "type": "string", + "format": "date-time", + "title": "timestamp" + }, + "localTimestamp": { + "description": "Contains the date and time that the message was sent, in local time, expressed in ISO-8601\nformat.\nFor example, 2016-09-23T13:07:49.4714686-07:00.", + "type": "string", + "format": "date-time", + "title": "localTimestamp" + }, + "localTimezone": { + "description": "Contains the name of the timezone in which the message, in local time, expressed in IANA Time\nZone database format.\nFor example, America/Los_Angeles.", + "type": "string", + "title": "localTimezone" + }, + "serviceUrl": { + "description": "Contains the URL that specifies the channel's service endpoint. Set by the channel.", + "type": "string", + "title": "serviceUrl" + }, + "channelId": { + "description": "Contains an ID that uniquely identifies the channel. Set by the channel.", + "type": "string", + "title": "channelId" + }, + "from": { + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/membersAdded/items", + "description": "Identifies the sender of the message.", + "title": "from" + }, + "conversation": { + "description": "Identifies the conversation to which the activity belongs.", + "title": "conversation", + "type": "object", + "required": [ + "conversationType", + "id", + "isGroup", + "name" + ], + "properties": { + "isGroup": { + "description": "Indicates whether the conversation contains more than two participants at the time the\nactivity was generated", + "type": "boolean", + "title": "isGroup" + }, + "conversationType": { + "description": "Indicates the type of the conversation in channels that distinguish between conversation types", + "type": "string", + "title": "conversationType" + }, + "id": { + "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", + "type": "string", + "title": "id" + }, + "name": { + "description": "Display friendly name", + "type": "string", + "title": "name" + }, + "aadObjectId": { + "description": "This account's object ID within Azure Active Directory (AAD)", + "type": "string", + "title": "aadObjectId" + }, + "role": { + "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", + "enum": [ + "bot", + "user" + ], + "type": "string", + "title": "role" + } + } + }, + "recipient": { + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/membersAdded/items", + "description": "Identifies the recipient of the message.", + "title": "recipient" + }, + "textFormat": { + "description": "Format of text fields Default:markdown. Possible values include: 'markdown', 'plain', 'xml'", + "type": "string", + "title": "textFormat" + }, + "attachmentLayout": { + "description": "The layout hint for multiple attachments. Default: list. Possible values include: 'list',\n'carousel'", + "type": "string", + "title": "attachmentLayout" + }, + "membersAdded": { + "description": "The collection of members added to the conversation.", + "type": "array", + "title": "membersAdded", + "items": { + "description": "Channel account information needed to route a message", + "title": "ChannelAccount", + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", + "type": "string", + "title": "id" + }, + "name": { + "description": "Display friendly name", + "type": "string", + "title": "name" + }, + "aadObjectId": { + "description": "This account's object ID within Azure Active Directory (AAD)", + "type": "string", + "title": "aadObjectId" + }, + "role": { + "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", + "type": "string", + "title": "role" + } + } + } + }, + "membersRemoved": { + "description": "The collection of members removed from the conversation.", + "type": "array", + "title": "membersRemoved", + "items": { + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/membersAdded/items" + } + }, + "reactionsAdded": { + "description": "The collection of reactions added to the conversation.", + "type": "array", + "title": "reactionsAdded", + "items": { + "description": "Message reaction object", + "title": "MessageReaction", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "Message reaction type. Possible values include: 'like', 'plusOne'", + "type": "string", + "title": "type" + } + } + } + }, + "reactionsRemoved": { + "description": "The collection of reactions removed from the conversation.", + "type": "array", + "title": "reactionsRemoved", + "items": { + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/reactionsAdded/items" + } + }, + "topicName": { + "description": "The updated topic name of the conversation.", + "type": "string", + "title": "topicName" + }, + "historyDisclosed": { + "description": "Indicates whether the prior history of the channel is disclosed.", + "type": "boolean", + "title": "historyDisclosed" + }, + "locale": { + "description": "A locale name for the contents of the text field.\nThe locale name is a combination of an ISO 639 two- or three-letter culture code associated\nwith a language\nand an ISO 3166 two-letter subculture code associated with a country or region.\nThe locale name can also correspond to a valid BCP-47 language tag.", + "type": "string", + "title": "locale" + }, + "text": { + "description": "The text content of the message.", + "type": "string", + "title": "text" + }, + "speak": { + "description": "The text to speak.", + "type": "string", + "title": "speak" + }, + "inputHint": { + "description": "Indicates whether your bot is accepting,\nexpecting, or ignoring user input after the message is delivered to the client. Possible\nvalues include: 'acceptingInput', 'ignoringInput', 'expectingInput'", + "type": "string", + "title": "inputHint" + }, + "summary": { + "description": "The text to display if the channel cannot render cards.", + "type": "string", + "title": "summary" + }, + "suggestedActions": { + "description": "The suggested actions for the activity.", + "title": "suggestedActions", + "type": "object", + "required": [ + "actions", + "to" + ], + "properties": { + "to": { + "description": "Ids of the recipients that the actions should be shown to. These Ids are relative to the\nchannelId and a subset of all recipients of the activity", + "type": "array", + "title": "to", + "items": { + "title": "Id", + "description": "Id of recipient.", + "type": "string" + } + }, + "actions": { + "description": "Actions that can be shown to the user", + "type": "array", + "title": "actions", + "items": { + "description": "A clickable action", + "title": "CardAction", + "type": "object", + "required": [ + "title", + "type", + "value" + ], + "properties": { + "type": { + "description": "The type of action implemented by this button. Possible values include: 'openUrl', 'imBack',\n'postBack', 'playAudio', 'playVideo', 'showImage', 'downloadFile', 'signin', 'call',\n'payment', 'messageBack'", + "type": "string", + "title": "type" + }, + "title": { + "description": "Text description which appears on the button", + "type": "string", + "title": "title" + }, + "image": { + "description": "Image URL which will appear on the button, next to text label", + "type": "string", + "title": "image" + }, + "text": { + "description": "Text for this action", + "type": "string", + "title": "text" + }, + "displayText": { + "description": "(Optional) text to display in the chat feed if the button is clicked", + "type": "string", + "title": "displayText" + }, + "value": { + "description": "Supplementary parameter for action. Content of this property depends on the ActionType", + "title": "value" + }, + "channelData": { + "description": "Channel-specific data associated with this action", + "title": "channelData" + } + } + } + } + } + }, + "attachments": { + "description": "Attachments", + "type": "array", + "title": "attachments", + "items": { + "description": "An attachment within an activity", + "title": "Attachment", + "type": "object", + "required": [ + "contentType" + ], + "properties": { + "contentType": { + "description": "mimetype/Contenttype for the file", + "type": "string", + "title": "contentType" + }, + "contentUrl": { + "description": "Content Url", + "type": "string", + "title": "contentUrl" + }, + "content": { + "type": "object", + "description": "Embedded content", + "title": "content" + }, + "name": { + "description": "(OPTIONAL) The name of the attachment", + "type": "string", + "title": "name" + }, + "thumbnailUrl": { + "description": "(OPTIONAL) Thumbnail associated with attachment", + "type": "string", + "title": "thumbnailUrl" + } + } + } + }, + "entities": { + "description": "Represents the entities that were mentioned in the message.", + "type": "array", + "title": "entities", + "items": { + "description": "Metadata object pertaining to an activity", + "title": "Entity", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "Type of this entity (RFC 3987 IRI)", + "type": "string", + "title": "type" + } + } + } + }, + "channelData": { + "description": "Contains channel-specific content.", + "title": "channelData" + }, + "action": { + "description": "Indicates whether the recipient of a contactRelationUpdate was added or removed from the\nsender's contact list.", + "type": "string", + "title": "action" + }, + "replyToId": { + "description": "Contains the ID of the message to which this message is a reply.", + "type": "string", + "title": "replyToId" + }, + "label": { + "description": "A descriptive label for the activity.", + "type": "string", + "title": "label" + }, + "valueType": { + "description": "The type of the activity's value object.", + "type": "string", + "title": "valueType" + }, + "value": { + "description": "A value that is associated with the activity.", + "title": "value" + }, + "name": { + "description": "The name of the operation associated with an invoke or event activity.", + "type": "string", + "title": "name" + }, + "relatesTo": { + "description": "A reference to another conversation or activity.", + "title": "relatesTo", + "type": "object", + "required": [ + "bot", + "channelId", + "conversation", + "serviceUrl" + ], + "properties": { + "activityId": { + "description": "(Optional) ID of the activity to refer to", + "type": "string", + "title": "activityId" + }, + "user": { + "description": "(Optional) User participating in this conversation", + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/membersAdded/items", + "title": "user" + }, + "bot": { + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/membersAdded/items", + "description": "Bot participating in this conversation", + "title": "bot" + }, + "conversation": { + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/conversation", + "description": "Conversation reference", + "title": "conversation" + }, + "channelId": { + "description": "Channel ID", + "type": "string", + "title": "channelId" + }, + "serviceUrl": { + "description": "Service endpoint where operations concerning the referenced conversation may be performed", + "type": "string", + "title": "serviceUrl" + } + } + }, + "code": { + "description": "The a code for endOfConversation activities that indicates why the conversation ended.\nPossible values include: 'unknown', 'completedSuccessfully', 'userCancelled', 'botTimedOut',\n'botIssuedInvalidMessage', 'channelFailed'", + "type": "string", + "title": "code" + }, + "expiration": { + "description": "The time at which the activity should be considered to be \"expired\" and should not be\npresented to the recipient.", + "type": "string", + "format": "date-time", + "title": "expiration" + }, + "importance": { + "description": "The importance of the activity. Possible values include: 'low', 'normal', 'high'", + "type": "string", + "title": "importance" + }, + "deliveryMode": { + "description": "A delivery hint to signal to the recipient alternate delivery paths for the activity.\nThe default delivery mode is \"default\". Possible values include: 'normal', 'notification'", + "type": "string", + "title": "deliveryMode" + }, + "listenFor": { + "description": "List of phrases and references that speech and language priming systems should listen for", + "type": "array", + "title": "listenFor", + "items": { + "type": "string", + "title": "Phrase", + "description": "Phrase to listen for." + } + }, + "textHighlights": { + "description": "The collection of text fragments to highlight when the activity contains a ReplyToId value.", + "type": "array", + "title": "textHighlights", + "items": { + "description": "Refers to a substring of content within another field", + "title": "TextHighlight", + "type": "object", + "required": [ + "occurrence", + "text" + ], + "properties": { + "text": { + "description": "Defines the snippet of text to highlight", + "type": "string", + "title": "text" + }, + "occurrence": { + "description": "Occurrence of the text field within the referenced text, if multiple exist.", + "type": "number", + "title": "occurrence" + } + } + } + }, + "semanticAction": { + "description": "An optional programmatic action accompanying this request", + "title": "semanticAction", + "type": "object", + "required": [ + "entities", + "id" + ], + "properties": { + "id": { + "description": "ID of this action", + "type": "string", + "title": "id" + }, + "entities": { + "description": "Entities associated with this action", + "type": "object", + "title": "entities", + "additionalProperties": { + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1/properties/entities/items" + } + } + } + } + } + }, + { + "$ref": "#/definitions/Microsoft.ActivityTemplate" + }, + { + "$ref": "#/definitions/Microsoft.StaticActivityTemplate" + } + ], + "$package": { + "name": "Microsoft.Bot.Builder.Dialogs.Declarative", + "version": "4.11.0-rc2" + } + }, + "Microsoft.IDialog": { + "title": "Microsoft dialogs", + "description": "Components which derive from Dialog", + "$role": "interface", + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/Microsoft.QnAMakerDialog" + }, + { + "$ref": "#/definitions/Microsoft.AdaptiveDialog" + }, + { + "$ref": "#/definitions/Microsoft.BeginDialog" + }, + { + "$ref": "#/definitions/Microsoft.BeginSkill" + }, + { + "$ref": "#/definitions/Microsoft.BreakLoop" + }, + { + "$ref": "#/definitions/Microsoft.CancelAllDialogs" + }, + { + "$ref": "#/definitions/Microsoft.CancelDialog" + }, + { + "$ref": "#/definitions/Microsoft.ContinueConversationLater" + }, + { + "$ref": "#/definitions/Microsoft.ContinueLoop" + }, + { + "$ref": "#/definitions/Microsoft.DebugBreak" + }, + { + "$ref": "#/definitions/Microsoft.DeleteActivity" + }, + { + "$ref": "#/definitions/Microsoft.DeleteProperties" + }, + { + "$ref": "#/definitions/Microsoft.DeleteProperty" + }, + { + "$ref": "#/definitions/Microsoft.EditActions" + }, + { + "$ref": "#/definitions/Microsoft.EditArray" + }, { "$ref": "#/definitions/Microsoft.EmitEvent" }, @@ -3551,6 +4423,9 @@ { "$ref": "#/definitions/Microsoft.TelemetryTrackEvent" }, + { + "$ref": "#/definitions/Microsoft.ThrowException" + }, { "$ref": "#/definitions/Microsoft.TraceActivity" }, @@ -3584,17 +4459,17 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.10.0" + "version": "4.11.0-rc2" } }, "Microsoft.IEntityRecognizer": { "$role": "interface", - "title": "Entity Recognizers", + "title": "Entity recognizers", "description": "Components which derive from EntityRecognizer.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "oneOf": [ { @@ -3675,11 +4550,11 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" } }, "Microsoft.IRecognizer": { - "title": "Microsoft Recognizer", + "title": "Microsoft recognizer", "description": "Components which derive from Recognizer class", "$role": "interface", "oneOf": [ @@ -3703,11 +4578,68 @@ }, { "$ref": "#/definitions/Microsoft.RegexRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.AgeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.ChannelMentionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.ConfirmationEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.CurrencyEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.DateTimeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.DimensionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.EmailEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.GuidEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.HashtagEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.IpEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.MentionEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.NumberEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.NumberRangeEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.OrdinalEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.PercentageEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.PhoneNumberEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.RegexEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.TemperatureEntityRecognizer" + }, + { + "$ref": "#/definitions/Microsoft.UrlEntityRecognizer" } ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.10.0" + "version": "4.11.0-rc2" } }, "Microsoft.ITextTemplate": { @@ -3724,7 +4656,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Declarative", - "version": "4.10.0" + "version": "4.11.0-rc2" } }, "Microsoft.ITrigger": { @@ -3733,7 +4665,7 @@ "description": "Components which derive from OnCondition class.", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "oneOf": [ { @@ -3789,6 +4721,9 @@ { "$ref": "#/definitions/Microsoft.OnHandoffActivity" }, + { + "$ref": "#/definitions/Microsoft.OnInstallationUpdateActivity" + }, { "$ref": "#/definitions/Microsoft.OnIntent" }, @@ -3827,7 +4762,7 @@ "description": "Components which derive from TriggerSelector class.", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "oneOf": [ { @@ -3864,7 +4799,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -3932,7 +4867,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -4065,13 +5000,16 @@ } }, "Microsoft.IpEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Ip Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "IP entity recognizer", "description": "Recognizer which recognizes internet IP patterns (like 192.1.1.1).", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -4099,12 +5037,12 @@ } }, "Microsoft.LanguagePolicy": { - "title": "Language Policy", + "title": "Language policy", "description": "This represents a policy map for locales lookups to use for language", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -4151,7 +5089,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -4187,7 +5125,7 @@ }, "traceActivity": { "$ref": "#/definitions/booleanExpression", - "title": "Send Trace Activity", + "title": "Send trace activity", "description": "If true, automatically sends a TraceActivity (view in Bot Framework Emulator)." }, "$kind": { @@ -4217,7 +5155,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.AI.Luis", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -4234,12 +5172,17 @@ }, "applicationId": { "$ref": "#/definitions/stringExpression", - "title": "LUIS Application ID", + "title": "LUIS application id", "description": "Application ID for your model from the LUIS service." }, + "version": { + "$ref": "#/definitions/stringExpression", + "title": "LUIS version", + "description": "Optional version to target. If null then predictionOptions.Slot is used." + }, "endpoint": { "$ref": "#/definitions/stringExpression", - "title": "LUIS Endpoint", + "title": "LUIS endpoint", "description": "Endpoint to use for LUIS service like https://westus.api.cognitive.microsoft.com." }, "endpointKey": { @@ -4249,7 +5192,7 @@ }, "externalEntityRecognizer": { "$kind": "Microsoft.IRecognizer", - "title": "External Entity Recognizer", + "title": "External entity recognizer", "description": "Entities recognized by this recognizer will be passed to LUIS as external entities.", "$ref": "#/definitions/Microsoft.IRecognizer" }, @@ -4303,34 +5246,29 @@ "description": "Options to control LUIS prediction behavior.", "properties": { "includeAllIntents": { - "type": "boolean", + "$ref": "#/definitions/booleanExpression", "title": "Include all intents", "description": "True for all intents, false for only top intent." }, "includeInstanceData": { - "type": "boolean", + "$ref": "#/definitions/booleanExpression", "title": "Include $instance", "description": "True to include $instance metadata in the LUIS response." }, "log": { - "type": "boolean", + "$ref": "#/definitions/booleanExpression", "title": "Log utterances", "description": "True to log utterances on LUIS service." }, "preferExternalEntities": { - "type": "boolean", - "title": "Prefer External Entities", + "$ref": "#/definitions/booleanExpression", + "title": "Prefer external entities", "description": "True to prefer external entities to those generated by LUIS models." }, "slot": { - "type": "string", + "$ref": "#/definitions/stringExpression", "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." } } }, @@ -4349,13 +5287,16 @@ } }, "Microsoft.MentionEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Mentions Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Mentions entity recognizer", "description": "Recognizer which recognizes @Mentions", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -4384,12 +5325,12 @@ }, "Microsoft.MostSpecificSelector": { "$role": "implements(Microsoft.ITriggerSelector)", - "title": "Most Specific Trigger Selector", + "title": "Most specific trigger selector", "description": "Select most specific true events with optional additional selector", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -4431,7 +5372,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -4477,13 +5418,16 @@ } }, "Microsoft.NumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Number Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Number entity recognizer", "description": "Recognizer which recognizes numbers.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -4520,7 +5464,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -4686,13 +5630,16 @@ } }, "Microsoft.NumberRangeEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "NumberRange Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Number range entity recognizer", "description": "Recognizer which recognizes ranges of numbers (Example:2 to 5).", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -4730,7 +5677,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -4825,7 +5772,7 @@ }, "allowInterruptions": { "$ref": "#/definitions/booleanExpression", - "title": "Allow Interruptions", + "title": "Allow interruptions", "description": "A boolean expression that determines whether the parent should be allowed to interrupt the input.", "default": true, "examples": [ @@ -4871,7 +5818,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -4941,7 +5888,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "actions", @@ -5025,7 +5972,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "actions", @@ -5094,7 +6041,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "actions", @@ -5163,7 +6110,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "actions", @@ -5246,7 +6193,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -5321,7 +6268,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "actions", @@ -5416,7 +6363,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -5476,7 +6423,7 @@ "implements(Microsoft.ITrigger)", "extends(Microsoft.OnCondition)" ], - "title": "On Continue Conversation", + "title": "On continue conversation", "description": "Actions to perform when a conversation is started up again from a ContinueConversationLater action.", "type": "object", "required": [ @@ -5485,7 +6432,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -5554,7 +6501,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -5624,7 +6571,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -5693,7 +6640,7 @@ "description": "Actions to take when there are no more actions in the current dialog.", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "type": "object", "required": [ @@ -5767,7 +6714,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -5827,12 +6774,12 @@ "implements(Microsoft.ITrigger)", "extends(Microsoft.OnCondition)" ], - "title": "On Error", + "title": "On error", "description": "Action to perform when an 'Error' dialog event occurs.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "actions", @@ -5905,7 +6852,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -5974,7 +6921,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6029,6 +6976,75 @@ } } }, + "Microsoft.OnInstallationUpdateActivity": { + "$role": [ + "implements(Microsoft.ITrigger)", + "extends(Microsoft.OnCondition)" + ], + "title": "On InstallationUpdate activity", + "description": "Actions to perform on receipt of an activity with type 'InstallationUpdate'.", + "type": "object", + "required": [ + "actions", + "$kind" + ], + "$package": { + "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", + "version": "4.11.0-rc2" + }, + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "condition": { + "$ref": "#/definitions/condition", + "title": "Condition", + "description": "Condition (expression).", + "examples": [ + "user.vip == true" + ] + }, + "actions": { + "type": "array", + "title": "Actions", + "description": "Sequence of actions to execute.", + "items": { + "$kind": "Microsoft.IDialog", + "$ref": "#/definitions/Microsoft.IDialog" + } + }, + "priority": { + "$ref": "#/definitions/integerExpression", + "title": "Priority", + "description": "Priority for trigger with 0 being the highest and < 0 ignored." + }, + "runOnce": { + "$ref": "#/definitions/booleanExpression", + "title": "Run Once", + "description": "True if rule should run once per unique conditions", + "examples": [ + true, + "=f(x)" + ] + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.OnInstallationUpdateActivity" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, "Microsoft.OnIntent": { "$role": [ "implements(Microsoft.ITrigger)", @@ -6043,7 +7059,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6127,7 +7143,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6196,7 +7212,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6265,7 +7281,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6334,7 +7350,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6403,7 +7419,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6463,7 +7479,7 @@ "implements(Microsoft.ITrigger)", "extends(Microsoft.OnCondition)" ], - "title": "On QnAMaker Match", + "title": "On QnAMaker match", "description": "Actions to perform on when an match from QnAMaker is found.", "type": "object", "required": [ @@ -6472,7 +7488,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6537,7 +7553,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "actions", @@ -6610,7 +7626,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6679,7 +7695,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6735,13 +7751,16 @@ } }, "Microsoft.OrdinalEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Ordinal Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Ordinal entity recognizer", "description": "Recognizer which recognizes ordinals (example: first, second, 3rd).", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -6769,13 +7788,16 @@ } }, "Microsoft.PercentageEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Percentage Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Percentage entity recognizer", "description": "Recognizer which recognizes percentages.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -6803,13 +7825,16 @@ } }, "Microsoft.PhoneNumberEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Phone Number Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Phone number entity recognizer", "description": "Recognizer which recognizes phone numbers.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -6838,7 +7863,7 @@ }, "Microsoft.QnAMakerDialog": { "$role": "implements(Microsoft.IDialog)", - "title": "QnAMaker Dialog", + "title": "QnAMaker dialog", "description": "Dialog which uses QnAMAker knowledge base to answer questions.", "type": "object", "required": [ @@ -6849,7 +7874,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.AI.QnA", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -6867,7 +7892,7 @@ }, "endpointKey": { "$ref": "#/definitions/stringExpression", - "title": "Endpoint Key", + "title": "Endpoint key", "description": "Endpoint key for the QnA Maker KB.", "default": "=settings.qna.endpointkey" }, @@ -6914,7 +7939,7 @@ }, "strictFilters": { "$ref": "#/definitions/arrayExpression", - "title": "Strict Filters", + "title": "Strict filters", "description": "Metadata filters to use when calling the QnA Maker KB.", "items": { "type": "object", @@ -6950,7 +7975,7 @@ }, "rankerType": { "$ref": "#/definitions/stringExpression", - "title": "Ranker Type", + "title": "Ranker type", "description": "Type of Ranker.", "oneOf": [ { @@ -6968,6 +7993,25 @@ } ] }, + "strictFiltersJoinOperator": { + "$ref": "#/definitions/stringExpression", + "title": "StrictFiltersJoinOperator", + "description": "Join operator for Strict Filters.", + "oneOf": [ + { + "title": "Join operator", + "description": "Value of Join Operator to be used as conjunction with Strict Filter values.", + "enum": [ + "AND", + "OR" + ], + "default": "AND" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", @@ -6984,7 +8028,7 @@ }, "Microsoft.QnAMakerRecognizer": { "$role": "implements(Microsoft.IRecognizer)", - "title": "QnAMaker Recognizer", + "title": "QnAMaker recognizer", "description": "Recognizer for generating QnAMatch intents from a KB.", "type": "object", "required": [ @@ -6995,7 +8039,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.AI.QnA", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -7013,20 +8057,20 @@ "knowledgeBaseId": { "$ref": "#/definitions/stringExpression", "title": "KnowledgeBase Id", - "description": "KnowledgeBase Id of your QnA Maker KnowledgeBase.", - "default": "settings.qna.knowledgebaseid" + "description": "Knowledge base Id of your QnA Maker knowledge base.", + "default": "=settings.qna.knowledgebaseid" }, "endpointKey": { "$ref": "#/definitions/stringExpression", - "title": "Endpoint Key", + "title": "Endpoint key", "description": "Endpoint key for the QnA Maker KB.", - "default": "settings.qna.endpointkey" + "default": "=settings.qna.endpointkey" }, "hostname": { "$ref": "#/definitions/stringExpression", "title": "Hostname", "description": "Hostname for your QnA Maker service.", - "default": "settings.qna.hostname", + "default": "=settings.qna.hostname", "examples": [ "https://yourserver.azurewebsites.net/qnamaker" ] @@ -7039,7 +8083,7 @@ }, "strictFilters": { "$ref": "#/definitions/arrayExpression", - "title": "Strict Filters", + "title": "Strict filters", "description": "Metadata filters to use when calling the QnA Maker KB.", "items": { "type": "object", @@ -7069,7 +8113,7 @@ }, "isTest": { "$ref": "#/definitions/booleanExpression", - "title": "IsTest", + "title": "Use test environment", "description": "True, if pointing to Test environment, else false.", "examples": [ true, @@ -7077,7 +8121,7 @@ ] }, "rankerType": { - "title": "Ranker Type", + "title": "Ranker type", "description": "Type of Ranker.", "oneOf": [ { @@ -7096,9 +8140,28 @@ } ] }, + "strictFiltersJoinOperator": { + "$ref": "#/definitions/stringExpression", + "title": "StrictFiltersJoinOperator", + "description": "Join operator for Strict Filters.", + "oneOf": [ + { + "title": "Join operator", + "description": "Value of Join Operator to be used as onjuction with Strict Filter values.", + "enum": [ + "AND", + "OR" + ], + "default": "AND" + }, + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, "includeDialogNameInMetadata": { "$ref": "#/definitions/booleanExpression", - "title": "Include Dialog Name", + "title": "Include dialog name", "description": "When set to false, the dialog name will not be passed to QnAMaker. (default) is true", "default": true, "examples": [ @@ -7130,12 +8193,12 @@ }, "context": { "$ref": "#/definitions/objectExpression", - "title": "QnARequestContext", + "title": "QnA request context", "description": "Context to use for ranking." }, "qnaId": { "$ref": "#/definitions/integerExpression", - "title": "QnAId", + "title": "QnA Id", "description": "A number or expression which is the QnAId to paass to QnAMaker API." }, "$kind": { @@ -7159,7 +8222,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -7193,7 +8256,7 @@ }, "Microsoft.RecognizerSet": { "$role": "implements(Microsoft.IRecognizer)", - "title": "Recognizer Set", + "title": "Recognizer set", "description": "Creates the union of the intents and entities of the recognizers in the set.", "type": "object", "required": [ @@ -7202,7 +8265,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -7241,8 +8304,11 @@ } }, "Microsoft.RegexEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Regex Entity Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Regex entity recognizer", "description": "Recognizer which recognizes patterns of input based on regex.", "type": "object", "required": [ @@ -7252,7 +8318,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -7293,7 +8359,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -7363,7 +8429,7 @@ "description": "Repeat current dialog.", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -7409,7 +8475,7 @@ }, "activityProcessed": { "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", + "title": "Activity processed", "description": "When set to false, the dialog that is called can process the current activity.", "default": true }, @@ -7434,7 +8500,7 @@ "description": "Replace current dialog with another dialog.", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -7490,7 +8556,7 @@ }, "activityProcessed": { "$ref": "#/definitions/booleanExpression", - "title": "Activity Processed", + "title": "Activity processed", "description": "When set to false, the dialog that is called can process the current activity.", "default": true }, @@ -7510,12 +8576,12 @@ }, "Microsoft.ResourceMultiLanguageGenerator": { "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Resource Multi-Language Generator", + "title": "Resource multi-language generator", "description": "MultiLanguage Generator which is bound to resource by resource Id.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -7541,7 +8607,7 @@ }, "languagePolicy": { "type": "object", - "title": "Language Policy", + "title": "Language policy", "description": "Set alternate language policy for this generator. If not set, the global language policy will be used." }, "$kind": { @@ -7565,7 +8631,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -7584,7 +8650,7 @@ "description": "Optional id for the dialog" }, "disabled": { - "$ref": "#/definitions/stringExpression", + "$ref": "#/definitions/booleanExpression", "title": "Disabled", "description": "Optional condition which if true will disable this action.", "examples": [ @@ -7622,7 +8688,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -7702,7 +8768,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -7760,12 +8826,12 @@ }, "Microsoft.SignOutUser": { "$role": "implements(Microsoft.IDialog)", - "title": "Sign Out User", + "title": "Sign out user", "description": "Sign a user out that was logged in previously using OAuthInput.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -7791,7 +8857,7 @@ }, "connectionName": { "$ref": "#/definitions/stringExpression", - "title": "Connection Name", + "title": "Connection name", "description": "Connection name that was used with OAuthInput to log a user in." }, "disabled": { @@ -7819,7 +8885,7 @@ }, "Microsoft.StaticActivityTemplate": { "$role": "implements(Microsoft.IActivityTemplate)", - "title": "Microsoft Static Activity Template", + "title": "Microsoft static activity template", "description": "This allows you to define a static Activity object", "type": "object", "required": [ @@ -7828,7 +8894,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -7839,7 +8905,7 @@ }, "properties": { "activity": { - "$ref": "#/definitions/botframework.json/definitions/Activity", + "$ref": "#/definitions/Microsoft.IActivityTemplate/oneOf/1", "title": "Activity", "description": "A static Activity to used.", "required": [ @@ -7871,7 +8937,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -7969,7 +9035,7 @@ "Microsoft.TelemetryTrackEvent": { "$role": "implements(Microsoft.IDialog)", "type": "object", - "title": "Telemetry - Track Event", + "title": "Telemetry - track event", "description": "Track a custom event using the registered Telemetry Client.", "required": [ "url", @@ -7978,7 +9044,7 @@ ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -8003,7 +9069,7 @@ }, "eventName": { "$ref": "#/definitions/stringExpression", - "title": "Event Name", + "title": "Event name", "description": "The name of the event to track.", "examples": [ "MyEventStarted", @@ -8033,13 +9099,16 @@ } }, "Microsoft.TemperatureEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Temperature Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Temperature recognizer", "description": "Recognizer which recognizes temperatures.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -8068,12 +9137,12 @@ }, "Microsoft.TemplateEngineLanguageGenerator": { "$role": "implements(Microsoft.ILanguageGenerator)", - "title": "Template Multi-Language Generator", + "title": "Template multi-language generator", "description": "Template Generator which allows only inline evaluation of templates.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -8115,7 +9184,7 @@ "description": "Collection information - Ask for a word or sentence.", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -8282,12 +9351,52 @@ "description": "Use LG Templates to create text", "type": "object", "required": [ - "template", + "template", + "$kind" + ], + "$package": { + "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", + "version": "4.11.0-rc2" + }, + "additionalProperties": false, + "patternProperties": { + "^\\$": { + "title": "Tooling property", + "description": "Open ended property for tooling." + } + }, + "properties": { + "template": { + "title": "Template", + "description": "Language Generator template to evaluate to create the text.", + "type": "string" + }, + "$kind": { + "title": "Kind of dialog object", + "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", + "const": "Microsoft.TextTemplate" + }, + "$designer": { + "title": "Designer information", + "type": "object", + "description": "Extra information for the Bot Framework Composer." + } + } + }, + "Microsoft.ThrowException": { + "$role": "implements(Microsoft.IDialog)", + "title": "Throw an exception", + "description": "Throw an exception. Capture this exception with OnError trigger.", + "type": "object", + "required": [ + "errorValue", "$kind" ], "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "additionalProperties": false, "patternProperties": { @@ -8297,17 +9406,30 @@ } }, "properties": { - "template": { - "title": "Template", - "description": "Language Generator template to evaluate to create the text.", - "type": "string" + "id": { + "type": "string", + "title": "Id", + "description": "Optional id for the dialog" + }, + "disabled": { + "$ref": "#/definitions/booleanExpression", + "title": "Disabled", + "description": "Optional condition which if true will disable this action.", + "examples": [ + "user.age > 3" + ] + }, + "errorValue": { + "$ref": "#/definitions/valueExpression", + "title": "Error value", + "description": "Error value to throw." }, "$kind": { "title": "Kind of dialog object", "description": "Defines the valid properties for the component you are configuring (from a dialog .schema file)", "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9.]*$", - "const": "Microsoft.TextTemplate" + "const": "Microsoft.ThrowException" }, "$designer": { "title": "Designer information", @@ -8323,7 +9445,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -8386,12 +9508,12 @@ }, "Microsoft.TrueSelector": { "$role": "implements(Microsoft.ITriggerSelector)", - "title": "True Trigger Selector", + "title": "True trigger selector", "description": "Selector for all true events", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -8425,7 +9547,7 @@ "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -8481,13 +9603,16 @@ } }, "Microsoft.UrlEntityRecognizer": { - "$role": "implements(Microsoft.IEntityRecognizer)", - "title": "Confirmation Url Recognizer", + "$role": [ + "implements(Microsoft.IRecognizer)", + "implements(Microsoft.IEntityRecognizer)" + ], + "title": "Url recognizer", "description": "Recognizer which recognizes urls.", "type": "object", "$package": { "name": "Microsoft.Bot.Builder.Dialogs.Adaptive", - "version": "4.10.0" + "version": "4.11.0-rc2" }, "required": [ "$kind" @@ -8619,920 +9744,136 @@ "$role": "expression", "title": "Integer or expression", "description": "Integer constant or expression to evaluate.", - "oneOf": [ - { - "type": "integer", - "title": "Integer", - "description": "Integer constant.", - "default": 0, - "examples": [ - 15 - ] - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=user.age" - ] - } - ] - }, - "numberExpression": { - "$role": "expression", - "title": "Number or expression", - "description": "Number constant or expression to evaluate.", - "oneOf": [ - { - "type": "number", - "title": "Number", - "description": "Number constant.", - "default": 0, - "examples": [ - 15.5 - ] - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=dialog.quantity" - ] - } - ] - }, - "objectExpression": { - "$role": "expression", - "title": "Object or expression", - "description": "Object or expression to evaluate.", - "oneOf": [ - { - "type": "object", - "title": "Object", - "description": "Object constant." - }, - { - "$ref": "#/definitions/equalsExpression" - } - ] - }, - "role": { - "title": "$role", - "description": "Defines the role played in the dialog schema from [expression|interface|implements($kind)|extends($kind)].", - "type": "string", - "pattern": "^((expression)|(interface)|(implements\\([a-zA-Z][a-zA-Z0-9.]*\\))|(extends\\([a-zA-Z][a-zA-Z0-9.]*\\)))$" - }, - "stringExpression": { - "$role": "expression", - "title": "String or expression", - "description": "Interpolated string or expression to evaluate.", - "oneOf": [ - { - "type": "string", - "title": "String", - "description": "Interpolated string", - "pattern": "^(?!(=)).*", - "examples": [ - "Hello ${user.name}" - ] - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=concat('x','y','z')" - ] - } - ] - }, - "valueExpression": { - "$role": "expression", - "title": "Any or expression", - "description": "Any constant or expression to evaluate.", - "oneOf": [ - { - "type": "object", - "title": "Object", - "description": "Object constant." - }, - { - "type": "array", - "title": "Array", - "description": "Array constant." - }, - { - "type": "string", - "title": "String", - "description": "Interpolated string.", - "pattern": "^(?!(=)).*", - "examples": [ - "Hello ${user.name}" - ] - }, - { - "type": "boolean", - "title": "Boolean", - "description": "Boolean constant", - "examples": [ - false - ] - }, - { - "type": "number", - "title": "Number", - "description": "Number constant.", - "examples": [ - 15.5 - ] - }, - { - "$ref": "#/definitions/equalsExpression", - "examples": [ - "=..." - ] - } - ] - }, - "schema": { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/definitions/schema" - } - }, - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "type": "integer", - "minimum": 0, - "default": 0 - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "uniqueItems": true, - "default": [], - "items": { - "type": "string" - } - } - }, - "type": [ - "object", - "boolean" - ], - "default": true, - "properties": { - "$schema": { - "type": "string", - "format": "uri" - }, - "$ref": { - "type": "string", - "format": "uri-reference" - }, - "$comment": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": true, - "readOnly": { - "type": "boolean", - "default": false - }, - "writeOnly": { - "type": "boolean", - "default": false - }, - "examples": { - "type": "array", - "items": true - }, - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { - "$ref": "#/definitions/schema/definitions/nonNegativeInteger" - }, - "minLength": { - "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" - }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { - "$ref": "#/definitions/schema" - }, - "items": { - "anyOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "$ref": "#/definitions/schema/definitions/schemaArray" - } - ], - "default": true - }, - "maxItems": { - "$ref": "#/definitions/schema/definitions/nonNegativeInteger" - }, - "minItems": { - "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" - }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "contains": { - "$ref": "#/definitions/schema" - }, - "maxProperties": { - "$ref": "#/definitions/schema/definitions/nonNegativeInteger" - }, - "minProperties": { - "$ref": "#/definitions/schema/definitions/nonNegativeIntegerDefault0" - }, - "required": { - "$ref": "#/definitions/schema/definitions/stringArray" - }, - "additionalProperties": { - "$ref": "#/definitions/schema" - }, - "definitions": { - "type": "object", - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/schema" - } - }, - "properties": { - "type": "object", - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/schema" - } - }, - "patternProperties": { - "type": "object", - "propertyNames": { - "format": "regex" - }, - "default": {}, - "additionalProperties": { - "$ref": "#/definitions/schema" - } - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "$ref": "#/definitions/schema/definitions/stringArray" - } - ] - } - }, - "propertyNames": { - "$ref": "#/definitions/schema" - }, - "const": true, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true, - "items": true - }, - "type": { - "anyOf": [ - { - "$ref": "#/definitions/schema/definitions/simpleTypes" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/schema/definitions/simpleTypes" - }, - "minItems": 1, - "uniqueItems": true - } + "oneOf": [ + { + "type": "integer", + "title": "Integer", + "description": "Integer constant.", + "default": 0, + "examples": [ + 15 ] }, - "format": { - "type": "string" - }, - "contentMediaType": { - "type": "string" - }, - "contentEncoding": { - "type": "string" - }, - "if": { - "$ref": "#/definitions/schema" - }, - "then": { - "$ref": "#/definitions/schema" - }, - "else": { - "$ref": "#/definitions/schema" - }, - "allOf": { - "$ref": "#/definitions/schema/definitions/schemaArray" - }, - "anyOf": { - "$ref": "#/definitions/schema/definitions/schemaArray" - }, - "oneOf": { - "$ref": "#/definitions/schema/definitions/schemaArray" - }, - "not": { - "$ref": "#/definitions/schema" + { + "$ref": "#/definitions/equalsExpression", + "examples": [ + "=user.age" + ] } - } + ] }, - "botframework.json": { - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "ChannelAccount": { - "description": "Channel account information needed to route a message", - "title": "ChannelAccount", - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", - "type": "string", - "title": "id" - }, - "name": { - "description": "Display friendly name", - "type": "string", - "title": "name" - }, - "aadObjectId": { - "description": "This account's object ID within Azure Active Directory (AAD)", - "type": "string", - "title": "aadObjectId" - }, - "role": { - "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", - "type": "string", - "title": "role" - } - } - }, - "ConversationAccount": { - "description": "Channel account information for a conversation", - "title": "ConversationAccount", - "type": "object", - "required": [ - "conversationType", - "id", - "isGroup", - "name" - ], - "properties": { - "isGroup": { - "description": "Indicates whether the conversation contains more than two participants at the time the\nactivity was generated", - "type": "boolean", - "title": "isGroup" - }, - "conversationType": { - "description": "Indicates the type of the conversation in channels that distinguish between conversation types", - "type": "string", - "title": "conversationType" - }, - "id": { - "description": "Channel id for the user or bot on this channel (Example: joe@smith.com, or @joesmith or\n123456)", - "type": "string", - "title": "id" - }, - "name": { - "description": "Display friendly name", - "type": "string", - "title": "name" - }, - "aadObjectId": { - "description": "This account's object ID within Azure Active Directory (AAD)", - "type": "string", - "title": "aadObjectId" - }, - "role": { - "description": "Role of the entity behind the account (Example: User, Bot, etc.). Possible values include:\n'user', 'bot'", - "enum": [ - "bot", - "user" - ], - "type": "string", - "title": "role" - } - } - }, - "MessageReaction": { - "description": "Message reaction object", - "title": "MessageReaction", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "Message reaction type. Possible values include: 'like', 'plusOne'", - "type": "string", - "title": "type" - } - } - }, - "CardAction": { - "description": "A clickable action", - "title": "CardAction", - "type": "object", - "required": [ - "title", - "type", - "value" - ], - "properties": { - "type": { - "description": "The type of action implemented by this button. Possible values include: 'openUrl', 'imBack',\n'postBack', 'playAudio', 'playVideo', 'showImage', 'downloadFile', 'signin', 'call',\n'payment', 'messageBack'", - "type": "string", - "title": "type" - }, - "title": { - "description": "Text description which appears on the button", - "type": "string", - "title": "title" - }, - "image": { - "description": "Image URL which will appear on the button, next to text label", - "type": "string", - "title": "image" - }, - "text": { - "description": "Text for this action", - "type": "string", - "title": "text" - }, - "displayText": { - "description": "(Optional) text to display in the chat feed if the button is clicked", - "type": "string", - "title": "displayText" - }, - "value": { - "description": "Supplementary parameter for action. Content of this property depends on the ActionType", - "title": "value" - }, - "channelData": { - "description": "Channel-specific data associated with this action", - "title": "channelData" - } - } + "numberExpression": { + "$role": "expression", + "title": "Number or expression", + "description": "Number constant or expression to evaluate.", + "oneOf": [ + { + "type": "number", + "title": "Number", + "description": "Number constant.", + "default": 0, + "examples": [ + 15.5 + ] }, - "SuggestedActions": { - "description": "SuggestedActions that can be performed", - "title": "SuggestedActions", + { + "$ref": "#/definitions/equalsExpression", + "examples": [ + "=dialog.quantity" + ] + } + ] + }, + "objectExpression": { + "$role": "expression", + "title": "Object or expression", + "description": "Object or expression to evaluate.", + "oneOf": [ + { "type": "object", - "required": [ - "actions", - "to" - ], - "properties": { - "to": { - "description": "Ids of the recipients that the actions should be shown to. These Ids are relative to the\nchannelId and a subset of all recipients of the activity", - "type": "array", - "title": "to", - "items": { - "title": "Id", - "description": "Id of recipient.", - "type": "string" - } - }, - "actions": { - "description": "Actions that can be shown to the user", - "type": "array", - "title": "actions", - "items": { - "$ref": "#/definitions/botframework.json/definitions/CardAction" - } - } - } + "title": "Object", + "description": "Object constant." }, - "Attachment": { - "description": "An attachment within an activity", - "title": "Attachment", - "type": "object", - "required": [ - "contentType" - ], - "properties": { - "contentType": { - "description": "mimetype/Contenttype for the file", - "type": "string", - "title": "contentType" - }, - "contentUrl": { - "description": "Content Url", - "type": "string", - "title": "contentUrl" - }, - "content": { - "type": "object", - "description": "Embedded content", - "title": "content" - }, - "name": { - "description": "(OPTIONAL) The name of the attachment", - "type": "string", - "title": "name" - }, - "thumbnailUrl": { - "description": "(OPTIONAL) Thumbnail associated with attachment", - "type": "string", - "title": "thumbnailUrl" - } - } + { + "$ref": "#/definitions/equalsExpression" + } + ] + }, + "role": { + "title": "$role", + "description": "Defines the role played in the dialog schema from [expression|interface|implements($kind)|extends($kind)].", + "type": "string", + "pattern": "^((expression)|(interface)|(implements\\([a-zA-Z][a-zA-Z0-9.]*\\))|(extends\\([a-zA-Z][a-zA-Z0-9.]*\\)))$" + }, + "stringExpression": { + "$role": "expression", + "title": "String or expression", + "description": "Interpolated string or expression to evaluate.", + "oneOf": [ + { + "type": "string", + "title": "String", + "description": "Interpolated string", + "pattern": "^(?!(=)).*", + "examples": [ + "Hello ${user.name}" + ] }, - "Entity": { - "description": "Metadata object pertaining to an activity", - "title": "Entity", + { + "$ref": "#/definitions/equalsExpression", + "examples": [ + "=concat('x','y','z')" + ] + } + ] + }, + "valueExpression": { + "$role": "expression", + "title": "Any or expression", + "description": "Any constant or expression to evaluate.", + "oneOf": [ + { "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "Type of this entity (RFC 3987 IRI)", - "type": "string", - "title": "type" - } - } + "title": "Object", + "description": "Object constant." }, - "ConversationReference": { - "description": "An object relating to a particular point in a conversation", - "title": "ConversationReference", - "type": "object", - "required": [ - "bot", - "channelId", - "conversation", - "serviceUrl" - ], - "properties": { - "activityId": { - "description": "(Optional) ID of the activity to refer to", - "type": "string", - "title": "activityId" - }, - "user": { - "description": "(Optional) User participating in this conversation", - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "title": "user" - }, - "bot": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "description": "Bot participating in this conversation", - "title": "bot" - }, - "conversation": { - "$ref": "#/definitions/botframework.json/definitions/ConversationAccount", - "description": "Conversation reference", - "title": "conversation" - }, - "channelId": { - "description": "Channel ID", - "type": "string", - "title": "channelId" - }, - "serviceUrl": { - "description": "Service endpoint where operations concerning the referenced conversation may be performed", - "type": "string", - "title": "serviceUrl" - } - } + { + "type": "array", + "title": "Array", + "description": "Array constant." }, - "TextHighlight": { - "description": "Refers to a substring of content within another field", - "title": "TextHighlight", - "type": "object", - "required": [ - "occurrence", - "text" - ], - "properties": { - "text": { - "description": "Defines the snippet of text to highlight", - "type": "string", - "title": "text" - }, - "occurrence": { - "description": "Occurrence of the text field within the referenced text, if multiple exist.", - "type": "number", - "title": "occurrence" - } - } + { + "type": "string", + "title": "String", + "description": "Interpolated string.", + "pattern": "^(?!(=)).*", + "examples": [ + "Hello ${user.name}" + ] }, - "SemanticAction": { - "description": "Represents a reference to a programmatic action", - "title": "SemanticAction", - "type": "object", - "required": [ - "entities", - "id" - ], - "properties": { - "id": { - "description": "ID of this action", - "type": "string", - "title": "id" - }, - "entities": { - "description": "Entities associated with this action", - "type": "object", - "title": "entities", - "additionalProperties": { - "$ref": "#/definitions/botframework.json/definitions/Entity" - } - } - } + { + "type": "boolean", + "title": "Boolean", + "description": "Boolean constant", + "examples": [ + false + ] }, - "Activity": { - "description": "An Activity is the basic communication type for the Bot Framework 3.0 protocol.", - "title": "Activity", - "type": "object", - "properties": { - "type": { - "description": "Contains the activity type. Possible values include: 'message', 'contactRelationUpdate',\n'conversationUpdate', 'typing', 'endOfConversation', 'event', 'invoke', 'deleteUserData',\n'messageUpdate', 'messageDelete', 'installationUpdate', 'messageReaction', 'suggestion',\n'trace', 'handoff'", - "type": "string", - "title": "type" - }, - "id": { - "description": "Contains an ID that uniquely identifies the activity on the channel.", - "type": "string", - "title": "id" - }, - "timestamp": { - "description": "Contains the date and time that the message was sent, in UTC, expressed in ISO-8601 format.", - "type": "string", - "format": "date-time", - "title": "timestamp" - }, - "localTimestamp": { - "description": "Contains the date and time that the message was sent, in local time, expressed in ISO-8601\nformat.\nFor example, 2016-09-23T13:07:49.4714686-07:00.", - "type": "string", - "format": "date-time", - "title": "localTimestamp" - }, - "localTimezone": { - "description": "Contains the name of the timezone in which the message, in local time, expressed in IANA Time\nZone database format.\nFor example, America/Los_Angeles.", - "type": "string", - "title": "localTimezone" - }, - "serviceUrl": { - "description": "Contains the URL that specifies the channel's service endpoint. Set by the channel.", - "type": "string", - "title": "serviceUrl" - }, - "channelId": { - "description": "Contains an ID that uniquely identifies the channel. Set by the channel.", - "type": "string", - "title": "channelId" - }, - "from": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "description": "Identifies the sender of the message.", - "title": "from" - }, - "conversation": { - "$ref": "#/definitions/botframework.json/definitions/ConversationAccount", - "description": "Identifies the conversation to which the activity belongs.", - "title": "conversation" - }, - "recipient": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount", - "description": "Identifies the recipient of the message.", - "title": "recipient" - }, - "textFormat": { - "description": "Format of text fields Default:markdown. Possible values include: 'markdown', 'plain', 'xml'", - "type": "string", - "title": "textFormat" - }, - "attachmentLayout": { - "description": "The layout hint for multiple attachments. Default: list. Possible values include: 'list',\n'carousel'", - "type": "string", - "title": "attachmentLayout" - }, - "membersAdded": { - "description": "The collection of members added to the conversation.", - "type": "array", - "title": "membersAdded", - "items": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount" - } - }, - "membersRemoved": { - "description": "The collection of members removed from the conversation.", - "type": "array", - "title": "membersRemoved", - "items": { - "$ref": "#/definitions/botframework.json/definitions/ChannelAccount" - } - }, - "reactionsAdded": { - "description": "The collection of reactions added to the conversation.", - "type": "array", - "title": "reactionsAdded", - "items": { - "$ref": "#/definitions/botframework.json/definitions/MessageReaction" - } - }, - "reactionsRemoved": { - "description": "The collection of reactions removed from the conversation.", - "type": "array", - "title": "reactionsRemoved", - "items": { - "$ref": "#/definitions/botframework.json/definitions/MessageReaction" - } - }, - "topicName": { - "description": "The updated topic name of the conversation.", - "type": "string", - "title": "topicName" - }, - "historyDisclosed": { - "description": "Indicates whether the prior history of the channel is disclosed.", - "type": "boolean", - "title": "historyDisclosed" - }, - "locale": { - "description": "A locale name for the contents of the text field.\nThe locale name is a combination of an ISO 639 two- or three-letter culture code associated\nwith a language\nand an ISO 3166 two-letter subculture code associated with a country or region.\nThe locale name can also correspond to a valid BCP-47 language tag.", - "type": "string", - "title": "locale" - }, - "text": { - "description": "The text content of the message.", - "type": "string", - "title": "text" - }, - "speak": { - "description": "The text to speak.", - "type": "string", - "title": "speak" - }, - "inputHint": { - "description": "Indicates whether your bot is accepting,\nexpecting, or ignoring user input after the message is delivered to the client. Possible\nvalues include: 'acceptingInput', 'ignoringInput', 'expectingInput'", - "type": "string", - "title": "inputHint" - }, - "summary": { - "description": "The text to display if the channel cannot render cards.", - "type": "string", - "title": "summary" - }, - "suggestedActions": { - "description": "The suggested actions for the activity.", - "$ref": "#/definitions/botframework.json/definitions/SuggestedActions", - "title": "suggestedActions" - }, - "attachments": { - "description": "Attachments", - "type": "array", - "title": "attachments", - "items": { - "$ref": "#/definitions/botframework.json/definitions/Attachment" - } - }, - "entities": { - "description": "Represents the entities that were mentioned in the message.", - "type": "array", - "title": "entities", - "items": { - "$ref": "#/definitions/botframework.json/definitions/Entity" - } - }, - "channelData": { - "description": "Contains channel-specific content.", - "title": "channelData" - }, - "action": { - "description": "Indicates whether the recipient of a contactRelationUpdate was added or removed from the\nsender's contact list.", - "type": "string", - "title": "action" - }, - "replyToId": { - "description": "Contains the ID of the message to which this message is a reply.", - "type": "string", - "title": "replyToId" - }, - "label": { - "description": "A descriptive label for the activity.", - "type": "string", - "title": "label" - }, - "valueType": { - "description": "The type of the activity's value object.", - "type": "string", - "title": "valueType" - }, - "value": { - "description": "A value that is associated with the activity.", - "title": "value" - }, - "name": { - "description": "The name of the operation associated with an invoke or event activity.", - "type": "string", - "title": "name" - }, - "relatesTo": { - "description": "A reference to another conversation or activity.", - "$ref": "#/definitions/botframework.json/definitions/ConversationReference", - "title": "relatesTo" - }, - "code": { - "description": "The a code for endOfConversation activities that indicates why the conversation ended.\nPossible values include: 'unknown', 'completedSuccessfully', 'userCancelled', 'botTimedOut',\n'botIssuedInvalidMessage', 'channelFailed'", - "type": "string", - "title": "code" - }, - "expiration": { - "description": "The time at which the activity should be considered to be \"expired\" and should not be\npresented to the recipient.", - "type": "string", - "format": "date-time", - "title": "expiration" - }, - "importance": { - "description": "The importance of the activity. Possible values include: 'low', 'normal', 'high'", - "type": "string", - "title": "importance" - }, - "deliveryMode": { - "description": "A delivery hint to signal to the recipient alternate delivery paths for the activity.\nThe default delivery mode is \"default\". Possible values include: 'normal', 'notification'", - "type": "string", - "title": "deliveryMode" - }, - "listenFor": { - "description": "List of phrases and references that speech and language priming systems should listen for", - "type": "array", - "title": "listenFor", - "items": { - "type": "string", - "title": "Phrase", - "description": "Phrase to listen for." - } - }, - "textHighlights": { - "description": "The collection of text fragments to highlight when the activity contains a ReplyToId value.", - "type": "array", - "title": "textHighlights", - "items": { - "$ref": "#/definitions/botframework.json/definitions/TextHighlight" - } - }, - "semanticAction": { - "$ref": "#/definitions/botframework.json/definitions/SemanticAction", - "description": "An optional programmatic action accompanying this request", - "title": "semanticAction" - } - } + { + "type": "number", + "title": "Number", + "description": "Number constant.", + "examples": [ + 15.5 + ] + }, + { + "$ref": "#/definitions/equalsExpression", + "examples": [ + "=..." + ] } - } + ] } } -} \ No newline at end of file +} diff --git a/Composer/packages/server/schemas/sdk.uischema b/Composer/packages/server/schemas/sdk.uischema index 813d3e8e23..3a96f1fd4a 100644 --- a/Composer/packages/server/schemas/sdk.uischema +++ b/Composer/packages/server/schemas/sdk.uischema @@ -23,6 +23,112 @@ } } }, + "Microsoft.Ask": { + "form": { + "helpLink": "https://aka.ms/bfc-send-activity", + "label": "Send a response to ask a question", + "order": [ + "activity", + "*" + ], + "subtitle": "Ask Activity" + } + }, + "Microsoft.AttachmentInput": { + "form": { + "helpLink": "https://aka.ms/bfc-ask-for-user-input", + "label": "Prompt for a file or an attachment", + "properties": { + "property": { + "intellisenseScopes": [ + "variable-scopes" + ] + } + }, + "subtitle": "Attachment Input" + } + }, + "Microsoft.ChoiceInput": { + "form": { + "helpLink": "https://aka.ms/bfc-ask-for-user-input", + "label": "Prompt with multi-choice", + "properties": { + "property": { + "intellisenseScopes": [ + "variable-scopes" + ] + } + }, + "subtitle": "Choice Input" + } + }, + "Microsoft.ConfirmInput": { + "form": { + "helpLink": "https://aka.ms/bfc-ask-for-user-input", + "label": "Prompt for confirmation", + "properties": { + "property": { + "intellisenseScopes": [ + "variable-scopes" + ] + } + }, + "subtitle": "Confirm Input" + } + }, + "Microsoft.DateTimeInput": { + "form": { + "helpLink": "https://aka.ms/bfc-ask-for-user-input", + "label": "Prompt for a date or a time", + "properties": { + "property": { + "intellisenseScopes": [ + "variable-scopes" + ] + } + }, + "subtitle": "Date Time Input" + } + }, + "Microsoft.NumberInput": { + "form": { + "helpLink": "https://aka.ms/bfc-ask-for-user-input", + "label": "Prompt for a number", + "properties": { + "property": { + "intellisenseScopes": [ + "variable-scopes" + ] + } + }, + "subtitle": "Number Input" + } + }, + "Microsoft.OAuthInput": { + "form": { + "helpLink": "https://aka.ms/bfc-using-oauth", + "label": "OAuth login", + "order": [ + "connectionName", + "*" + ], + "subtitle": "OAuth Input" + } + }, + "Microsoft.TextInput": { + "form": { + "helpLink": "https://aka.ms/bfc-ask-for-user-input", + "label": "Prompt for text", + "properties": { + "property": { + "intellisenseScopes": [ + "variable-scopes" + ] + } + }, + "subtitle": "Text Input" + } + }, "Microsoft.BeginDialog": { "form": { "helpLink": "https://aka.ms/bfc-understanding-dialogs", @@ -252,7 +358,7 @@ }, "Microsoft.LogAction": { "form": { - "helpLink": "https://aka.ms/bfc-debugging-bots", + "helpLink": "https://aka.ms/composer-telemetry", "label": "Log to console", "subtitle": "Log Action" } @@ -359,117 +465,11 @@ }, "Microsoft.TraceActivity": { "form": { - "helpLink": "https://aka.ms/bfc-debugging-bots", + "helpLink": "https://aka.ms/composer-telemetry", "label": "Emit a trace event", "subtitle": "Trace Activity" } }, - "Microsoft.Ask": { - "form": { - "helpLink": "https://aka.ms/bfc-send-activity", - "label": "Send a response to ask a question", - "order": [ - "activity", - "*" - ], - "subtitle": "Ask Activity" - } - }, - "Microsoft.AttachmentInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a file or an attachment", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Attachment Input" - } - }, - "Microsoft.ChoiceInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt with multi-choice", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Choice Input" - } - }, - "Microsoft.ConfirmInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for confirmation", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Confirm Input" - } - }, - "Microsoft.DateTimeInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a date or a time", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Date Time Input" - } - }, - "Microsoft.NumberInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for a number", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Number Input" - } - }, - "Microsoft.OAuthInput": { - "form": { - "helpLink": "https://aka.ms/bfc-using-oauth", - "label": "OAuth login", - "order": [ - "connectionName", - "*" - ], - "subtitle": "OAuth Input" - } - }, - "Microsoft.TextInput": { - "form": { - "helpLink": "https://aka.ms/bfc-ask-for-user-input", - "label": "Prompt for text", - "properties": { - "property": { - "intellisenseScopes": [ - "variable-scopes" - ] - } - }, - "subtitle": "Text Input" - } - }, "Microsoft.RegexRecognizer": { "form": { "hidden": [ @@ -529,6 +529,17 @@ "subtitle": "Cancel dialog event" } }, + "Microsoft.OnChooseIntent": { + "form": { + "hidden": [ + "actions" + ], + "order": [ + "condition", + "*" + ] + } + }, "Microsoft.OnCondition": { "form": { "hidden": [ diff --git a/Composer/packages/server/src/locales/en-US.json b/Composer/packages/server/src/locales/en-US.json index ab91373303..71b2714dbd 100644 --- a/Composer/packages/server/src/locales/en-US.json +++ b/Composer/packages/server/src/locales/en-US.json @@ -41,9 +41,6 @@ "a_valid_url_should_start_with_http_or_https_327b1a30": { "message": "A valid URL should start with http:// or https://" }, - "a_valid_url_should_start_with_http_or_https_d24b3591": { - "message": "A valid url should start with http:// or https://" - }, "about_70c18bba": { "message": "About" }, @@ -131,9 +128,6 @@ "add_a_welcome_message_9e1480b2": { "message": "Add a welcome message" }, - "add_additional_url_bdfac25d": { - "message": "Add additional URL" - }, "add_alternative_phrasing_17e0304c": { "message": "+ Add alternative phrasing" }, @@ -233,9 +227,6 @@ "any_string_f22dc2e1": { "message": "any string" }, - "append_choices_35c45a2d": { - "message": "Append choices" - }, "application_language_87691b6": { "message": "Application Language" }, @@ -377,6 +368,9 @@ "boolean_value_98d39ea1": { "message": "Boolean value." }, + "bot_7926b66d": { + "message": "Bot" + }, "bot_asks_5e9f0202": { "message": "Bot Asks" }, @@ -620,9 +614,6 @@ "could_not_connect_to_storage_50411de0": { "message": "Could not connect to storage." }, - "could_not_init_plugin_1f1c29cd": { - "message": "Could not init plugin" - }, "couldn_t_complete_the_update_a337a359": { "message": "Couldn''t complete the update:" }, @@ -695,9 +686,6 @@ "create_kb_from_url_or_file_49ad6671": { "message": "Create KB from URL or file" }, - "create_knowledge_base_db6d66c4": { - "message": "Create knowledge base" - }, "create_knowledge_base_from_scratch_afe4d2a2": { "message": "Create knowledge base from scratch" }, @@ -1421,9 +1409,6 @@ "learn_more_about_knowledge_base_sources_24369b09": { "message": "Learn more about knowledge base sources. " }, - "learn_more_about_qna_maker_skus_998c567": { - "message": "Learn more about QnA Maker SKUs." - }, "learn_more_about_title_d1d3edbe": { "message": "Learn more about { title }" }, @@ -1820,9 +1805,6 @@ "open_notification_panel_5796edb3": { "message": "Open notification panel" }, - "open_skills_page_for_configuration_details_a2a484ea": { - "message": "Open Skills page for configuration details" - }, "optional_221bcc9d": { "message": "Optional" }, @@ -1913,9 +1895,6 @@ "please_select_an_activity_type_92f4a8a1": { "message": "Please select an activity type" }, - "populate_your_knowledge_base_bb2d3605": { - "message": "Populate your Knowledge Base" - }, "press_enter_to_add_this_item_or_tab_to_move_to_the_6beb8a14": { "message": "press Enter to add this item or Tab to move to the next interactive element" }, @@ -2096,9 +2075,6 @@ "regex_intent_is_already_defined_df095c1f": { "message": "RegEx { intent } is already defined" }, - "regular_expression_855557bf": { - "message": "Regular Expression" - }, "regular_expression_recognizer_44664557": { "message": "Regular expression recognizer" }, @@ -2348,9 +2324,6 @@ "skills_49cccd6a": { "message": "Skills" }, - "skip_this_step_to_add_questions_and_answers_manual_ed1b9f80": { - "message": "Skip this step to add questions and answers manually after creation. The number of sources and file size you can add depends on the QnA service SKU you choose. " - }, "sorry_something_went_wrong_with_connecting_bot_run_7d6785e3": { "message": "Sorry, something went wrong with connecting bot runtime" }, @@ -2525,6 +2498,9 @@ "this_dialog_has_no_trigger_yet_d1f1d173": { "message": "This dialog has no trigger yet." }, + "this_is_a_botname_notification_c8a391c7": { + "message": "This is a { botName } notification" + }, "this_is_a_required_field_acb9837e": { "message": "This is a required field." }, @@ -2546,9 +2522,6 @@ "this_trigger_type_is_not_supported_by_the_regex_re_dc3eefa2": { "message": "This trigger type is not supported by the RegEx recognizer. To ensure this trigger is fired, change the recognizer type." }, - "this_url_is_duplicated_a0768f44": { - "message": "This url is duplicated" - }, "this_version_of_the_content_is_out_of_date_and_you_5e878f29": { "message": "This version of the content is out of date, and your last change was rejected. The content will be automatically refreshed." }, @@ -2660,9 +2633,6 @@ "typing_activity_6b634ae": { "message": "Typing activity" }, - "unable_to_determine_recognizer_type_from_data_valu_2960f526": { - "message": "Unable to determine recognizer type from data: { value }" - }, "undo_a7be8fef": { "message": "Undo" }, @@ -2717,9 +2687,6 @@ "updating_scripts_e17a5722": { "message": "Updating scripts... " }, - "url_22a5f3b8": { - "message": "URL" - }, "url_8c4ff7d2": { "message": "Url" }, diff --git a/Composer/packages/server/src/models/bot/builder.ts b/Composer/packages/server/src/models/bot/builder.ts index e7af716c63..a79a49f347 100644 --- a/Composer/packages/server/src/models/bot/builder.ts +++ b/Composer/packages/server/src/models/bot/builder.ts @@ -5,13 +5,12 @@ import { FileInfo, IConfig } from '@bfc/shared'; import { ComposerReservoirSampler } from '@microsoft/bf-dispatcher/lib/mathematics/sampler/ComposerReservoirSampler'; import { ComposerBootstrapSampler } from '@microsoft/bf-dispatcher/lib/mathematics/sampler/ComposerBootstrapSampler'; +import { luImportResolverGenerator, getLUFiles, getQnAFiles } from '@bfc/shared/lib/luBuildResolver'; import { Path } from '../../utility/path'; import { IFileStorage } from '../storage/interface'; import log from '../../logger'; -import { luImportResolverGenerator, getLUFiles, getQnAFiles } from './luResolver'; - const crossTrainer = require('@microsoft/bf-lu/lib/parser/cross-train/crossTrainer.js'); const luBuild = require('@microsoft/bf-lu/lib/parser/lubuild/builder.js'); const qnaBuild = require('@microsoft/bf-lu/lib/parser/qnabuild/builder.js'); diff --git a/Composer/yarn.lock b/Composer/yarn.lock index 29479ab637..86c3e52b71 100644 --- a/Composer/yarn.lock +++ b/Composer/yarn.lock @@ -890,9 +890,9 @@ js-tokens "^4.0.0" "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.10.5", "@babel/parser@^7.11.3", "@babel/parser@^7.11.5", "@babel/parser@^7.2.2", "@babel/parser@^7.3.4", "@babel/parser@^7.4.0", "@babel/parser@^7.7.0", "@babel/parser@^7.7.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0", "@babel/parser@^7.9.6": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" - integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0" + integrity sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ== "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" @@ -13971,10 +13971,10 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -multimatch@^4.0.0: - version "4.0.0" - resolved "https://botbuilder.myget.org/F/botframework-cli/npm/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" - integrity sha1-jDwPbj6ESa2grz3SnvtJGjdRkbM= +multimatch@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== dependencies: "@types/minimatch" "^3.0.3" array-differ "^3.0.0" diff --git a/azure-pipelines-static-analysis.yml b/azure-pipelines-static-analysis.yml index 32d3af9961..528ffb0fa5 100644 --- a/azure-pipelines-static-analysis.yml +++ b/azure-pipelines-static-analysis.yml @@ -10,6 +10,9 @@ schedules: # Do not run PR validation pr: none +# Do not run CI validation +trigger: none + # Semmle task only works on Windows pool: vmImage: 'windows-latest' diff --git a/extensions/azurePublish/src/luisAndQnA.ts b/extensions/azurePublish/src/luisAndQnA.ts index 8afb9db7a5..3b6105bf78 100644 --- a/extensions/azurePublish/src/luisAndQnA.ts +++ b/extensions/azurePublish/src/luisAndQnA.ts @@ -10,6 +10,7 @@ import { ILuisConfig, FileInfo, IQnAConfig } from '@botframework-composer/types' import { ICrossTrainConfig, createCrossTrainConfig } from './utils/crossTrainUtil'; import { BotProjectDeployLoggerType } from './botProjectLoggerType'; +import { luImportResolverGenerator } from '@bfc/shared/lib/luBuildResolver' const crossTrainer = require('@microsoft/bf-lu/lib/parser/cross-train/crossTrainer.js'); const luBuild = require('@microsoft/bf-lu/lib/parser/lubuild/builder.js'); @@ -132,16 +133,17 @@ export class LuisAndQnaPublish { for (const luFile of luFiles) { luContents.push({ content: fs.readFileSync(luFile, { encoding: 'utf-8' }), - id: luFile.substring(luFile.lastIndexOf('\\') + 1), + name: path.basename(luFile) }); } for (const qnaFile of qnaFiles) { qnaContents.push({ content: fs.readFileSync(qnaFile, { encoding: 'utf-8' }), - id: qnaFile.substring(qnaFile.lastIndexOf('\\') + 1), + name: path.basename(qnaFile) }); } - const result = await crossTrainer.crossTrain(luContents, qnaContents, this.crossTrainConfig); + const importResolver = luImportResolverGenerator([...qnaContents, ...luContents] as FileInfo[]); + const result = await crossTrainer.crossTrain(luContents, qnaContents, this.crossTrainConfig, importResolver); await this.writeCrossTrainFiles(result.luResult); await this.writeCrossTrainFiles(result.qnaResult); diff --git a/extensions/azurePublish/yarn.lock b/extensions/azurePublish/yarn.lock index 410ba5593d..980e8e9ff6 100644 --- a/extensions/azurePublish/yarn.lock +++ b/extensions/azurePublish/yarn.lock @@ -184,6 +184,7 @@ "@botframework-composer/types" "*" format-message "6.2.3" json-schema "^0.2.5" + multimatch "^5.0.0" nanoid "^3.1.3" nanoid-dictionary "^3.0.0" @@ -532,7 +533,7 @@ resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/@types/mime/-/@types/mime-2.0.3.tgz#c893b73721db73699943bfc3653b1deb7faa4a3a" integrity sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo= -"@types/minimatch@*": +"@types/minimatch@*", "@types/minimatch@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== @@ -823,11 +824,21 @@ archiver@^5.0.2: tar-stream "^2.1.4" zip-stream "^4.0.0" +array-differ@^3.0.0: + version "3.0.0" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha1-PLs9DzFoEOr8xHYkc0I31q7krms= + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +arrify@^2.0.1: + version "2.0.1" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha1-yWVekzHgq81YjSp8rX6ZVvZnAfo= + asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -2113,6 +2124,17 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +multimatch@^5.0.0: + version "5.0.0" + resolved "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha1-kyuACWPOp6MaAzMo+h4MOhh02+Y= + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + nanoid-dictionary@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/nanoid-dictionary/-/nanoid-dictionary-3.0.0.tgz#e4ad77e528792095662a7be1855ce31448d0687c" diff --git a/runtime/dotnet/azurefunctions/Startup.cs b/runtime/dotnet/azurefunctions/Startup.cs index e390ec2ff7..63606c1f91 100644 --- a/runtime/dotnet/azurefunctions/Startup.cs +++ b/runtime/dotnet/azurefunctions/Startup.cs @@ -9,6 +9,7 @@ using Microsoft.Bot.Builder.AI.QnA; using Microsoft.Bot.Builder.ApplicationInsights; using Microsoft.Bot.Builder.Azure; +using Microsoft.Bot.Builder.Azure.Blobs; using Microsoft.Bot.Builder.BotFramework; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Dialogs.Adaptive; @@ -176,7 +177,7 @@ public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, { if (ConfigSectionValid(settings?.BlobStorage?.ConnectionString) && ConfigSectionValid(settings?.BlobStorage?.Container)) { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings?.BlobStorage?.ConnectionString, settings?.BlobStorage?.Container))); + adapter.Use(new TranscriptLoggerMiddleware(new BlobsTranscriptStore(settings?.BlobStorage?.ConnectionString, settings?.BlobStorage?.Container))); } } diff --git a/runtime/dotnet/azurewebapp/Schemas/sdk.schema b/runtime/dotnet/azurewebapp/Schemas/sdk.schema index 9ac50a2f7d..a1f0436797 100644 --- a/runtime/dotnet/azurewebapp/Schemas/sdk.schema +++ b/runtime/dotnet/azurewebapp/Schemas/sdk.schema @@ -783,7 +783,7 @@ "description": "Optional id for the dialog" }, "disabled": { - "$ref": "#/definitions/stringExpression", + "$ref": "#/definitions/booleanExpression", "title": "Disabled", "description": "Optional condition which if true will disable this action.", "examples": [ @@ -8650,7 +8650,7 @@ "description": "Optional id for the dialog" }, "disabled": { - "$ref": "#/definitions/stringExpression", + "$ref": "#/definitions/booleanExpression", "title": "Disabled", "description": "Optional condition which if true will disable this action.", "examples": [ diff --git a/runtime/dotnet/azurewebapp/Schemas/sdk.uischema b/runtime/dotnet/azurewebapp/Schemas/sdk.uischema index 5e8823d860..3a96f1fd4a 100644 --- a/runtime/dotnet/azurewebapp/Schemas/sdk.uischema +++ b/runtime/dotnet/azurewebapp/Schemas/sdk.uischema @@ -358,7 +358,7 @@ }, "Microsoft.LogAction": { "form": { - "helpLink": "https://aka.ms/bfc-debugging-bots", + "helpLink": "https://aka.ms/composer-telemetry", "label": "Log to console", "subtitle": "Log Action" } @@ -465,7 +465,7 @@ }, "Microsoft.TraceActivity": { "form": { - "helpLink": "https://aka.ms/bfc-debugging-bots", + "helpLink": "https://aka.ms/composer-telemetry", "label": "Emit a trace event", "subtitle": "Trace Activity" } @@ -529,6 +529,17 @@ "subtitle": "Cancel dialog event" } }, + "Microsoft.OnChooseIntent": { + "form": { + "hidden": [ + "actions" + ], + "order": [ + "condition", + "*" + ] + } + }, "Microsoft.OnCondition": { "form": { "hidden": [ diff --git a/runtime/dotnet/azurewebapp/Startup.cs b/runtime/dotnet/azurewebapp/Startup.cs index d0d8ce7ef8..7cfb1bddb8 100644 --- a/runtime/dotnet/azurewebapp/Startup.cs +++ b/runtime/dotnet/azurewebapp/Startup.cs @@ -13,6 +13,7 @@ using Microsoft.Bot.Builder.AI.QnA; using Microsoft.Bot.Builder.ApplicationInsights; using Microsoft.Bot.Builder.Azure; +using Microsoft.Bot.Builder.Azure.Blobs; using Microsoft.Bot.Builder.BotFramework; using Microsoft.Bot.Builder.Dialogs; using Microsoft.Bot.Builder.Dialogs.Adaptive; @@ -50,7 +51,7 @@ public void ConfigureTranscriptLoggerMiddleware(BotFrameworkHttpAdapter adapter, { if (ConfigSectionValid(settings?.BlobStorage?.ConnectionString) && ConfigSectionValid(settings?.BlobStorage?.Container)) { - adapter.Use(new TranscriptLoggerMiddleware(new AzureBlobTranscriptStore(settings?.BlobStorage?.ConnectionString, settings?.BlobStorage?.Container))); + adapter.Use(new TranscriptLoggerMiddleware(new BlobsTranscriptStore(settings?.BlobStorage?.ConnectionString, settings?.BlobStorage?.Container))); } } diff --git a/runtime/dotnet/core/Microsoft.BotFramework.Composer.Core.csproj b/runtime/dotnet/core/Microsoft.BotFramework.Composer.Core.csproj index 3300dadad5..7e6a15c899 100644 --- a/runtime/dotnet/core/Microsoft.BotFramework.Composer.Core.csproj +++ b/runtime/dotnet/core/Microsoft.BotFramework.Composer.Core.csproj @@ -18,6 +18,7 @@ +