예제 #1
0
        private async Task <DialogTurnResult> LoginStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            // Get the token from the previous step. Note that we could also have gotten the
            // token directly from the prompt itself. There is an example of this in the next method.
            var tokenResponse = (TokenResponse)stepContext.Result;

            if (tokenResponse?.Token != null)
            {
                var client = new AppCatalogHelper(tokenResponse.Token);
                await client.SendSuggestedActionsAsync(stepContext.Context, cancellationToken);

                return(await stepContext.PromptAsync(nameof(TextPrompt), new PromptOptions { Prompt = MessageFactory.Text("Type your actions") }, cancellationToken));
            }
            await stepContext.Context.SendActivityAsync(MessageFactory.Text("Login was not successful please try again."), cancellationToken);

            return(await stepContext.EndDialogAsync(cancellationToken : cancellationToken));
        }
예제 #2
0
        private async Task <DialogTurnResult> ProcessStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            if (stepContext.Result != 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.
                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)
                {
                    string           data      = String.Empty;
                    IList <TeamsApp> teamsApps = null;
                    Microsoft.Bot.Schema.Attachment attachData = null;
                    string logintext = "User is not login.Type 'login' to proceed";
                    var    command   = ((string)stepContext.Values["command"] ?? string.Empty).ToLowerInvariant();
                    var    client    = new AppCatalogHelper(tokenResponse.Token);

                    switch (command)
                    {
                    case "listapp":
                        teamsApps = await client.GetAllapp();

                        if (teamsApps != null && teamsApps.Count > 0)
                        {
                            taskInfoData = client.ParseData(teamsApps);
                            attachData   = client.AgendaAdaptiveList("listapp", taskInfoData);
                            taskInfoData.Clear();
                            await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(attachData), cancellationToken);

                            await client.SendContinueMessageAsync(stepContext.Context, cancellationToken);
                        }
                        else
                        {
                            //login if not authenticated
                            await stepContext.Context.SendActivityAsync(MessageFactory.Text(logintext, logintext), cancellationToken);
                        }

                        break;

                    case "app":
                        teamsApps = await client.AppCatalogById();

                        if (teamsApps != null && teamsApps.Count > 0)
                        {
                            taskInfoData = client.ParseData(teamsApps);
                            attachData   = client.AgendaAdaptiveList("App", taskInfoData);
                            taskInfoData.Clear();
                            await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(attachData), cancellationToken);

                            await client.SendContinueMessageAsync(stepContext.Context, cancellationToken);
                        }
                        else
                        {
                            //login if not authenticated
                            await stepContext.Context.SendActivityAsync(MessageFactory.Text(logintext, logintext), cancellationToken);
                        }

                        break;

                    case "findapp":
                        teamsApps = await client.FindApplicationByTeamsId();

                        if (teamsApps != null && teamsApps.Count > 0)
                        {
                            taskInfoData = client.ParseData(teamsApps);
                            attachData   = client.AgendaAdaptiveList("findapp", taskInfoData);
                            taskInfoData.Clear();
                            await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(attachData), cancellationToken);

                            await client.SendContinueMessageAsync(stepContext.Context, cancellationToken);
                        }
                        else
                        {
                            //login if not authenticated
                            await stepContext.Context.SendActivityAsync(MessageFactory.Text(logintext, logintext), cancellationToken);
                        }


                        break;

                    case "status":
                        teamsApps = await client.AppStatus();

                        if (teamsApps != null && teamsApps.Count > 0)
                        {
                            taskInfoData = client.ParseData(teamsApps);
                            attachData   = client.AgendaAdaptiveList("status", taskInfoData);
                            taskInfoData.Clear();
                            await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(attachData), cancellationToken);

                            await client.SendContinueMessageAsync(stepContext.Context, cancellationToken);
                        }
                        else
                        {
                            //login if not authenticated
                            await stepContext.Context.SendActivityAsync(MessageFactory.Text(logintext, logintext), cancellationToken);
                        }

                        break;

                    case "bot":
                        teamsApps = await client.ListAppHavingBot();

                        if (teamsApps != null && teamsApps.Count > 0)
                        {
                            taskInfoData = client.ParseData(teamsApps);
                            attachData   = client.AgendaAdaptiveList("bot", taskInfoData);
                            taskInfoData.Clear();
                            await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(attachData), cancellationToken);

                            await client.SendContinueMessageAsync(stepContext.Context, cancellationToken);
                        }
                        else
                        {
                            //login if not authenticated
                            await stepContext.Context.SendActivityAsync(MessageFactory.Text(logintext, logintext), cancellationToken);
                        }

                        break;

                    case "update":
                        var upData = await client.UpdateFileAsync();

                        if (upData == "require login")
                        {
                            await stepContext.Context.SendActivityAsync(MessageFactory.Text(logintext, logintext), cancellationToken);
                        }
                        else
                        {
                            attachData = client.AdaptivCardList("Update", upData);
                            await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(attachData), cancellationToken);

                            await client.SendContinueMessageAsync(stepContext.Context, cancellationToken);
                        }
                        break;

                    case "publish":
                        var pubData = await client.UploadFileAsync();

                        if (pubData == "require login")
                        {
                            await stepContext.Context.SendActivityAsync(MessageFactory.Text(logintext, logintext), cancellationToken);
                        }
                        else
                        {
                            attachData = client.AdaptivCardList("publish", pubData);
                            await stepContext.Context.SendActivityAsync(MessageFactory.Attachment(attachData), cancellationToken);

                            await client.SendContinueMessageAsync(stepContext.Context, cancellationToken);
                        }
                        break;

                    case "delete":
                        var delData = await client.DeleteApp();

                        if (delData != "Deleted")
                        {
                            await stepContext.Context.SendActivityAsync(MessageFactory.Text(logintext, logintext), cancellationToken);
                        }
                        else
                        {
                            await stepContext.Context.SendActivityAsync(MessageFactory.Text("Delete app successfully"), cancellationToken);

                            await client.SendContinueMessageAsync(stepContext.Context, cancellationToken);
                        }
                        break;

                    case "list":
                        await client.SendContinueMessageAsync(stepContext.Context, cancellationToken);

                        break;

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

                        break;
                    }
                }
                else
                {
                    await stepContext.Context.SendActivityAsync(MessageFactory.Text("We couldn't log you in. Please try again later."), 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));
        }