microsoft-graph-api - 从 MS Graph API 获取新的聊天消息
问题描述
我正在尝试为团队实现基于浏览器的聊天客户端,但我正在为消息的“已读”状态而苦苦挣扎。api中似乎没有任何内容表明是否在团队中看到了一条消息,所以我采取的方法是,一旦用户查看对话,它就会被标记为“已读”(在我的应用程序中 - - 我无法通过 api 更新消息上的标志以使其永久化,因为我找不到要更新的相关标志)。
我正在使用此调用从图形 api (REST) 读取聊天消息:
fetchData(v1Api, `me/chats/${chatId}/messages`).then(res => {...})
哪里fetchData
有封装了很多我需要调用api的常用代码的方法。我不得不假设在第一次请求时,用户之前已经看到了所有消息。
因为我在浏览器中,我无法订阅聊天通知,而我获得新消息的唯一方法是轮询,所以我将 fetchData 包装在一个计时器中,并定期检查新消息(大约每 3 秒)。
我真的很想只加载自上次检查以来已发布的消息,以帮助确定自上次阅读以来是否有任何新内容,以便我可以向用户表明对话发生了一些变化,而不是当前处于活动状态的那个。
有谁知道是否有任何方法可以做到这一点?我给每个请求的结果加上时间戳,所以最好的解决方案是一个 api 查询,它允许我过滤掉那个时间戳之前的消息。当然,如果用户刷新页面,我会丢失以前查看的所有记录,并重新开始,必须假设所有内容都已被查看过。
或者,如果有人知道如何查找和更新聊天消息的“已读”状态,那就太好了。
解决方案
推荐阅读
- video - ffmepg 视频编码出现“无效平面数据大小”错误
- spring - 在 Wildfly 14 上部署我的应用程序时使用名称创建 bean Spring 时出错
- json - json-ld 上下文中的@id 和@type 是什么意思?
- opencv - 在“__init__.py”中找不到引用“ximgproc”
- python - 类方法的处理函数中的字典映射
- mysql - Sql like 表达式结果太新列
- c# - 如何从字典中的不同键获取相同的值?
- c++ - Unicode 转换为符号 C++
- html - 如何使 SVG 宽度响应但保持 SVG 高度不变?
- ios - AVAudioSession 与 WKWebview 混合