如何解决从MS Graph API获取最近的对话消息
我无法使用MS graph API从电子邮件中获取会话节点。我需要最近发送的电子邮件线索。
我的应用程序使用Microsoft.Exchange.WebServices来获取电子邮件和对话,现在我将该应用程序升级到MS Graph API。
旧代码:
EmailMessage email = EmailMessage.Bind(service,new ItemId(emailId));
ConversationResponse response = service.GetConversationItems(email.ConversationId,properties,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();
如果您希望按“上次接收的顺序”返回消息,则还需要在Filter中包括“ receivedDateTime”,然后可以以此顺序进行排序(没有错误),例如
var ConversationMessages2 = await GraphServiceClient.Users[UserId].Messages.Request().Filter("(receivedDateTime gt 2020-08-20) and (conversationid eq '" + Message.ConversationId + "')").OrderBy("receivedDateTime desc").GetAsync();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。