独立呼叫信令

独立音视频呼叫信令的账号就是IM账号,所以独立音视频呼叫信令的登录就是IM的登录。独立音视频是该云信5.9.0版本开始新提供的功能

创建房间

  var param = {
    type: 1, // 必填字段 通话类型,1:音频;2:视频;3:其他
    channelName: 'channel name', // 房间别名
    ext: ''
  }
  nim.signalingCreate(param).then(data=>{
    console.warn("独立呼叫信令,创建房间成功,data:", data)
  }).catch(error=>{
    console.warn("独立呼叫信令,创建房间失败,error:", error)
    if (error.code == 10405) {
      console.warn("独立呼叫信令:房间已存在,请勿重复创建");
    }
  })
param 类型 说明
type number 通话类型,1:音频;2:视频;3:其他
channelName string 频道名,可缺省(缺省的话,服务器会生成一个)
ext string 频道的自定义扩展信息,可缺省
error结果说明 类型 说明
code number 错误码 10405表示房间已经存在
data结果说明 类型 说明
code number 错误码 200表示房间创建成功
channelInfo number 房间信息
channelInfo说明 类型 说明
ext string 创建房间时传入的扩展字段
channelId string 服务器生成的房间id
channelName string 创建时传入的房间名
type number 创建房间时传入的通话类型,1:音频;2:视频;3:其他
createTimestamp number 房间创建时间点
expireTimestamp number 房间失效时间点
creatorId number 房间创建者的account
invalid number 房间是否有效

关闭房间

  var param = {
    channelId: '2ed4a942417e4b33949f1b65739f3f00',
    offlineEnabled: true,
    ext: ''
  }
  nim.signalingClose(param).then(data=>{
    console.warn("独立呼叫信令,关闭房间成功,data:", data)
  }).catch(error=>{
    console.warn("独立呼叫信令,关闭房间失败,error:", error)
    if (error.code == 10406) {
      console.warn("独立呼叫信令:你不在房间内,无法关闭");
    }
  })
param 类型 说明
channelId string 对应的房间id
offlineEnabled boolean 是否存离线通知
ext string 操作者附加的自定义信息,透传给其他人,可缺省
error结果说明 类型 说明
code number 错误码 10406表示房间已经存在
data结果说明 类型 说明
code number 错误码 200表示房间关闭成功

加入房间

var param = {
    channelId: '2ed4a942417e4b33949f1b65739f3f00',
    offlineEnabled: false,
    attachExt: '',
    uid: 132
  }
nim.signalingJoin(param).then(data=>{
    console.warn("独立呼叫信令,加入房间成功,data:", data)
  }).catch(error=>{
    console.warn("独立呼叫信令,加入房间失败,error:", error)
    switch (error.code) {
      case 10407:
        console.warn("独立呼叫信令:已经在房间内")
        break
      case 10419:
        console.warn("独立呼叫信令:房间人数超限")
        break
      case 10417:
        console.warn("独立呼叫信令:房间成员uid冲突了")
        break
      case 10420:
        console.warn("独立呼叫信令:该账号,在其他端已经登录,并且已经在房间内")
        break
      case 10404:
        console.warn("独立呼叫信令:房间不存在")
        break
    }
  })
param 类型 说明
channelId string 对应的房间id
uid number 自己在频道中对应的uid,大于零有效,无效时服务器会分配随机唯一的uid
offlineEnabled boolean 是否存离线通知
attachExt string 操作者附加的自定义信息,透传给其他人,可缺省
error结果说明 类型 说明
code number 错误码 10407表示已经在房间内 10419表示房间人数已满 10417表示房间内成员的uid有冲突 10420表示该账号,在其他端已经登录,并且已经在频道内 10404表示房间不存在
data结果说明 类型 说明
code number 错误码 200表示加入房间成功
channelInfo object 房间信息,创建房间接口中有说明格式
members array 房间里的成员列表,数组元素member是一个object,描述了成员信息
members数组中member元素说明 类型 说明
account string 成员account账号
uid string 该成员在频道中对应的uid
createTimestamp number 房间创建时间点
expireTimestamp number 房间失效时间点

离开房间

var param = {
    channelId: '2ed4a942417e4b33949f1b65739f3f00',
    offlineEnabled: true,
    attachExt: ''
  }
nim.signalingLeave(param).then(data=>{
    console.warn("独立呼叫信令,离开房间成功,data:", data)
  }).catch(error=>{
    console.warn("独立呼叫信令,离开房间失败,error:", error)
    if (error.code == 10406) {
      console.warn("独立呼叫信令:不在频道内");
    } 
  })
