Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
42868d8
Updating AppSettings type obj to reflect new runtime appSettings stru…
pavolumMsft Apr 8, 2021
19ff2e1
Updating default appSettings obj per type update
pavolumMsft Apr 8, 2021
0a952ef
Updating allowedCallers Ui component to interface with new location o…
pavolumMsft Apr 8, 2021
495a371
Adding allowedCallers to tab settings UI view
pavolumMsft Apr 8, 2021
289de6a
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 8, 2021
6588fda
Adding allowedCallers null check
pavolumMsft Apr 8, 2021
3a30122
Moving AdapterRecord type to types workspace
pavolumMsft Apr 8, 2021
3e19b51
Updating imports for adapter record
pavolumMsft Apr 8, 2021
423d2a1
Merge branch 'pavolum/appsettingsFix' of https://github.com/microsoft…
pavolumMsft Apr 8, 2021
b09a7bc
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 8, 2021
a6d87dd
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 8, 2021
49272ef
Fixing runtimeSettings type
pavolumMsft Apr 8, 2021
bd39480
Fix linting errors
pavolumMsft Apr 8, 2021
1b2ce70
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 8, 2021
19f02d0
Fixing types definition
pavolumMsft Apr 8, 2021
e00c7e0
Merge branch 'pavolum/appsettingsFix' of https://github.com/microsoft…
pavolumMsft Apr 8, 2021
0043d77
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 8, 2021
419432d
Fixing typing...again
pavolumMsft Apr 8, 2021
d18508b
Merge branch 'pavolum/appsettingsFix' of https://github.com/microsoft…
pavolumMsft Apr 8, 2021
68f805a
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 8, 2021
805b415
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 8, 2021
e68919a
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 8, 2021
f104604
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 8, 2021
e88fbc4
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 8, 2021
a8a4975
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 9, 2021
044d4fc
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 9, 2021
dffe18b
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 9, 2021
b514237
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 12, 2021
3477b62
Fixing imports
pavolum Apr 12, 2021
4f4be3e
Cleaning up typing of appsettings Obj
pavolum Apr 12, 2021
1f2acbf
Merge branch 'pavolum/appsettingsFix' of https://github.com/microsoft…
pavolum Apr 12, 2021
6e6f88c
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 13, 2021
062c081
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 13, 2021
40c1a72
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 13, 2021
cda5a8d
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 13, 2021
f9f8725
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 13, 2021
8f6eb56
Merge branch 'main' into pavolum/appsettingsFix
a-b-r-o-w-n Apr 13, 2021
b44ef81
Merge branch 'main' into pavolum/appsettingsFix
beyackle Apr 13, 2021
5b80ec3
Merge branch 'main' into pavolum/appsettingsFix
beyackle Apr 13, 2021
032f3fd
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 13, 2021
e742053
Fixing type bug introduced in merging with latest main
pavolum Apr 13, 2021
0a40a90
Merge branch 'main' into pavolum/appsettingsFix
pavolum Apr 14, 2021
e718cb9
Resolving merge conflicts
pavolum Apr 14, 2021
ec1e389
Merge branch 'pavolum/appsettingsFix' of https://github.com/microsoft…
pavolum Apr 14, 2021
0cfa2e8
Fixing errors from merge
pavolum Apr 14, 2021
4517888
removing unused import
pavolum Apr 14, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 23 additions & 15 deletions Composer/packages/client/src/pages/botProject/AllowedCallers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { Stack } from 'office-ui-fabric-react/lib/components/Stack';
import { ITextField, TextField } from 'office-ui-fabric-react/lib/components/TextField';
import cloneDeep from 'lodash/cloneDeep';
import formatMessage from 'format-message';
import { MessageBar, MessageBarType } from 'office-ui-fabric-react/lib/MessageBar';

