【问题标题】:Can't access blob storage locally in chatbot emulator无法在聊天机器人模拟器中本地访问 Blob 存储
【发布时间】:2020-05-23 00:20:22
【问题描述】:

我以前能够在本地测试期间访问 blob 存储,但在通过模拟器进行本地测试时,我开始收到 [onTurnError]: StorageError: Forbidden 消息。我确实在连接到本地资源(尤其是 CosmosDB)时遇到问题,但我确实相信这在以前是可行的。我在本地 .env 中设置了 HTTPS_PROXY 值,该值适用于除 Cosmos 之外的所有内容(LUIS、QnA Maker、Azure 表存储等都在工作)。所以我有两个问题:

  1. 发生了一些变化和/或是否有可能通过代理通过本地模拟器测试访问 Blob 存储。
  2. 如果没有,是否可以对机器人进行编码,使其使用本地的内存存储和 Azure 的 blob 存储?

不管怎样,这里是我用来设置状态存储的代码,但我认为问题在于通过代理访问服务,而不是定义这些存储对象。

// Memory storage - for development only
const memoryStorage = new MemoryStorage();
const conversationState = new ConversationState(memoryStorage);
const userState = new UserState(memoryStorage);

// Blob storage - for production
/*const blobStorage = new BlobStorage({
    containerName: 'bot-storage',
    storageAccountOrConnectionString: process.env.blobStorageServiceName,
    storageAccessKey: process.env.blobStorageAccessKey
});
const conversationState = new ConversationState(blobStorage);
const userState = new UserState(blobStorage);*/

【问题讨论】:

    标签: node.js botframework azure-blob-storage


    【解决方案1】:

    我想出了一个解决方法,但我觉得这不是一个好方法。希望看到该问题的其他解决方案。

    我的解决方法是查看我的 BOTNAME 环境变量,如果它与我在本地 .env 文件中设置的内容匹配,请使用 MemoryStorage。否则使用 BlobStorage。它正在运行,但我讨厌仅仅为了本地测试而有额外的代码。

    这是我的 index.js 文件中的代码:

    if (process.env.BOTNAME == 'OEM_CSC_Support_Bot_Local') {
        // Memory storage - for development only
        console.log(`Using MemoryStorage for state storage`);
        const memoryStorage = new MemoryStorage();
        var conversationState = new ConversationState(memoryStorage);
        var userState = new UserState(memoryStorage);
    } else {
        // Blob storage - for production
        console.log(`Using BlobStorage for state storage`);
        const blobStorage = new BlobStorage({
            containerName: 'bot-storage',
            storageAccountOrConnectionString: process.env.blobStorageServiceName,
            storageAccessKey: process.env.blobStorageAccessKey
        });
        var conversationState = new ConversationState(blobStorage);
        var userState = new UserState(blobStorage);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      相关资源
      最近更新 更多