IBotDataBag如何获取所有密钥

时间:2016-05-04 09:07:53

标签: c# botframework

使用Microsoft Bot Framework我正在设置会话和用户管理的状态和数据。

我用过

var state = message.GetBotPerUserInConversationData<ConversationState>("State");
if( state == null)
{                       
    message.SetBotPerUserInConversationData("State", new ConversationState());
}

var data = context.PerUserInConversationData;
ConversationState state;
var ret = data.TryGetValue("State", out state);

得到我的州。 说我应该知道属性,我创建的状态调用Count属性我获得的更多然后是我创建的键/值对。

如何获取完整列表?似乎没有办法,可能已经在其内部的对象,其名称未知有信息,我需要使我的自定义状态无用。

由于

1 个答案:

答案 0 :(得分:0)

当您调用context.PerUserInConversationData时,您将获得实现IBotDataBag的对象(通常是JObjectBotData类的实例),并且无法以编程方式访问其中的字段。

如果您想了解最初将哪些字段插入到此DataBag中,您可以查看Bot Framework Source Code,或构建您自己的框架副本,该副本允许您访问JObjectBotData中的键。

如果要在代码中跟踪放在包中的字段,可以创建一个显式跟踪这些字段并将其列表存储在DataBag中的包装器。