param 类型 说明
channelId string 对应的房间id
offlineEnabled boolean 是否存离线通知
attachExt string 操作者附加的自定义信息,透传给其他人,可缺省
error结果说明 类型 说明
code number 错误码 10406表示你不在房间中
data结果说明 类型 说明
code number 错误码 200表示离开房间成功

邀请别人加入房间

  var pushInfo = {
    needPush: true,
    pushTitle: 'title',
    pushContent: '你收到了邀请',
    pushPayload: { from: 111 },
    needBadge: true,
  }

  var param = {
    channelId: '2ed4a942417e4b33949f1b65739f3f00',
    account: 'cs3',
    requestId: '123',
    offlineEnabled: true,
    attachExt: '12',
    pushInfo: pushInfo
  }

  nim.signalingInvite(param).then(data => {
    console.warn("独立呼叫信令,邀请别人加入房间成功,data:", data)
  }).catch(error => {
    console.warn("独立呼叫信令,邀请别人加入房间失败,error:", error)
    switch (error.code) {
      case 10404:
        console.warn("独立呼叫信令:房间不存在")
        break
      case 10406:
        console.warn("独立呼叫信令:不在房间内(自己)")
        break
      case 10407:
        console.warn("独立呼叫信令:已经在房间内(对方)")
        break
      case 10419:
        console.warn("独立呼叫信令:房间人数超限")
        break
      case 10201:
        console.warn("独立呼叫信令:对方云信不在线")
        break
      case 10202:
        console.warn("独立呼叫信令:对方推送不可达")
        break
    }
  })
param 类型 说明
channelId string 对应的房间id
account string 对方account账号
requestId string 邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该requestId
offlineEnabled boolean 是否存离线通知
attachExt string 操作者(即被邀请者)附加的自定义信息,透传给其他人,可缺省
pushInfo object 推送信息
pushInfo推送消息 类型 说明
pushTitle string 推送标题
pushContent string 推送内容
pushPayload string 推送自定义字段,要求是json格式,Web支持Object对象类型
needPush boolean 是否需要推送,默认false
needBadge boolean 是否计入未读计数,默认true
error结果说明 类型 说明
code number 错误码 10404表示房间不存在 10406表示不在房间内(自己) 10407表示已经在房间内(对方) 10419表示房间人数超限 10201表示对方云信不在线 10202表示对方推送不可达
data结果说明 类型 说明
code number 错误码 200表示邀请别人加入房间成功

取消邀请别人加入房间

  var param = {
    channelId: '2ed4a942417e4b33949f1b65739f3f00',
    account: 'cs3',
    requestId: '123',
    offlineEnabled: true,
    attachExt: '11'
  }

  nim.signalingCancel(param).then(data=>{
    console.warn("独立呼叫信令,取消邀请别人加入房间成功,data:", data)
  }).catch(error=>{
    console.warn("独立呼叫信令,取消邀请别人加入房间失败,error:", error)
    switch (error.code) {
      case 10404:
        console.warn("独立呼叫信令:房间不存在")
        break
      case 10408:
        console.warn("独立呼叫信令:邀请不存在或已过期")
        break
      case 10409:
        console.warn("独立呼叫信令:邀请已经拒绝")
        break
      case 10410:
        console.warn("独立呼叫信令:邀请已经接受")
        break
    }  
  })
param 类型 说明
channelId string 对应的房间id
account string 对方account账号
requestId string 邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该requestId
offlineEnabled boolean 是否存离线通知
attachExt string 操作者(即被邀请者)附加的自定义信息,透传给其他人,可缺省
error结果说明 类型 说明
code number 错误码 10404表示房间不存在 10408表示邀请不存在或已过期 10409表示邀请已经拒绝 10410表示邀请已经接受
data结果说明 类型 说明
code number 错误码 200表示取消邀请成功