import { dispatcherState, rootBotProjectIdSelector, settingsState } from '../../recoilModel';
import { mergePropertiesManagedByRootBot } from '../../recoilModel/dispatchers/utils/project';
Expand Down Expand Up @@ -100,43 +101,47 @@ export const AllowedCallers: React.FC<Props> = ({ projectId }) => {
const rootBotProjectId = useRecoilValue(rootBotProjectIdSelector) || '';
const settings = useRecoilValue(settingsState(projectId));
const mergedSettings = mergePropertiesManagedByRootBot(projectId, rootBotProjectId, settings);
const { skillConfiguration } = mergedSettings;
const { runtimeSettings } = mergedSettings;

const updateAllowedCallers = React.useCallback(
(allowedCallers: string[] = []) => {
const updatedSetting = {
...cloneDeep(mergedSettings),
skillConfiguration: { ...skillConfiguration, allowedCallers },
runtimeSettings: { ...runtimeSettings, skills: { ...runtimeSettings?.skills, allowedCallers } },
};
setSettings(projectId, updatedSetting);
},
[mergedSettings, projectId, skillConfiguration]
[mergedSettings, projectId, runtimeSettings?.skills]
);

const onBlur = React.useCallback(() => {
updateAllowedCallers(skillConfiguration?.allowedCallers?.filter(Boolean));
}, [skillConfiguration?.allowedCallers, updateAllowedCallers]);
updateAllowedCallers(runtimeSettings?.skills?.allowedCallers?.filter(Boolean));
}, [runtimeSettings?.skills?.allowedCallers, updateAllowedCallers]);

const onChange = React.useCallback(
(index: number) => (_: React.FormEvent<HTMLInputElement | HTMLTextAreaElement>, newValue = '') => {
const updatedAllowedCallers = [...(skillConfiguration?.allowedCallers || [])];
const updatedAllowedCallers = [...(runtimeSettings?.skills?.allowedCallers || [])];
updatedAllowedCallers[index] = newValue;
updateAllowedCallers(updatedAllowedCallers);
},
[skillConfiguration?.allowedCallers, updateAllowedCallers]
[runtimeSettings?.skills?.allowedCallers, updateAllowedCallers]
);

const onRemove = React.useCallback(
(index: number) => () => {
const updatedAllowedCallers = skillConfiguration?.allowedCallers?.filter((_, itemIndex) => itemIndex !== index);
const updatedAllowedCallers = runtimeSettings?.skills?.allowedCallers?.filter(
(_, itemIndex) => itemIndex !== index
);
updateAllowedCallers(updatedAllowedCallers);
},
[skillConfiguration?.allowedCallers, updateAllowedCallers]
[runtimeSettings?.skills?.allowedCallers, updateAllowedCallers]
);

const onAddNewAllowedCaller = React.useCallback(() => {
updateAllowedCallers([...skillConfiguration?.allowedCallers, '']);
}, [skillConfiguration?.allowedCallers, updateAllowedCallers]);
runtimeSettings?.skills?.allowedCallers
? updateAllowedCallers([...runtimeSettings?.skills?.allowedCallers, ''])
: updateAllowedCallers(['']);
}, [runtimeSettings?.skills?.allowedCallers, updateAllowedCallers]);

