我目前正在将bot框架v3迁移到v4。
有什么方法可以将Bot状态存储在SQL数据库上吗?
我在这里看到了有关Bot State的文档:
但是它只能保存在CosmoDB或Azure存储上。 Bot Framework v4上没有有关在SQL中保存状态的可用文档
在我的bot框架v3中,我有以下代码将Bot State保存到SQL数据库:
var store = new SqlBotDataStore(ConfigurationManager.ConnectionStrings["statedb"].ConnectionString);
Conversation.UpdateContainer(
builder =>
{
builder.Register(c => store)
.Keyed<IBotDataStore<BotData>>(AzureModule.Key_DataStore)
.AsSelf()
.SingleInstance();
builder.Register(c => new CachingBotDataStore(store,
CachingBotDataStoreConsistencyPolicy
.ETagBasedConsistency))
.As<IBotDataStore<BotData>>()
.AsSelf()
.InstancePerLifetimeScope();
builder.RegisterModule(new ReflectionSurrogateModule());
builder.RegisterModule<GlobalMessageHandlersBotModule>();
});
我希望bot框架v4具有类似的功能
答案 0 :(得分:2)
Bot Framework社区已为Bot Builder V4提供了EntityFramework存储。可以找到源代码here,并且该库可以作为nuget包Bot.Builder.Community.Storage.EntityFramework
使用它与其他V4 IStorage
提供程序的使用方式相同:
var entityFrameworkStorage = new EntityFrameworkStorage(Config["SqlConnectionString"]);
services.AddSingleton<IStorage>(dataStore);
services.AddSingleton<UserState>();
services.AddSingleton<ConversationState>();
更多信息可以在这里找到:
https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-concept-state
https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-howto-v4-state