# 第三方管理
本文将介绍通话过程中第三方管理的功能::座席可以邀请另外的座席或者访客加入通话,以及收到所有参会成员的加入,离开事件。
# 1. 邀请第三方座席加入
- 通话过程中座席调用 inviteThirdAgent (opens new window) 接口邀请其他座席进入通话:
- 邀请结果通过实现 JRTCAgentCallback (opens new window) 的 onInviteThirdAgentResult (opens new window) 接口获取;
- 如果邀请成功其他座席会收到来电类型为 CALL_INCOMING_TYPE_INVITE (opens new window) 的来电通知。
/**
* 邀请第三方座席加入
*
* 被邀请的第三方座席会收到 {@link JRTCAgentCallback#onCallStateChanged onCallStateChanged} 来电邀请回调 <br>
* 第三方座席接听通话后,已在通话中的成员会收到 {@link JRTCAgentCallback#onMemberJoin onMemberJoin} 或 {@link JRTCGuestCallback#onMemberJoin onMemberJoin} 成员加入回调
* @param userId 要邀请的座席用户ID
* @return 接口调用结果
* - true: 接口调用成功,邀请结果通过 {@link JRTCAgentCallback#onInviteThirdAgentResult onInviteThirdAgentResult} 回调上报
* - false: 接口调用异常
*/
public abstract boolean inviteThirdAgent(String userId);
/**
* 邀请第三方座席结果回调
*
* @param result 邀请第三方座席结果
* - true: 邀请成功
* - false: 邀请失败
* @param error 邀请第三方座席失败原因
*/
void onInviteThirdAgentResult(boolean result, String error);
示例代码:
//邀请agent2坐席
agent.inviteThirdAgent("agent2");
//邀请坐席结果通知
public void onInviteThirdAgentResult(boolean result, String error) {
if(result) {
//邀请成功
} else {
//邀请失败
}
}
//第三方座席
public void onCallStateChanged(@JRTCAgent.AgentCallStateChangeType int type, @JRTCAgent.CallIncomingType int incomingType, JRTCInviter inviter, @JRTCAgent.CallTermReason int reason) {
if (type == AGENT_CHANGE_TYPE_INCOMING) {
if (incomingType == CALL_INCOMING_TYPE_INVITE) {
//三方邀请来电
//三方座席接听
agent.answer();
//三方座席拒接
agent.term();
}
}
}
# 2. 邀请第三方访客
- 通话过程中座席调用 inviteThirdGuest (opens new window) 接口邀请其他访客进入通话:
- 邀请结果通过实现 JRTCAgentCallback (opens new window) 的 onInviteThirdGuestResult (opens new window) 接口获取;
- 如果邀请成功其他访客会收到来电类型为 CALL_INCOMING_TYPE_INVITE (opens new window) 的来电通知。
/**
* 邀请第三方访客加入
*
* 被邀请的第三方座席会收到 {@link JRTCAgentCallback#onCallStateChanged onCallStateChanged} 来电邀请回调 <br>
* 第三方访客接听通话后,已在通话中的成员会收到 {@link JRTCAgentCallback#onMemberJoin onMemberJoin} 或 {@link JRTCGuestCallback#onMemberJoin onMemberJoin} 成员加入回调
* @param userId 要邀请的第三方访客用户ID
* @param extraInfo 邀请携带的额外信息
* @return 接口调用结果
* - true: 接口调用成功,结果通过 {@link JRTCAgentCallback#onInviteThirdGuestResult onInviteThirdGuestResult} 回调上报
* - false: 接口调用异常
*/
public abstract boolean inviteThirdGuest(String userId, String extraInfo);
/**
* 邀请第三方访客结果回调
*
* @param result 邀请第三方访客结果
* - true: 邀请成功
* - false: 邀请失败
* @param userId 访客用户ID
* @param error 邀请第三方访客失败原因,仅在失败时生效
*/
void onInviteThirdGuestResult(boolean result, String userId, String error);
示例代码:
//邀请第三方访客
agent.inviteThirdGuest("userId","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();
}
}
}
# 3. 三方成员离开或加入
新成员加入通话或成员离开通话,会通过 JRTCAgentCallback (opens new window) 中的 onMemberJoin (opens new window) 和 onMemberLeave (opens new window) 接口上报
/**
* 通话中有新成员加入回调
*
* 当第三方成员加入时,已在通话中的所有成员会收到此回调,而新加入的成员不会收到此回调。
* @param part 新加入的成员对象
*/
void onMemberJoin(JRTCRoomParticipant part);
/**
* 通话中有成员离开回调
*
* 通话中有成员离开通话时,剩余的成员会收到此回调,而离开的成员不会收到此回调。
* @param part 离开的成员对象
*/
void onMemberLeave(JRTCRoomParticipant part);
示例代码:
//邀请第三方访客
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();
}
}
}