return (
<CollapsableWrapper title={formatMessage('Allowed callers')} titleStyle={title}>
Expand All @@ -146,16 +151,19 @@ export const AllowedCallers: React.FC<Props> = ({ projectId }) => {
)}
</div>
<ItemContainer>
{skillConfiguration?.allowedCallers?.map((caller, index) => {
{runtimeSettings?.skills?.allowedCallers?.map((caller, index) => {
return (
<Item key={index} value={caller} onBlur={onBlur} onChange={onChange(index)} onRemove={onRemove(index)} />
);
})}
</ItemContainer>
{!skillConfiguration?.allowedCallers?.length && (
<div css={[defaultSubtitle, subtitle]}>
<ActionButton data-testid={'addNewAllowedCaller'} styles={actionButton} onClick={onAddNewAllowedCaller}>
{formatMessage('Add caller')}
</ActionButton>
{!runtimeSettings?.skills?.allowedCallers?.length && (
<MessageBar messageBarType={MessageBarType.warning}>
{formatMessage('This bot cannot be called as a skill since the allowed caller list is empty')}
</div>
</MessageBar>
)}
<ActionButton data-testid={'addNewAllowedCaller'} styles={actionButton} onClick={onAddNewAllowedCaller}>
{formatMessage('Add new caller')}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,12 @@ import { JSONSchema7 } from '@botframework-composer/types';
import { EditorExtension, PluginConfig } from '@bfc/extension-client';
import mapValues from 'lodash/mapValues';
import { JSONSchema7Type } from 'json-schema';
import { AdapterRecord } from '@botframework-composer/types';

import { settingsState, dispatcherState } from '../../../recoilModel';
import { useShell } from '../../../shell';
import plugins, { mergePluginConfigs } from '../../../plugins';

export type AdapterRecord = {
name: string;
route: string;
enabled: boolean;
};

type Props = {
adapterKey: string;
packageName: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,13 @@ import { IconButton } from 'office-ui-fabric-react/lib/Button';
import { TooltipHost, DirectionalHint } from 'office-ui-fabric-react/lib/Tooltip';
import { SharedColors } from '@uifabric/fluent-theme';
import { JSONSchema7 } from '@botframework-composer/types';
import { AdapterRecord } from '@botframework-composer/types/src';

import { useRouterCache } from '../../../utils/hooks';
import { schemasState, settingsState, dispatcherState } from '../../../recoilModel';
import { subtitle, tableRow, tableRowItem, tableColumnHeader, columnSizes } from '../styles';

import AdapterModal, { AdapterRecord, hasRequired } from './ExternalAdapterModal';
import AdapterModal, { hasRequired } from './ExternalAdapterModal';

//////////

Expand Down
3 changes: 3 additions & 0 deletions Composer/packages/lib/shared/src/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ export const applyPublishingProfileToSettings = (settings: DialogSetting, profil
connectionString: profile.settings.blobStorage.connectionString,
containerName: profile.settings.blobStorage.container,
},
setSpeak: {
...settings.runtimeSettings.features?.setSpeak,
},
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,28 @@ export class DefaultSettingManager extends FileSettingManager {

protected createDefaultSettings = (): DialogSetting => {
return {
runtimeSettings: {
features: {
removeRecipientMentions: false,
showTyping: false,
traceTranscript: false,
useInspection: false,
setSpeak: {
voiceFontName: 'en-US-AriaNeural',
fallbackToTextForSpeechIfEmpty: true,
},
},
components: [],
skills: {
allowedCallers: [],
},
storage: '',
telemetry: {
instrumentationKey: '',
logActivities: true,
logPersonalInformation: false,
},
},
feature: {
UseShowTypingMiddleware: false,
UseInspectionMiddleware: false,
Expand Down Expand Up @@ -98,11 +120,6 @@ export class DefaultSettingManager extends FileSettingManager {
downsampling: {
maxImbalanceRatio: -1,
},
skillConfiguration: {
// TODO: Setting isSkill property to true for now. A runtime change is required to remove dependancy on isSkill prop #4501
isSkill: true,
allowedCallers: [],
},
skill: {},
defaultLanguage: 'en-us',
languages: ['en-us'],
Expand Down
43 changes: 43 additions & 0 deletions Composer/packages/types/src/settings.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
import { JSONSchema7Type } from 'json-schema';

import type { PublishTarget } from './publish';

export interface LibraryRef {
Expand All @@ -9,6 +11,13 @@ export interface LibraryRef {
location: string;
}

export type AdapterRecord = {
name: string;
route?: JSONSchema7Type;
type?: JSONSchema7Type;
enabled: boolean;
};

export type CodeEditorSettings = {
lineNumbers: boolean;
wordWrap: boolean;
Expand Down Expand Up @@ -44,6 +53,38 @@ export type SkillSetting = {
endpointUrl: string;
};

export type RuntimeSettings = {
adapters?: AdapterRecord[];
features?: {
removeRecipientMentions?: boolean;
showTyping?: boolean;
traceTranscript?: boolean;
useInspection?: boolean;
blobTranscript?: {
connectionString?: string;
containerName?: string;
};
setSpeak?: {
voiceFontName?: string;
fallbackToTextForSpeechIfEmpty?: true;
};
};
components?: [];
skills?: {
allowedCallers?: string[];
};
storage?: string;
telemetry?: {
options?: {
connectionString?: string;
instrumentationKey?: string;
};
instrumentationKey?: string;
logActivities?: boolean;
logPersonalInformation?: boolean;
};
};

export type DialogSetting = {
MicrosoftAppId?: string;
MicrosoftAppPassword?: string;
Expand All @@ -67,6 +108,8 @@ export type DialogSetting = {
botId?: string;
skillHostEndpoint?: string;
customFunctions: string[];
defaultLocale?: string;
runtimeSettings?: RuntimeSettings;
[key: string]: any;
};

Expand Down