呼叫
功能介绍
实现两个用户之间的呼叫功能,流程是:A 用户先创建一个房间,然后呼叫 B 用户,若 B 用户接受呼叫,AB 进入房间进行通讯。多方通话请使用 邀请 功能。
使用场景:
- 点对点外呼:双方均未在房间,主叫创建房间后呼叫对方,对方接听后共同入会。
- 排队系统:客户排队后由系统分配给坐席,坐席创建房间并呼叫客户进入房间,队列相关流程参见 排队。
使用注意点:
- 接受呼叫后,call session 会一直保持,直到任一方调用 CRVideo_HangupCall 挂断。这与邀请不同:邀请在被接受或拒绝后即结束,不维持 invite session。
- 呼叫发起后直至取消或挂断,双方处于忙状态,无法作为被叫(主叫可能收到对方忙等错误)。
- 队列中的出队、通话中等状态依赖呼叫接口,须与呼叫配合使用,不能使用邀请相关接口。
注意:
在登录成功后才可以使用呼叫功能
主叫
1.创建房间
- 调用接口:
//创建房间
CRVideo_CreateMeeting2("");
- 回调通知:
//创建房间成功
CRVideo_CreateMeetingSuccess.callback = function(meetObj, cookie){
//创建成功,获取房间信息 meetObj,用于呼叫他人
}
//创建房间失败
CRVideo_CreateMeetingFail.callback = function(sdkErr, cookie){
//创建失败,可以弹出错误提示
}
相关API请参考:
2.发起呼叫
注意:
当用户 A 呼叫用户 B 时,只有 B 已成功登录,才可以收到被呼叫通知。
- 调用接口:
// A 呼叫用户 B 进入房间,meetObj 为创建房间成功回调中的房间信息
CRVideo_Call(calledUID, meetObj, userExtDat, cookie);
- 回调通知:
//呼叫操作成功响应
CRVideo_CallSuccess.callback = function(callID, cookie){
}
//呼叫操作失败响应
CRVideo_CallFail.callback = function(callID, sdkErr, cookie){
// sdkErr 为失败原因
}
- 呼叫 SIP/H.323 设备
请参考 SIP/H.323设备支持 呼叫部分。
呼叫他人相关API请参考:
3.呼叫被接受/拒绝
- 回调通知:
//通知呼叫被接受
CRVideo_NotifyCallAccepted.callback = function(callID, meetObj, userExtDat){
//呼叫被接受,主叫可进入房间;call session 持续存在,直至 HangupCall
CRVideo_EnterMeeting3(meetObj.ID, cookie);
}
//通知呼叫被拒绝
CRVideo_NotifyCallRejected.callback = function(callID, sdkErr, userExtDat){
// sdkErr 为拒绝原因
}
相关API请参考:
4.挂断
- 调用接口:
//挂断呼叫
CRVideo_HangupCall(callID, userExtDat, cookie);
- 回调通知:
//挂断呼叫成功
CRVideo_HangupCallSuccess.callback = function(callID, cookie){
CRVideo_ExitMeeting(); //退出房间
}
//挂断呼叫失败
CRVideo_HangupCallFail.callback = function(callID, sdkErr, cookie){
}
//通知被他人挂断
CRVideo_NotifyCallHangup.callback = function(callID, userExtDat){
CRVideo_ExitMeeting(); //退出房间
}
相关API请参考:
- CRVideo_HangupCall
- CRVideo_HangupCallSuccess
- CRVideo_HangupCallFail
- CRVideo_NotifyCallHangup
- CRVideo_ExitMeeting
被叫
1.被呼叫
- 回调通知:
//通知有呼叫到来,callerID 为主叫用户 ID
CRVideo_NotifyCallIn.callback = function(callID, meetObj, callerID, userExtDat){
}
相关API请参考:
2.接受/拒绝呼叫
- 调用接口:
//接受呼叫
CRVideo_AcceptCall(callID, meetObj, userExtDat, cookie);
//拒绝呼叫
CRVideo_RejectCall(callID, userExtDat, cookie);
- 回调通知:
CRVideo_AcceptCallSuccess.callback = function(callID, cookie){
//接受呼叫成功,进入房间
CRVideo_EnterMeeting3(meetObj.ID, cookie);
}
CRVideo_AcceptCallFail.callback = function(callID, sdkErr, cookie){
}
CRVideo_RejectCallSuccess.callback = function(callID, cookie){
}
CRVideo_RejectCallFail.callback = function(callID, sdkErr, cookie){
}
被呼叫者相关API请参考:
- CRVideo_AcceptCall
- CRVideo_RejectCall
- CRVideo_AcceptCallSuccess
- CRVideo_AcceptCallFail
- CRVideo_RejectCallSuccess
- CRVideo_RejectCallFail
- CRVideo_EnterMeeting3
3.免打扰
如果用户当前不希望被呼叫,可以把自己的状态设置为免打扰。免打扰状态下不会被呼叫,但可以主动发起呼叫。
- 调用接口:
//开启免打扰
CRVideo_SetDNDStatus(1, "");
//关闭免打扰
CRVideo_SetDNDStatus(0, "");
- 回调通知:
CRVideo_SetDNDStatusSuccess.callback = function(cookie){
}
CRVideo_SetDNDStatusFail.callback = function(sdkErr, cookie){
}
相关API请参考: