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

Tas*_*s D 7 logging bots botframework botbuilder

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

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

最好的方法是什么?

sGa*_*ati 12

您可以使用中间件记录所有消息(来自bot或来自用户).

对于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}");
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,你必须在AutoFact中注册这样的东西(在global.asax中):

var builder = new ContainerBuilder();
builder.RegisterType<DebugActivityLogger>().AsImplementedInterfaces().InstancePerDependency();
builder.Update(Conversation.Container);
Run Code Online (Sandbox Code Playgroud)

如果您使用的是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();
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 您能否为带有 dotnet 核心的机器人框架 V4 添加代码..谢谢 (2认同)

Tas*_*s D -1

弄清楚了。我可以使用 Microsoft.Bot.Builder.History.IActivityLogger 接口

https://docs.botframework.com/en-us/csharp/builder/sdkreference/dc/dc6/namespace_microsoft_1_1_bot_1_1_builder_1_1_history.html

  • 你如何使用它? (4认同)