node.js - 访问 AzureBotStorage 中的所有用户数据

标签 node.js botframework azure-table-storage azure-bot-service

我使用 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/

相关文章:

css - 修改Microsoft Qna Maker的CSS

c# - 尝试循环访问 Azure 表中的实体时出错

node.js - 如何将中间件绑定(bind)到 socket.io 中的事件

node.js - 具有多个字段更新运算符的 Mongoose findOneAndUpdate

node.js - 如何为 Microsoft 机器人创建本地 QnA 制造商知识库?

node.js - 使用nodejs、cheerio抓取分页

node.js - 如何向 MS Teams 上的用户发送私有(private)消息?

node.js - 自适应卡上的 Action.Submit 不会调用下一步(仅在 Microsoft Teams 中不起作用,在网络聊天中起作用): Bot Framework V4

Azure 存储表大小

Azure 功能 - 从 IoT 中心保存到表存储