我试过使用IActivityLogger来捕获用户的对话,有没有办法将用户和机器人的对话编译为像变量或会话这样的临时持有者?我需要暂时将它存储在只有当用户想要与真人对话而不是机器人时才可用的地方。包含用户和机器人之前对话的电子邮件将被发送。我不想将它保存到数据库,因为有些用户不会选择这样做。暂时存储特定用户的对话
请参阅使用的代码。 Logger类:
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");
}
}
全球ASAX:
protected void Application_Start()
{
var builder = new ContainerBuilder();
builder.RegisterType<Logger>().AsImplementedInterfaces().InstancePerDependency();
builder.Update(Conversation.Container);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
这是什么问题?您是否考虑过使用带有userId的对话框:conversationId作为关键字并将消息列表作为值? –
为了简单起见,我尝试使用字符串属性来保存该值,但只要机器人回复,该属性不会保留。 – anonymous1110
你可以尝试使用BotState并将其保存在那里......(或者从一个静态属性P开始) –