首页 > 解决方案 > 从 MS Graph API 获取新的聊天消息

问题描述

我正在尝试为团队实现基于浏览器的聊天客户端,但我正在为消息的“已读”状态而苦苦挣扎。api中似乎没有任何内容表明是否在团队中看到了一条消息,所以我采取的方法是,一旦用户查看对话,它就会被标记为“已读”(在我的应用程序中 - - 我无法通过 api 更新消息上的标志以使其永久化,因为我找不到要更新的相关标志)。

我正在使用此调用从图形 api (REST) 读取聊天消息:

fetchData(v1Api, `me/chats/${chatId}/messages`).then(res => {...})

哪里fetchData有封装了很多我需要调用api的常用代码的方法。我不得不假设在第一次请求时,用户之前已经看到了所有消息。

因为我在浏览器中,我无法订阅聊天通知,而我获得新消息的唯一方法是轮询,所以我将 fetchData 包装在一个计时器中,并定期检查新消息(大约每 3 秒)。

我真的很想只加载自上次检查以来已发布的消息,以帮助确定自上次阅读以来是否有任何新内容,以便我可以向用户表明对话发生了一些变化,而不是当前处于活动状态的那个。

有谁知道是否有任何方法可以做到这一点?我给每个请求的结果加上时间戳,所以最好的解决方案是一个 api 查询,它允许我过滤掉那个时间戳之前的消息。当然,如果用户刷新页面,我会丢失以前查看的所有记录,并重新开始,必须假设所有内容都已被查看过。

或者,如果有人知道如何查找和更新聊天消息的“已读”状态,那就太好了。

标签: microsoft-graph-apichatmicrosoft-graph-teams

解决方案


推荐阅读