如何使用Bot Framework C#Bot Builder记录聊天对话

时间:2016-12-24 01:23:33

标签: logging bots botframework botbuilder

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

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

最好的方法是什么?

2 个答案:

答案 0 :(得分:12)

您可以使用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}");
    }
}

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

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();
    }
});

答案 1 :(得分:0)