Привет, я использую MS Bot Framework, v4, и я использую C# код. Я развернул бота в прямом канале бота.
Я получаю имя пользователя и его свойства в интерфейсе с помощью JavaScript и передаю его боту. Используя управление состоянием, я могу получить имя пользователя в операции onmemberaddedasyn c.
protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
var userStateAccessors = _userState.CreateProperty<UserProfile>(nameof(UserProfile));
var userProfile = await userStateAccessors.GetAsync(turnContext, () => new UserProfile());
foreach (var member in membersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
userProfile.Name = member.Name.Replace('.', ' ');
await turnContext.SendActivityAsync(MessageFactory.Text($"Hi **{member.Name.Replace('.',' ')}**. I'm bot, "), cancellationToken);
}
}
}
До этого все работало нормально, когда я пытался использовать имя пользователя в OnMessageActivityAsyn c область действия члена не расширена, поэтому я создал глобальную переменную, которой присвоено имя пользователя, которая теперь расширена и может использоваться в других методах, но это не относится к сеансу текущего пользователя, если некоторые другие пользователи вошел в бот, он берет их имя.
А также, у меня есть некоторые пользовательские свойства, похожие на идентификатор электронной почты, но это изменится во время разговора, и мне нужно захватить это значение и передать его код переднего конца JavaScript для выполнения некоторых действий переднего плана, и это также не спецификация сеанса c.
есть ли какие-либо опции для поддержания сеанса для имени пользователя, используемого в нескольких функциях и других свойствах пользователя.
пожалуйста, предложите способ.