服务错误 Bot should use its own storage
Service error Bot should use its own storage
我创建了使用 LUIS、QnAMaker、Dialogflow 服务的机器人 (Bot Framework v3)。当我在 Bot Emulator 本地 运行 它时,它工作得很好,但是当我将它部署在 Azure 上时,我的机器人停止工作。表面上他只是回复 抱歉,我的机器人代码有问题 并且在应用程序的 Settings-Web 聊天 blade 中有一个 500内部服务器错误.
我尝试使用 ngrok 进行调试,但出现异常 操作返回了无效状态代码 'MethodNotAllowed' 以及 Microsoft.Bot.Connector.ErrorResponse 消息 Bot 应该在我的 MessageController 方法 await Conversation.SendAsync(activity, () => new RootDialog().DefaultIfException());
中使用自己的存储
此外,在 ConversationUpdate 中处理的机器人发送的第一条消息已成功发送给用户,没有任何错误。
我正在使用 Azure Table 存储,我也尝试过 InMemory 存储。我的机器人中还有一些使用本地数据库的工作。
我还有一个几个月前创建的网络应用程序机器人,我尝试部署这个机器人并且它工作正常。所以,我想也许我在这个新的网络应用程序机器人配置中遗漏了一些东西,或者还有一些我不知道的其他问题。我已经多次检查了我所有的应用服务密钥。
任何帮助将不胜感激!
所以,我找到了解决办法。您必须确保在 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 存储或 CosmosDb。
我只是没有使用 CachingBotDataStore,它的缺失导致了错误。
我创建了使用 LUIS、QnAMaker、Dialogflow 服务的机器人 (Bot Framework v3)。当我在 Bot Emulator 本地 运行 它时,它工作得很好,但是当我将它部署在 Azure 上时,我的机器人停止工作。表面上他只是回复 抱歉,我的机器人代码有问题 并且在应用程序的 Settings-Web 聊天 blade 中有一个 500内部服务器错误.
我尝试使用 ngrok 进行调试,但出现异常 操作返回了无效状态代码 'MethodNotAllowed' 以及 Microsoft.Bot.Connector.ErrorResponse 消息 Bot 应该在我的 MessageController 方法 await Conversation.SendAsync(activity, () => new RootDialog().DefaultIfException());
此外,在 ConversationUpdate 中处理的机器人发送的第一条消息已成功发送给用户,没有任何错误。
我正在使用 Azure Table 存储,我也尝试过 InMemory 存储。我的机器人中还有一些使用本地数据库的工作。
我还有一个几个月前创建的网络应用程序机器人,我尝试部署这个机器人并且它工作正常。所以,我想也许我在这个新的网络应用程序机器人配置中遗漏了一些东西,或者还有一些我不知道的其他问题。我已经多次检查了我所有的应用服务密钥。
任何帮助将不胜感激!
所以,我找到了解决办法。您必须确保在 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 存储或 CosmosDb。
我只是没有使用 CachingBotDataStore,它的缺失导致了错误。