跳到主要内容

主叫方

设置呼叫、挂断推送信息

主叫端在呼叫前调用

/**
* 设置呼叫、挂断推送数据
* @param callPushConfig 呼叫推送配置
* @param callPushConfig.pushTitle 呼叫推送标题
* @param callPushConfig.pushContent 呼叫推送内容
* @param hungupPushConfig 挂断推送配置
* @param hungupPushConfig.pushTitle 挂断推送标题
* @param hungupPushConfig.pushContent 挂断推送内容
*/
caller.setPushConfig(callPushConfig, hungupPushConfig);

发起呼叫

发起单人通话

完成初始化后,调用 caller.call 方法发起单人音视频通话。

API 参考:call

  • 参数说明:

    参数类型必填说明
    targetIdstring对方的userId
    mediaTypeenum RCCallMediaType { number }发起的通话媒体类型。1 为音频呼叫;2 为 音视频呼叫
    listenerISessionListenersession 对象上注册的事件监听
    constraints{ video?: ICameraVideoProfile, audio?: IMicphoneAudioProfile }音频或音视频资源的约束 video 为可选参数详见设置视频参数, audio为可选参数详见设置音频参数
    extrastring消息的扩展信息
    pushTitlestring通知的标题
    pushContentstring通知的内容
  • 返回值:

    返回值返回类型说明
    codeRCCallErrorCode10000表示成功,其余的表示失败,详见状态码
    sessionRCCallSessionsession 对象
  • 示例代码:

        const { code, session } = await caller.call({
    targetId: this.targetId,
    mediaType,
    listener: {

    /**
    * 当远端用户已开始响铃,表示对方已收到呼叫请求 (必填)
    * @param sender 已响铃的用户
    * @param session 当前的 session 对象
    */
    onRinging: (sender: ISenderInfo, session: RCCallSession) => {
    const { userId } = sender;
    },

    /**
    * 当远端用户同意接听 (必填)
    * @param sender 远端用户
    * @param session 当前的 session 对象
    */
    onAccept: (sender: ISenderInfo, session: RCCallSession) => {
    const { userId } = sender;

    },

    /**
    * 当有远端用户挂断 (必填)
    * @param sender 远端用户
    * @param reason 挂断的原因
    * @param session 当前的 session 对象
    */
    onHungup: (sender: ISenderInfo, reason: RCCallEndReason, session: RCCallSession) => {
    const { userId } = sender;
    },

    /**
    * 本端资源或远端资源已获取, (必填)
    * @param track 本端资源或远端资源, track不可设置成 Vue 组件的响应式数据
    * @param session 当前的 session 对象
    */
    onTrackReady: (track: RCTrack, session?: RCCallSession) => {

    // track.isLocalTrack() 是否为本地资源
    // track.isAudioTrack() 是否为音频
    // track.isVideoTrack() 是否为视频
    // track.getUserId() 产生该 track 的用户id

    // 播放音频。如果为远端音频,建议直接播放。如为本端音频,建议不播放,以减少回音。
    if (track.isAudioTrack() && !track.isLocalTrack()) {
    track.play();
    }

    // 视频在对应的容器里播放
    if (track.isVideoTrack()) {
    const video = document.getElementById(
    "video" + user.userId
    ) as HTMLVideoElement;
    track.play(video);
    }
    },

    /**
    * 群组通话中有其他人被邀请加入 (必填)
    * @param sender 发送者
    * @param invitedUsers 被邀请的用户列表
    * @param session 当前的 session 对象
    */
    onMemberModify: (sender: ISenderInfo, invitedUsers: IInvitedUsers[], session: RCCallSession) => {
    },

    /**
    * 通话类型改变时触发,例如: 从视频变成音频通话 (必填)
    * @param sender 发送者
    * @param mediaType 1为音频通话 2为视频通话
    * @param session 当前的 session 对象
    */
    onMediaModify: (sender: ISenderInfo, mediaType: RCCallMediaType, session: RCCallSession) => {

    },

    /**
    * 对方静音后触发 (必填)
    * @param muteUser 已静音的用户
    * @param session 当前的 session 对象
    */
    onAudioMuteChange: (muteUser: IMuteUser, session: RCCallSession) => {
    },

    /**
    * 对方禁用视频后触发 (必填)
    * @param muteUser 已禁用视频的用户
    * @param session 当前的 session 对象
    */
    onVideoMuteChange: (muteUser: IMuteUser, session: RCCallSession) => {
    },

    },
    });
    if (code === RCCallErrorCode.SUCCESS) {

    // do something
    }

发起多人通话

完成初始化后,调用 caller.callInGroup 方法发起多人音视频通话。多人通话场景所有通话者必须在一个群组内。

