Install Bot Builder SDK
- First, add the Bot Builder SDK to your C# project to begin developing the bot. You can do this using the NuGet Package Manager Console in Visual Studio.
Install-Package Microsoft.Bot.Builder
Create a Bot Configuration File
- Azure Bots require configuration files to store credentials and settings. Create a configuration JSON file that includes the app ID and app password obtained from the Azure portal when you registered your bot.
- Ensure this file is securely guarded and not exposed in the front-end or source control.
Create the Bot Class
- Develop a new class derived from `ActivityHandler` to define the bot logic in C#. Override and implement the various activity handlers like `OnMessageActivityAsync` within your bot class.
using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;
using System.Threading;
using System.Threading.Tasks;
public class MyBot : ActivityHandler
{
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var replyText = $"Echo: {turnContext.Activity.Text}";
await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
}
}
Configure the Bot Adapter
- Bot Framework works with adapters that enable communication between bots and channels. In your `Startup.cs`, configure `BotFrameworkHttpAdapter` to manage HTTP requests and responses.
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSingleton<IBotFrameworkHttpAdapter, BotFrameworkHttpAdapter>();
services.AddSingleton<IBot, MyBot>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
Enable State Management
- State management is crucial to maintain users' conversations context. Use necessary middleware like `UserState` and `ConversationState` to store specific data across sessions.
services.AddSingleton<IStorage, MemoryStorage>();
services.AddSingleton<UserState>();
services.AddSingleton<ConversationState>();
Deploy and Test the Bot
- Deploy your bot to Azure and ensure all resources like Bot Channels Registration are correctly set up.
- Use the Bot Framework Emulator locally to test your bot. The Emulator simulates the Webhook that Azure will call, allowing interaction with your application.