c# - 如何在 bot v4 中保存用户状态,以便在整个对话期间保持持久性
问题描述
我正在使用下面的代码来保存用户状态。它正在保存在 cosmos 中,但是当我尝试在下一轮检索它时,它给出了 null。有没有办法让它在整个对话中持久存在。
private IStatePropertyAccessor<ChatState> _maindialogState;
_maindialogState = userState.CreateProperty<ChatState>(nameof(ChatState));
var _statemain = await _maindialogState.GetAsync(stepContext.Context, () => new ChatState());
_statemain.Email = "XXXXXX";
_statemain.DisplayName = "Ankit";
await _maindialogState.SetAsync(stepContext.Context, _statemain, cancellationToken);
解决方案
看来您实际上并没有在上面的代码中保存状态,只是设置了值。在 nodejs 中,语法是
await this.conversationState.saveChanges(context);
await this.userState.saveChanges(context);
我不确定您所说的用户或对话状态是什么。您想使用该变量,而不是状态访问器(似乎是 _maindialogState)或您的状态变量(似乎是 _statemain)。
推荐阅读
- spring-boot - 如何生成这个 Spring-boot API 文档示例?
- excel - 从打开的 Excel 文件中获取 PID
- reactjs - 具有依赖关系的 React Hooks setInterval 触发多个间隔
- javascript - 通过多个参数过滤对象数组
- c# - 在 ASP.NET 核心中创建 JWT 是否有更简单的方法?又名“JWT 身份验证的最佳实践?”
- reactjs - React JS:提供者组件如何验证或检查组件是否具有其上下文?
- c# - System.InvalidOperationException :
没想到 - asp.net-core - 在 asp.net core 5 中创建一个新的活动
- javascript - javascript中如何根据用户id动态加载内容
- c# - 如何将文件日志记录添加到 c# graph api 通知应用程序(切换或扩展 Ilogger 以将信息记录到日志文件)