Ошибка службы Бот должен использовать собственное хранилище

Я создал бота (Bot Framework v3), который использует сервисы LUIS, QnAMaker, Dialogflow. Он отлично работает, когда я запускаю его локально в эмуляторе бота, но когда я развертываю его в Azure, мой бот перестает работать. На первый взгляд он просто отвечает Извините, у моего кода бота возникла проблема, а в колонке приложения «Настройки-Веб-чат» есть 500 InternalServerError.

Я попытался выполнить отладку с помощью ngrok, и у меня возникло исключение Операция вернула недопустимый код состояния 'MethodNotAllowed' с сообщением Microsoft.Bot.Connector.ErrorResponse Бот должен использовать собственное хранилище в моем MessageController в методе await Conversation.SendAsync(activity, () => new RootDialog().DefaultIfException());

Кроме того, первое сообщение, которое должно было быть отправлено ботом, которое обрабатывается в ConversationUpdate, успешно отправляется пользователю без каких-либо ошибок.

Я использую хранилище таблиц Azure, а также я пробовал хранилище InMemory. В моем боте также есть некоторая работа с локальной базой данных.

У меня также есть бот для веб-приложения, который был создан несколько месяцев назад, и я попытался развернуть этого бота, и он отлично работает. Итак, я полагаю, что, возможно, я что-то пропустил в этой новой конфигурации бота веб-приложения или есть еще одна проблема, о которой я не знаю. Я уже много раз проверял все свои служебные ключи приложений.

Любая помощь будет оценена по достоинству!


person Anna    schedule 28.02.2019    source источник


Ответы (1)


Итак, я нашел решение. Вы должны быть уверены, что у вас есть эти строки кода в вашем файле 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 или CosmosDb.

Я просто не использовал CachingBotDataStore, и его отсутствие вызвало ошибку.

person Anna    schedule 01.03.2019