【发布时间】:2017-09-21 23:37:26
【问题描述】:
我尝试使用 IActivityLogger 捕获用户的对话,有没有办法将用户和机器人的对话编译为变量或会话等临时持有者?我需要将它临时存储在只有当用户想要与真人而不是机器人交谈时才可用的地方。将发送一封包含用户和机器人先前对话的电子邮件。我不想将其保存到数据库,因为某些用户不会选择这样做。
查看使用的代码。 记录器类:
public class Logger:IActivityLogger
{
public async Task LogAsync(IActivity activity)
{
var a = ($"From:{activity.From.Id} - To:{activity.Recipient.Id} - Message:{activity.AsMessageActivity()?.Text}" + "\b\r");
}
}
全球阿萨克斯:
protected void Application_Start()
{
var builder = new ContainerBuilder();
builder.RegisterType<Logger>().AsImplementedInterfaces().InstancePerDependency();
builder.Update(Conversation.Container);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
【问题讨论】:
-
有什么问题?您是否考虑过使用以 userId:conversationId 作为键并以消息列表作为值的字典?
-
为了简单起见,我尝试使用字符串属性来保存该值,但是一旦机器人回复,该属性就不会保留。
-
您可以尝试使用 BotState 并将其保存在那里...(或从静态属性开始:P)
-
你能告诉我如何使用botstate吗?我尝试阅读有关 botstate 的信息,我是否必须先设置对话数据?然后检索它?
标签: c# logging session-variables bots botframework