# 第三方管理
本文将介绍通话过程中第三方管理的功能,访客无邀请和转接的接口,但是能收到第三方加入离开的事件。
# 1. 邀请第三方访客
- 通话过程中座席调用 inviteThirdGuest (opens new window) 接口邀请其他访客进入通话:
- 邀请结果通过实现 JRTCAgentCallback (opens new window) 的 onInviteThirdGuestResult (opens new window) 接口获取;
- 如果邀请成功其他访客会收到来电类型为 CALL_INCOMING_TYPE_INVITE (opens new window) 的来电通知。
示例代码:
//邀请第三方访客
agent.inviteThirdGuest("guest2","extraInfo");
//邀请第三方访客结果通知
public void onInviteThirdGuestResult(boolean result, String userId, String error) {
if(result) {
//邀请成功
} else {
//邀请失败
}
}
//第三方访客
public void onCallStateChanged(@JRTCGuest.GuestCallStateChangeType int type, @JRTCAgent.CallIncomingType int incomingType, JRTCInviter inviter, @JRTCAgent.CallTermReason int reason) {
if (type == GUEST_CHANGE_TYPE_INCOMING) {
if (incomingType == CALL_INCOMING_TYPE_INVITE) {
//三方邀请来电
//三方访客接听
guest.answer();
//三方访客拒接
guest.term();
}
}
}
# 2. 第三方成员离开或加入
新成员加入通话或成员离开通话,会通过 JRTCGuestCallback (opens new window) 中的 onMemberJoin (opens new window) 和 onMemberLeave (opens new window) 接口上报。
/**
* 通话中有新成员加入回调
* <p>
* 当第三方成员加入时,已在通话中的所有成员会收到此回调,而新加入的成员不会收到此回调。
*
* @param participant 新加入的成员对象
*/
void onMemberJoin(JRTCRoomParticipant participant);
/**
* 通话中有成员离开回调
* <p>
* 通话中有成员离开通话时,剩余的成员会收到此回调,而离开的成员不会收到此回调。
*
* @param participant 离开的成员对象
*/
void onMemberLeave(JRTCRoomParticipant participant);
示例代码:
// 通话中有新成员加入
void onMemberJoin(JRTCRoomParticipant participant) {
// 请求成员视频流大小
guest.requestVideo(participant, videoSize);
// 渲染成员视图画面
mediaDevice.startVideo(participant.streamId, JRTCMediaDevice.RENDER_FULL_SCREEN);
// ...
}
// 通话中有成员离开
void onMemberLeave(JRTCRoomParticipant participant) {
// 停止成员画面渲染
if (TextUtils.equals(participant.getStreamId, canvas.getStreamId())) {
mediaDevice.stopVideo(canvas);
}
}