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); } }
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, }, }); }
public async Task SendConversation(IConfiguration configuration) { Microsoft.Bot.Schema.Attachment card = CardHelper.CreateAdaptiveCardAttachment(Constants.UserCard, configuration); await Common.SendChannelData(card, configuration); }
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)); }
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); }