public async Task <IActionResult> Data([FromBody] MessageList notifyMessages) { var i = 0; if (notifyMessages.MessageType == "2") { foreach (var conversationReference in _conversationReferences.Values) { await((BotAdapter)_adapter).ContinueConversationAsync(_appId, conversationReference, async(ITurnContext turnContext, CancellationToken cancellationToken) => { IEnumerable <TeamsChannelAccount> members = TeamsInfo.GetMembersAsync(turnContext, cancellationToken).Result; foreach (var member in members) { foreach (var notifyMessage in notifyMessages.messages) { if (notifyMessage.AssignedTo == member.UserPrincipalName) { i++; SecondMessageType message = new SecondMessageType(); message.AssignedTo = notifyMessage.AssignedTo; message.MessageType = notifyMessage.MessageType; message.InProgressTasks = notifyMessage.InProgressTasks; message.Link = notifyMessage.Link; message.TerminateTasks = notifyMessage.TerminateTasks; message.NewTasks = notifyMessage.NewTasks; var cardAttachment = AdaptiveCardFactory.CreateAdaptiveCardSecondTypeAttachment(member.Name, message); await turnContext.SendActivityAsync(MessageFactory.Attachment(cardAttachment), cancellationToken); } } } }, default(CancellationToken)); } } return(new ContentResult() { Content = "<html><body><h1>Proactive messages have been sent:" + i + "users" + "</h1></body></html>", ContentType = "text/html", StatusCode = (int)HttpStatusCode.OK, }); }
public static Attachment CreateAdaptiveCardSecondTypeAttachment(string displayName, SecondMessageType message) { AdaptiveCard card = new AdaptiveCard(new AdaptiveSchemaVersion(1, 0)); card.Body.Add(new AdaptiveTextBlock() { Text = $"**{displayName}**, статус задач у Вашому власному кабінеті LSDOCS :", Size = AdaptiveTextSize.Medium, Wrap = true }); card.Body.Add(new AdaptiveTextBlock() { Text = $"* Нових задач: {message.NewTasks} \n\n" + $"*Задач в роботі: {message.InProgressTasks} \n\n" + $"* Протермінованих задач: {message.NewTasks}\n\n", Size = AdaptiveTextSize.Medium, Wrap = true }); card.Body.Add(new AdaptiveTextBlock() { Text = $"[Перейти до власного кабінету]({message.Link})\n", Size = AdaptiveTextSize.Medium, Wrap = true }); var adaptiveCardAttachment = new Attachment() { ContentType = "application/vnd.microsoft.card.adaptive", Content = card, }; return(adaptiveCardAttachment); }
public async Task <IActionResult> Post(string userid, [FromBody] NotifyMessage notifyMessage) { var sb = new StringBuilder(); bool flag = false; if (!string.IsNullOrEmpty(userid)) { foreach (var conversationReference in _conversationReferences.Values) { await((BotAdapter)_adapter).ContinueConversationAsync(_appId, conversationReference, async(ITurnContext turnContext, CancellationToken cancellationToken) => { IEnumerable <TeamsChannelAccount> members = TeamsInfo.GetMembersAsync(turnContext, cancellationToken).Result; //var connector = new ConnectorClient(new Uri(turnContext.Activity.ServiceUrl)); // members = connector.Conversations.GetConversationMembersAsync(conversationReference.Conversation.Id).Result; //// Concatenate information about all the members into a string foreach (var member in members) { sb.AppendLine($"GivenName = {member.Name}, Email = {member.Email}, User Principal Name {member.UserPrincipalName}, TeamsMemberId = {member.Id}, members = {members.ToList().Count},{_conversationReferences.Values.Count}"); if (userid == member.UserPrincipalName) { switch (notifyMessage.MessageType) { case "1": case "3": { flag = true; ThirdMessageType message = new ThirdMessageType(); message.AssignedTo = notifyMessage.AssignedTo; message.MessageType = notifyMessage.MessageType; message.IDCard = notifyMessage.IDCard; message.IDTask = notifyMessage.IDTask; message.LibDispName = notifyMessage.LibDispName; message.TitleTask = notifyMessage.TitleTask; message.Link = notifyMessage.Link; message.TaskType = notifyMessage.TaskType; if (message.TaskType == "LSTaskAppruve" || message.TaskType == "LSTaskExecute") { var cardAttachment = AdaptiveCardFactory.CreateAdaptiveCardForSubmitAttachment(message); var req = await turnContext.SendActivityAsync(MessageFactory.Attachment(cardAttachment), cancellationToken); message.Key = req.Id; var cardWithId = AdaptiveCardFactory.CreateAdaptiveCardForSubmitAttachment(message); var requestWithId = MessageFactory.Attachment(cardWithId); requestWithId.Id = req.Id; await turnContext.UpdateActivityAsync(requestWithId, cancellationToken); } else { var cardAttachment = AdaptiveCardFactory.CreateAdaptiveCardThirdTypeAttachment(message);; if (message.MessageType == "3") { cardAttachment = AdaptiveCardFactory.CreateAdaptiveCardThirdTypeAttachment(message); } else { cardAttachment = AdaptiveCardFactory.CreateAdaptiveCardFirstTypeAttachment(message); } await turnContext.SendActivityAsync(MessageFactory.Attachment(cardAttachment), cancellationToken); } break; } case "2": { flag = true; SecondMessageType message = new SecondMessageType(); message.AssignedTo = notifyMessage.AssignedTo; message.MessageType = notifyMessage.MessageType; message.InProgressTasks = notifyMessage.InProgressTasks; message.Link = notifyMessage.Link; message.TerminateTasks = notifyMessage.TerminateTasks; message.NewTasks = notifyMessage.NewTasks; var cardAttachment = AdaptiveCardFactory.CreateAdaptiveCardSecondTypeAttachment(member.Name, message); await turnContext.SendActivityAsync(MessageFactory.Attachment(cardAttachment), cancellationToken); break; } } } } }, default(CancellationToken)); } } else { foreach (var conversationReference in _conversationReferences.Values) { await((BotAdapter)_adapter).ContinueConversationAsync(_appId, conversationReference, (ITurnContext turnContext, CancellationToken cancellationToken) => turnContext.SendActivityAsync("withoutUser"), default(CancellationToken)); } } // Let the caller know proactive messages have been sent return(new ContentResult() { Content = "<html><body><h1>Proactive messages have been sent:" + userid + "status = " + flag + "data = " + sb.ToString() + "</h1></body></html>", ContentType = "text/html", StatusCode = (int)HttpStatusCode.OK, }); }