【问题标题】:Service error Bot should use its own storage服务错误 Bot 应该使用自己的存储
【发布时间】:2019-03-02 02:31:25
【问题描述】:

我创建了使用 LUIS、QnAMaker、Dialogflow 服务的机器人(Bot Framework v3)。当我在 Bot Emulator 中本地运行它时,它运行良好,但是当我在 Azure 上部署它时,我的机器人停止工作。表面上他只是回复抱歉,我的机器人代码有问题,并且在应用程序的设置-网络聊天刀片中有 500 InternalServerError

我尝试使用 ngrok 进行调试,但遇到异常操作返回无效状态代码 'MethodNotAllowed' 并带有 Microsoft.Bot.Connector.ErrorResponse 消息 Bot 应该使用自己的存储 在我的 MessageController 中的方法 await Conversation.SendAsync(activity, () => new RootDialog().DefaultIfException());

此外,在 ConversationUpdate 中处理的机器人要发送的第一条消息已成功发送给用户,没有任何错误。

我正在使用 Azure 表存储,并且我也尝试过 InMemory 存储。在我的机器人中还有一些本地数据库的工作。

我还有一个几个月前创建的网络应用程序机器人,我尝试部署这个机器人,它运行良好。所以,我想也许我错过了这个新的网络应用程序机器人配置中的一些东西,或者还有其他一些我不知道的问题。我已经多次检查了我所有的应用服务密钥。

任何帮助将不胜感激!

【问题讨论】:

    标签: azure botframework dialogflow-es azure-language-understanding qnamaker


    【解决方案1】:

    所以,我找到了解决方案。您必须确保您的 Global.asax 文件中有这些代码行

    builder.Register(c => store)
           .Keyed<IBotDataStore<BotData>>(AzureModule.Key_DataStore)
           .AsSelf()
           .SingleInstance();
    
    builder.Register(c => new CachingBotDataStore(store,
             CachingBotDataStoreConsistencyPolicy
            .ETagBasedConsistency))
            .As<IBotDataStore<BotData>>()
            .AsSelf()
            .InstancePerLifetimeScope();
    

    并使用 Azure 表存储或 CosmosDb。

    我只是没有使用 CachingBotDataStore,它的缺失导致了错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 2020-05-20
      • 2022-01-05
      • 2020-07-27
      • 1970-01-01
      相关资源
      最近更新 更多