音视频通话

SIP/H.323设备支持

更新时间: 2024/06/20 14:30:12

功能介绍

云屋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 calledUserID = "sip:192.168.0.10"; // 呼叫IP为192.168.0.10的SIP设备
// const calledUserID = "h323:149689338";  // 呼叫E.164号码为14989338的H.323设备
const MeetInfoObj = { ID: 88888888 };
CRVideo_Call(calledUserID, MeetInfoObj);
 
  • 回调通知:
 
//呼叫操作成功响应
CRVideo_CallSuccess.callback = function (callID, cookie) {
  console.log("callSuccess:" + callID);
};

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

呼叫相关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 inviteeUsrID = "sip:192.168.0.10"; // 邀请IP为192.168.0.10的SIP设备
// const inviteeUsrID = "h323:149689338";  // 邀请E.164号码为14989338的H.323设备
const usrExtDat = JSON.stringify(
  {
    meeting: { ID: xxx } ,
    // 设备的默认UserID和昵称就是inviteeUsrID,可以通过devInfo参数来自定义设备的UserID和昵称(非必传)
    devInfo: { 
      userID: '自定义设备在房间中的UserID',
      nickName: '自定义设备在房间中的昵称'
    }
  }
);
const inviteID = CRVideo_Invite(inviteeUsrID, usrExtDat);
 
  • 回调通知:
 
//邀请发送成功
CRVideo_InviteSuccess.callback = function (inviteID, cookie) {
  //等待被邀请方应答/拒绝,或邀请超时
};

//邀请发送失败
CRVideo_InviteFail.callback = function (inviteID, sdkErr, cookie) {
  //邀请发送失败,弹出提示框等处理
};

//通知邀请被接受
CRVideo_NotifyInviteAccepted.callback = function (inviteID, userExtDat) {
  //邀请被接受,等待被邀请方进入房间等处理
};

//通知邀请被拒绝
CRVideo_NotifyInviteRejected.callback = function (inviteID, reason, userExtDat) {
  //邀请被拒绝,弹出提示框等处理
};
 

相关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