首页 > 解决方案 > 如何在 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);

标签: c#botframeworkazure-cosmosdbchatbot

解决方案


看来您实际上并没有在上面的代码中保存状态,只是设置了值。在 nodejs 中,语法是

await this.conversationState.saveChanges(context);
await this.userState.saveChanges(context);

我不确定您所说的用户或对话状态是什么。您想使用该变量,而不是状态访问器(似乎是 _maindialogState)或您的状态变量(似乎是 _statemain)。


推荐阅读