BotFramework-Composer icon indicating copy to clipboard operation
BotFramework-Composer copied to clipboard

Custom actions merge schema failed error

Open Vivihung opened this issue 3 years ago • 6 comments

Describe the bug

When following this document to create custom action of a bot created by Bot Composer (with template "Core Bot with Language"), in the step of merging schema, update-schema.ps1 (run with admin perm) returns errors.

Error

PS C:\Git\my-bot\myBot\myBot\schemas> .\update-schema.ps1 Running schema merge. Finding component files Error conflicting definitions of CancelDialog.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\CancelDialog\CancelDialog.dialog Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\CancelDialog\CancelDialog.dialog Error conflicting definitions of HelpDialog.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\HelpDialog\HelpDialog.dialog Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\HelpDialog\HelpDialog.dialog Error conflicting definitions of WelcomeDialog.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.Welcome\WelcomeDialog\WelcomeDialog.dialog Microsoft.Bot.Components.Welcome: C:\Users\vivihung.nuget\packages\microsoft.bot.components.welcome\1.1.2\exported\WelcomeDialog\WelcomeDialog.dialog Error conflicting definitions of CancelDialog.en-us.lu.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\CancelDialog\recognizers\CancelDialog.en-us.lu.dialog Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\CancelDialog\recognizers\CancelDialog.en-us.lu.dialog Error conflicting definitions of CancelDialog.lu.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\CancelDialog\recognizers\CancelDialog.lu.dialog Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\CancelDialog\recognizers\CancelDialog.lu.dialog Error conflicting definitions of CancelDialog.lu.qna.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\CancelDialog\recognizers\CancelDialog.lu.qna.dialog Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\CancelDialog\recognizers\CancelDialog.lu.qna.dialog Error conflicting definitions of HelpDialog.en-us.lu.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\HelpDialog\recognizers\HelpDialog.en-us.lu.dialog Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\HelpDialog\recognizers\HelpDialog.en-us.lu.dialog Error conflicting definitions of HelpDialog.lu.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\HelpDialog\recognizers\HelpDialog.lu.dialog Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\HelpDialog\recognizers\HelpDialog.lu.dialog Error conflicting definitions of HelpDialog.lu.qna.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\HelpDialog\recognizers\HelpDialog.lu.qna.dialog Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\HelpDialog\recognizers\HelpDialog.lu.qna.dialog Error conflicting definitions of WelcomeDialog.en-us.lu.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.Welcome\WelcomeDialog\recognizers\WelcomeDialog.en-us.lu.dialog Microsoft.Bot.Components.Welcome: C:\Users\vivihung.nuget\packages\microsoft.bot.components.welcome\1.1.2\exported\WelcomeDialog\recognizers\WelcomeDialog.en-us.lu.dialog Error conflicting definitions of WelcomeDialog.lu.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.Welcome\WelcomeDialog\recognizers\WelcomeDialog.lu.dialog Microsoft.Bot.Components.Welcome: C:\Users\vivihung.nuget\packages\microsoft.bot.components.welcome\1.1.2\exported\WelcomeDialog\recognizers\WelcomeDialog.lu.dialog Error conflicting definitions of WelcomeDialog.lu.qna.dialog : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.Welcome\WelcomeDialog\recognizers\WelcomeDialog.lu.qna.dialog Microsoft.Bot.Components.Welcome: C:\Users\vivihung.nuget\packages\microsoft.bot.components.welcome\1.1.2\exported\WelcomeDialog\recognizers\WelcomeDialog.lu.qna.dialog Error conflicting definitions of CancelDialog.en-us.lg : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\CancelDialog\language-generation\en-us\CancelDialog.en-us.lg Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\CancelDialog\language-generation\en-us\CancelDialog.en-us.lg Error conflicting definitions of HelpDialog.en-us.lg : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\HelpDialog\language-generation\en-us\HelpDialog.en-us.lg Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\HelpDialog\language-generation\en-us\HelpDialog.en-us.lg Error conflicting definitions of WelcomeDialog.en-us.lg : C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.Welcome\WelcomeDialog\language-generation\en-us\WelcomeDialog.en-us.lg Microsoft.Bot.Components.Welcome: C:\Users\vivihung.nuget\packages\microsoft.bot.components.welcome\1.1.2\exported\WelcomeDialog\language-generation\en-us\WelcomeDialog.en-us.lg Error multiple definitions of CancelDialog.en-us.lu in C:\Git\my-bot\myBot\myBot\generated\interruption\CancelDialog.en-us.lu C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\CancelDialog\language-understanding\en-us\CancelDialog.en-us.lu Error conflicting definitions of CancelDialog.en-us.lu : C:\Git\my-bot\myBot\myBot\generated\interruption\CancelDialog.en-us.lu Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\CancelDialog\language-understanding\en-us\CancelDialog.en-us.lu Error multiple definitions of HelpDialog.en-us.lu in C:\Git\my-bot\myBot\myBot\generated\interruption\HelpDialog.en-us.lu C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\HelpDialog\language-understanding\en-us\HelpDialog.en-us.lu Error conflicting definitions of HelpDialog.en-us.lu : C:\Git\my-bot\myBot\myBot\generated\interruption\HelpDialog.en-us.lu Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\HelpDialog\language-understanding\en-us\HelpDialog.en-us.lu Error multiple definitions of myBot.en-us.lu in C:\Git\my-bot\myBot\myBot\generated\interruption\myBot.en-us.lu C:\Git\my-bot\myBot\myBot\language-understanding\en-us\myBot.en-us.lu Error multiple definitions of WelcomeDialog.en-us.lu in C:\Git\my-bot\myBot\myBot\generated\interruption\WelcomeDialog.en-us.lu C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.Welcome\WelcomeDialog\language-understanding\en-us\WelcomeDialog.en-us.lu Error conflicting definitions of WelcomeDialog.en-us.lu : C:\Git\my-bot\myBot\myBot\generated\interruption\WelcomeDialog.en-us.lu Microsoft.Bot.Components.Welcome: C:\Users\vivihung.nuget\packages\microsoft.bot.components.welcome\1.1.2\exported\WelcomeDialog\language-understanding\en-us\WelcomeDialog.en-us.lu Error multiple definitions of CancelDialog.en-us.qna in C:\Git\my-bot\myBot\myBot\generated\interruption\CancelDialog.en-us.qna C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\CancelDialog\knowledge-base\en-us\CancelDialog.en-us.qna Error conflicting definitions of CancelDialog.en-us.qna : C:\Git\my-bot\myBot\myBot\generated\interruption\CancelDialog.en-us.qna Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\CancelDialog\knowledge-base\en-us\CancelDialog.en-us.qna Error multiple definitions of HelpDialog.en-us.qna in C:\Git\my-bot\myBot\myBot\generated\interruption\HelpDialog.en-us.qna C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.HelpAndCancel\HelpDialog\knowledge-base\en-us\HelpDialog.en-us.qna Error conflicting definitions of HelpDialog.en-us.qna : C:\Git\my-bot\myBot\myBot\generated\interruption\HelpDialog.en-us.qna Microsoft.Bot.Components.HelpAndCancel: C:\Users\vivihung.nuget\packages\microsoft.bot.components.helpandcancel\1.1.2\exported\HelpDialog\knowledge-base\en-us\HelpDialog.en-us.qna Error multiple definitions of WelcomeDialog.en-us.qna in C:\Git\my-bot\myBot\myBot\generated\interruption\WelcomeDialog.en-us.qna C:\Git\my-bot\myBot\myBot\dialogs\imported\Microsoft.Bot.Components.Welcome\WelcomeDialog\knowledge-base\en-us\WelcomeDialog.en-us.qna Error conflicting definitions of WelcomeDialog.en-us.qna : C:\Git\my-bot\myBot\myBot\generated\interruption\WelcomeDialog.en-us.qna Microsoft.Bot.Components.Welcome: C:\Users\vivihung.nuget\packages\microsoft.bot.components.welcome\1.1.2\exported\WelcomeDialog\knowledge-base\en-us\WelcomeDialog.en-us.qna Parsing component .schema files Merging component schemas Error must have a merged .schema to merge .uischema files *** Could not merge components *** Schema merge failed. Restoring previous versions.

Version

Bot Composer: 2.0.0 SDK runtime packages: 4.12.0 PowerShell 7

OS

  • [ ] macOS
  • [X] Windows
  • [ ] Ubuntu

To Reproduce

Steps to reproduce the behavior:

  1. In Bot Composer Desktop app, create a bot with "Core Bot with Language" template
  2. Open the bot folder in Visual Studio (2019)
  3. Follow this doc to create a custom action
  4. See error

Expected behavior

Expect there's no errors (since I follow documentation for every step). Even there are unexpected errors, there should be documentation guide a bot dev how to resolve it. From the error messages I received, I don't understand what's wrong.

Additional context

Found a similar issue posted in stackoverflow, but the answer doesn't fix it.

Vivihung avatar Jul 30 '21 23:07 Vivihung

@Vivihung Can you open the bot folder and delete the generated folder and try to merge the schemas again? We have a know bug in the with bf-dialog merge tool not excluding the definitions inside the generated folder.

srinaath avatar Aug 04 '21 17:08 srinaath

@srinaath I can reproduce this myself without even having a generated folder. I just created a brand new bot using Core Bot with Language then run the update-schema.ps1 script. This happens with or without creating a new .schema file. This does not reproduce with the Empty Bot template.

dmvtech avatar Aug 05 '21 23:08 dmvtech

