Ms Bot framework — где хранить данные?

#c# #azure #botframework

#c# #azure #botframework

Вопрос:

У меня ситуация, когда мне нужно сохранить состояние 5 переменных примерно для 10 000 пользователей.

Мне нужно сохранять состояние только во время сеанса. Если пользователь закроет окно, данные будут удалены из соображений безопасности и GDPR.

Бот будет на Facebook. Аутентификация для пользователя не потребуется.

Я думаю, что с хранилищем в памяти будет слишком сложно справиться.

Является ли табличное хранилище хорошим вариантом здесь? Или есть предложения получше?

Комментарии:

1. я думаю, что у него был адаптер cosmos db, но table тоже мог бы работать

2. Если я правильно понимаю, вы хотите сохранить некоторые переменные вместо используемых. Если это так, то вы могли бы просто использовать cookies и сохранять в них значения. Это также будет означать, что при закрытии браузера файлы cookie могут быть удалены, потому что, если вы не установите дату истечения срока действия, срок действия файлов cookie истечет в конце сеанса.

Ответ №1:

Для тестирования и создания прототипов вы можете использовать встроенное хранилище данных Bot Builder Framework. Для производственных ботов вы можете реализовать свой собственный адаптер хранения или использовать одно из расширений Azure. Расширения Azure позволяют хранить данные о состоянии вашего бота либо в табличном хранилище, либо в CosmosDB, либо в SQL.

https://learn.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-state?view=azure-bot-service-3.0

Ответ №2:

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

Что касается проблемы, связанной со сроком службы сеанса; хранилище памяти является нестабильным, потому что при перезапуске службы вы теряете свое состояние. Что хорошо для тестирования. Но на самом деле это не будет привязано к сеансу пользователя. У вас может быть новый «сеанс», но все еще сохраненное состояние в хранилище памяти. Вам захочется заглянуть в идентификатор беседы и, возможно, найти логику вокруг этого. Это ближе всего к сроку службы сеанса.