在 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