# 呼叫

功能简介:
实现了用户之间的呼叫功能,流程是:A用户先创建一个房间,然后呼叫B用户,如果B用户接受呼叫,AB进入房间进行通讯。

注意:在登录成功后才可以使用呼叫功能


呼叫功能使用流程如下:

  1. 创建房间
  2. 发起呼叫
  3. 接受/拒绝呼叫
  4. 挂断
  5. 免打扰

1.创建房间

输入房间标题,创建一个没有密码的房间

  • 调用接口:
//创建房间
CRVideo_CreateMeeting("房间的的主题长度50字内")
  • 回调通知:
//创建房间成功
CRVideo_CreateMeetingSuccess.callback=function(meetObj,cookie){
    //创建成功,获取房间信息meetObj,用于呼叫他人
}
//创建房间失败
CRVideo_CreateMeetingFail.callback = function(sdkErr,cookie){
    //创建失败,可以弹出错误提示,不能再执行 进入房间
}

相关API请参考:

2.发起呼叫

注意:当用户A呼叫用户B时,只有B成功登录了,才可以收到被呼叫通知

  • 调用接口:
//A发起呼叫,邀请用户B进入房间。
var callID = CRVideo_Call(UID,meetObj,usrExtDat,cookie)
  • 回调通知:
//呼叫操作成功响应
CRVideo_CallSuccess.callback = function(callID,cookie){

}

// 呼叫操作失败响应
CRVideo_CallFail.callback = function(callID,sdkErr,cookie){
    console.log("呼叫他人失败"+sdkErr);
}

呼叫他人相关API请参考:

3.接受/拒绝呼叫

  • 回调通知:
// SDK通知用户 B 被他人 (即callerID) 呼叫
CRVideo_NotifyCallIn.callback = function(callID,meetObj,callerID,usrExtDat){
    if(/* B 接受呼叫, 进入房间*/){
        CRVideo_AcceptCall(callID,meetObj);
        CRVideo_EnterMeeting(meetObj.ID, meetObj.pswd, UID, nickName, cookie);
    }else{// B 拒绝呼叫

        CRVideo_RejectCall(callID,"","");
    }
}
//当 B 接受呼叫时,A会收到如下通知:
CRVideo_NotifyCallAccepted.call = function(callID,meetObj,usrExtDat){
    //A此时可以进入房间
    CRVideo_EnterMeeting(meetObj.ID, meetObj.pswd, UID, nickName, cookie);
}
//当 B 拒绝呼叫时,A会收到如下通知:
CRVideo_NotifyCallRejected.call = function(callID,meetObj,usrExtDat){
    console.log("客户拒绝呼叫了");
}

被呼叫者相关API请参考:

呼叫者相关API请参考:

4.挂断

  • 调用接口:
//挂断呼叫
CRVideo_HungupCall(callID)
  • 回调通知:
//挂断呼叫成功
CRVideo_HangupCallSuccess.callback = function(callID,cookie)
{
    console.log("挂断呼叫成功")
    //1.退出房间
    CRVideo_ExitMeeting();

    /* 2.进行清理工作: 例如:清空视频控件缓存的图像.myVideoUI为自己的视频显示控件,otherVideoUI为他人的显示控件
    if(myVideoUI != undefined && otherVideoUI != undefined ){
        myVideoUI.clear();
        otherVideoUI.clear();
    }
    */
}

//挂断呼叫失败
CRVideo_HangupCallFail.callback = function(callID,sdkErr,cookie)
{
   console.log("挂断呼叫失败!错误码:"+ sdkErr);
}

//通知被他人挂断
CRVideo_NotifyCallHungup.callback = function(callID,usrExtDat)
{
    //1. 退出房间
    CRVideo_ExitMeeting();
    //2.清理工作
    /*
    if(myVideoUI != undefined && otherVideoUI != undefined ){
        myVideoUI.clear();
        otherVideoUI.clear();
    }
    */
    
}

相关API请参考:

5.免打扰

如果用户当前不希望被呼叫,可以把自己的状态设置为免打扰,注意在免打扰状态下不会被呼叫,但是可以主动发起呼叫。

  • 调用接口:
//开启免打扰
CRVideo_SetDNDStatus(1);

//关闭免打扰
CRVideo_SetDNDStatus(0);

  • 回调通知:
//设置免打扰状态操作成功响应
CRVideo_SetDNDStatusSuccess.callback=function(cookie){
     
}

//设置免打扰状态操作失败响应
CRVideo_SetDNDStatusFail.callback=function(sdkErr, cookie){
    console.log("设置免打扰状态操作失败,错误码:" +sdkErr);

}

相关API请参考: