skip to Main Content

I have a chatbot using Bot framework C# language and I’m trying to connect it to WhatsApp channel using Infobip adapter but I’m getting error message says :Unhandled exception. System.AggregateException: Some services are not able to be constructed

this is the ConfigureServices in startup.cs file:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();

    services.AddSingleton<InfobipWhatsAppAdapterOptions>();
    services.AddSingleton<IInfobipWhatsAppClient, InfobipWhatsAppClient>();

    services.AddSingleton<InfobipWhatsAppAdapter, InfobipHandler>();

    services.AddTransient<IBot, EchoBot>();
}

whenever I try to run the bot an error message appears that says:

Unhandled exception. System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: Microsoft.Bot.Builder.Integration.AspNet.Core.IBotFrameworkHttpAdapter Lifetime: Singleton ImplementationType: WhatsAppEchoBot.AdapterWithErrorHandler': Unable to resolve service for type 'Microsoft.Bot.Connector.Authentication.BotFrameworkAuthentication' while attempting to activate 'WhatsAppEchoBot.AdapterWithErrorHandler'.)
 ---> System.InvalidOperationException: Error while validating the service descriptor 'ServiceType: Microsoft.Bot.Builder.Integration.AspNet.Core.IBotFrameworkHttpAdapter Lifetime: Singleton ImplementationType: WhatsAppEchoBot.AdapterWithErrorHandler': Unable to resolve service for type 'Microsoft.Bot.Connector.Authentication.BotFrameworkAuthentication' while attempting to activate 'WhatsAppEchoBot.AdapterWithErrorHandler'.
 ---> System.InvalidOperationException: Unable to resolve service for type 'Microsoft.Bot.Connector.Authentication.BotFrameworkAuthentication' while attempting to activate 'WhatsAppEchoBot.AdapterWithErrorHandler'.

this is the Infobip controller class:

[Route("api/infobip/whatsapp")]
[ApiController]
public class InfobipController : ControllerBase
{
    private readonly InfobipWhatsAppAdapter Adapter;
    private readonly IBot Bot;

    public InfobipController(InfobipWhatsAppAdapter adapter, IBot bot)
    {
        Adapter = adapter;
        Bot = bot;
    }
    [HttpPost]
    public async Task PostAsync()
    {
        // Delegate the processing of the HTTP POST to the adapter.
        // The adapter will invoke the bot.
        await Adapter.ProcessAsync(Request, Response, Bot);
    }
}

this is the Infocpib adapter error handler class:

public InfobipHandler(InfobipWhatsAppAdapterOptions infobipWhatsAppOptions, 
IInfobipWhatsAppClient infobipWhatsAppClient, ILogger<InfobipHandler> logger)
      : base(infobipWhatsAppOptions, infobipWhatsAppClient, logger)
    {
        OnTurnError = async (turnContext, exception) =>
        {
            OnTurnError = async (turnContext, exception) =>
            {
                // Log any leaked exception from the application.
                logger.LogError($"Exception caught : {exception.Message}");

                // Send a catch-all apology to the user.
                await turnContext.SendActivityAsync("Sorry, it looks like something went 
      wrong.");
            };
        };

    }

2

Answers


  1. Your error message says that it is unable to resolve service BotFrameworkAuthentication.
    You want to inject a BotFrameworkAuthentication service because it is being used by AdapterWithErrorHandler

    Login or Signup to reply.
  2. Try adding

    services.AddSingleton<BotFrameworkAuthentication, ConfigurationBotFrameworkAuthentication>();
    

    before adding your bot framework adapter.

    You will need to add

    using Microsoft.Bot.Builder.Integration.AspNet.Core;
    using Microsoft.Bot.Connector.Authentication;
    

    as dependencies in your Startup.cs.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search