我正在使用Node js构建聊天机器人。
我当前正在将 session 数据存储到Microsoft默认存储中,每个用户 session 的限制为64K。我想使用自己的存储设备来存储 session 数据。 Here是我从Microsoft开发人员那里获得的帮助。
我能够存储在文档数据库和Azure表中。
不过,我还是很困惑。我们将如何实现IStorageClient
接口(interface)以存储在自己的数据库中?
每当我设置session.UserData.name=""
时,它都应存储在自己的数据库中。
最佳答案
我不确定是否遇到问题;我了解您正在尝试做的事情,似乎您已准备就绪。
首先,您必须实现IStorageClient接口(interface)。在实现中,您编写了将事物存储在数据库中的逻辑。
您可以查看DocumentDB和Azure Tables实现,以了解如何实现。
现在,问题是..如果您的自定义存储位于Azure中,那么您也许可以将AzureBotStorage与自定义存储客户端一起使用。您实例化自定义存储客户端,将引用传递给AzureBotStorage
并将其设置为bot中的存储
// Azure DocumentDb State Store
var docDbClient = new azure.DocumentDbClient({
host: process.env.DOCUMENT_DB_HOST,
masterKey: process.env.DOCUMENT_DB_MASTER_KEY,
database: process.env.DOCUMENT_DB_DATABASE,
collection: process.env.DOCUMENT_DB_COLLECTION
});
var botStorage = new azure.AzureBotStorage({ gzipData: false }, docDbClient);
// Set Custom Store
bot.set('storage', botStorage);
如果您的自定义存储位于Azure以外的任何其他位置,则
AzureBotStorage
可能对您不起作用。请注意,我不确定这一点,您将必须检查代码以进行确认。从我看来,这似乎很通用,因此您可以重用它并只需实现IStorageClient
即可。如果不是这种情况,则还必须实现IBotStorage接口(interface)。最后,
AzureBotStorage
正在执行此操作。它实现IBotStorage
并使用IStorageClient
与实际提供者进行交互。关于node.js - 如何将 session 数据存储到Bot Builder中的自定义存储中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43153824/