我创建了使用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应用程序机器人配置中的某些内容,或者还有一些其他我不知道的问题。我已经多次检查了我所有的应用服务密钥。
任何帮助将不胜感激!
答案 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而它的缺失导致了错误。