private void createChatFile(IChatMessagesCollectionPage activity) { var fileName = Path.Combine(_env.ContentRootPath, $".\\wwwroot\\chat.txt"); FileInfo fi = new FileInfo(fileName); // Check if file already exists. if (fi.Exists) { if (!string.IsNullOrEmpty(System.IO.File.ReadAllText(fileName))) { System.IO.File.WriteAllText(fileName, string.Empty); } foreach (var chat in activity) { if (chat.MessageType.ToString() == "Message") { using (StreamWriter sw = new StreamWriter(fileName, append: true)) { sw.WriteLine("from: {0}", chat.From.User != null ? chat.From.User.DisplayName : "bot"); sw.WriteLine("text: {0}", chat.Body.Content.ToString()); sw.WriteLine("at: {0}", chat.LastModifiedDateTime); } } } } }
public void GetAllChatReferences() { IList <Chat> chatReferences; IList <ChatMessage> messageReference; IList <ConversationMember> memberReference; GraphServiceClient client = new GraphServiceClient(Authentication.GetCredentialProvider()); Task <IUserChatsCollectionPage> chatPage = client.Me.Chats.Request().GetAsync(); chatPage.Wait(); while (true) { IUserChatsCollectionPage chats = chatPage.Result; chatReferences = chats.CurrentPage; foreach (Chat chat in chatReferences) { Task <IChatMessagesCollectionPage> chatMessagePage = client.Chats[chat.Id].Messages.Request().GetAsync(); chatMessagePage.Wait(); List <MessageDetail> messageDetailList = new List <MessageDetail>(); while (true) { IChatMessagesCollectionPage messages = chatMessagePage.Result; messageReference = messages.CurrentPage; foreach (ChatMessage message in messageReference) { MessageDetail detail = new MessageDetail(); detail.Body = message.Body.Content; detail.From = message.From.User.DisplayName; messageDetailList.Add(detail); } if (messageReference.Count == 0) { break; } chatMessagePage = messages.NextPageRequest.GetAsync(); chatMessagePage.Wait(); } Task <IChatMembersCollectionPage> chatMemberPage = client.Chats[chat.Id].Members.Request().GetAsync(); chatMemberPage.Wait(); IChatMembersCollectionPage members = chatMemberPage.Result; memberReference = members.CurrentPage; List <string> memberList = GetMembers(memberReference); if (memberList.Count > 0 && messageDetailList.Count > 0) { Console.WriteLine("Chat between " + DisplayMembers(memberList)); foreach (MessageDetail detail in messageDetailList) { Console.WriteLine(detail.From + ": " + detail.Body); } } } if (chats.NextPageRequest == null) { break; } chatPage = chats.NextPageRequest.GetAsync(); chatPage.Wait(); } }
private List <MessageDetail> GetMessages(IChatMessagesCollectionPage messagePage) { List <MessageDetail> messageList = new List <MessageDetail>(); IList <ChatMessage> messageReferences; if (messagePage != null) { messageReferences = messagePage.CurrentPage; foreach (ChatMessage message in messageReferences) { MessageDetail detail = new MessageDetail(); detail.Body = message.Body.Content; detail.From = message.From.User.DisplayName; } } return(messageList); }
private async Task ProcessMessages(Credential creds, Guid sourceId, string topicId, IChatMessagesCollectionPage chatMessagesCollectionPage, string token) { foreach (var message in chatMessagesCollectionPage) { await Process(creds, sourceId, message.From.User); var received = Events.Message.From(message, sourceId, topicId); var existing = _store.GetMessage(sourceId, received.Id); if (existing == null) { _store.Add(sourceId, received); } await _events.Sync(creds, sourceId, received, existing, message.LastModifiedDateTime?.ToUnixTimeMilliseconds() ?? message.CreatedDateTime.Value.ToUnixTimeMilliseconds()); } }
private async Task ProcessMessages(TeamsBackfillCommand request, Credential credential, Chat chat, IChatMessagesCollectionPage messages) { foreach (var message in messages) { var images = new ImageProcessor().GetImages(message, Network.Teams); foreach (var image in images) { try { if (_store.GetImage(request.SourceId, image.FromEntityId, image.Url) == null) { try { await _rest.DownloadImage(credential, request.SourceId, image.Id, image.Url, request.Token, GetImageDirectory(request.SourceId), _tokenUrls); } catch (Exception e) { _logger.LogError(e.Message); var url = image.Url; var hostedContentIds = Regex.Matches(url, @"hostedContents\/(.+)\/\$value").GetGroupMatches(); if (hostedContentIds.Length == 1) { var hostedContent = hostedContentIds.First(); var id = ExtractUrlFromHostedContent(url, hostedContent); if (string.IsNullOrEmpty(id.Url)) { _logger.LogWarning($"hostedContents had no url: {Base64Decode(hostedContent)}"); } await _rest.DownloadImage(credential, request.SourceId, image.Id, id.Url, request.Token, GetImageDirectory(request.SourceId), _tokenUrls); } else { _logger.LogError("Unable to find hostedContent"); throw; } } image.Created = message.CreatedDateTime.Value; await _events.Add(credential, request.SourceId, image.FromEntityId, "ImageCreated", image.ToJson(), message.CreatedDateTime.Value.ToUnixTimeMilliseconds()); _store.Add(request.SourceId, image); ReplaceMessageContent(message, image); } else { ReplaceMessageContent(message, image); } } catch (Exception e) { _logger.LogError(e, "Could not download image"); } } } await _rest.SaveResponse(credential, request.SourceId, null, TeamsRequestTypes.ChatMessages, new TeamsMessageData { Id = chat.Id, Topic = chat.Topic }, messages.ToJson()); }