音视频通话

SIP/H.323设备支持

功能介绍

SDK支持通过SIP和H.323标准协议与硬件视频会议系统或PSTN电话系统对接,可支持以下几种场景:

  1. SDK呼叫单个对接端:从SDK端向对接端发起呼叫,对接端用户应答后与SDK一起进入房间;
  2. SDK邀请多个对接端:SDK端先进入房间,然后向一个或多个对接端用户发起邀请,被邀请用户接受邀请后加入该房间;
  3. 对接端呼叫SDK:SDK端在线,对接端向SDK端发起呼叫,SDK端应答后与对接端一起加入房间;
  4. 对接端直接加入房间:SDK房间提前建好,对接端呼叫房间号后加入房间;

以上对接端可以是支持SIP/H.323的硬件终端、传统电话、MCU会议

功能开通

  1. 联系商务开通SIP/H.323对接功能,或在网站咨询客服。

  2. 登录 SDK后台 ,选择SIP配置/H.323配置,打开配置开关;如需配置中继模式,则填入对应的终端地址、端口号、协议(且SIP设备支持选择协议)。

  • SIP配置:
    SipCfg
  • H.323配置:
    H323Cfg

SDK呼叫单个对接端

注意:
  1. 当用户A呼叫SIP/H.323设备时,对端设备需要在线,如果呼叫的是E.164号码,需要对应设备已注册,否则被呼叫端无法收到被呼叫的消息;设备收到呼叫消息后,根据其自身设置的应答机制,会自动进入房间或在按下接听后进入房间。
  2. 如果在 功能开通 的"SIP配置"或者"H.323配置"界面配置了中继地址,呼叫时不需要填写对端设备IP,直接填写"sip:号码"或者"h323:号码"即可
  • 调用接口:
 
//被呼叫的SIP/H.323设备的IP或E.164号码,以sip:或h323:为前缀
const char* calledUserID = "sip:192.168.0.10";   // 呼叫IP为192.168.0.10的SIP设备
//const char* calledUserID = "h323:149689338";   // 呼叫E.164号码为14989338的H.323设备
CRMeetInfo meetInfo;
meetInfo._ID = 88888888; //房间号
//设备入会配置,指定入会打开麦克风、入会昵称等
const char* devJoinCfg = "{\"devInfo\":{\"autoOpenMic\":0,\"nickname\":\"sipNickname\"}}";
CRString callID = crVideoSDKMain->getSDKCall().call(calledUserID, meetInfo, devJoinCfg);
 
  • 回调通知:
 
//呼叫响应
void callRslt(const char* callID, CRVSDK_ERR_DEF sdkErr, const char* cookie){
	//sdkErr==CRVSDKERR_NOERR代表呼叫成功, 否则代表失败的具体原因
}

 

呼叫相关API请参考:

SDK邀请多个对接端

注意:
  1. 仅当用户A已经进进入房间议,才可以邀请SIP/H.323设备。
  2. 当用户A邀请SIP/H.323设备时,对应设备需要在线,如果呼叫的是E.164号码,需要对应设备已注册,否则被呼叫端无法收到被呼叫的消息;设备收到呼叫消息后,根据其自身设置的应答机制,会自动进入房间或在按下接听后进入房间。
  3. 如果在 功能开通 的"SIP配置"或者"H.323配置"界面配置了中继地址,邀请时不需要填写对端设备IP,直接填写"sip:号码"或者"h323:号码"即可
  • 调用接口:
 
//被邀请的SIP/H.323设备的IP或E.164号码,以sip:或h323:为前缀
const char* inviteeUsrID = "sip:192.168.0.10";   // 邀请IP为192.168.0.10的SIP设备
//const char* inviteeUsrID = "h323:149689338";  // 邀请E.164号码为14989338的H.323设备
string usrExtDat = "{\"meeting\":{\"ID\":xxx}}";
string inviteID = crVideoSDKMain->getSDKCall().invite(inviteeUsrID, usrExtDat.c_str());
 
  • 回调通知:
 
//邀请发送成功
void inviteRslt(const char* inviteID, CRVSDK_ERR_DEF sdkErr, const char* cookie)
{
	//sdkErr==CRVSDKERR_NOERR代表邀请成功, 否则代表失败的具体原因
}

//通知邀请被接受
void notifyInviteAccepted(const char* inviteID, const char* usrExtDat)
{
  //邀请被接受,等待被邀请方进入房间等处理
}

//通知邀请被拒绝
void notifyInviteRejected(const char* inviteID, CRVSDK_ERR_DEF reason, const char* usrExtDat)
{
  //邀请被拒绝,弹出提示框等处理
}
 

相关API请参考:

对接端呼叫SDK

被呼叫的SDK端收到被他人呼叫通知,具体请参考 SDK被呼叫 部分

对接端直接加入房间

下面以 Linphone 为例演示直接加入房间的方法:

  1. 二次拨号方式,呼叫 sip:116.63.139.166 或者 h323:116.63.139.166 (实际云服务地址请咨询商务),呼通后根据界面提示输入房间号,再输入"#"键以进入对应房间
  • 拨号界面
    sipDial1
  • 输入房间号界面
    sipDial2
  1. 直接呼叫房间号方式,呼叫 10252565@116.63.139.166 ,进入对应房间

sipDial3

配置终端

下面以宝利通硬终端和Linphone软终端为例,说明终端的配置方法。

宝利通终端

  • 登录web管理页面,左侧导航栏选择管理设置→网络→IP网络

  • 启用SIP呼叫,注:如果在SDK后台配置SIP时选择了协议,此处应选择一致的传输协议
    polycomSip

  • 启用H.323呼叫:
    plycomH323

Linphone软终端

  • 打开偏好设置,选择视频,在下方添加H264解码器并确保开启
    linphoneSip