API 参考:callInGroup

  • 参数说明:

    参数类型必填说明
    targetIdstring群组 Id
    userIdsArray<string>被呼叫的群内成员 Id
    mediaTypeenum RCCallMediaType { number }发起的通话媒体类型 1->音频呼叫 or 2->音视频呼叫
    listenerISessionListener在 session 对象上注册的事件监听
    constraints{ video?: ICameraVideoProfile, audio?: IMicphoneAudioProfile }音频或音视频资源的约束 video 为可选参数详见设置视频参数, audio为可选参数详见设置音频参数
    extrastring消息的扩展信息
    pushTitlestring通知的标题
    pushContentstring通知的内容
  • 返回值:

    返回值返回类型说明
    codeRCCallErrorCode10000表示成功,其余的表示失败,详见状态码
    sessionRCCallSessionsession对象
  • 示例代码:

      const { code, session } = await caller.callInGroup({
    targetId: this.targetId,
    userIds,
    mediaType,
    listener: {

    /**
    * 当远端用户已开始响铃,表示对方已收到呼叫请求 (必填)
    * @param sender 已响铃的用户
    * @param session 当前的 session 对象
    */
    onRinging: (sender: ISenderInfo, session: RCCallSession) => {
    const { userId } = sender;
    },

    /**
    * 当远端用户同意接听 (必填)
    * @param sender 远端用户
    * @param session 当前的 session 对象
    */
    onAccept: (sender: ISenderInfo, session: RCCallSession) => {
    const { userId } = sender;

    },

    /**
    * 当有远端用户挂断 (必填)
    * @param sender 远端用户
    * @param reason 挂断的原因
    * @param session 当前的 session 对象
    */
    onHungup: (sender: ISenderInfo, reason: RCCallEndReason, session: RCCallSession) => {
    const { userId } = sender;
    },

    /**
    * 本端资源或远端资源已获取 (必填)
    * @param track 本端资源或远端资源, track不可设置成 Vue 组件的响应式数据
    * @param session 当前的 session 对象
    */
    onTrackReady: (track: RCTrack, session?: RCCallSession) => {

    // track.isLocalTrack() 是否为本地资源
    // track.isAudioTrack() 是否为音频
    // track.isVideoTrack() 是否为视频
    // track.getUserId() 产生该 track 的用户id


    // 播放音频。如果为远端音频,建议直接播放。如为本端音频,建议不播放,以减少回音。
    if (track.isAudioTrack() && !track.isLocalTrack()) {
    track.play();
    }

    // 视频在对应的容器里播放
    if (track.isVideoTrack()) {
    const video = document.getElementById(
    "video" + user.userId
    ) as HTMLVideoElement;
    track.play(video);
    }
    },

    /**
    * 群组通话中有其他人被邀请加入(必填)
    * @param sender 发送者
    * @param invitedUsers 被邀请的用户列表
    * @param session 当前的 session 对象
    */
    onMemberModify: (sender: ISenderInfo, invitedUsers: IInvitedUsers[], session: RCCallSession) => {
    },

    /**
    * 通话类型改变时触发,例如: 从视频变成音频通话 (必填)
    * @param sender 发送者
    * @param mediaType 1为音频通话 2为视频通话
    * @param session 当前的 session 对象
    */
    onMediaModify: (sender: ISenderInfo, mediaType: RCCallMediaType, session: RCCallSession) => {

    },

    /**
    * 对方静音后触发 (必填)
    * @param muteUser 已静音的用户
    * @param session 当前的 session 对象
    */
    onAudioMuteChange: (muteUser: IMuteUser, session: RCCallSession) => {
    },

    /**
    * 对方禁用视频后触发 (必填)
    * @param muteUser 已禁用视频的用户
    * @param session 当前的 session 对象
    */
    onVideoMuteChange: (muteUser: IMuteUser, session: RCCallSession) => {
    },

    },
    });
    if (code === RCCallErrorCode.SUCCESS) {
    // do something
    }

挂断通话

调用 session.hungup 方法挂断通话,SDK 内部会自动告知对方挂断、拒绝原因。

API 参考:hungup

  • 返回值:

    返回值返回类型说明
    codenumber10000表示成功,其余的表示失败,详见状态码
  • 示例代码:

    const { code } = await session.hungup();
    // do something

邀请通话

调用 session.invite(userIds) 方法邀请用户加入当前通话(仅限群组)。

API 参考:invite

  • 参数说明:

    参数类型必填说明
    userIdsArray<string>邀请的用户 ID 列表
    optionsobject扩展字段

    options 说明:

    参数类型必填说明
    extrastring消息的扩展信息
    pushTitlestring通知的标题
    pushContentstring通知的内容
  • 返回值 :

    返回值返回类型说明
    codenumber10000表示成功,其余的表示失败,详见状态码
  • 示例代码:

      const { code } = await session.invite(userIds);
    if (code === RCCallErrorCode.SUCCESS) {
    // do something
    }