Botframework(V4-preview)更新的对话状态值在对话之间不存在

时间:2018-08-06 15:13:49

标签: c# botframework

我正在通过模拟器使用MS Botframework V4(预览版)进行测试。我正在使用会话状态来维护一些配置。在startup.cs中,我将状态声明为(用于本地测试)

  options.Middleware.Add(new ConversationState<Dictionary<string, object>>(new MemoryStorage()));

当用户与我的聊天机器人交互时,例如在第4个掩盖步骤中,我将更新状态值,如下所示

var state = context.GetConversationState<Dictionary<string, object>>();
state["IsActiveDialog"] = false;
state.Remove("CurrentActiveDialog");

在接下来的对话步骤(例如步骤5)中,如果我检查状态,则对状态的更改不会受到影响。也就是说,state["IsActiveDialog"]仍显示trueCurrentActiveDialog属性尚未删除

我不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

V4是预览版,并且正在积极开发中,因此有很多营业额。如果您想在V4中的C#SDK的当前版本中实现此功能,有一个示例演示了这一点:

AspNetCore-EchoBot-AppInsights

相关行是:

CounterState = conversationState.CreateProperty<CounterState>(MyAppInsightsBotAccessors.CounterName),

this file开始,在状态上创建属性。

// Get the conversation state from the turn context that holds a simple counter
var state = await _stateAccessors.CounterState.GetAsync(turnContext, () => new CounterState());

// Bump the turn count. 
state.TurnCount++;

this file访问并利用状态。