我正在使用Azure Enterprise订阅,并使用该订阅创建了一个聊天机器人。但是目前,我无法使用它聊天。该机器人是使用Bot框架的Visual Studio创建的,并发布到Azure。 https://pihitsupportbot001.azurewebsites.net/是我的消息传递端点URL。我为同一应用程序进行了机器人通道注册,并使用了具有api / messages作为其端点的bot api端点。使用生成的应用程序ID和密码更新并发布了Web配置文件。但是,当我尝试在Azure中使用网络聊天进行测试时,会抛出“无法发送重试”信息。是什么原因?
答案 0 :(得分:1)
乔宾, 很明显,我能够将机器人仿真器从本地PC连接到您的端点https://pihitsupportbot001.azurewebsites.net/api/message,而无需输入您的appid和应用密码。我发送了一个“ hello”并收到了登录卡的回复。因此,该机器人似乎工作正常。在您编辑web.config之后,也许应用程序服务仍在重新启动? 另外,很难用有限的信息来帮助诊断这类问题。
答案 1 :(得分:0)
该错误是由于以下原因造成的:在global.asax中,我没有指定任何状态来存储对话历史记录。早期,Microsoft一直为使用Node.js或.NET SDK的机器人提供默认状态服务。状态服务用于在对话的上下文中存储和检索用户和对话数据。但是实际上,在使用仿真器甚至是IIS的本地运行中,它并不需要它。以下是文档。
Bot State Service will soon be retired on March 31st, 2018
var store = new TableBotDataStore(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
Conversation.UpdateContainer(
builder =>
{
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();
});