【问题标题】:Get recent conversation message from MS Graph API从 MS Graph API 获取最近的对话消息
【发布时间】:2020-12-14 01:07:06
【问题描述】:

我无法使用 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();

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

【问题讨论】:

    标签: c# microsoft-graph-api exchangewebservices


    【解决方案1】:

    您可以使用 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();
    

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多