import { ConversationType, ILogger, IReceivedMessage, IRuntime, RTCPluginContext } from '@rongcloud/engine'; import { RCCallErrorCode } from './enums/RCCallCode'; import { RCCallEndReason } from './enums/RCCallEndReason'; import { RCCallMediaType } from './enums/RCCallMediaType'; import { RCCallSessionState } from './enums/RCCallSessionState'; import { RCCallUserState } from './enums/RCCallUserState'; import { ICallStateMachineWatchers, IEndSummary, IUserData, IInviteOptions } from './interfaces/IStateMachine'; import { CallMessageHandler } from './MessageHandler'; export declare class RCCallStateMachine { private readonly _context; private readonly _runtime; private readonly _logger; private readonly _callMsgHandler; private readonly _channelId; private readonly _conversationType; private readonly _targetId; private _mediaType; private readonly _callId; /** * 房间状态 */ private _sessionState; /** * 用户状态及信息 */ private _userInfo; /** * 用户计时器映射 */ private _userTimers; /** * 监听器 */ private _watchers; /** * 呼叫超时时间 (单位:毫秒) */ private _callTimeout; /** * 通话建立开始时间 */ private _beginTimestamp; /** * 通话结束时间 */ private _endTimestamp; /** * 通话结束原因 */ private _endReason; /** * 主叫 ID * 发起邀请为当前用户 ID * 收到邀请为 senderUserId * 收到人员变更邀请为消息体中 callerId */ private _callerId; /** * 当次通话邀请者 ID * 发起邀请为当前用户 ID、收到邀请为 senderUserId、收到人员变更邀请为消息体中 senderUserId */ private _inviterId; /** * 是否是跨 appkey */ private _isCrossAppkey; private _hungupPushTitle; private _hungupPushContent; constructor(_context: RTCPluginContext, _runtime: IRuntime, _logger: ILogger, _callMsgHandler: CallMessageHandler, _channelId: string, _conversationType: ConversationType, _targetId: string, _mediaType: RCCallMediaType, _callId: string); /** * 获取校正后超时时间 */ private _getTimeout; private _clearTimerById; /** * 通知 call 层房间状态变更及原因 */ private _notifyStateChange; /** * 通知 call 层人员状态变更及原因 */ private _notifyUserStateChange; private _otherClientHandle; /** * 正在通话中,且不是当前已接通用户设备(deviceId)发来的消息 */ private _isRemoteInvalidMsg; private _onRinging; private _onAccept; private _onMediaModify; private _onHungup; /** * 注册事件监听 * @params watchers */ registerEventListener(watchers: ICallStateMachineWatchers): void; /** * 收到 invite 消息时状态机更新(CallEngine 内部调用) * @param message 接收消息 */ __onInvite(message: IReceivedMessage): void; /** * 收到 memberModify 消息时状态机更新(CallEngine 内部调用) * @param message 接收消息 */ __onMemberModify(message: IReceivedMessage): void; /** * 处理已有 session ,不允许再接听新会话情况 */ __handleInviteInSession(): void; /** * 主动呼叫 (CallEngine 内部调用) * @param userIds 被邀请用户 ID 列表 * @param extra 消息的扩展信息 * @param pushTitle 通知的标题 * @param pushContent 通知的内容 */ __call(userIds: string[], extra?: string, pushTitle?: string, pushContent?: string, isCrossAppkey?: boolean): Promise<{ code: RCCallErrorCode; }>; /** * 接听 */ accept(): Promise<{ code: RCCallErrorCode; }>; /** * 群呼叫中继续邀请 * @param userIds 被邀请用户 ID 列表 */ invite(userIds: string[], options?: IInviteOptions): Promise<{ code: RCCallErrorCode; }>; private _hungupHandle; /** * 挂断 */ hungup(pushTitle?: string, pushContent?: string): Promise<{ code: RCCallErrorCode; }>; /** * 修改通话媒体类型 * @param mediaType RCCallMediaType.AUDIO 改为音频通话 | RCCallMediaType.AUDIO_VIDEO 改为音视频通话 */ changeMediaType(mediaType: RCCallMediaType): Promise<{ code: RCCallErrorCode; }>; /** * 用户加入通话补偿机制(rtc userJoin 事件触发) * 主叫呼叫后,未收到被叫 accept 消息,但收到了 userJoin 同样补偿更新用户、房间状态、呼叫计时器 */ userJoin(userIds: string[]): void; /** * 用户离开通话补偿机制(rtc userLeave、kickOff 事件触发) * 通话中远端用户挂断,挂断消息未到,但是监听到 rtc userLeave 同样补偿更新用户、房间状态 */ userLeave(userIds: string[]): void; /** * Call 层己方异常失败后调用的方法 * 触发时机:音视频服务异常、获取资源失败、加入 RTC 房间失败、发布|订阅失败 */ close(reason: RCCallEndReason): void; setHungupPushConfig(pushConfig?: string, pushContent?: string): void; /** * 通话唯一标识 */ getCallId(): string; /** * 多组织 ID */ getChannelId(): string; /** * 目标 ID,单呼对方人员 Id, 群呼群组 Id */ getTargetId(): string; /** * 获取会话类型 */ getConversationType(): ConversationType; /** * 获取远端成员 ID 列表 */ getRemoteUserIds(): string[]; /** * 获取远端成员信息列表 */ getRemoteUsers(): IUserData[]; /** * 获取房间状态 */ getState(): RCCallSessionState; /** * 获取人员状态 */ getUserState(userId: string): RCCallUserState; /** * 获取会话发起者 Id */ getCallerId(): string; /** * 获取当次会话邀请者 Id */ getInviterId(): string; /** * 获取当前通话媒体类型 */ getMediaType(): RCCallMediaType; /** * 通话挂断后可调用 */ getSummary(): IEndSummary; } //# sourceMappingURL=StateMachine.d.ts.map