C# 无法使用IActivityLogger和用于C的Bot Builder记录消息#

C# 无法使用IActivityLogger和用于C的Bot Builder记录消息#,c#,inversion-of-control,botframework,C#,Inversion Of Control,Botframework,我需要记录我的用户和我的机器人之间的消息。经过一些研究后,我发现sGambolati的这篇文章解释了如何实现这一点: 然而,这种方法似乎不适合我。我甚至尝试了他提供的相同代码片段,但在调试输出窗口中仍然看不到日志 以下是根据其实现的代码: 记录器类: public class DebugActivityLogger : IActivityLogger { public async Task LogAsync(IActivity activity) { Debug.

我需要记录我的用户和我的机器人之间的消息。经过一些研究后,我发现sGambolati的这篇文章解释了如何实现这一点:

然而,这种方法似乎不适合我。我甚至尝试了他提供的相同代码片段,但在调试输出窗口中仍然看不到日志

以下是根据其实现的代码:

记录器类:

public class DebugActivityLogger : IActivityLogger
{
    public async Task LogAsync(IActivity activity)
    {
        Debug.WriteLine($"From:{activity.From.Id} - To:{activity.Recipient.Id} - Message:{activity.AsMessageActivity()?.Text}");
    }
}
My Global.asax:

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);

        var builder = new ContainerBuilder();
        builder.RegisterType<DebugActivityLogger>()
            .AsImplementedInterfaces()
            .InstancePerDependency();
        builder.Update(Conversation.Container);
    }
}
公共类WebAPI应用程序:System.Web.HttpApplication
{
受保护的无效应用程序\u Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
var builder=new ContainerBuilder();
builder.RegisterType()
.AsImplementedInterfaces()
.InstancePerDependence();
builder.Update(Conversation.Container);
}
}
控制器中的标准回波样本:

public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
    if (activity.Type == ActivityTypes.Message)
    {
        ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
        int length = (activity.Text ?? string.Empty).Length;
        Activity reply = activity.CreateReply($"You sent {activity.Text} which was {length} characters");
        await connector.Conversations.ReplyToActivityAsync(reply);
    }

    var response = Request.CreateResponse(HttpStatusCode.OK);
    return response;
}
公共异步任务发布([FromBody]活动)
{
if(activity.Type==ActivityTypes.Message)
{
ConnectorClient连接器=新的ConnectorClient(新Uri(activity.ServiceUrl));
int length=(activity.Text??string.Empty).length;
Activity reply=Activity.CreateReply($“您发送的{Activity.Text}为{length}个字符”);
等待连接器.Conversations.ReplyToActivityAsync(reply);
}
var response=Request.CreateResponse(HttpStatusCode.OK);
返回响应;
}

我错过什么了吗

一个
IActivityLogger
实现将记录通过
IPostToBot
/
iBottoser
实现的传入/传出消息。在这种情况下,和实现负责调用
IActivityLogger
实现

所有这些介绍都只是为了让您知道,如果您使用
连接器.Conversations.ReplyToActivityAsync
,您将不会点击
IActivityLogger
。要点击记录器,您需要一个从用户处接收消息的
IDialog
,并且需要使用
context.PostAsync
将来自bot的消息记录到用户处

看看C#示例,看看这是否有效