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 async Task Process(Credential creds, Guid sourceId, IUserChatsCollectionPage userChatsCollectionPage) { foreach (var chat in userChatsCollectionPage) { var received = Events.Topic.From(chat); var existing = _store.GetTopic(sourceId, received.Id); if (existing == null) { _store.Add(sourceId, received); } await _events.Sync(creds, sourceId, received, existing, received.LastUpdated.ToUnixTimeMilliseconds()); } }