Bot Framework v4.4.3 Обновление шаблона манифеста навыков - PullRequest
0 голосов
/ 27 июня 2019

В документе здесь написано манифест навыка обновления, но не указано, как добавить новый навык в файл манифеста.

У меня есть следующее в главном диалоговом окне:

case MasterCollectionsLuis.Intent.PlayVideo:
                        {
                            turnResult = await dc.BeginDialogAsync(nameof(Water.PlayVideo.PlayVideoDialog));
                            break;
                        }

И иметь базу для PlayVideo и самого диалога, как показано на примере SampleDialog и SampleDialogBase.

Когда я загружаю файл манифеста в http://localhost:1205/api/skill/manifest:

An unhandled exception occurred while processing the request.
InvalidOperationException: Unable to resolve service for type 'MasterCollections.Dialogs.Water.PlayVideo.PlayVideoDialog' while attempting to activate 'MasterCollections.Dialogs.MainDialog'.
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type serviceType, Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, bool throwIfCallSiteNotFound)

1 Ответ

1 голос
/ 27 июня 2019

Ошибка внедрения зависимости

Эта ошибка связана с конвейером ввода зависимости без установки файла Startup.cs. Я думаю, что вы не подключили PlayVideoDialogтам.

В вашем файле Startup.cs будет раздел, где вы регистрируете свои диалоги для поставщика услуг внедрения зависимостей, например:

services.AddTransient<CancelDialog>();
services.AddTransient<EscalateDialog>();
services.AddTransient<MainDialog>();

Вам просто нужно добавить еще одну строкукаждый раз, когда вы добавляете новый диалог:

services.AddTransient<MyNewDialog>();

В вашем случае вместо MyNewDialog будет PlayVideoDialog.

Также убедитесь, что вы не передача параметра PlayVideoDialog в конструктор MainDialog, поскольку это не так, как работают диалоги, вместо этого следует вызвать метод AddDialog(new PlayVideoDialog(...)) внутри конструктора MainDialog.

Skillsявный вопрос

Я не создал навык сам, но есть дополнительная документация, которая может или не может быть полезной о добавлении поддержки навыков , добавлении навыков и манифест навыков t сам файл.

В документации, которую вы связали, говорится:

это было предварительно заполнено идентификатором и именем навыка и примером действия, которое вы можетепри необходимости измените на этом этапе

, что заставляет меня поверить, что вы можете вручную изменить этот файл в соответствии со своими требованиями, но вам не нужно изменять его, если не требуется никаких изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...