Untitled diff

Created Diff never expires
11 removals
Words removed25
Total words196
Words removed (%)12.76
65 lines
28 additions
Words added118
Total words289
Words added (%)40.83
83 lines
// Copyright (c) Microsoft Corporation. All rights reserved.
using Microsoft.ApplicationInsights.Extensibility;
// Licensed under the MIT License.

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Builder.ApplicationInsights;
using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core;
using Microsoft.Bot.Builder.Integration.AspNet.Core;
using Microsoft.Bot.Builder.Integration.AspNet.Core;
using Microsoft.Bot.Connector.Authentication;
using Microsoft.BotBuilderSamples.Bots;
using Microsoft.BotBuilderSamples.Bots;
using Microsoft.BotBuilderSamples.Dialogs;
using Microsoft.BotBuilderSamples.Dialogs;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;


namespace Microsoft.BotBuilderSamples
namespace Microsoft.BotBuilderSamples
{
{
public class Startup
public class Startup
{
{
// This method gets called by the runtime. Use this method to add services to the container.
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
public void ConfigureServices(IServiceCollection services)
{
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);


// Create the credential provider to be used with the Bot Framework Adapter.
services.AddSingleton<ICredentialProvider, ConfigurationCredentialProvider>();

// Add Application Insights services into service collection
services.AddApplicationInsightsTelemetry();

// Create the telemetry client.
services.AddSingleton<IBotTelemetryClient, BotTelemetryClient>();

// Add ASP middleware to store the http body mapped with bot activity key in the httpcontext.items. This will be picked by the TelemetryBotIdInitializer
services.AddTransient<TelemetrySaveBodyASPMiddleware>();

// Add telemetry initializer that will set the correlation context for all telemetry items.
services.AddSingleton<ITelemetryInitializer, OperationCorrelationTelemetryInitializer>();

// Add telemetry initializer that sets the user ID and session ID (in addition to other bot-specific properties such as activity ID)
services.AddSingleton<ITelemetryInitializer, TelemetryBotIdInitializer>();

// Create the telemetry middleware to track conversation events
services.AddSingleton<IMiddleware, TelemetryLoggerMiddleware>();

// Create the Bot Framework Adapter with error handling enabled.
// Create the Bot Framework Adapter with error handling enabled.
services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();
services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();


// Create the storage we'll be using for User and Conversation state. (Memory is great for testing purposes.)
// Create the storage we'll be using for User and Conversation state. (Memory is great for testing purposes.)
services.AddSingleton<IStorage, MemoryStorage>();
services.AddSingleton<IStorage, MemoryStorage>();


// Create the User state. (Used in this bot's Dialog implementation.)
// Create the User state. (Used in this bot's Dialog implementation.)
services.AddSingleton<UserState>();
services.AddSingleton<UserState>();


// Create the Conversation state. (Used by the Dialog system itself.)
// Create the Conversation state. (Used by the Dialog system itself.)
services.AddSingleton<ConversationState>();
services.AddSingleton<ConversationState>();


// Register LUIS recognizer
// The Dialog that will be run by the bot.
services.AddSingleton<FlightBookingRecognizer>();

// Register the BookingDialog.
services.AddSingleton<BookingDialog>();

// The MainDialog that will be run by the bot.
services.AddSingleton<MainDialog>();
services.AddSingleton<MainDialog>();


// Create the bot as a transient. In this case the ASP Controller is expecting an IBot.
// Create the bot as a transient. In this case the ASP Controller is expecting an IBot.
services.AddTransient<IBot, DialogAndWelcomeBot<MainDialog>>();
services.AddTransient<IBot, DialogAndWelcomeBot<MainDialog>>();
}
}


// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
{
if (env.IsDevelopment())
if (env.IsDevelopment())
{
{
app.UseDeveloperExceptionPage();
app.UseDeveloperExceptionPage();
}
}
else
else
{
{
app.UseHsts();
app.UseHsts();
}
}


app.UseDefaultFiles();
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseStaticFiles();


//app.UseHttpsRedirection();
app.UseBotApplicationInsights();
app.UseMvc();
app.UseMvc();
}
}
}
}
}
}