
基础产品
适用各种通信场景,接入灵活

融合场景
专为场景打造,接入成本低

扩展能力
核心能力延展,功能全面

更多服务
一站式服务,满足各种需求
回答:
在 Web Call 呼叫场景中,有如下呼叫流程
移动端有本地数据库,挂断后会向本地数据库插入一条通话结束的消息,同时移动端历史消息是从数据库中获取的,所以通话结束后,能从历史消息中查到通话记录
Web 端没有本地存储,历史消息是从远端服务器获取,其中 InviteMessage、RingingMessage、AcceptMessage、HungupMessage 是状态消息,其中 isPersited 是 false,表示为不存储,所以获取历史消息时是不存在的,用户不能通过以上信息来通话记录的判定
那么 Web 端该如何实现查看历史消息有标识这个通话记录呢?
实现方案:用户可以自己发送一条自定义存储类型的消息来标识这次通话记录,由于是存储的,所以可以通过获取历史消息 api 拿到该消息
发送自定义消息请参考:https://doc.rongcloud.cn/im/Web/4.X/guide/private/msgmanage/msgsend/web#createcustom
发送时机由应用层来决定,下面举例一个实现思路:
1、可以在触发 onSessionClose 监听时发送自定义消息,onSessionClose 函数会返回 summaryInfo 的结束信息,具体格式如下图:
export interface IEndSummary { /** * 通话类型 */ conversationType: ConversationType, /** * 多组织 ID */ channelId: string, /** * 目标 ID */ targetId: string, /** * 通话媒体类型 */ mediaType: RCCallMediaType, /** * 通话开始时间戳 */ beginTimestamp: number, /** * 通话结束时间戳 */ endTimestamp: number, /** * 通话时间 */ duration: number, /** * 通话结束原因 */ endReason: RCCallEndReason }
2、在历史消息展示时,可以根据 sendUserId 来过滤展示自己的通话信息记录