Ejemplo n.º 1
0
        private async Task SignInAsync(IDialogContext context, IAwaitable <object> result)
        {
            var activity = await result as Activity;

            var teamAccount = await context.GetTeamsAccountAsync();

            userObjectId = teamAccount.ObjectId;

            var graphServiceClient = await AuthenticationHelper.GetGraphServiceClientSafeAsync(userObjectId, Permissions.Delegated);

            if (graphServiceClient != null)
            {
                context.Done(graphServiceClient);
                return;
            }

            var signCard = new SigninCard
            {
                Text    = "Authentication Required",
                Buttons = new List <CardAction>()
                {
                    new CardAction(
                        ActionTypes.OpenUrl,
                        "Sign into Office 365",
                        value: signInUrl)
                }
            };
            var message = context.MakeMessage();

            message.Attachments.Add(signCard.ToAttachment());
            await context.PostAsync(message);

            await context.SayAsync("Hi There! Nice to meet you. Please click the Sign into Office 365 button above.");

            var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMinutes(SignInMinutes));

            try
            {
                graphServiceClient = await GetGraphServiceClientAsync(activity, cancellationTokenSource.Token);
            }
            catch (TaskCanceledException ex)
            {
                var exception = new SignTimeoutException("Sign in timeout", ex);
                context.Fail(exception); // throw exception
                return;
            }

            context.Done(graphServiceClient);
        }
Ejemplo n.º 2
0
        public async Task ClearDataAsync(IDialogContext context, LuisResult result)
        {
            context.UserData.Clear();
            context.ConversationData.Clear();

            var user = await context.GetTeamsAccountAsync();

            var tokenCache = ADALTokenCache.Create(user.ObjectId);

            tokenCache.Clear();

            await context.SayAsync("User & Conversation data were cleared. Token cache was cleared");

            context.Wait(MessageReceived);
        }
Ejemplo n.º 3
0
        public async Task StartAsync(IDialogContext context)
        {
            TeamsChannelAccount = await context.GetTeamsAccountAsync();

            context.Wait(this.MessageReceivedAsync);
        }