Где хранится IBotDataBag в Microsoft Bot с помощью SDK framework v3?

В настоящее время у меня есть бот, работающий в Microsoft Teams, который был создан много лет назад с использованием Microsoft Bot Framework v3 SDK. Теперь я покажу пример места, где я сохранил некоторые данные после использования бота, которые, как я понимаю, хранятся в «IBotDataBag».

Таким образом, этот метод является первым методом, который вызывается, когда я ввожу сообщение боту в Teams (в результате работы фреймворка). В него вводится объект типа «IDialogContext», и этот объект содержит другие объекты, один из которых имеет тип «IBotData», а выше на изображении — «context.UserData». Я использую это для установки некоторых данных, например, я установил его для хранения значения внутри ключа «test_data», которое я получаю на изображении выше.

Теперь мой вопрос: где в приложении Bot эти данные фактически хранятся? Мое приложение развернуто в Azure как служба приложений. Он устанавливается локально в моих Microsoft Teams после установки из каталога приложений моей организации. Я хочу знать, хранятся ли эти данные где-то локально на моем ПК или где-то в облаке. Основываясь на тесте с удалением бота, я подумал, что если он хранится в облаке, то набор данных в «IBotDataBag» будет удален, но после установки бота информация все еще присутствовала, что наводит меня на мысль, что бот хранится на информацию локально на моей машине. Я пытался найти информацию, подтверждающую этот вывод в Интернете, но пока не нашел ничего полезного, и я понимаю, что Microsoft сейчас очень сильно продвигает SDK v4, поэтому надеялся, что кто-то здесь может пролить свет на этот вопрос для меня, пожалуйста?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

V3 SDK выводится из эксплуатации, а окончательная долгосрочная поддержка заканчивается 31 декабря 2019 г. Соответственно, в этом репозитории больше не будет разработки. Мы настоятельно рекомендуем вам начать перенос ботов V3 на V4. В настоящее время v3 SDK поддерживает два языка программирования. Пакет SDK для построителя ботов версии 3 включает образцы для всех поддерживаемых языков:

  1. .NET
  2. JavaScript

Вот фрагмент кода-

частная асинхронная задача MessageReceivedAsync (контекст IDialogContext, Ожидаемый результат) { var activity = ожидать результата как Activity;

        // An example of a string value saved directly to UserData
        context.UserData.SetValue("test", "test");

        // If we have not asked the user their name, ask it now
        var askedName = context.UserData.GetValueOrDefault<bool>(AskedNameProperty);
        if (!askedName)
        {
            await context.PostAsync($"v3: Hi.  What is your name?");
            // We've asked the user their name, so persist the information in UserData
            context.UserData.SetValue(AskedNameProperty, true);
        }

Справочный образец-https://github.com/microsoft/BotBuilder-Samples/blob/4d209edeaaaa72d29279057ff2c1ac3ce213694b/Migration/MigrationV3V4/CSharp/V3StateBot/V3StateBot/Dialogs/RootDialog.cs

Документ-https://github.com/microsoft/botbuilder-v3

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

Pradeep Patel 04.10.2022 17:23
Ответ принят как подходящий

Итак, изучив архитектуру бота в его группе ресурсов на портале Microsoft Azure, я нашел запись типа «Учетная запись хранения», которая по сути является хранилищем таблиц Azure для бота. Здесь есть раздел «Таблицы», и здесь вы найдете запись под названием «botdata». Внутри этой таблицы вы найдете несколько записей, которые можно идентифицировать по их ключу раздела. После проб и ошибок я обнаружил, что удаление записей «msteams: user» приведет к тому, что мой бот не будет иметь никаких «UserData» внутри объекта контекста. Основываясь на нескольких тестах, я пришел к выводу, что данные хранятся в хранилище таблиц и что инфраструктура бота обрабатывает операции CRUD с этими данными.

Другие вопросы по теме