Пример #1
0
        private InvokeResponse GetStatusCard(string cardType)
        {
            if (!string.IsNullOrEmpty(cardType))
            {
                Microsoft.Bot.Schema.Attachment card2 = CardHelper.CreateAdaptiveCardAttachment(cardType, configuration);

                InvokeResponseBody response2 = new InvokeResponseBody();
                response2.statusCode = 200;
                response2.type       = "application/vnd.microsoft.card.adaptive";
                response2.value      = card2.Content;
                InvokeResponse invokeResponse2 = new InvokeResponse();
                invokeResponse2.Body   = response2;
                invokeResponse2.Status = 200;
                return(invokeResponse2);
            }
            else
            {
                InvokeResponseBody response2 = new InvokeResponseBody();
                response2.statusCode = 200;
                response2.type       = "application/vnd.microsoft.activity.message";
                response2.value      = "message";
                InvokeResponse invokeResponse2 = new InvokeResponse();
                invokeResponse2.Body   = response2;
                invokeResponse2.Status = 200;
                return(invokeResponse2);
            }
        }
Пример #2
0
        protected override async Task <MessagingExtensionActionResponse> OnTeamsMessagingExtensionSubmitActionAsync(ITurnContext <IInvokeActivity> turnContext, MessagingExtensionAction action, CancellationToken cancellationToken)
        {
            var taskModuleOutput = JsonConvert.DeserializeObject <TaskModuleSubmitDataDeserializer>(turnContext.Activity.Value.ToString());

            if (taskModuleOutput.data.SubmittedByMail == null)
            {
                action.CommandId = taskModuleOutput.commandId;
                var task = await OnTeamsMessagingExtensionFetchTaskAsync(turnContext, action, cancellationToken);

                return(task);
            }

            if (taskModuleOutput.commandId == Constants.MessageExtensionCommandId)
            {
                var member = await TeamsInfo.GetMemberAsync(turnContext, taskModuleOutput.data.AssignedTo.objectId, cancellationToken);

                taskModuleOutput.data.AssignedTo.objectId = member.Id;
                var blobId = await BlobHelper.UploadToBlob(taskModuleOutput, turnContext);

                var blobData        = BlobHelper.GetBlob(blobId, null).Result;
                var cardResponse    = CardHelper.CreateAdaptiveCardAttachment(Status.BaseCard, blobData, "msteams", out string cardJsonstring);
                var messageResponse = await turnContext.SendActivityAsync(MessageFactory.Attachment(cardResponse), cancellationToken);

                string messageId = messageResponse.Id;
                BlobHelper.GetBlob(blobId, null, messageId);

                //Send Mail
                await OutlookConnector.SendMailAsync(Constants.SenderEmail, blobData.assignedToMail, cardJsonstring, Constants.MailSubject);
            }
            return(new MessagingExtensionActionResponse());
        }
        private MessagingExtensionActionResponse CreateAdaptiveCardResponse(ITurnContext <IInvokeActivity> turnContext, MessagingExtensionAction action)
        {
            var createCardResponse = ((JObject)action.Data).ToObject <CardResponse>();
            var attachments        = CardHelper.CreateAdaptiveCardAttachment(action, createCardResponse);

            return(new MessagingExtensionActionResponse
            {
                ComposeExtension = new MessagingExtensionResult
                {
                    AttachmentLayout = "list",
                    Type = "result",
                    Attachments = attachments,
                },
            });
        }
Пример #4
0
 public async Task SendConversation(IConfiguration configuration)
 {
     Microsoft.Bot.Schema.Attachment card = CardHelper.CreateAdaptiveCardAttachment(Constants.UserCard, configuration);
     await Common.SendChannelData(card, configuration);
 }
