【问题标题】:How to log a chat conversation with Bot Framework C# Bot Builder如何使用 Bot Framework C# Bot Builder 记录聊天对话
【发布时间】:2017-05-09 15:17:01
【问题描述】:

我想记录我的机器人对话(到文本文件或数据库)。我想捕获机器人的所有输入和输出,包括由 FormFlow、Confirms 等生成的任何文本。我不需要卡片等图形元素,但如果也能从它们中获取文本会很好。

在我的应用程序中的每个输入/输出之后添加日志语句似乎不切实际,特别是因为我无法准确判断 FormFlow 向用户发送了哪些文本。

最好的方法是什么?

【问题讨论】:

  • 您对在一个 txt 文件中获取所有带有时间的文本然后将其存储在 DB 中的想法

标签: logging bots botframework botbuilder


【解决方案1】:

您可以使用Middleware 记录所有消息(来自机器人或用户)。

对于 C# 版本,您必须实现 IActivityLogger 并在 LogAsync 方法中记录您想要的内容。

例如:

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

最后,您必须在 AutoFact 中使用类似这样的内容(在 global.asax 中)进行注册:

var builder = new ContainerBuilder();
builder.RegisterType<DebugActivityLogger>().AsImplementedInterfaces().InstancePerDependency();
builder.Update(Conversation.Container);

如果您使用的是 nodejs 版本,则更简单:

const logUserConversation = (event) => { console.log('message: ' + event.text + ', user: ' + event.address.user.name);
};
// Middleware for logging
bot.use({
    receive: function (event, next) {
        logUserConversation(event);
        next();
    },
    send: function (event, next) {
        logUserConversation(event);
        next();
    }
});

【讨论】:

  • 能否请您添加带有dotnet核心的bot框架V4的代码..谢谢
【解决方案2】:

【讨论】:

  • 你是怎么用的?
  • @Tas D 您发布的链接,仅将您带到通用机器人文档页面
猜你喜欢
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 2018-06-23
  • 2016-09-04
相关资源
最近更新 更多