Есть ли способ вручную подключить навык к виртуальному помощнику Microsoft? Без запуска botskills connect - PullRequest
1 голос
/ 16 июня 2020

Я слежу за документацией Microsoft Virtual Assistant и создал навык и VA в машинописном тексте, каждый из которых работает правильно независимо. Я пытаюсь связать навык с VA.

Когда я запускаю botskills connect, возникает "кроличья нора" ошибок, которые, похоже, вызваны тем, что я вручную настроил ресурсы Azure для навыка и VA вместо deploy.ps1. Из-за корпоративного управления и политики моей фирмы я не могу запустить deploy.ps1 и вместо этого создать свои ресурсы Azure с помощью фирменных шаблонов ARM или через портал Azure.

Чтобы обойти это, что конкретно делает botskills connect? Могу ли я выполнить эти шаги самостоятельно? Мне не удалось найти документацию о том, как подключить навык к виртуальному помощнику без запуска botskills connect.

1 Ответ

1 голос
/ 17 июня 2020

К сожалению, без перечисленных фактических ошибок я не могу помочь их решить, но могу направить вас к цели botskills connect.

Под капотом botskills connect запускает серию проверок на манифестных и когнитивных моделях ваших навыков. Как только они будут разрешены, он создает новый объект ConnectSkills и вызывает для него .connectSkills. 1

Эта функция выполняет еще пару проверок, а затем запускает .connectSkillsManifest 2

Эта новая функция обновляет Dispatch, чтобы охватить новые когнитивные модели в вашем навыке, и, наконец, создает «проявление навыка» в вашем боте VA и добавляет туда ваш новый навык: 3

private async connectSkillManifest(cognitiveModelsFile: ICognitiveModel, skillManifest: IManifest): Promise<void> {
        try {
            // Take VA Skills configurations
            const assistantSkillsFile: IAppSetting = JSON.parse(readFileSync(this.configuration.appSettingsFile, 'UTF8'));
            const assistantSkills: ISkill[] = assistantSkillsFile.botFrameworkSkills !== undefined ? assistantSkillsFile.botFrameworkSkills : [];

            // Check if the skill is already connected to the assistant
            if (assistantSkills.find((assistantSkill: ISkill): boolean => assistantSkill.id === skillManifest.id)) {
                this.logger.warning(`The skill with ID '${ skillManifest.id }' is already registered.`);
                return;
            }

            // Validate cultures
            await this.validateCultures(cognitiveModelsFile, skillManifest.luisDictionary);
            // Updating Dispatch
            this.logger.message('Updating Dispatch');
            await this.updateModel(skillManifest.luisDictionary, skillManifest.id);
            // Adding the skill manifest to the assistant skills array
            this.logger.message(`Appending '${ skillManifest.name }' manifest to your assistant's skills configuration file.`);
            // Updating the assistant skills file's skills property with the assistant skills array
            // Writing (and overriding) the assistant skills file
            //writeFileSync(this.configuration.skillsFile, JSON.stringify(assistantSkillsFile, undefined, 4));
            await this.AddSkill(assistantSkillsFile, assistantSkills, skillManifest);
            this.logger.success(`Successfully appended '${ skillManifest.name }' manifest to your assistant's skills configuration file!`);
            // Configuring bot auth settings
            //this.logger.message('Configuring bot auth settings');
            //await this.authenticationUtils.authenticate(this.configuration, skillManifest, this.logger);
        } catch (err) {
            this.logger.error(`There was an error while connecting the Skill to the Assistant:\n${ err }`);
        }
    }

Мои навыки машинописного текста немного устарели, но это все находится в TS, и вам, возможно, будет легче разобрать его теперь, когда вы знаете, где все это скрывается.

...