未读消息推送如何实现?

borened 1月前 154

需求场景

用户IM收到消息后,5分钟后仍然未读,推送微信服务通知。

现状

消息推送肯定要在服务端做,目前ServerSDK缺少获取用户未读消息相关的SDK,IM-Server也没有超时未读消息的回调勾子。无法实现该功能,是否可以提供一个思路。

最新回复 (9)
  • HeavyRain 1月前
    引用 2
    是所有的消息超过5分钟未读就推送,还是某些服务发送的重要通知才这样?
  • borened 1月前
    引用 3
    HeavyRain 是所有的消息超过5分钟未读就推送,还是某些服务发送的重要通知才这样?
    要筛选某些特定身份的用户。只要这些用户收到单聊或群聊消息,超过5分钟仍然未读,就需要通过其他方式推送通知(微信)。
  • borened 1月前
    引用 4
    推送时需要具体到消息,目前没有手段能获取到未读消息
  • HeavyRain 1月前
    引用 5
    大概分成2步:
    1,确认对那条消息做这个处理,如果是业务服务发送的那就可以在业务服务记录,如果是客户端发送的,需要开启IM服务的消息转发业务,过滤需要处理的消息。
    2,拿到消息后启动5分钟的计时,5分钟后检查这条消息有没有读。IM有个会话阅读同步功能,会把每个会话最后阅读时间同步到IM服务器,存放在t_user_setting表中,这个表中userId是用户id,最后阅读时间的scope是7,value是会话信息拼接出来的,value就是最后阅读时间
  • borened 1月前
    引用 6
    第二步怎么关联上?t_user_setting表绑定的是用户和会话的关系,现在是需要获取到指定消息的阅读时间,或者说已读状态。怎么计算。
  • HeavyRain 1月前
    引用 7
    如果会话的阅读时间大于等于消息的阅读时间,那么就是已读的,否则就是未读的
  • borened 1月前
    引用 8
    好的大概清楚了,多谢。
  • borened 1月前
    引用 9
    HeavyRain 大概分成2步: 1,确认对那条消息做这个处理,如果是业务服务发送的那就可以在业务服务记录,如果是客户端发送的,需要开启IM服务的消息转发业务,过滤需要处理的消息。 2,拿到消息后启动5分钟的计时, ...
    第二步获取会话最后阅读时间的,可以用getConversationReadTimestamp这个sdk吗。我试了一下,返回值是0,不是数据库中的时间
  • HeavyRain 1月前
    引用 10
    不是这个,需要查询调用获取用户设置的接口
返回