当前,我已经使用Azure Cosmos DB实现了Bot。我通过状态访问器管理状态数据(用户状态,对话状态)。
我如何使用它的示例:
// Use AutosaveStateMiddleware
adapter.use(new AutoSaveStateMiddleware(conversationState));
adapter.use(new AutoSaveStateMiddleware(userState));
// Read State from DB
const conversationData = await this.conversationDataAccessor.get(turnContext, {});
const user = await this.userDataAccessor.get(turnContext, {});
// Manipulate state
conversationData.roundCounter = 1;
userData.name = "John Doe";
// Save to cache
await this.userDataAccessor.set(turnContext, user);
await this.conversationDataAccessor.set(turnContext, conversationData);
// Save changes to DB (persistent)
await this.conversationState.saveChanges(turnContext);
await this.userState.saveChanges(turnContext);
我考虑切换到表存储解决方案,因为它比Cosmos DB便宜得多。
不幸的是,我只为BotFramework v3找到了tutorial。
是否有一种以类似方式使用表存储的方法?如果可以,怎么办?
谢谢!
答案 0 :(得分:1)
对于AFAIK,我们可以同时使用Blob存储和cosmos DB。在您的情况下,您可以使用Blob存储,因为它是相当便宜的解决方案。
Azure Blob存储是Microsoft的云对象存储解决方案。 Blob存储经过优化,可以存储大量非结构化数据,例如文本或二进制数据。
const mystorage = new BlobStorage({
<youy_containerName>,
<your_storageAccountOrConnectionString>,
<your_storageAccessKey>
})
一旦将“ myStorage”设置为指向您的Blob Storage帐户,您的漫游器代码现在将存储和检索Blob Storage中的数据。
Azure Blob笔录存储提供了专门的存储选项,使您可以轻松地以记录的笔录形式保存和检索用户对话。 Azure blob脚本存储对于自动捕获用户输入以检查调试机器人的性能时特别有用。
这里是一篇文章,解释了bot框架4中blob存储的用法。
希望有帮助。
答案 1 :(得分:1)
有关设置数据库的一些其他提示:
文章中的语法对我不起作用。我改用这个:
const { BlobStorage } = require('botbuilder-azure');
// Add Blobstorage
const memoryStorage = new BlobStorage({
containerName: 'CONTAINERNAME',
storageAccountOrConnectionString: 'CONNECTIONSTRING',
})
您可以在Azure上的存储资源中的“键”下找到信息。