我使用 Bot Builder SDK for Node.js 创建了一个聊天机器人。由于它将托管在 Azure 上,因此我在托管环境中使用 AzureBotStorage(botbuilder-azure
模块),在开发环境中使用 MemoryBotStorage(botbuilder
模块)。
初始化类似于:
var builder = require('botbuilder');
var azure = require('botbuilder-azure');
var stateStorage = {};
if (process.env.ENVIRONMENT != "DEV") {
var azureTableClient = new azure.AzureTableClient(process.env.TABLE_NAME, process.env.ACCOUNT_NAME, process.env.ACCOUNT_KEY);
stateStorage = new azure.AzureBotStorage({ gzipData: false }, azureTableClient);
} else {
stateStorage = new builder.MemoryBotStorage();
}
这通常非常有效 - 我已经确认(使用存储资源管理器工具)用户对话数据存储在本地和托管环境中。
问题是,我在访问应用程序内的所述存储数据时遇到问题(我正在尝试将所有用户作为单独函数的一部分进行迭代)。
类似这样的事情:
for (userId in stateStorage.userStore)
非常适合访问本地环境存储 (builder.MemoryBotStorage()
),但对于托管环境存储 (azure.AzureBotStorage()
) 根本不起作用。事实上,我只是找不到访问/查询 AzureBotStorage 数据的方法。
是否有人有访问 AzureBotStorage 数据的经验?如果有,您建议如何迭代所有用户?
谢谢!
最佳答案
我找到了一种使用 buildTableService().queryEntities()
访问表的方法,如下所示:
azureTableClient.buildTableService().queryEntities(process.env.TABLE_NAME, null, null, function (error, result, response) {
for (var i=0; i<result.entries.length; i++) {
\\ do stuff with result.entries[i]
}
});
但是,这种方法并不是特别干净或高效,因此我暂时不回答这个问题,以防有人有更好的方法。
关于node.js - 访问 AzureBotStorage 中的所有用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50993429/