C# 框架中的状态

C# 框架中的状态,c#,azure,botframework,C#,Azure,Botframework,我正试图更好地理解botframework中的状态是如何工作的 默认情况下,机器人的状态存储在。因此,我应该能够从模板创建一个空白的bot,运行fiddler,并看到它向stateweb服务发出请求。我看不到这种情况发生 我从以下repo下载了Azure的botbuilder扩展(和示例):。我使用示例应用程序将数据存储在表存储中,它成功了!我可以在Fiddler中看到请求,在我的存储帐户中可以看到保存的状态/数据 我注释掉了他们示例应用程序的Azure代码并运行了它。我再次无法看到任何对sta

我正试图更好地理解botframework中的状态是如何工作的

默认情况下,机器人的状态存储在。因此,我应该能够从模板创建一个空白的bot,运行fiddler,并看到它向stateweb服务发出请求。我看不到这种情况发生

我从以下repo下载了Azure的botbuilder扩展(和示例):。我使用示例应用程序将数据存储在表存储中,它成功了!我可以在Fiddler中看到请求,在我的存储帐户中可以看到保存的状态/数据

我注释掉了他们示例应用程序的Azure代码并运行了它。我再次无法看到任何对state.botframework.com的调用

我注册了一个测试bot,并将这些凭据作为appId输入我的bot中,然后我可以看到bot调用webchat.botframework.com,但仍然没有调用store state

所以我的问题是

  • 默认情况下,bot在哪里存储其状态
  • 如何查看它的存储位置,以便在切换到另一个存储位置(例如表存储)时,可以确保它不再与默认状态存储通信
  • 默认情况下,bot在哪里存储其状态
  • IBMotState REST接口由两个服务实现。机器人 frameworkconnector提供了一个云服务来实现这一点 接口并在Azure中存储数据。此数据在静止时进行加密,然后 不会故意过期。Bot框架仿真器提供了一个 用于调试bot的此接口的内存中实现。 当仿真器进程退出时,此数据过期

    默认StateClient的存储路径位于.net sdk中:

    编辑:sdk中检查通道是否为仿真器的代码:

    2) 如何查看它的存储位置,以便在切换到另一个存储位置(例如表存储)时,可以确保它不再与默认状态存储通信

    您可以在页面上托管webchat控件,在Visual Studio中本地运行bot,并使用ngrok将流量从连接器服务重定向到本地计算机:

    ngrok http 3979 -host-header="localhost:3979"
    
    然后在中更改bot的消息传递端点,以便在此处对如何设置进行了详细描述:


    使用此方法,您将在fiddler中看到对state.botframework.com的调用。

    了解一下,它不会说明何时或如何决定使用哪个状态位置。我已经完成了一半,如果活动上的channelid作为模拟器通过,那么它被硬编码为使用内部内存状态存储,而不是web服务。回答#2-此信息目前对机器人开发人员不可用,我会将您标记为正确。但还有一点需要补充的是这一行:。如果活动的channelid为Emulator,则它会短路,并且永远不会与状态web服务对话。谢谢@MindingData,我已使用指向您引用的源的链接编辑了答案。