如何让历史聊天消息中有呼叫或者挂断信息

在 Web Call 呼叫场景中,有如下呼叫流程

移动端有本地数据库,挂断后会向本地数据库插入一条通话结束的消息,同时移动端历史消息是从数据库中获取的,所以通话结束后,能从历史消息中查到通话记录。

Web 端没有本地存储,历史消息是从远端服务器获取,其中 InviteMessage、RingingMessage、AcceptMessage、HungupMessage 是状态消息,其中 isPersited 是 false,表示为不存储,所以获取历史消息时是不存在的,用户不能通过以上信息来通话记录的判定。

那么 Web 端该如何实现查看历史消息有标识这个通话记录呢?

实现方案

在触发 onSessionClose 监听时,根据 onSessionClose 回调返回的信息构建可存储的自定义消息并发送至相关会话中,并在
获取历史消息时,通过 senderUserId 过滤掉会话中非己方构建的自定义消息。

onSessionClose 回调数据结构如下:

export interface IEndSummary {
  /**
   * 通话类型
   */
  conversationType: ConversationType,
  /**
   * 多组织 ID
   */
  channelId: string,
  /**
   * 目标 ID
   */
  targetId: string,
  /**
   * 通话媒体类型
   */
  mediaType: RCCallMediaType,
  /**
   * 通话开始时间戳
   */
  beginTimestamp: number,
  /**
   * 通话结束时间戳
   */
  endTimestamp: number,
  /**
   * 通话时间
   */
  duration: number,
  /**
   * 通话结束原因
   */
  endReason: RCCallEndReason
}

发送自定义消息请参考:https://doc.rongcloud.cn/im/Web/5.X/noui/message/custom