接受邀请

  var param = {
    channelId: '2ed4a942417e4b33949f1b65739f3f00',
    account: 'cs3',
    requestId: '123',
    offlineEnabled: false,
    attachExt: '12',
    autoJoin: false,
    uid: '123',
    joinAttachExt: 'join ext'
  }

  nim.signalingAccept(param).then(data=>{
    console.warn("独立呼叫信令,接受别人的邀请,data:", data)
    if(autoJoin) {
      console.warn("独立呼叫信令,接受别人的邀请后,自动加入房间成功,data:", data)
    }
  }).catch(error=>{
    console.warn("独立呼叫信令,取消邀请别人加入房间失败,error:", error)
    if (error.code == 10404) {
      console.warn("独立呼叫信令:房间不存在");
    } else if (error.code == 10408) {
      console.warn("独立呼叫信令:邀请不存在或已过期");
    } else if (error.code == 10409) {
      console.warn("独立呼叫信令:邀请已经拒绝");
    } else if (error.code == 10410) {
      console.warn("独立呼叫信令:邀请已经接受");
    } else if (error.code == 10201) {
      console.warn("独立呼叫信令:对方不在线");
    } 
  })
param 类型 说明
channelId string 对应的房间id
account string 邀请的account账号
requestId string 邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该requestId
offlineEnabled boolean 是否存离线通知
attachExt string 操作者附加的自定义信息,透传给其他人,可缺省
autoJoin boolean 是否自动加入房间,默认不打开,打开后后续参数uid、joinAttachExt有效
uid string 自己在频道中对应的uid,大于零有效,无效时服务器会分配随机唯一的uid,可缺省
joinAttachExt string 加入频道的自定义扩展信息,将在加入频道通知中带给其他频道成员,可缺省
error结果说明 类型 说明
code number 错误码 10404表示房间不存在 10408表示邀请不存在或已过期 10409表示邀请已经拒绝 10410表示邀请已经接受 10201表示对方不在线
data结果说明 类型 说明
code number 错误码 200表示接受邀请成功
channelInfo object 房间信息,创建房间接口中有说明格式
members array 房间里的成员列表,加入房间的接口中有说明格式

拒绝邀请

  var param = {
    channelId: channelId,
    account: account,
    requestId: requestId,
    offlineEnabled: offlineEnabled,
    attachExt: ext
  }

  nim.signalingReject(param).then(data=>{
    console.warn("独立呼叫信令,拒绝别人的邀请,data:", data)
  }).catch(error=>{
    console.warn("独立呼叫信令,拒绝别人的邀请失败,error:", error)
    if (error.code == 10404) {
      console.warn("独立呼叫信令:房间不存在");
    } else if (error.code == 10408) {
      console.warn("独立呼叫信令:邀请不存在或已过期");
    } else if (error.code == 10409) {
      console.warn("独立呼叫信令:邀请已经拒绝");
    } else if (error.code == 10410) {
      console.warn("独立呼叫信令:邀请已经接受");
    } else if (error.code == 10201) {
      console.warn("独立呼叫信令:对方不在线");
    } 
  })
param 类型 说明
channelId string 对应的房间id
account string 邀请者的account账号
requestId string 邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该requestId
offlineEnabled boolean 是否存离线通知
attachExt string 操作者附加的自定义信息,透传给其他人,可缺省
error结果说明 类型 说明
code number 错误码 10404表示房间不存在 10408表示邀请不存在或已过期 10409表示邀请已经拒绝 10410表示邀请已经接受 10201表示对方不在线
data结果说明 类型 说明
code number 错误码 200表示接受邀请成功
channelInfo object 房间信息,创建房间接口中有说明格式
members array 房间里的成员列表,加入房间的接口中有说明格式

控制信令

  var param = {
    channelId: channelId,
    account: account,
    attachExt: attachExt
  }

  nim.signalingControl(param).then(data=>{
    console.warn("独立呼叫信令,控制信令发送,data:", data)
  }).catch(error=>{
    console.warn("独立呼叫信令,控制信令发送,data:", error)
    if (error.code == 10404) {
      console.warn("独立呼叫信令:房间不存在");
    } else if (error.code == 10406) {
      console.warn("独立呼叫信令:不在房间内(自己或者对方)");
    } 
  })
param 类型 说明
channelId string 对应的房间id
account string 对方account,如果为空,则通知房间里所有人
attachExt string 操作者附加的自定义信息,透传给其他人,可缺省
error结果说明 类型 说明
code number 错误码 10404表示房间不存在 10406表示不在房间内(自己或者对方)
data结果说明 类型 说明
code number 错误码 200表示接受邀请成功
channelInfo object 房间信息,创建房间接口中有说明格式
members array 房间里的成员列表,加入房间的接口中有说明格式

