47 строки
1.9 KiB
C#
47 строки
1.9 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
using System;
|
|
using Microsoft.Bot.Builder;
|
|
using Microsoft.Bot.Builder.Integration.AspNet.Core;
|
|
using Microsoft.Bot.Schema;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace Microsoft.BotBuilderSamples
|
|
{
|
|
public class AdapterWithErrorHandler : BotFrameworkHttpAdapter
|
|
{
|
|
private const string ErrorMsgText = "Sorry, it looks like something went wrong.";
|
|
|
|
public AdapterWithErrorHandler(IConfiguration configuration, ILogger<BotFrameworkHttpAdapter> logger, ConversationState conversationState = null)
|
|
: base(configuration, logger)
|
|
{
|
|
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.
|
|
var errorMessage = MessageFactory.Text(ErrorMsgText, ErrorMsgText, InputHints.ExpectingInput);
|
|
await turnContext.SendActivityAsync(errorMessage);
|
|
|
|
if (conversationState != null)
|
|
{
|
|
try
|
|
{
|
|
// Delete the conversationState for the current conversation to prevent the
|
|
// bot from getting stuck in a error-loop caused by being in a bad state.
|
|
// ConversationState should be thought of as similar to "cookie-state" in a Web pages.
|
|
await conversationState.DeleteAsync(turnContext);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
logger.LogError($"Exception caught on attempting to Delete ConversationState : {e.Message}");
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|