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)
| 归档时间: |
|
| 查看次数: |
3953 次 |
| 最近记录: |