Обзор:
Мы реализовали TableBotDataStore в нашем C#-боте, но каким-то образом бот все еще делает вызовы к устаревшему State API.
Контекст:
В Application Insights я вижу, что наш бот делает много вызовов на state.botframework.com. Я также заметил, что наша производственная среда получает 200 ответов на эти запросы, но наш новый бот веб-приложения получает 405 (метод не разрешен) на все эти запросы.
Когда мы начали разработку бота (май 2018 г.), мы сразу внедрили Azure Table Storage. Поэтому я был очень удивлен, обнаружив, что наш бот все еще звонит на state.botframework.com.
В этом сообщении MS говорится:
Параметры чтения будут по-прежнему доступны до 31 июля 2018 г.
Я предполагаю, что MS по-прежнему разрешает запросы к State API для ботов, которые были зарегистрированы до определенной даты.
Что я пробовал:
Я уже следовал руководству Microsoft о том, как Управление пользовательскими данными о состоянии с помощью Azure Table Storage для .NET. Я также прочитал связанный с этим вопрос Поставщик состояния бота перенесен, но вызовы state.botframework.com все еще выполняются, но мне это не помогает.
Мой код:
Conversation.UpdateContainer(
builder =>
{
builder.RegisterModule(new AzureModule(Assembly.GetExecutingAssembly()));
var store = new
TableBotDataStore(ConfigurationManager.AppSettings["AzureWebJobsStorage"]);
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();
});
GlobalConfiguration.Configure(WebApiConfig.Register);
Что я ожидаю:
Я ожидаю, что с этой конфигурацией наш бот будет использовать только TableBotDataStore и не будет вызывать устаревший State API.
Autofac.Module
. Мы делаем это, чтобы иметь возможность зарегистрироватьPostUnhandledExceptionToUserOverrideTask
(пользовательская реализацияIPostToBot
). Это позволяет нам обрабатывать исключения с помощью нашего собственного пользовательского сообщения. Пожалуйста, проверьте наш код на pastebin. - person Edwin Otten   schedule 18.02.2019