@rongcloud/plugin-call v5.2.8
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)
6 days ago
6 days ago
28 days ago
2 months ago
4 months ago
4 months ago
4 months ago
4 months ago
9 months ago
6 months ago
7 months ago
10 months ago
8 months ago
7 months ago
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago