SIP/H.323设备支持
功能介绍
SDK支持通过SIP和H.323标准协议与硬件视频会议系统或PSTN电话系统对接,可支持以下几种场景:
- SDK呼叫单个对接端:从SDK端向对接端发起呼叫,对接端用户应答后与SDK一起进入房间;
- SDK邀请多个对接端:SDK端先进入房间,然后向一个或多个对接端用户发起邀请,被邀请用户接受邀请后加入该房间;
- 对接端呼叫SDK:SDK端在线,对接端向SDK端发起呼叫,SDK端应答后与对接端一起加入房间;
- 对接端直接加入房间:SDK房间提前建好,对接端呼叫房间号后加入房间;
以上对接端可以是支持SIP/H.323的硬件终端、传统电话、MCU会议
功能开通
-
联系商务开通SIP/H.323对接功能,或在网站咨询客服。
-
登录 SDK后台 ,选择SIP配置/H.323配置,打开配置开关;如需配置中继模式,则填入对应的终端地址、端口号、协议(且SIP设备支持选择协议)。
- SIP配置:

- H.323配置:

SDK呼叫单个对接端
注意:
- 当用户A呼叫SIP/H.323设备时,对端设备需要在线,如果呼叫的是E.164号码,需要对应设备已注册,否则被呼叫端无法收到被呼叫的消息;设备收到呼叫消息后,根据其自身设置的应答机制,会自动进入房间或在按下接听后进入房间。
- 如果在 功能开通 的"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邀请多个对接端
注意:
- 仅当用户A已经进进入房间议,才可以邀请SIP/H.323设备。
- 当用户A邀请SIP/H.323设备时,对应设备需要在线,如果呼叫的是E.164号码,需要对应设备已注册,否则被呼叫端无法收到被呼叫的消息;设备收到呼叫消息后,根据其自身设置的应答机制,会自动进入房间或在按下接听后进入房间。
- 如果在 功能开通 的"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 为例演示直接加入房间的方法:
- 二次拨号方式,呼叫 sip:116.63.139.166 或者 h323:116.63.139.166 (实际云服务地址请咨询商务),呼通后根据界面提示输入房间号,再输入"#"键以进入对应房间
- 拨号界面

- 输入房间号界面

- 直接呼叫房间号方式,呼叫 10252565@116.63.139.166 ,进入对应房间

配置终端
下面以宝利通硬终端和Linphone软终端为例,说明终端的配置方法。
宝利通终端
-
登录web管理页面,左侧导航栏选择管理设置→网络→IP网络
-
启用SIP呼叫,注:如果在SDK后台配置SIP时选择了协议,此处应选择一致的传输协议

-
启用H.323呼叫:

Linphone软终端
- 打开偏好设置,选择视频,在下方添加H264解码器并确保开启
