botframework 預設會將 State 存到 state.botframework.com 上去(使用 emulator 則會存在 emulator 上面)。
目前的 .NET Samples 也都改成使用 InMemoryDataStore 的方式,使用方式如下,
1 | protected void Application_Start() |
您也可以將 State 存到 SQL 之中,可以參考 Saving State data in SQL with .NET.
所以從 Emulator 來看就會看不到 getUserData 及 setUserData 的 event,如下圖,
當您使用客製的 DataStore 後,Access BotDataStore 就不能直接用 var stateClient = activity.GetStateClient() 。而是要透過 DialogModule.BeginLifetimeScope 來取得,如下,
1 | using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, activity)) |
刪除資料就透過 RemoveProperty 來刪除,如下,
1 | using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, activity)) |