private async Task SetUserSessionData(TokenResponse token, UserInfoResponse user, AuthData authData, CancellationToken cancellationToken = default(CancellationToken))
        {
            // Get the resumption cookie
            var address = new Address
                          (
                botId: authData.BotId,
                channelId: authData.ChannelId,
                userId: authData.UserId,
                conversationId: authData.ConversationId,
                serviceUrl: authData.ServiceUrl
                          );

            // resolve on going activity in bot
            var conversationReference = address.ToConversationReference();
            var activity = conversationReference.GetPostToBotMessage();

            // create user data
            var dataUser        = new UserData(user.Claims);
            var authUser        = GetAuthUser(token, dataUser.UserApplicationId);
            var activityAddress = Address.FromActivity(activity);

            var userState = await botDataRepository.LoadUserDataAsync(activityAddress, cancellationToken);

            userState.SetUserAuthData(authUser);
            userState.SetUserData(dataUser);

            await botDataRepository.SaveUserDataAsync(activityAddress, userState, cancellationToken);

            using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, activity))
            {
                // resolve BotToUser
                var botToUser = scope.Resolve <IBotToUser>();
                var reply     = CreateLoginContinueActivity(activity, dataUser.Name);

                await botToUser.PostAsync(reply, cancellationToken);
            }
        }
Exemple #2
0
 public Task <BotData> GetBotDataAsync(IActivity activity)
 {
     return(botDataRepository.LoadUserDataAsync(activity));
 }