The following changes I found to be useful in my case: Line 11, change "!**/generated" to "!../generated" and add "!../dialogs/imported"

collinsbenjw avatar Aug 25 '21 19:08 collinsbenjw

@dmvtech - Schema merge seems to work after we delete the imported folder inside the schemas folder.

But bot fails on starting up getting error, please help.

"System.MissingMethodException: Method not found: 'Void Microsoft.Bot.Connector.Authentication.PasswordServiceClientCredentialFactory..ctor(System.String, System.String, System.Net.Http.HttpClient, Microsoft.Extensions.Logging.ILogger)'. at Microsoft.Bot.Builder.Integration.AspNet.Core.ConfigurationServiceClientCredentialFactory..ctor(IConfiguration configuration, HttpClient httpClient, ILogger logger) at Microsoft.Bot.Builder.Integration.AspNet.Core.ConfigurationBotFrameworkAuthentication..ctor(IConfiguration configuration, ServiceClientCredentialsFactory credentialsFactory, AuthenticationConfiguration authConfiguration, IHttpClientFactory httpClientFactory, ILogger logger) at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions) at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType) at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func2 valueFactory) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope) at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) at Microsoft.Bot.Builder.Dialogs.Adaptive.Runtime.Extensions.ServiceCollectionExtensions.<>c.<AddBotRuntime>b__0_0(IServiceProvider sp) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitIEnumerable(IEnumerableCallSite enumerableCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType) at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func`2 valueFactory) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope) at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, Boolean isDefaultParameterRequired) at lambda_method(Closure , IServiceProvider , Object[] ) at Microsoft.AspNetCore.Mvc.Controllers.ControllerActivatorProvider.<>c__DisplayClass4_0.<CreateActivator>b__0(ControllerContext controllerContext) at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass5_0.<CreateControllerFactory>g__CreateController|0(ControllerContext controllerContext) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context) HEADERS ======= Connection: close Content-Type: application/json Accept: / Accept-Encoding

`

SSanjeevi avatar Dec 20 '21 11:12 SSanjeevi

I faced the same issue even after applying @collinsbenjw solution. Then I deleted the imported folder under schemas which is auto-generated and then ran the bash-script (update-schema.sh) which ran successfully.

Added rm -rf "imported" command in bash-script before echo "Running schema merge." so that I don't have to delete imported folder manually.

tanuj01 avatar Dec 20 '21 11:12 tanuj01

Step #1: Follow guild for adding custom action and add the custom action Link: https://docs.microsoft.com/en-us/composer/how-to-create-custom-actions Alternatively add the custom action from the bot sample files.

Step #2: Run the powershell script. With or with out the updated line from bug #8888. You will still receive and error about the SMSAdapater and the script will fail.

piechk avatar Jan 27 '22 12:01 piechk

Hi @piechk,

Are you still facing this issue? I was not able to repro when creating custom action from doc https://docs.microsoft.com/en-us/composer/how-to-create-custom-actions

Are you able to provide the reproducible custom action .zip project code?

ramfattah avatar Jan 03 '23 22:01 ramfattah

@collinsbenjw's solution worked from my end:

Line 11, change "!**/generated" to "!../generated" and add "!../dialogs/imported"

Final resulting command:

bf dialog:merge "*.schema" "!**/sdk-backup.schema" "*.uischema" "!**/sdk-backup.uischema" "!**/sdk.override.uischema" "!../generated" "../*.csproj" "../package.json" "!../dialogs/imported" -o $SCHEMA_FILE

Closing with workaround.

ramfattah avatar Jan 04 '23 06:01 ramfattah