5.2.8 • Published 6 days ago

@rongcloud/plugin-call v5.2.8

Weekly downloads
-
License
LGPL 2.1
Repository
-
Last release
6 days ago

CallLib 5.0

基于融云 IMLib 与 RTCLib 能力构建的音视频通话场景 SDK,基于该 SDK,开发者可快速实现音视频呼叫功能的开发。

RFC

初始化
import { IMClient, init  } from '@rongcloud/imlib-v4'
import { installer as rtcInstaller, RCRTCClient, RCTrack, IMicphoneAudioProfile, ICameraVideoProfile, } from "@rongcloud/plugin-rtc";
import { installer as callInstaller, RCCallClient, RCCallSession, RCCallErrorCode, IEndSummary, ISender, RCCallLanguage, RCCallEndReason} from "@rongcloud/plugin-call";


// im 客户端初始化
const imClient: IMClient = init({ ... })

// rtc 客户端初始化
const rtcClient: RCRTCClient = imClient.install(rtcInstaller, { ...options })

// calllib 客户端初始化
const caller: RCCallClient = imClient.install(callInstaller, {
  // rtcClient 实例
  rtcClient,
  // 监听被叫
  onSession (session: RCCallSession) {
    // session
  },
  // 通话终止
  onSessionClose (session: RCCallSession, summaryInfo: IEndSummary) {
    // session

  },


  

  // 其他初参数
  ...options
})
注册用户数据

通过发消息携带用户信息功能,将用户信息通知到对端。不注册的前提下,对端只能收到人员 id 数据

// 注册用户数据,对端收到相应通知时可携带数据,多次注册时以最后一次注册为准
caller.registerUserInfo({ name, profile, extra })
主动呼叫
  • 单呼
      /**
       * 单呼,发送invite消息
       * @param params.targetId 被呼叫一方的用户 id 必填
       * @param params.mediaType 0->音频呼叫 or 2->音视频呼叫  必填
       * @param params.channelId 组织 Id 可选
       * @param params.constraints 获取音频或音视频资源时的参数 可选
       */
      const { code, session } = await caller.call({
        targetId: this.targetId, 
        mediaType,
        channelId: ''
   //
      });
      if (code === RCCallErrorCode.SUCCESS) {

        // session上添加监听
        session.registerSessionListener(...options)
      }
  • 群呼
      /**
       * 发起群组呼叫
       * @param params.targetId 群组 Id 必填
       * @param params.userIds 被呼叫的群内成员 Id 必填
       * @param params.mediaType 0->音频呼叫 or 2->音视频呼叫  必填
       * @param params.channelId 组织 Id 可选
       * @param params.constraints 获取音频或音视频资源时的参数 可选
       */
      const { code, session } = await caller.callInGroup({
        targetId: this.targetId,
        userIds,
        mediaType,
      });
      if (code === RCCallErrorCode.SUCCESS) {

        // session上添加监听
        session.registerSessionListener(...options)
      }
RCCallSession

RCCallSession 是 CallLib 业务的单次呼叫所建立的会话场景的抽象,标识当前的通话

// 当前通话的唯一性标识
session.getSessionId()
// targetId,群呼为群组 Id,单呼为对方人员 Id
session.getTargetId()
// 获取会话类型
session.getConversationType()
// 多组织功能相关
session.getChannelId()
// 房间人员列表,不包含本端信息
session.getRemoteUsers()
// 获取人员状态:等待 | 通话中 | 不在会话中
session.getUserState(userId)
// 会话状态:呼入等待 | 呼出等待 | 通话中 | 通话已结束
session.getState() 
// 获取会话发起者 Id
session.getCallerId(): Promise<string | undefined>

// 注册会话事件监听
session.registerSessionListener({

  onRinging(sender: ISender) {
    // 对方已开始响铃,表示对方已收到呼叫请求
  }
  onAccept(sender: ISender) {
    // 用户同意接听
  }
  onHungup(sender: ISender, reason: RCCallEndReason) {
    // 用户挂断
  }

  /**
   * 本端资源或远端资源已获取,track为本地音频或音视频, track不可设置成Vue组件的响应式数据
   * track.isLocalTrack() 是否为本地资源
   * track.isAudioTrack() 是否为音频
   * track.isVideoTrack() 是否为视频
   * track.getUserId()    产生该流的用户id
   */
  onTrackReady(rcTrack: RCTrack) {
    // 用户资源已获取,包含己方资源
    rcTrack.play('#video')
  }
})

// 继续邀请其他人,groupOnly
session.invite(userIds): Promise<{code}>

// 接听(callin only)
session.accept(constraints?: { audio?: IMicphoneAudioProfile; video?: ICameraVideoProfile })

// 挂断
caller.hungup(session)
5.2.8

6 days ago

5.2.7

28 days ago

5.2.6

2 months ago

5.2.3-enterprise.2

4 months ago

5.2.5

4 months ago

5.2.4

6 months ago

5.2.3

7 months ago

5.2.2

10 months ago

5.2.3-enterprise.1

7 months ago

5.1.2-enterprise.4

10 months ago

5.2.1

1 year ago

5.2.0

1 year ago

5.1.3

1 year ago

5.1.2

1 year ago

5.1.2-alpha.3

1 year ago

5.1.2-alpha.2

1 year ago

5.1.2-alpha.1

1 year ago

5.1.1

1 year ago

5.1.0

2 years ago

5.0.10

2 years ago

5.0.9

2 years ago

5.0.8

2 years ago

5.0.6

2 years ago

5.0.7

2 years ago

5.0.5

2 years ago

5.0.4

2 years ago

5.0.5-alpha.1

2 years ago

5.0.1-alpha.16

2 years ago

5.0.1-alpha.17

2 years ago

5.0.1-alpha.18

2 years ago

5.0.3

3 years ago

5.0.2

3 years ago

5.0.1

3 years ago

5.0.1-alpha.14

3 years ago

5.0.1-alpha.15

3 years ago

5.0.1-alpha.13

3 years ago

5.0.1-alpha.12

3 years ago

5.0.1-alpha.11

3 years ago

5.0.1-alpha.10

3 years ago

5.0.1-alpha.9

3 years ago

5.0.1-alpha.8

3 years ago

5.0.1-alpha.7

3 years ago

5.0.1-alpha.6

3 years ago

5.0.1-alpha.5

3 years ago

5.0.1-alpha.4

3 years ago

5.0.1-alpha.3

3 years ago

5.0.1-alpha.2

3 years ago

5.0.1-alpha.1

3 years ago

5.0.0

3 years ago