呼叫信令

  var pushInfo = {
    needPush: pushEnableNode.checked ? 1 : 0,
    pushTitle: customNotificationNode.value,
    pushContent: pushContentNode.value,
    pushPayload: payloadNode.value,
    needBadge: pushNeedBadgeNode.checked ? 1 : 0,
  }

  var param = {
    type: type,
    channelName: channelName,
    ext: ext,
    channelId: channelId,
    uid: uid,
    account: account,
    requestId: requestId,
    offlineEnabled: offlineEnabled,
    attachExt: joinExt,
    pushInfo: pushInfo
  }

  nim.signalingCall(param).then(data=>{
    console.warn("独立呼叫信令,呼叫成功:", data)
  }).catch(error=>{
    console.warn("独立呼叫信令,呼叫失败:", error)
    if (error.code == 10405) {
      console.warn("独立呼叫信令:房间已存在");
    } else if (error.code == 10201) {
      console.warn("独立呼叫信令:对方云信不在线");
    } else if (error.code == 10202) {
      console.warn("独立呼叫信令:对方推送不可达");
    } 
  })
param 类型 说明
type number 通话类型,1:音频;2:视频;3:其他
channelName string 房间名,可缺省
ext string 频道的自定义扩展信息,可缺省
uid string 自己在频道中对应的uid,大于零有效,无效时服务器会分配随机唯一的uid
account string 邀请的对方account账号
requestId string 邀请者邀请的请求id,需要邀请者填写,之后取消邀请、拒绝、接受需要复用该requestId
offlineEnabled boolean 是否存离线通知
attachExt string 操作者附加的自定义信息,透传给其他人,可缺省
pushInfo object 推送信息
pushInfo推送消息 类型 说明
pushTitle string 推送标题
pushContent string 推送内容
pushPayload string 推送自定义字段,要求是json格式,否则推送会产生错误
needPush boolean 是否需要推送,默认false
needBadge boolean 是否计入未读计数,默认true
error结果说明 类型 说明
code number 错误码 10405表示房间已存在 10201表示对方云信不在线 10202表示对方推送不可达
data结果说明 类型 说明
code number 错误码 200表示接受邀请成功
channelInfo object 房间信息,创建房间接口中有说明格式
members array 房间里的成员列表,加入房间的接口中有说明格式

同步离线时信令信息

  nim.signalingSync().then(info => {
    console.log(info)
  })

通知信令相关的在线通知

用于通知信令相关的在线通知,可以使用on的方式侦听,也可以通过nim.getInstance()的时候传入。

// 在线用户接收到的通知事件
nim.on('signalingNotify', signalingNotifyHandler);

function signalingNotifyHandler (event) {
  console.log("signalingOnlineNotify: ", event)
  switch (event.eventType) {
    case 'ROOM_CLOSE':
      /* 该事件的通知内容
        event.eventType 事件类型
        event.channelInfo 房间信息属性
        event.fromAccountId 操作者
        evnet.attachExt 操作者附加的自定义信息,透传给你
        event.time 操作的时间戳
      */
      console.log("独立呼叫信令:房间关闭事件");
      break;
    case 'ROOM_JOIN':
      /* 该事件的通知内容
        event.eventType 事件类型
        event.channelInfo 房间信息属性
        event.fromAccountId 操作者
        evnet.attachExt 操作者附加的自定义信息,透传给你
        event.time 操作的时间戳
        event.member 新加入的成员信息
      */
      console.log("独立呼叫信令:加入房间事件");
      break;
    case 'INVITE':
      /* 该事件的通知内容
        event.eventType 事件类型
        event.channelInfo 房间信息属性
        event.fromAccountId 操作者
        evnet.attachExt 操作者附加的自定义信息,透传给你
        event.time 操作的时间戳
        event.toAccount 接收者的账号
        event.requestId 邀请者邀请的请求id,用于被邀请者回传request_id_作对应的回应操作
        event.pushInfo 推送信息
      */
      console.log("独立呼叫信令: 邀请事件");
      break;
    case 'CANCEL_INVITE':
      /* 该事件的通知内容
        event.eventType 事件类型
        event.channelInfo 房间信息属性
        event.fromAccountId 操作者
        evnet.attachExt 操作者附加的自定义信息,透传给你
        event.time 操作的时间戳
        event.toAccount 接收者的账号
        event.requestId 邀请者邀请的请求id,用于被邀请者回传request_id_作对应的回应操作
      */
      console.log("独立呼叫信令:取消邀请事件");
      break;
    case 'REJECT':
      /* 该事件的通知内容
        event.eventType 事件类型
        event.channelInfo 房间信息属性
        event.fromAccountId 操作者
        evnet.attachExt 操作者附加的自定义信息,透传给你
        event.time 操作的时间戳
        event.toAccount 接收者的账号
        event.requestId 邀请者邀请的请求id,用于被邀请者回传request_id_作对应的回应操作
      */
      console.log("独立呼叫信令:拒绝邀请事件");
      break;
    case 'ACCEPT':
      /* 该事件的通知内容
        event.eventType 事件类型
        event.channelInfo 房间信息属性
        event.fromAccountId 操作者
        evnet.attachExt 操作者附加的自定义信息,透传给你
        event.time 操作的时间戳
        event.toAccount 接收者的账号
        event.requestId 邀请者邀请的请求id,用于被邀请者回传request_id_作对应的回应操作
      */
      console.log("独立呼叫信令:接受邀请事件");
      break;
    case 'LEAVE':
      /* 该事件的通知内容
        event.eventType 事件类型
        event.channelInfo 房间信息属性
        event.fromAccountId 操作者
        evnet.attachExt 操作者附加的自定义信息,透传给你
        event.time 操作的时间戳
      */
      console.log("独立呼叫信令:离开房间事件");
      break;
    case 'CONTROL':
      /* 该事件的通知内容
        event.eventType 事件类型
        event.channelInfo 房间信息属性
        event.fromAccountId 操作者
        evnet.attachExt 操作者附加的自定义信息,透传给你
        event.time 操作的时间戳
      */
      console.log("独立呼叫信令:自定义控制事件");
      break;
  }
});

