示例#1
0
        private async Task <DialogTurnResult> ProcessStep2Async(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var tokenResponse = (TokenResponse)stepContext.Result;

            if (tokenResponse != null)
            {
                // We do not need to store the token in the bot. When we need the token we can
                // send another prompt. If the token is valid the user will not need to log back in.
                // The token will be available in the Result property of the task.

                // If we have the token use the user is authenticated so we may use it to make API calls.
                if (tokenResponse?.Token != null)
                {
                    var parts = ((string)stepContext.Values["command"] ?? string.Empty).ToLowerInvariant().Split(' ');

                    var command = parts[0];

                    if (command == "me")
                    {
                        await OAuthHelpers.ListMeAsync(stepContext.Context, tokenResponse);
                    }
                    else if (command.StartsWith("send"))
                    {
                        await OAuthHelpers.SendMailAsync(stepContext.Context, tokenResponse, parts[1]);
                    }
                    else if (command.StartsWith("recent"))
                    {
                        await OAuthHelpers.ListRecentMailAsync(stepContext.Context, tokenResponse);
                    }
                    else
                    {
                        await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Your token is: {tokenResponse.Token}"), cancellationToken);
                    }
                }
            }
            else
            {
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("We couldn't log you in. Please try again later."), cancellationToken);
            }

            return(await stepContext.EndDialogAsync(cancellationToken : cancellationToken));
        }
        private async Task <DialogTurnResult> ProcessStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            if (stepContext.Result != null)
            {
                // The token will be available in the Result property of the task.
                var tokenResponse = stepContext.Result as TokenResponse;

                // If we have the token use the user is authenticated so we may use it to make API calls.
                if (tokenResponse?.Token != null)
                {
                    var parts = ((string)stepContext.Values["command"] ?? string.Empty).ToLowerInvariant().Split(' ');

                    var command = parts[0];

                    if (command == "me")
                    {
                        await OAuthHelpers.ListMeAsync(stepContext.Context, tokenResponse);

                        //return await stepContext.NextAsync();
                    }

                    else
                    {
                        await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Your token is: {tokenResponse.Token}"), cancellationToken);

                        return(await stepContext.NextAsync());
                    }
                }
            }
            else
            {
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("We couldn't log you in. Please try again later."), cancellationToken);
            }

            return(await stepContext.EndDialogAsync(cancellationToken : cancellationToken));
        }
        private async Task <DialogTurnResult> showAdaptiveCardAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            if ((stepContext.Context.Activity.Text != null) || (stepContext.Context.Activity.Value != null))
            {
                // The token will be available in the Result property of the task.
                var tokenResponse = stepContext.Result as TokenResponse;

                List <Microsoft.Graph.User> users = new List <Microsoft.Graph.User>();
                var list = new List <Tuple <string, string> >();
                Dictionary <string, string> _teamsa = new Dictionary <string, string>();
                users = await OAuthHelpers.ListMeAsync(stepContext.Context, tokenResponse);

                try
                {
                    foreach (Microsoft.Graph.User u in users)
                    {
                        string dname = u.DisplayName;
                        string sname = u.Surname;
                        try
                        {
                            if (dname == null)
                            {
                                dname = "Test";
                            }
                            if (sname == null)
                            {
                                sname = "Test";
                            }
                        }
                        catch (Exception e) { }
                        //_teamsa.Add((JsonConvert.DeserializeObject(u.DisplayName.ToString())), (JsonConvert.DeserializeObject<Microsoft.Graph.User>(u.Surname.ToString())));
                        list.Add(Tuple.Create(dname, sname));
                        _teamsa.Add(dname, sname);
                    }
                }
                catch (Exception e)
                {
                    e.ToString();
                }
                List <string> _teamsType = new List <string>
                {
                    { "Public" },
                    { "Private" }
                };
                List <string> _teamsClassification = new List <string>
                {
                    { "Internal" },
                    { "External" },
                    { "Business" },
                    { "Protected" },
                    { "Important" },
                    { "Personal" }
                };

                //var choicesTeamOwners = _teamsa.Select(s => new AdaptiveChoice { Title = s.Key, Value = s.Key }).ToList();
                var choicesType = _teamsType.Select(s => new AdaptiveChoice {
                    Title = s, Value = s
                }).ToList();
                var choicesClassification = _teamsClassification.Select(s => new AdaptiveChoice {
                    Title = s, Value = s
                }).ToList();
                try
                {
                    var card = new AdaptiveCard
                    {
                        Version = new AdaptiveSchemaVersion(1, 0),
                        Body    =
                        {
                            new AdaptiveTextBlock("Team Name"),
                            new AdaptiveTextInput
                            {
                                Id = "Teamname",
                            },
                            new AdaptiveTextBlock("Description"),
                            new AdaptiveTextInput
                            {
                                Id = "Description",
                            },
                            new AdaptiveTextBlock("Team Owners"),
                            new AdaptiveChoiceSetInput
                            {
                                Choices       = choicesType,
                                Id            = "TeamOwners",
                                Style         = AdaptiveChoiceInputStyle.Compact,
                                IsMultiSelect = false
                            },
                            new AdaptiveTextBlock("Type"),
                            new AdaptiveChoiceSetInput
                            {
                                Choices       = choicesType,
                                Id            = "Type",
                                Style         = AdaptiveChoiceInputStyle.Compact,
                                IsMultiSelect = false
                            },
                            new AdaptiveTextBlock("Classification"),
                            new AdaptiveChoiceSetInput
                            {
                                Choices       = choicesClassification,
                                Id            = "Classification",
                                Style         = AdaptiveChoiceInputStyle.Compact,
                                IsMultiSelect = false
                            }
                        },
                        Actions = new List <AdaptiveAction>
                        {
                            new AdaptiveSubmitAction
                            {
                                Title = "Create Team",
                                Type  = "Action.Submit"
                            }
                        }
                    };

                    return(await stepContext.PromptAsync($"{ nameof(SiteRequestDialog)}.ShowCard",
                                                         new PromptOptions
                    {
                        // Choices = ChoiceFactory.ToChoices(_teamsa.Select(pair => pair.Value).ToList()),
                        Prompt = (Activity)MessageFactory.Attachment(new Attachment
                        {
                            ContentType = AdaptiveCard.ContentType,
                            Content = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(card))
                        })
                    },
                                                         cancellationToken));
                }
                catch (Exception e)
                { e.ToString(); }
                return(await stepContext.NextAsync());
            }
            else
            {
                return(await stepContext.EndDialogAsync());
            }
        }