我需要处理机器人框架对话框中的错误,我有IDialogContext
发送消息或调用另一个对话框。
目前我有
try
{
await Conversation.SendAsync();
}
catch (Exception e)
{
HandleExceptions(e, activity);
}
在MessagesController中,但在此级别,Microsoft.Bot.Builder.Dialogs.DefaultIfException
已将错误消息发送回用户。
在DefaultIfException
之前可以在何处以及如何拦截错误,处理它并将未处理的传播传播到DefaultIfException。
答案 0 :(得分:0)
您可以使用异常图层来捕获僵尸程序异常。下面的代码将帮助您进一步指导。我正在使用它,它工作正常。
try
{
// your code
}
catch (Exception ex)
{
await BotException.GenerateBotException(message.From.Name, ex);
}
之后,您需要创建一个Exception类来捕获自定义数据库中的日志,或者发送包含异常详细信息的电子邮件通知。
using System;
using GPP.Bot.DataAccessLayer;
using System.Collections.Generic;
using System.Net.Mail;
using System.Threading.Tasks;
using System.Web.Configuration;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Utilities;
namespace Gpp.Bot.ExceptionHandling
{
public class BotException
{
public static List<ErrorLogProperties> BOTErrorLog(string Environment, string exceptionStack, string exceptionSource, string fullException, string loggedInUser, string exceptionDateTime)
{
// this code to capture data in Cutome DB
return DbHelper.ExecuteList<ErrorLogProperties>(
new Command { ComandText = "Your Stored Procedure" },
new Parameter<string, object>("Environment", Environment),
new Parameter<string, object>("exceptionStack", exceptionStack),
new Parameter<string, object>("exceptionSource", exceptionSource),
new Parameter<string, object>("fullException", fullException),
new Parameter<string, object>("loggedInUser", loggedInUser),
new Parameter<string, object>("exceptionDateTime", exceptionDateTime)
);
}
public static async Task GenerateBotException(string LLID, Exception ex)
{
BotExceptionNotification(LLID.Split('*')[1], ex.StackTrace, ex.Source, ex.Message,LLID.Split('*')[0], DateTime.Now.ToString());
BOTErrorLog(LLID.Split('*')[1], ex.StackTrace, ex.Source, ex.Message,LLID.Split('*')[0], DateTime.Now.ToString());
}
public static void BotExceptionNotification(string Environment, string exceptionStack, string exceptionSource,
string fullException, string loggedInUser, string exceptionDateTime)
{
// Send email code goes here using above peramaeters in you html
}
}
}
如果您需要更多帮助,请告诉我