Пример #5
0
        protected override async Task <InvokeResponse> OnInvokeActivityAsync(ITurnContext <IInvokeActivity> turnContext, CancellationToken cancellationToken)
        {
            if (turnContext.Activity.Name == "composeExtension/fetchTask")
            {
                MessagingExtensionAction action = new MessagingExtensionAction();
                var task = await this.OnTeamsMessagingExtensionFetchTaskAsync(turnContext, action, cancellationToken);

                return(CreateInvokeResponse(task));
            }
            if (turnContext.Activity.Name == "composeExtension/query")
            {
                var quer = JsonConvert.DeserializeObject <MESearch>(turnContext.Activity.Value.ToString());
                MessagingExtensionQuery query = new MessagingExtensionQuery();
                query.Parameters = quer.Parameters;
                query.CommandId  = quer.commandId;
                var result = await this.OnTeamsMessagingExtensionQueryAsync(turnContext, query, cancellationToken);

                return(CreateInvokeResponse(result));
            }
            else if (turnContext.Activity.Name == "adaptiveCard/action")
            {
                var data = JsonConvert.DeserializeObject <ActionType>(turnContext.Activity.Value.ToString());

                string        cases   = data.action.verb.ToString();
                SPFileHandler handler = new SPFileHandler();

                switch (cases.ToString())
                {
                case "approveRequest":
                    //Approve the request
                    await handler.ApproveFileAsync(configuration);

                    Microsoft.Bot.Schema.Attachment card = CardHelper.CreateAdaptiveCardAttachment(MessageExtension_SP.Helpers.Constants.ApprovedCard, configuration);
                    var activity = MessageFactory.Attachment(card);
                    activity.Id = turnContext.Activity.ReplyToId;
                    await turnContext.UpdateActivityAsync(activity, cancellationToken);

                    break;

                case "rejectRequest":
                    // reject the request
                    await handler.RejectFileAsync(configuration);

                    Microsoft.Bot.Schema.Attachment card1 = CardHelper.CreateAdaptiveCardAttachment(MessageExtension_SP.Helpers.Constants.RejectedCard, configuration);
                    var activities = MessageFactory.Attachment(card1);
                    activities.Id = turnContext.Activity.ReplyToId;
                    await turnContext.UpdateActivityAsync(activities, cancellationToken);

                    break;

                case "cardRefresh":
                    //read conversation id from text file
                    string conversationId = System.IO.File.ReadAllText(@"Temp/ConversationFile.txt");
                    if (turnContext.Activity.Conversation.Id == conversationId)
                    {
                        string userId      = turnContext.Activity.From.AadObjectId;
                        string teamOwnerId = await Common.GetManagerId(configuration);

                        //based on owner id show the approver card
                        if (userId == teamOwnerId)
                        {
                            return(GetStatusCard(MessageExtension_SP.Helpers.Constants.OwnerCard));
                        }
                    }
                    return(GetStatusCard(null));
                }
            }

            return(GetStatusCard(null));
        }
Пример #6
0
        protected override async Task <InvokeResponse> OnInvokeActivityAsync(ITurnContext <IInvokeActivity> turnContext, CancellationToken cancellationToken)
        {
            if (Constants.ComposeExtensionFetch.Equals(turnContext.Activity.Name))
            {
                MessagingExtensionAction action = new MessagingExtensionAction();
                var actionJson = JsonConvert.DeserializeObject <MessagingExtensionActionDeserializer>(turnContext.Activity.Value.ToString());
                action.CommandId = actionJson.commandId;
                var task = await this.OnTeamsMessagingExtensionFetchTaskAsync(turnContext, action, cancellationToken);

                return(CreateInvokeResponse(task));
            }
            else if (Constants.ComposeExtensionSubmit.Equals(turnContext.Activity.Name))
            {
                MessagingExtensionAction action = new MessagingExtensionAction();
                var task = await this.OnTeamsMessagingExtensionSubmitActionAsync(turnContext, action, cancellationToken);

                return(CreateInvokeResponse(task));
            }
            else if (Constants.TaskModuleFetch.Equals(turnContext.Activity.Name))
            {
                var actionJson = JsonConvert.DeserializeObject <ActionBase>(turnContext.Activity.Value.ToString());
                var task       = await ReturnViewDetails(actionJson.data.reqId);

                return(CreateInvokeResponse(task));
            }
            else if (Constants.AdaptiveCardAction.Equals(turnContext.Activity.Name))
            {
                var    data     = JsonConvert.DeserializeObject <ActionType>(turnContext.Activity.Value.ToString());
                string channel  = turnContext.Activity.ChannelId;
                string verb     = data.action.verb;
                var    blobInfo = BlobHelper.GetBlob(data.action.data.reqId, verb).Result;
                string cardJsonString;

                if (Status.Refresh.Equals(verb) && Status.Pending.Equals(blobInfo.status))
                {
                    CardHelper.CreateAdaptiveCardAttachment(blobInfo.status, blobInfo, channel, out cardJsonString);
                    var cardResponse = JObject.Parse(cardJsonString);
                    var res          = new AdaptiveCardInvokeResponse()
                    {
                        StatusCode = 200,
                        Type       = AdaptiveCard.ContentType,
                        Value      = cardResponse
                    };
                    return(CreateInvokeResponse(res));
                }
                else
                {
                    var adaptiveCardAttachment = CardHelper.CreateAdaptiveCardAttachment(blobInfo.status, blobInfo, channel, out cardJsonString);
                    UpdateCardInTeams(blobInfo, adaptiveCardAttachment);
                    var cardResponse = JObject.Parse(cardJsonString);
                    var res          = new AdaptiveCardInvokeResponse()
                    {
                        StatusCode = 200,
                        Type       = AdaptiveCard.ContentType,
                        Value      = cardResponse
                    };
                    return(CreateInvokeResponse(res));
                }
            }
            return(null);
        }