从 MS Graph 获取最近的对话消息 API

Get recent conversation message from MS Graph API

我无法使用 MS 图表从电子邮件中获取对话节点 API。我需要最近的电子邮件记录。

我的应用程序使用 Microsoft.Exchange.WebServices 来接收电子邮件和对话,现在我正在将此应用程序升级到 MS Graph API。

旧代码:

EmailMessage email = EmailMessage.Bind(service, new ItemId(emailId));
ConversationResponse response = service.GetConversationItems(email.ConversationId,
                                              properties,
                                             null,
                                             null,
                                             ConversationSortOrder.TreeOrderAscending); 
foreach (ConversationNode objC in response.ConversationNodes)
 {
       foreach (Item objItem in objC.Items)
       {
            objItem.Load(new PropertySet(EmailMessageSchema.UniqueBody, ItemSchema.Attachments,
                                                    EmailMessageSchema.Sender,
                                                   EmailMessageSchema.Subject));
       }
 }

图 API:

Message message = await _client.Users[_config.UserName].Messages[emailId]
                      .Request()
                      .GetAsync();

我没有找到任何 属性 或方法来获取消息中的对话节点。

您可以使用 ConversationId 和过滤器来获取对话中的所有消息,例如

var ConversationMessages = await GraphServiceClient.Users[UserId].Messages.Request().Filter("conversationid eq '" + Message.ConversationId + "'").GetAsync();

如果您希望在最后收到的订单中返回消息,您还需要在过滤器中包含 receivedDateTime,然后您可以按该顺序进行排序(不会出错)例如

var ConversationMessages2 = await GraphServiceClient.Users[UserId].Messages.Request().Filter("(receivedDateTime gt 2020-08-20) and (conversationid eq '" + Message.ConversationId + "')").OrderBy("receivedDateTime desc").GetAsync();