ChatBot/Bots/ChatBot.cs (37 lines of code) (raw):

// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using System; using System.Threading; using System.Threading.Tasks; using ChatBot.SemanticKernel; using Microsoft.Bot.Builder; using Microsoft.Bot.Schema; using Microsoft.Extensions.Logging; namespace ChatBot.Bots { public class ChatBot : ActivityHandler { private readonly ILogger _logger; private readonly ISemanticKernelService _semanticKernelService; public ChatBot(ILogger<ChatBot> logger, ISemanticKernelService semanticKernelService) { _logger = logger; _semanticKernelService = semanticKernelService; } protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken) { var customerQuestion = turnContext.Activity.Text; _logger.LogInformation("Received customer question: {Message}", customerQuestion); try { // Call Semantic Kernel Service to get AI-generated response var responseStr = await _semanticKernelService.GetResponseAsync(customerQuestion); _logger.LogInformation("Received Semantic Kernel Response: {Message}", responseStr); // Send response back to the user await turnContext.SendActivityAsync(MessageFactory.Text(responseStr), cancellationToken); } catch (Exception ex) { _logger.LogError(ex, "Error processing message: {Message}", customerQuestion); await turnContext.SendActivityAsync(MessageFactory.Text("Sorry, something went wrong."), cancellationToken); } } } }