event 事件通知对象

event 属性 类型 说明
eventType number 通知事件的类型
channelInfo object 房间信息,创建房间接口中有说明格式
fromAccountId string 操作者
attachExt string 操作者附加的自定义信息,透传给其他人
time number 操作的时间戳
member object 新加入的成员信息
pushInfo number 推送信息 (邀请接口里已经说明格式)
requestId number 邀请者邀请的请求id,用于被邀请者回传requestid作对应的回应操作
toAccount number 接收者的账号
member 类型 说明
account string 成员account账号
uid string 该成员在频道中对应的uid
createTimestamp number 房间创建时间点
expireTimestamp number 房间失效时间点

eventList 为通知事件列表

eventList 属性 类型 说明
eventList array 通知事件数组,数组元素即为在线通知接口中的通知事件

在线多端同步通知

// 在线多端同步通知
nim.on('signalingMutilClientSyncNotify', function(event) {
  console.log("signalingMutilClientSyncNotify: ", event)
  switch (event.eventType) {
    case nim.EVENT_TYPE_REJECT:
      //nim.EVENT_TYPE_REJECT 数值为5
      /* 该事件的通知内容
        event.eventType 事件类型
        event.channelInfo 房间信息属性
        event.fromAccountId 操作者
        evnet.attachExt 操作者附加的自定义信息,透传给其他人
        event.time 操作的时间戳
        event.toAccount 接收者的账号
        event.requestId 邀请者邀请的请求id,用于被邀请者回传request_id_作对应的回应操作
      */
      console.log("独立呼叫信令:拒绝邀请事件");
      break;
    case nim.EVENT_TYPE_ACCEPT:
      //nim.EVENT_TYPE_ACCEPT 数值为6
      /* 该事件的通知内容
        event.eventType 事件类型
        event.channelInfo 房间信息属性
        event.fromAccountId 操作者
        evnet.attachExt 操作者附加的自定义信息,透传给其他人
        event.time 操作的时间戳
        event.toAccount 接收者的账号
        event.requestId 邀请者邀请的请求id,用于被邀请者回传request_id_作对应的回应操作
      */
      console.log("独立呼叫信令:接受邀请事件");
      break;
  }
});

event 为通知事件

event 属性 类型 说明
eventType number 通知事件的类型
channelInfo object 房间信息,创建房间接口中有说明格式
fromAccountId string 操作者
attachExt string 操作者附加的自定义信息,透传给其他人
time number 操作的时间戳
pushInfo number 推送信息 (邀请接口里已经说明格式)
requestId number 邀请者邀请的请求id,用于被邀请者回传requestid作对应的回应操作
toAccount number 接收者的账号

房间成员变更同步

// 被叫接受的通知
nim.on('signalingMembersSyncNotify', function(event) {
  console.log("signalingMembersSyncNotify: ", event)
});

event 为通知事件

event对象说明 类型 说明
channelInfo object 房间信息,创建房间接口中有说明格式
members array 房间里的成员列表,加入房间的接口中有说明格式