服务错误Bot应该使用自己的存储空间

时间:2019-02-28 19:41:31

标签: azure botframework dialogflow luis qnamaker

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

我尝试使用ngrok进行调试,但出现了异常 Operation与Microsoft.Bot.Connector.ErrorResponse消息一起返回了无效的状态代码'MethodNotAllowed'。 / strong>在我的MessageController中的方法await Conversation.SendAsync(activity, () => new RootDialog().DefaultIfException());

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

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

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

因此,我找到了解决方案。您必须确保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 Table Storage或CosmosDb。

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

相关问题