一对一通话
本页介绍了一对一呼叫的主要功能,包括如何从您的应用程序拨打、接听、处理和结束呼叫。
关键类介绍
RCCallPlusClient
RCCallPlusClient: CallPlus for Web 的核心类,用于管理客户端呼叫行为,例如发起、接听、挂断通话,操作音视频设备,管理通话记录等 。
方法 | 说明 |
---|---|
setCallPlusEventListener | 注册应用层事件,包含“收到呼叫、通话结束、通话人员状态变更、通话类型变更”等事件 |
setStatusReportListener | 注册音视频上下行丢包数据监听 |
setVideoView | 设置要观看人员(包括自己和对方)的媒体播放器 |
removeVideoView | 删除指定单个用户的媒体播放器,不观看指定单个用户的视频时,业务层可以直接移除其媒体播放器 |
playMedia | 播放指定人员的音视频媒体,播放指定单个用户的视频前,请确保已经调用 setVideoView 方法为其设置视频视图 |
createVideoConfigBuilder | 创建视频配置构建器 |
setVideoConfig | 设置视频配置 |
createAudioConfigBuilder | 创建音频配置构建器 |
setAudioConfig | 设置音频配置 |
startCall | 发起呼叫 |
joinMultiCall | 直接加入进行中的群组通话 |
invite | 通话中邀请他人 |
accept | 接听通话 |
hangup | 挂断通话 |
requestChangeMediaType | 通话中发起媒体类型变更请求 |
cancelChangeMediaType | 取消切换媒体类型变更请求 |
replyChangeMediaType | 媒体类型变更应答 |
getCurrentCallSession | 获取当前进行中的通话 |
getAvailableCallRecordsFromServer | 从服务器获取未结束的通话记录 |
getRemoteTracks | 获取远端资源列表 |
getCallRecords | 分页查找当前用户的全部通话记录 |
deleteCallRecordsFromServer | 根据 callId 集合批量删除通话记录 |
deleteAllCallRecordsFromServer | 清空所有通话记录 |
startCamera | 开启摄像头 |
stopCamera | 关闭摄像头 |
switchCamera | 切换摄像头 |
startMicrophone | 开启麦克风 |
stopMicrophone | 关闭麦克风 |
isMicrophoneEnable | 麦克风是否开启 |
muteAllRemoteAudio | 静音所有远端音频流 |
getVersion | 获取 SDK 版本信息 |
RCCallPlusSession
RCCallPlusSession 对象代表一则通话的所有信息,包含获取通话实体信息的方法集合。
方法 | 说明 |
---|---|
getCallId() | 获取通话 ID。 |
getState() | 获取通话实体的状态 RCCallPlusCallState。 |
getCallType() | 获取通话类型 RCCallPlusType。 |
getMediaType() | 获取通话媒体类型 RCCallPlusMediaType。 |
getUserList() | 获取一组用户信息对象,每个对象中包含通话人员用户 ID 与用户状态 RCCallPlusSessionUserState。 |
getCreatorUserId() | 获取通话发起者 userId |
getInviterUserId() | 获取通话邀请者 userId |
getCreateTimestamp() | 获取通话起始时间 |
getDuration() | 获取通话时长 |
ICallPlusEventListener
ICallPlusEventListener 监听器提供来电事件、通话状态、通话记录等事件相关回调。
方法 | 说明 |
---|---|
onReceivedCall | 本地用户收到来电通知。 |
onRemoteUserInvited | 本地用户收到收到远端人员被邀请加入通话通知,如 A 与 B 通话中,A 邀请 C,则 B 会收到此回调。inviteeUserList 表示受邀人用户 ID 列表。inviterUserId 表示邀请者用户 ID。callId 表示所属通话;群聊中,己方已不在通话中的情况下,也会收到服务侧的事件通知 |
onCallConnected | 通话已建立,sdk 内部会发布音视频资源 |
onCallTypeChanged | 本地用户收到通话类型变更通知。 |
onRemoteUserStateChanged | 本地用户收到人员状态变更通知。 |
onCallEnded | 本地用户收到通话结束(群组通话时,客户端挂断不代表通话结束) |
onRemoteCameraStateChanged | 本地用户收到远端摄像头开、关通知 |
onRemoteMicrophoneStateChanged | 本地用户收到远端麦克 风开、关通知 |
onReceivedCallLog | 本地用户单呼或群呼结束后,收到服务器下发的通话日志 |
onReceivedChangeMediaTypeRequest | 本地用户收到媒体类型变更请求(仅单聊) |
onReceivedChangeMediaTypeResult | 本地用户收到媒体类型变更结果(仅单聊) |
onReceivedCallStartTime | 本地用户收到收到通话开始计时通知 |
onReceivedCallFirstFrameTime | 本地用户收到收到通话首帧到达通知 |
onUserMediaAvailable | 本地用户收到指定单个用户的音频或视频可播放 |
onFetchRemoteMediaError | 收到获取本人或远端媒体资源失败 |
onUserAudioLevelChanged | 本地用户收到人员音量变化 |
呼叫流程
CallPlus SDK 中的一对一通话是指两人之间通话。一对一呼叫通过以下步骤建立:
- 主叫方发起呼叫,SDK 内部为主叫用户创建在音视频资源,以在通话中使用。被叫方会收到 onReceivedCall 通知。
- 当被叫方选择接听通话后,SDK 内部会为被叫用户创建音视频资源,以在通话中使用。
- 接听成功后,主叫方和被叫方的音视频资源将会被推送至融云媒体服务器。
- 融云信令服务器通知主叫方和被叫方可查看对方的音视频媒体资源。
- 主叫方和被叫方可以调 setVideoView 指定要观看的用户视频画面,SDK 内部会自动获取音频资源。
- 主叫方和被叫方可在 ICallPlusEventListener 监听器的 onUserMediaAvailable 事件中调 playMedia(useId,mediaType) 播放指定用户的音视频资源。注意:请务必根据用户 ID 和媒体类型进行判断,如果是本地用户采集的音频流,请不要在本端播放,避免造成回声或啸叫问题。
对于主叫用户来说, 调用 startCall 方法后,将返回一个解析为 { code: RCCallPlusCode, callId?: string }
的 promise。对于被叫用户来说,将通过 ICallPlusEventListener
监听器的 onReceivedCall
方法收到 RCCallPlusSession 通话对象。对于主叫用户和被叫用户来说,都可以调用通话客户端 RCallPlusClient
对象的 getCurrentCallSession 方法获取当前进行中的通话对象。