private async Task GetApprovalStatus(IDialogContext context, IAwaitable <GetTokenResponse> tokenResponse)
        {
            //await ShowTyping(context, activity);
            var approvalId = context.ConversationData.GetValueOrDefault <string>("selectedApproval");

            ClearConversationData(context, "selectedApproval");

            if (string.IsNullOrEmpty(approvalId))
            {
                await context.PostAsync(Apologize("I could not find a selected approval ID in the conversation state"));

                return;
            }

            var statusCard = await ApprovalStatusHelper.GetApprovalStatusCard(approvalId);

            await context.PostAsync("Here's what I found:");

            var reply = context.MakeMessage();

            reply.Attachments = new List <Attachment>()
            {
                new Attachment()
                {
                    ContentType = AdaptiveCard.ContentType, Content = statusCard
                }
            };

            await context.PostAsync(reply);
        }
        private async Task PromptForApprovalRequest(IDialogContext context, IAwaitable <GetTokenResponse> tokenResponse)
        {
            //await ShowTyping(context, activity);
            var accessToken = await tokenResponse;
            var userId      = context.ConversationData.GetValueOrDefault <string>("approvalRequestor");

            ClearConversationData(context, "approvalRequestor");

            if (accessToken == null || string.IsNullOrEmpty(accessToken.Token))
            {
                await context.PostAsync(Apologize("I could not get an access token"));

                return;
            }

            if (string.IsNullOrEmpty(userId))
            {
                await context.PostAsync(Apologize("I could not find a user ID in the conversation state"));

                return;
            }

            var statusCardList = await ApprovalStatusHelper.GetApprovalsForUserCard(accessToken.Token, userId);

            if (statusCardList == null)
            {
                await context.PostAsync("I'm sorry, but I didn't find any approvals requested by you.");
            }
            else
            {
                var reply = context.MakeMessage();

                if (statusCardList.Count > 1)
                {
                    reply.Text             = "Select an approval to see its status.";
                    reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
                }

                reply.Attachments = new List <Attachment>();

                foreach (var card in statusCardList)
                {
                    reply.Attachments.Add(new Attachment()
                    {
                        ContentType = AdaptiveCard.ContentType,
                        Content     = card
                    });
                }

                await context.PostAsync(reply);
            }
        }
        private IHttpActionResult GenerateResponseCard(Approval approval)
        {
            var responseCard = ApprovalStatusHelper.GetApprovalStatusCard(approval);

            // Modify card for this use case
            responseCard.Body.Insert(0, new AdaptiveTextBlock()
            {
                Text = $"Response status as of {TimeZoneHelper.GetAdaptiveDateTimeString(DateTimeOffset.UtcNow)}:"
            });

            responseCard.Body.Insert(0, new AdaptiveTextBlock()
            {
                Text = "Thanks for responding. Your response has been recorded."
            });

            HttpResponseMessage refreshCardResponse = new HttpResponseMessage(HttpStatusCode.OK);

            refreshCardResponse.Headers.Add("CARD-UPDATE-IN-BODY", "true");

            refreshCardResponse.Content = new StringContent(responseCard.ToJson(), System.Text.Encoding.UTF8, "application/json");
            return(ResponseMessage(refreshCardResponse));
        }
Exemplo n.º 4
0
        public static ApprovalStatus ToApprovalStatus(this string standardRepresentation)
        {
            var status = ApprovalStatusHelper.FromStandardRepresentation(standardRepresentation);

            return(status);
        }