# 第三方管理
本文将介绍通话过程中第三方管理的功能,访客无邀请和转接的接口,但是能收到第三方加入离开的事件。
# 1. 第三方成员离开或加入
新成员加入通话或成员离开通话,会通过 JRTCGuestCallback (opens new window) 中的 onMemberJoin (opens new window) 和 onMemberLeave (opens new window) 接口上报。
/**
* 通话中有新成员加入回调
*
* 当第三方成员加入时,已在通话中的所有成员会收到此回调,而新加入的成员不会收到此回调。
* @param part 新加入的成员对象
*/
void onMemberJoin(JRTCRoomParticipant part);
/**
* 通话中有成员离开回调
*
* 通话中有成员离开通话时,剩余的成员会收到此回调,而离开的成员不会收到此回调。
* @param part 离开的成员对象
*/
void onMemberLeave(JRTCRoomParticipant part);
示例代码:
// 通话中有新成员加入
void onMemberJoin(JRTCRoomParticipant part) {
// 请求成员视频流大小
guest.requestVideo(part, videoSize);
// 渲染成员视图画面
mediaDevice.startVideo(part.streamId, JRTCMediaDevice.RENDER_FULL_SCREEN);
// ...
}
// 通话中有成员离开
void onMemberLeave(JRTCRoomParticipant part) {
// 停止成员画面渲染
if (TextUtils.equals(part.getStreamId, canvas.getStreamId())) {
mediaDevice.stopVideo(canvas);
}
}
# 2. 邀请第三方访客
座席端调用接口邀请第三方访客,作为第三方加入可以收到 onCallStateChanged (opens new window) 来电通知并进行回应;
访客端收到该回调后,可以调用 JRTCGuest.term (opens new window) 拒接或调用 JRTCGuest.answer (opens new window) 接听。
示例代码:
public void onCallStateChanged(@GuestCallStateChangeType int type, @CallIncomingType int incomingType, JRTCInviter inviter, @CallTermReason int reason) {
switch (type) {
case GUEST_CHANGE_TYPE_CALLING:
//发起成功
break;
case GUEST_CHANGE_TYPE_WAITING:
//发起方等待接听
break;
case GUEST_CHANGE_TYPE_TALKING:
//通话建立
break;
case GUEST_CHANGE_TYPE_TERMED:
//通话挂断
break;
case GUEST_CHANGE_TYPE_INCOMING:
//来电
switch (incomingType) {
case CALL_INCOMING_TYPE_CALL:
//
break;
case CALL_INCOMING_TYPE_INVITE:
//拒绝邀请
guest.term();
//接受邀请
guest.answer();
break;
case CALL_INCOMING_TYPE_DIRECT_CALL:
//
break;
case CALL_INCOMING_TYPE_FORWARD:
//
break;
}
break;
}
}