From c735af7eff880cdd47a05b5c152681438a813d6f Mon Sep 17 00:00:00 2001 From: liweitian Date: Mon, 18 Jan 2021 16:47:59 +0800 Subject: [PATCH] fix luis qna key missing error --- .../selectors/diagnosticsPageSelector.ts | 3 +- .../src/recoilModel/selectors/project.ts | 4 +- .../packages/lib/indexers/src/botIndexer.ts | 55 +++++++++++-------- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/Composer/packages/client/src/recoilModel/selectors/diagnosticsPageSelector.ts b/Composer/packages/client/src/recoilModel/selectors/diagnosticsPageSelector.ts index 4b2e429718..5c213f8d9b 100644 --- a/Composer/packages/client/src/recoilModel/selectors/diagnosticsPageSelector.ts +++ b/Composer/packages/client/src/recoilModel/selectors/diagnosticsPageSelector.ts @@ -129,12 +129,13 @@ export const settingDiagnosticsSelectorFamily = selectorFamily({ if (botAssets === null) return []; const rootProjectId = get(rootBotProjectIdSelector) ?? projectId; + const rootSetting = get(settingsState(rootProjectId)); const diagnosticList: DiagnosticInfo[] = []; //1. Missing LUIS key //2. Missing QnA Maker subscription key. //appsettings.json - const settingDiagnostic = BotIndexer.checkSetting(botAssets); + const settingDiagnostic = BotIndexer.checkSetting(botAssets, rootSetting); settingDiagnostic.forEach((item) => { diagnosticList.push(new SettingDiagnostic(rootProjectId, projectId, item.source, item.source, item)); }); diff --git a/Composer/packages/client/src/recoilModel/selectors/project.ts b/Composer/packages/client/src/recoilModel/selectors/project.ts index b203820022..eb8bedc66c 100644 --- a/Composer/packages/client/src/recoilModel/selectors/project.ts +++ b/Composer/packages/client/src/recoilModel/selectors/project.ts @@ -212,6 +212,8 @@ export const perProjectDiagnosticsSelectorFamily = selectorFamily({ key: 'perProjectDiagnosticsSelectorFamily', get: (projectId: string) => ({ get }) => { const { isRemote, isRootBot } = get(projectMetaDataState(projectId)); + const rootBotId = get(rootBotProjectIdSelector) || projectId; + const rootSetting = get(settingsState(rootBotId)); const dialogs = get(dialogsSelectorFamily(projectId)); const formDialogSchemas = get(formDialogSchemasSelectorFamily(projectId)); const luFiles = get(luFilesState(projectId)); @@ -237,7 +239,7 @@ export const perProjectDiagnosticsSelectorFamily = selectorFamily({ recognizers: [], crossTrainConfig: {}, }; - return BotIndexer.validate({ ...botAssets, isRemote, isRootBot }); + return BotIndexer.validate({ ...botAssets, isRemote, isRootBot }, rootSetting); }, }); diff --git a/Composer/packages/lib/indexers/src/botIndexer.ts b/Composer/packages/lib/indexers/src/botIndexer.ts index cba4d1488e..bfc97a4d90 100644 --- a/Composer/packages/lib/indexers/src/botIndexer.ts +++ b/Composer/packages/lib/indexers/src/botIndexer.ts @@ -76,29 +76,31 @@ const shouldUseQnA = (dialogs: DialogInfo[], qnaFiles: QnAFile[]): boolean => { * 1. Missing LUIS key * 2. Missing QnA Maker subscription key. */ -const checkSetting = (assets: { - dialogs: DialogInfo[]; - lgFiles: LgFile[]; - luFiles: LuFile[]; - qnaFiles: QnAFile[]; - setting: DialogSetting; -}): Diagnostic[] => { +const checkSetting = ( + assets: { + dialogs: DialogInfo[]; + lgFiles: LgFile[]; + luFiles: LuFile[]; + qnaFiles: QnAFile[]; + setting: DialogSetting; + }, + rootSetting?: DialogSetting +): Diagnostic[] => { const { dialogs, setting, luFiles, qnaFiles } = assets; const diagnostics: Diagnostic[] = []; - const useLUIS = shouldUseLuis(dialogs, luFiles); const useQnA = shouldUseQnA(dialogs, qnaFiles); // if use LUIS, check LUIS authoring key if (useLUIS) { - if (!get(setting, 'luis.authoringKey')) { + if (!get(setting, 'luis.authoringKey') && !get(rootSetting, 'luis.authoringKey')) { diagnostics.push(new Diagnostic('Missing LUIS key', 'appsettings.json', DiagnosticSeverity.Error, '#luisKey')); } } // if use LUIS, check LUIS authoring region if (useLUIS) { - if (!get(setting, 'luis.authoringRegion')) { + if (!get(setting, 'luis.authoringRegion') && !get(rootSetting, 'luis.authoringRegion')) { diagnostics.push( new Diagnostic('Missing LUIS region', 'appsettings.json', DiagnosticSeverity.Error, '#luisRegion') ); @@ -107,7 +109,7 @@ const checkSetting = (assets: { // if use QnA, check QnA subscription key if (useQnA) { - if (!get(setting, 'qna.subscriptionKey')) { + if (!get(setting, 'qna.subscriptionKey') && !get(rootSetting, 'qna.subscriptionKey')) { diagnostics.push( new Diagnostic('Missing QnA Maker subscription key', 'appsettings.json', DiagnosticSeverity.Error, '#qnaKey') ); @@ -164,19 +166,26 @@ const checkSkillSetting = (assets: { dialogs: DialogInfo[]; botProjectFile: BotP return diagnostics; }; -const validate = (assets: { - dialogs: DialogInfo[]; - lgFiles: LgFile[]; - luFiles: LuFile[]; - qnaFiles: QnAFile[]; - setting: DialogSetting; - skillManifests: SkillManifestFile[]; - botProjectFile: BotProjectFile; - isRemote?: boolean; - isRootBot?: boolean; -}): Diagnostic[] => { +const validate = ( + assets: { + dialogs: DialogInfo[]; + lgFiles: LgFile[]; + luFiles: LuFile[]; + qnaFiles: QnAFile[]; + setting: DialogSetting; + skillManifests: SkillManifestFile[]; + botProjectFile: BotProjectFile; + isRemote?: boolean; + isRootBot?: boolean; + }, + rootSetting?: DialogSetting +): Diagnostic[] => { if (assets.isRemote) return []; - const settingDiagnostics = [...checkSetting(assets), ...checkLUISLocales(assets), ...checkSkillSetting(assets)]; + const settingDiagnostics = [ + ...checkSetting(assets, rootSetting), + ...checkLUISLocales(assets), + ...checkSkillSetting(assets), + ]; if (assets.isRootBot) return settingDiagnostics; return [...checkManifest(assets), ...settingDiagnostics]; };