@rongcloud/plugin-call 5.2.3-enterprise.1 → 5.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ConversationType, IReceivedMessage, EventEmitter, RTCPluginContext, IRuntime, ILogger, RTCJoinType, LogLevel, LogL, BasicLogger, IRTCJoinedInfo, IPluginGenerator } from '@rongcloud/engine';
1
+ import { ILogger, ConversationType, RTCJoinType, LogLevel, LogL, IPushConfig as IPushConfig$1, IReceivedMessage, EventEmitter, RTCPluginContext, IRuntime, BasicLogger, IRTCJoinedInfo, IPluginGenerator } from '@rongcloud/engine';
2
2
  import { RCRTCClient, IMicphoneAudioProfile, RCTrack, RCRTCCode, IRCRTCStateReport, RCRTCPingResult, RCLocalTrack, ICameraVideoProfile } from '@rongcloud/plugin-rtc';
3
3
  export { IRCRTCStateReport } from '@rongcloud/plugin-rtc';
4
4
 
@@ -84,7 +84,11 @@ declare enum RCCallErrorCode {
84
84
  /**
85
85
  * 不在room中禁用音视频
86
86
  */
87
- NOT_IN_ROOM_ERROR = 53312
87
+ NOT_IN_ROOM_ERROR = 53312,
88
+ /**
89
+ * 参数错误
90
+ */
91
+ PARAM_ERROR = 53313
88
92
  }
89
93
 
90
94
  /**
@@ -280,1248 +284,1224 @@ declare enum RCCallUserState {
280
284
  KEEPING = 2
281
285
  }
282
286
 
283
- interface IEndSummary {
287
+ /**
288
+ * 产生session的场景
289
+ */
290
+ declare enum ProduceTypes {
284
291
  /**
285
- * 通话类型
292
+ * 主叫
286
293
  */
287
- conversationType: ConversationType;
294
+ CALLER = 1,
288
295
  /**
289
- * 多组织 ID
296
+ * 被叫
290
297
  */
291
- channelId: string;
298
+ CALLEE = 2
299
+ }
300
+
301
+ declare class RCCallSession {
292
302
  /**
293
- * 目标 ID
303
+ * 状态机实例
294
304
  */
295
- targetId: string;
305
+ private _stateMachine;
296
306
  /**
297
- * 通话媒体类型
307
+ * rtc实例
298
308
  */
299
- mediaType: RCCallMediaType;
309
+ private readonly _rtcClient;
310
+ private readonly _logger;
300
311
  /**
301
- * 通话开始时间戳
312
+ * session的其它选项
302
313
  */
303
- beginTimestamp: number;
314
+ private _options;
304
315
  /**
305
- * 通话结束时间戳
316
+ * RTC房间实例
306
317
  */
307
- endTimestamp: number;
318
+ private _room;
308
319
  /**
309
- * 通话时间
320
+ * 用户传进来的 对session的监听 (要在RCCallClient的_onInvite里判断,要求执行完onSession必须注册session的监听,所以这里是public)
310
321
  */
311
- duration: number;
322
+ _listener: ISessionListener | null;
312
323
  /**
313
- * 通话结束原因
324
+ * RTC订阅、发布重试的次数
314
325
  */
315
- endReason: RCCallEndReason;
316
- }
317
- interface IUserProfile {
326
+ private readonly _RETRYCOUNT;
318
327
  /**
319
- * 用户名
328
+ * 加入房间定时器
320
329
  */
321
- name?: string;
330
+ private joinRoomTimer;
331
+ constructor(
322
332
  /**
323
- * 用户头像地址
333
+ * 状态机实例
324
334
  */
325
- portraitUri?: string;
335
+ _stateMachine: RCCallStateMachine,
326
336
  /**
327
- * user info 中附加信息
337
+ * rtc实例
328
338
  */
329
- extra?: string;
330
- }
331
- /**
332
- * 通话发起者信息
333
- */
334
- interface ISenderInfo extends IUserProfile {
339
+ _rtcClient: RCRTCClient, _logger: ILogger,
335
340
  /**
336
- * 发起者 userId
341
+ * session的其它选项
337
342
  */
338
- userId: string;
339
- }
340
- interface IUserData extends IUserProfile {
343
+ _options?: IRCCallSessionOptions);
341
344
  /**
342
- * 用户 ID
345
+ * 加入房间
343
346
  */
344
- userId: string;
347
+ private _joinRoom;
345
348
  /**
346
- * 用户 状态
349
+ * (初始化房间的时候) 订阅远程的流,把远程的流抛给用户
347
350
  */
348
- state: RCCallUserState;
351
+ private _subscribeInRoomRemoteTrack;
349
352
  /**
350
- * 是否是通话发起者
353
+ * 可以重试的订阅
354
+ * @param params.tracks tracks
355
+ * @param params.isAllowSubscribeRetry 是否允许重试
356
+ * @param params.count 允许重试的次数
351
357
  */
352
- isCaller: boolean;
358
+ private _subscribeRetry;
353
359
  /**
354
- * 是否是远端用户
360
+ * 发布本地资源的逻辑
361
+ *
355
362
  */
356
- isRemote: boolean;
363
+ private _publish;
357
364
  /**
358
- * 用户 deviceId
359
- * 主要用于记录远端的用户的 deviceId, 用于处理多端消息
365
+ * 可以重试的发布
366
+ * @param params.tracks tracks
367
+ * @param params.isAllowPublishRetry 是否允许重试
368
+ * @param params.count 允许重试的次数
360
369
  */
361
- deviceId?: string;
362
- }
363
- interface IUserStateChangeInfo {
370
+ private _publishRetry;
364
371
  /**
365
- * 用户数据
372
+ * 退出房间
366
373
  */
367
- user: IUserData;
374
+ private _leaveRoom;
368
375
  /**
369
- * 挂断原因( user.state 为 RCCallUserState.NONE 时返回)
376
+ * 出现异常后要处理的逻辑,
377
+ * @param endReason 原因
370
378
  */
371
- reason?: RCCallEndReason;
372
- }
373
- interface IStateChangeInfo {
379
+ private _exceptionClose;
374
380
  /**
375
- * 状态
381
+ * 用户调用的,注册session上的监听
376
382
  */
377
- state: RCCallSessionState;
383
+ registerSessionListener(listener: ISessionListener): void;
378
384
  /**
379
- * state RCCallSessionState.END 时返回
385
+ * 调RTC API 获得本地流
380
386
  */
381
- reason?: RCCallEndReason;
382
- }
383
- declare type IInvitedUsers = ISenderInfo;
384
- interface IMemberModifyInfo {
387
+ private _getLocalTrackCore;
388
+ private _getLocalTrack;
385
389
  /**
386
- * 发起者信息
390
+ * 通话中更换音频设备
387
391
  */
388
- sender: ISenderInfo;
392
+ changeAudioDevice(audioConstraints?: IMicphoneAudioProfile): Promise<{
393
+ code: RCCallErrorCode;
394
+ }>;
389
395
  /**
390
- * 被邀请用户 ID 列表
396
+ * 群呼叫中继续邀请
397
+ * @param userIds 被邀请用户 ID 列表
398
+ * @param options.extra 消息的扩展信息
399
+ * @deprecated 5.1.2 废弃 options.pushTitle 通知的标题
400
+ * @deprecated 5.1.2 废弃 options.pushContent 通知内容
391
401
  */
392
- invitedUsers: IInvitedUsers[];
393
- }
394
- interface IMediaModifyInfo {
402
+ invite(userIds: string[], options?: IInviteOptions): Promise<{
403
+ code: RCCallErrorCode;
404
+ }>;
395
405
  /**
396
- * 发起者信息
406
+ * 同意接听
397
407
  */
398
- sender: ISenderInfo;
408
+ accept(constraints?: IMediaStreamConstraints): Promise<{
409
+ code: RCCallErrorCode;
410
+ }>;
399
411
  /**
400
- * 修改后的媒体类型
412
+ * 挂断
401
413
  */
402
- mediaType: RCCallMediaType;
403
- }
404
- interface ICallStateMachineWatchers {
414
+ hungup(): Promise<{
415
+ code: RCCallErrorCode;
416
+ }>;
405
417
  /**
406
- * 用户状态变更
407
- * @param info
418
+ * 通话媒体变更
419
+ * @param mediaType RCCallMediaType.AUDIO 改为音频通话 | RCCallMediaType.AUDIO_VIDEO 改为音视频通话
408
420
  */
409
- onUserStateChange: (info: IUserStateChangeInfo) => void;
421
+ _changeMediaType(mediaType: RCCallMediaType): Promise<{
422
+ code: RCCallErrorCode;
423
+ }>;
410
424
  /**
411
- * 房间状态变更
412
- * @param info
425
+ * 获得本地视频
413
426
  */
414
- onStateChange: (info: IStateChangeInfo) => void;
427
+ private _getLocalVideoTracks;
415
428
  /**
416
- * 收到响铃
417
- * @param sender 发起用户信息
429
+ * 获得本地音频
418
430
  */
419
- onRinging: (sender: ISenderInfo) => void;
431
+ private _getLocalAudioTracks;
420
432
  /**
421
- * 收到接听
422
- * @param sender 发起用户信息
433
+ * 把通话的MediaType升级到音视频
423
434
  */
424
- onAccept: (sender: ISenderInfo) => void;
435
+ private _setMediaTypeToAudioAndVideo;
425
436
  /**
426
- * 收到挂断
437
+ * 把通话的MediaType降级到音频
438
+ * @param isSendMesssage 是否需要发消息, 默认发消息
427
439
  */
428
- onHungup: (sender: ISenderInfo, reason: RCCallEndReason) => void;
440
+ private _setMediaTypeToAudio;
429
441
  /**
430
- * 收到人员变更
431
- * @param sender 发起用户信息
442
+ * 通话降级,目前需求只做通话降级,音视频可以降级为音频,音频不能升到音视频, 发消息成功才算降级成功
443
+ *
432
444
  */
433
- onMemberModify: (info: IMemberModifyInfo) => void;
445
+ descendAbility(): Promise<{
446
+ code: RCCallErrorCode;
447
+ }>;
434
448
  /**
435
- * 收到通话类型变更
436
- * @param sender 发起用户信息
449
+ * 禁用视频track
437
450
  */
438
- onMediaModify: (info: IMediaModifyInfo) => void;
451
+ disableVideoTrack(): Promise<{
452
+ code: RCCallErrorCode;
453
+ }>;
439
454
  /**
440
- * 是否跨appkey
441
- * @param ifCross 是否为跨appkey通信
455
+ * 启用视频track
442
456
  */
443
- crossAppkey: (ifCross: boolean) => void;
444
- }
445
- /**
446
- * 发送邀请时的可选项
447
- */
448
- interface IInviteOptions {
457
+ enableVideoTrack(): Promise<{
458
+ code: RCCallErrorCode;
459
+ }>;
449
460
  /**
450
- * 消息的扩展信息
461
+ * 禁用音频track
451
462
  */
452
- extra?: string;
463
+ disableAudioTrack(): Promise<{
464
+ code: RCCallErrorCode;
465
+ } | undefined>;
453
466
  /**
454
- * 对方显示通知的标题
467
+ * 启用音频track
455
468
  */
456
- pushTitle?: string;
469
+ enableAudioTrack(): Promise<{
470
+ code: RCCallErrorCode;
471
+ } | undefined>;
457
472
  /**
458
- * 对方显示的通知内容
473
+ * 销毁本地流
459
474
  */
460
- pushContent?: string;
461
- }
462
-
463
- /**
464
- * 注释
465
- * TODO
466
- */
467
- declare enum MsgCallStatus {
468
- OUTGOING = 1,
469
- INCOMING = 2,
470
- RINGING = 3,
471
- CONNECTED = 4,
472
- IDLE = 5,
473
- ACCEPTED = 6
474
- }
475
-
476
- interface IOfflineRecord {
477
- channelId: string;
478
- conversationType: ConversationType;
479
- targetId: string;
480
- mediaType: RCCallMediaType;
481
- callId: string;
482
- inviterId: string;
483
- endReason: RCCallEndReason;
484
- beginTimestamp: number;
485
- endTimestamp: number;
486
- duration: number;
487
- }
488
-
489
- interface ISendBaseOptions {
475
+ private _destroyTracks;
490
476
  /**
491
- * 组织 ID
477
+ * 向外抛出本地流
492
478
  */
493
- channelId: string;
479
+ private _notifyTrackReady;
494
480
  /**
495
- * 会话类型
481
+ * 房间上注册事件
496
482
  */
497
- conversationType: ConversationType;
483
+ private _registerRoomEventListener;
498
484
  /**
499
- * 目标 ID (单聊:对方 Id;群聊: 群组 Id)
485
+ * 注册房间质量数据监听器
500
486
  */
501
- targetId: string;
502
- }
503
- interface IExistedUserPofiles {
487
+ private _registerReportListener;
504
488
  /**
505
- * 用户 ID
489
+ * 通话唯一标识
506
490
  */
507
- userId: string;
491
+ getSessionId(): string;
508
492
  /**
509
- * 通话类型
493
+ * 获取房间当前会话 Id,当房间内已无成员时房间会回收,重新加入时 sessionId 将更新,(用户录制资源用的)
510
494
  */
511
- mediaType: RCCallMediaType;
495
+ getRTCSessionId(): string | null;
512
496
  /**
513
- * 与移动端一致的通话状态
497
+ * 目标 ID,单呼对方人员 Id, 群呼群组 Id
514
498
  */
515
- callStatus: MsgCallStatus;
499
+ getTargetId(): string;
516
500
  /**
517
- * PC 端 mediaId 直接传 userId, mediaId iOS 需要解出来渲染视图用。
501
+ * 获取会话类型
518
502
  */
519
- mediaId?: string;
520
- }
521
- interface IMsgListener {
522
- onInvite?: (msg: IReceivedMessage) => void;
523
- onRinging?: (msg: IReceivedMessage) => void;
524
- onAccept?: (msg: IReceivedMessage) => void;
525
- onMemberModify?: (msg: IReceivedMessage) => void;
526
- onMediaModify?: (msg: IReceivedMessage) => void;
527
- onHungup?: (msg: IReceivedMessage) => void;
528
- sendAccept?: (info: {
529
- callId: string;
530
- }) => void;
531
- onOfflineRecord?: (record: IOfflineRecord) => void;
532
- }
533
- interface IInviteMsgOptions extends ISendBaseOptions {
503
+ getConversationType(): ConversationType;
534
504
  /**
535
- * 呼叫 ID( RTC 房间 ID )
505
+ * 组织 ID
536
506
  */
537
- callId: string;
507
+ getChannelId(): string;
538
508
  /**
539
- * 通话媒体类型
509
+ * 房间人员列表,不包含本端信息
540
510
  */
541
- mediaType: RCCallMediaType;
511
+ getRemoteUsers(): IUserData[];
542
512
  /**
543
- * 被邀请人用户 ID 列表
513
+ * 房间人员列表,不包含本端信息
514
+ */
515
+ getUsers(): IUserData[];
516
+ /**
517
+ * 获取人员状态
544
518
  */
545
- inviteUserIds: string[];
519
+ getUserState(userId: string): RCCallUserState;
546
520
  /**
547
- * 扩展信息
521
+ * 获取session状态
548
522
  */
549
- extra: string;
523
+ getState(): RCCallSessionState;
550
524
  /**
551
- * 对方显示通知的标题
525
+ * 获得会话发起者id
552
526
  */
553
- pushTitle?: string;
527
+ getCallerId(): string;
528
+ /**
529
+ * 获得mediaType
530
+ */
531
+ getMediaType(): RCCallMediaType;
532
+ }
533
+
534
+ interface ISender {
535
+ userId: string;
554
536
  /**
555
- * 对方显示的通知内容
537
+ * 用户名
556
538
  */
557
- pushContent?: string;
539
+ name?: string;
558
540
  /**
559
- * 跨appkey参数
560
- */
561
- roomType?: number;
541
+ * 用户头像地址
542
+ */
543
+ portraitUri?: string;
544
+ /**
545
+ * user info 中附加信息
546
+ */
547
+ extra?: string;
562
548
  }
563
- interface IMemberModifyMsgOptions extends ISendBaseOptions {
549
+ interface IMuteUser extends ISender {
564
550
  /**
565
- * 呼叫 ID( RTC 房间 ID )
551
+ * 是否禁用
566
552
  */
567
- callId: string;
553
+ muted: boolean;
568
554
  /**
569
- * 通话媒体类型
555
+ * track类型
570
556
  */
571
- mediaType: RCCallMediaType;
557
+ kind: string;
572
558
  /**
573
- * 被邀请人用户 ID 列表
559
+ * trackId
574
560
  */
575
- inviteUserIds: string[];
561
+ trackId: string;
562
+ }
563
+ /**
564
+ * CallLib 初始化参数
565
+ */
566
+ interface IRCCallInitOptions {
576
567
  /**
577
- * 获取会话发起者 Id
568
+ * RTC实例
578
569
  */
579
- callerId: string;
570
+ rtcClient: RCRTCClient;
580
571
  /**
581
- * 当前通话中的所有人,包含未接听用户
572
+ * 收到邀请后,产生新的session
582
573
  */
583
- existedUserPofiles: IExistedUserPofiles[];
574
+ onSession: (session: RCCallSession, extra?: string) => void;
584
575
  /**
585
- * 当前通话中的所有人,包含未接听用户
576
+ * session已关闭
586
577
  */
587
- directionalUserIdList: string[];
578
+ onSessionClose: (session: RCCallSession, summary?: IEndSummary) => void;
588
579
  /**
589
- * 扩展信息
580
+ * 离线期间收到的呼叫记录
581
+ * @param record
582
+ * @returns
590
583
  */
591
- extra: string;
584
+ onOfflineRecord?: (record: IOfflineRecord) => void;
592
585
  /**
593
- * 对方显示通知的标题
586
+ * 是否允许接听新呼叫,当前正在通话,如果收到新的邀请,是直接挂断,还是允许选择, 默认值false,直接挂断新的session
587
+ *
588
+ * 暂不对外暴露
594
589
  */
595
- pushTitle?: string;
596
590
  /**
597
- * 对方显示的通知内容
598
- */
599
- pushContent?: string;
600
- }
601
- interface IRingingMsgOptions extends ISendBaseOptions {
591
+ * 是否允许订阅重试, 默认为false
592
+ */
593
+ isAllowSubscribeRetry?: boolean;
602
594
  /**
603
- * 呼叫 ID( RTC 房间 ID )
595
+ * 是否允许发布重试, 默认为false
604
596
  */
605
- callId: string;
597
+ isAllowPublishRetry?: boolean;
606
598
  /**
607
- * 群呼中需要接收响铃的用户 ID 列表
599
+ * 禁用视频时关摄像头, 默认false
608
600
  */
609
- userIds?: string[];
610
- }
611
- interface IAcceptMsgOptions extends ISendBaseOptions {
601
+ isOffCameraWhenVideoDisable?: boolean;
612
602
  /**
613
- * 呼叫 ID( RTC 房间 ID )
603
+ * RTC 房间加入类型
614
604
  */
615
- callId: string;
605
+ joinType?: RTCJoinType;
616
606
  /**
617
- * 通话媒体类型
607
+ * 允许降级获得流,获得音视频不成功 ,降级获得音频
618
608
  */
619
- mediaType: RCCallMediaType;
609
+ isAllowDemotionGetStream?: boolean;
620
610
  /**
621
- * 群呼中需要接收接听消息的用户 ID 列表
611
+ * 该参数已废弃,请使用 `logOutputLevel` 替代
612
+ * @deprecated - version 5.2.2
622
613
  */
623
- userIds: string[];
624
- }
625
- interface IHungupMsgOptions extends ISendBaseOptions {
614
+ logLevel?: LogLevel;
626
615
  /**
627
- * 呼叫 ID( RTC 房间 ID )
616
+ * 日志输出等级
617
+ * @since version 5.2.2
628
618
  */
629
- callId: string;
619
+ logOutputLevel?: LogL.DEBUG | LogL.INFO | LogL.WARN | LogL.ERROR;
630
620
  /**
631
- * 挂断原因
621
+ * 该参数已废弃
622
+ * @deprecated - version 5.2.0
632
623
  */
633
- reason: RCCallEndReason;
624
+ logStdout?: (logLevel: LogLevel, content: string) => void;
634
625
  /**
635
- * 群呼中需要接收挂断消息的用户 ID 列表
626
+ * 语言设置 (推送), 不传默认为中文
636
627
  */
637
- userIds: string[];
628
+ lang?: RCCallLanguage;
629
+ }
630
+ declare type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
631
+ /**
632
+ * 呼叫、挂断推送信息
633
+ */
634
+ declare type IPushConfig = Merge<IPushConfig$1, {
635
+ pushData?: string;
636
+ }>;
637
+ /**
638
+ * session上的监听
639
+ */
640
+ interface ISessionListener {
638
641
  /**
639
- * 对方显示通知的标题
642
+ * 当对方已响铃
640
643
  */
641
- pushTitle?: string;
644
+ onRinging: (sender: ISender, session: RCCallSession) => void;
642
645
  /**
643
- * 对方显示的通知内容
646
+ * 当对方已同意
644
647
  */
645
- pushContent?: string;
646
- }
647
- interface IMediaModifyMsgOptions extends ISendBaseOptions {
648
+ onAccept: (sender: ISender, session: RCCallSession) => void;
648
649
  /**
649
- * 呼叫 ID( RTC 房间 ID )
650
+ * 当对方已挂断
650
651
  */
651
- callId: string;
652
+ onHungup: (sender: ISender, reason: RCCallEndReason, session: RCCallSession) => void;
652
653
  /**
653
- * 通话媒体类型
654
+ * 群组通话,人员改变
654
655
  */
655
- mediaType: RCCallMediaType;
656
+ onMemberModify: (sender: ISender, invitedUsers: IInvitedUsers[], session: RCCallSession) => void;
656
657
  /**
657
- * 群呼中需要媒体变更消息的用户 ID 列表
658
+ * 通话降级
658
659
  */
659
- userIds: string[];
660
- }
661
-
662
- declare type MsgListenerKeys = keyof IMsgListener;
663
- /**
664
- * 消息接收处理: 在线消息、离线消息
665
- * 发送消息处理: 发送不同类型消息封装
666
- */
667
- declare class CallMessageHandler extends EventEmitter {
668
- private readonly _context;
669
- private readonly _runtime;
670
- private readonly _logger;
660
+ onMediaModify: (sender: ISender, mediaType: RCCallMediaType, session: RCCallSession) => void;
671
661
  /**
672
- * 离线消息处理时间间隔
662
+ * 当接到流
673
663
  */
674
- private readonly _offlineMsgItv;
675
- private readonly _getStateMachine;
676
- private _watchers;
677
- private _userInfo;
678
- private _msgBufferList;
679
- private _hadHandleMsgTimer;
680
- private _offlineRecorder;
681
- private _deviceId;
682
- constructor(_context: RTCPluginContext, _runtime: IRuntime, _logger: ILogger,
664
+ onTrackReady: (track: RCTrack, session?: RCCallSession) => void;
683
665
  /**
684
- * 离线消息处理时间间隔
666
+ * 关闭 或 开启 音频
685
667
  */
686
- _offlineMsgItv: number, _getStateMachine: (callId: string) => RCCallStateMachine | null);
687
- private _onMessage;
668
+ onAudioMuteChange: (muteUser: IMuteUser, session: RCCallSession) => void;
688
669
  /**
689
- * 在线消息抛给状态机处理
670
+ * 关闭 或 开启 视频
690
671
  */
691
- private _onRecvOnlineCallMsg;
672
+ onVideoMuteChange: (muteUser: IMuteUser, session: RCCallSession) => void;
692
673
  /**
693
- * 消息 buffer 列表处理逻辑
694
- * 1、每 20ms 检查一次 buffer list
695
- * 2、取出已经延迟 200 的消息列表进行消费 | 无延迟 200ms 内消息直接递归
696
- * 3、消费分为 离线消息消费逻辑、在线消息消费逻辑,消费后递归
674
+ * 资源订阅失败
697
675
  */
698
- private _handleBufferMsgs;
699
- registerEventListener(listener: IMsgListener): void;
700
- registerStateMachineEvent(callId: string, funcName: MsgListenerKeys, event: (...args: any[]) => void): void;
701
- unregisterStateMachineEvent(callId: string): void;
702
- registerUserInfo(userInfo: IUserProfile): void;
676
+ onTrackSubscribeFail?: (code: RCRTCCode, session: RCCallSession) => void;
703
677
  /**
704
- * 发送 IM 消息
705
- */
706
- private _sendCallMessage;
678
+ * 资源发布失败
679
+ */
680
+ onTrackPublishFail?: (code: RCRTCCode, session: RCCallSession) => void;
707
681
  /**
708
- * 发送邀请消息
682
+ * 用于接收RTC状态数据报告
709
683
  */
710
- sendInvite(options: IInviteMsgOptions): Promise<{
711
- code: RCCallErrorCode;
712
- message?: IReceivedMessage | undefined;
713
- }>;
684
+ onRTCStateReport?: (report: IRCRTCStateReport, session: RCCallSession) => void;
714
685
  /**
715
- * 发送人员变更消息
686
+ * RTC 每次 Ping 结果
716
687
  */
717
- sendMemeberModify(options: IMemberModifyMsgOptions): Promise<{
718
- code: RCCallErrorCode;
719
- message?: IReceivedMessage | undefined;
720
- }>;
688
+ onPing?: (result: RCRTCPingResult, session: RCCallSession) => void;
721
689
  /**
722
- * 发送响铃消息
690
+ * ~ICE 连接状态变更通知~
691
+ * @since version 5.1.5
723
692
  */
724
- sendRinging(options: IRingingMsgOptions): Promise<{
725
- code: RCCallErrorCode;
726
- message?: IReceivedMessage | undefined;
727
- }>;
693
+ onICEConnectionStateChange?: (state: RTCIceConnectionState, session: RCCallSession) => void;
694
+ }
695
+ /**
696
+ * 创建session的options
697
+ */
698
+ interface IRCCallSessionOptions {
728
699
  /**
729
- * 发送同意接听消息
700
+ * 本地资源,用户主动发起会话的时候,会先获得本地资源
730
701
  */
731
- sendAccept(options: IAcceptMsgOptions): Promise<{
732
- code: RCCallErrorCode;
733
- message?: IReceivedMessage | undefined;
734
- }>;
702
+ localTracks?: RCLocalTrack[];
735
703
  /**
736
- * 发送挂断消息
704
+ * 是否允许订阅重试, 默认为false
737
705
  */
738
- sendHungup(options: IHungupMsgOptions): Promise<{
739
- code: RCCallErrorCode;
740
- message?: IReceivedMessage | undefined;
741
- }>;
706
+ isAllowSubscribeRetry?: boolean;
742
707
  /**
743
- * 发送媒体变更消息
708
+ * 是否允许发布重试, 默认为false
744
709
  */
745
- sendMediaModify(options: IMediaModifyMsgOptions): Promise<{
746
- code: RCCallErrorCode;
747
- message?: IReceivedMessage | undefined;
748
- }>;
749
- }
750
-
751
- declare class RCCallStateMachine {
752
- private readonly _context;
753
- private readonly _runtime;
754
- private readonly _logger;
755
- private readonly _callMsgHandler;
756
- private readonly _channelId;
757
- private readonly _conversationType;
758
- private readonly _targetId;
759
- private _mediaType;
760
- private readonly _callId;
710
+ isAllowPublishRetry?: boolean;
761
711
  /**
762
- * 房间状态
712
+ * 禁用视频时关摄像头, 默认false
763
713
  */
764
- private _sessionState;
714
+ isOffCameraWhenVideoDisable?: boolean;
765
715
  /**
766
- * 用户状态及信息
716
+ * RTC 房间加入类型
767
717
  */
768
- private _userInfo;
718
+ joinType?: RTCJoinType;
769
719
  /**
770
- * 用户计时器映射
720
+ * 允许降级获得流,获得音视频不成功 ,降级获得音频
771
721
  */
772
- private _userTimers;
722
+ isAllowDemotionGetStream?: boolean;
773
723
  /**
774
- * 监听器
724
+ * 产生session的场景,是主叫产生 或 被叫产生
775
725
  */
776
- private _watchers;
726
+ produceType?: ProduceTypes;
727
+ isCrossAppkey?: boolean;
777
728
  /**
778
- * 呼叫超时时间 (单位:毫秒)
729
+ * 呼叫推送配置
779
730
  */
780
- private _callTimeout;
731
+ callPushConfig?: IPushConfig;
781
732
  /**
782
- * 通话建立开始时间
733
+ * 挂断推送配置
783
734
  */
784
- private _beginTimestamp;
735
+ hungupPushConfig?: IPushConfig;
736
+ }
737
+ interface IRCTrackBitrate {
785
738
  /**
786
- * 通话结束时间
739
+ * 最大码率
787
740
  */
788
- private _endTimestamp;
741
+ max: number;
789
742
  /**
790
- * 通话结束原因
743
+ * 最小码率
791
744
  */
792
- private _endReason;
745
+ min: number;
793
746
  /**
794
- * 主叫 ID
795
- * 发起邀请为当前用户 ID
796
- * 收到邀请为 senderUserId
797
- * 收到人员变更邀请为消息体中 callerId
747
+ * 上行起始码率
798
748
  */
799
- private _callerId;
749
+ start?: number;
750
+ }
751
+ /**
752
+ * RCCallClient call方法的传参
753
+ */
754
+ interface IRCCallParams {
755
+ targetId: string;
800
756
  /**
801
- * 当次通话邀请者 ID
802
- * 发起邀请为当前用户 ID、收到邀请为 senderUserId、收到人员变更邀请为消息体中 senderUserId
757
+ * 音频 or 音视频, 默认音频
803
758
  */
804
- private _inviterId;
759
+ mediaType: RCCallMediaType;
805
760
  /**
806
- * 是否是跨 appkey
761
+ * session上要注册的监听事件
807
762
  */
808
- private _isCrossAppkey;
809
- private _hungupPushTitle;
810
- private _hungupPushContent;
811
- constructor(_context: RTCPluginContext, _runtime: IRuntime, _logger: ILogger, _callMsgHandler: CallMessageHandler, _channelId: string, _conversationType: ConversationType, _targetId: string, _mediaType: RCCallMediaType, _callId: string);
763
+ listener: ISessionListener;
812
764
  /**
813
- * 获取校正后超时时间
765
+ * 组织 Id,可选
814
766
  */
815
- private _getTimeout;
816
- private _clearTimerById;
767
+ channelId?: string;
817
768
  /**
818
- * 通知 call 层房间状态变更及原因
769
+ * 用于获取己方媒体资源的参数
819
770
  */
820
- private _notifyStateChange;
771
+ constraints?: {
772
+ video?: ICameraVideoProfile;
773
+ audio: IMicphoneAudioProfile;
774
+ };
821
775
  /**
822
- * 通知 call 层人员状态变更及原因
776
+ * 消息的扩展信息
823
777
  */
824
- private _notifyUserStateChange;
825
- private _otherClientHandle;
778
+ extra?: string;
826
779
  /**
827
- * 正在通话中,且不是当前已接通用户设备(deviceId)发来的消息
780
+ * 对方显示通知的标题
828
781
  */
829
- private _isRemoteInvalidMsg;
830
- private _onRinging;
831
- private _onAccept;
832
- private _onMediaModify;
833
- private _onHungup;
782
+ pushTitle?: string;
834
783
  /**
835
- * 注册事件监听
836
- * @params watchers
784
+ * 对方显示的通知内容
837
785
  */
838
- registerEventListener(watchers: ICallStateMachineWatchers): void;
786
+ pushContent?: string;
839
787
  /**
840
- * 收到 invite 消息时状态机更新(CallEngine 内部调用)
841
- * @param message 接收消息
788
+ * 设置码率
842
789
  */
843
- __onInvite(message: IReceivedMessage): void;
790
+ bitrate?: {
791
+ video?: IRCTrackBitrate;
792
+ audio?: number;
793
+ };
844
794
  /**
845
- * 收到 memberModify 消息时状态机更新(CallEngine 内部调用)
846
- * @param message 接收消息
795
+ * 是否为跨 appkey 通话
847
796
  */
848
- __onMemberModify(message: IReceivedMessage): void;
797
+ isCrossAppkey?: boolean;
798
+ }
799
+ interface IMediaStreamConstraints {
800
+ video?: ICameraVideoProfile;
801
+ audio?: IMicphoneAudioProfile;
802
+ }
803
+ /**
804
+ * RCCallClient callInGroup方法的传参
805
+ */
806
+ interface IRCCallInGroupParams {
807
+ targetId: string;
808
+ userIds: string[];
809
+ mediaType: RCCallMediaType;
849
810
  /**
850
- * 处理已有 session ,不允许再接听新会话情况
811
+ * session上要注册的监听事件
851
812
  */
852
- __handleInviteInSession(): void;
813
+ listener: ISessionListener;
853
814
  /**
854
- * 主动呼叫 (CallEngine 内部调用)
855
- * @param userIds 被邀请用户 ID 列表
856
- * @param extra 消息的扩展信息
857
- * @param pushTitle 通知的标题
858
- * @param pushContent 通知的内容
815
+ * 组织 Id,可选
859
816
  */
860
- __call(userIds: string[], extra?: string, pushTitle?: string, pushContent?: string, isCrossAppkey?: boolean): Promise<{
861
- code: RCCallErrorCode;
862
- }>;
817
+ channelId?: string;
863
818
  /**
864
- * 接听
819
+ * 用于获取己方媒体资源的参数
865
820
  */
866
- accept(): Promise<{
867
- code: RCCallErrorCode;
868
- }>;
821
+ constraints?: IMediaStreamConstraints;
869
822
  /**
870
- * 群呼叫中继续邀请
871
- * @param userIds 被邀请用户 ID 列表
823
+ * 消息的扩展信息
872
824
  */
873
- invite(userIds: string[], options?: IInviteOptions): Promise<{
874
- code: RCCallErrorCode;
875
- }>;
876
- private _hungupHandle;
825
+ extra?: string;
877
826
  /**
878
- * 挂断
827
+ * 对方显示通知的标题
879
828
  */
880
- hungup(pushTitle?: string, pushContent?: string): Promise<{
881
- code: RCCallErrorCode;
882
- }>;
829
+ pushTitle?: string;
883
830
  /**
884
- * 修改通话媒体类型
885
- * @param mediaType RCCallMediaType.AUDIO 改为音频通话 | RCCallMediaType.AUDIO_VIDEO 改为音视频通话
886
- */
887
- changeMediaType(mediaType: RCCallMediaType): Promise<{
888
- code: RCCallErrorCode;
889
- }>;
831
+ * 对方显示的通知内容
832
+ */
833
+ pushContent?: string;
890
834
  /**
891
- * 用户加入通话补偿机制(rtc userJoin 事件触发)
892
- * 主叫呼叫后,未收到被叫 accept 消息,但收到了 userJoin 同样补偿更新用户、房间状态、呼叫计时器
835
+ * 设置码率
893
836
  */
894
- userJoin(userIds: string[]): void;
837
+ bitrate?: {
838
+ video?: IRCTrackBitrate;
839
+ audio?: number;
840
+ };
841
+ }
842
+ interface IDeviceChangeParams {
843
+ audio?: IMicphoneAudioProfile;
844
+ video?: ICameraVideoProfile;
845
+ }
846
+
847
+ interface IEndSummary {
895
848
  /**
896
- * 用户离开通话补偿机制(rtc userLeave、kickOff 事件触发)
897
- * 通话中远端用户挂断,挂断消息未到,但是监听到 rtc userLeave 同样补偿更新用户、房间状态
849
+ * 通话类型
898
850
  */
899
- userLeave(userIds: string[]): void;
851
+ conversationType: ConversationType;
900
852
  /**
901
- * Call 层己方异常失败后调用的方法
902
- * 触发时机:音视频服务异常、获取资源失败、加入 RTC 房间失败、发布|订阅失败
853
+ * 多组织 ID
903
854
  */
904
- close(reason: RCCallEndReason): void;
905
- setHungupPushConfig(pushConfig?: string, pushContent?: string): void;
855
+ channelId: string;
906
856
  /**
907
- * 通话唯一标识
857
+ * 目标 ID
908
858
  */
909
- getCallId(): string;
859
+ targetId: string;
910
860
  /**
911
- * 多组织 ID
861
+ * 通话媒体类型
912
862
  */
913
- getChannelId(): string;
863
+ mediaType: RCCallMediaType;
914
864
  /**
915
- * 目标 ID,单呼对方人员 Id, 群呼群组 Id
865
+ * 通话开始时间戳
916
866
  */
917
- getTargetId(): string;
867
+ beginTimestamp: number;
918
868
  /**
919
- * 获取会话类型
869
+ * 通话结束时间戳
920
870
  */
921
- getConversationType(): ConversationType;
871
+ endTimestamp: number;
922
872
  /**
923
- * 获取远端成员 ID 列表
873
+ * 通话时间
924
874
  */
925
- getRemoteUserIds(): string[];
875
+ duration: number;
926
876
  /**
927
- * 获取远端成员信息列表
928
- */
929
- getRemoteUsers(): IUserData[];
930
- /**
931
- * 获取房间状态
877
+ * 通话结束原因
932
878
  */
933
- getState(): RCCallSessionState;
879
+ endReason: RCCallEndReason;
880
+ }
881
+ interface IUserProfile {
934
882
  /**
935
- * 获取人员状态
883
+ * 用户名
936
884
  */
937
- getUserState(userId: string): RCCallUserState;
885
+ name?: string;
938
886
  /**
939
- * 获取会话发起者 Id
887
+ * 用户头像地址
940
888
  */
941
- getCallerId(): string;
889
+ portraitUri?: string;
942
890
  /**
943
- * 获取当次会话邀请者 Id
891
+ * user info 中附加信息
944
892
  */
945
- getInviterId(): string;
893
+ extra?: string;
894
+ }
895
+ /**
896
+ * 通话发起者信息
897
+ */
898
+ interface ISenderInfo extends IUserProfile {
946
899
  /**
947
- * 获取当前通话媒体类型
900
+ * 发起者 userId
948
901
  */
949
- getMediaType(): RCCallMediaType;
902
+ userId: string;
903
+ }
904
+ interface IUserData extends IUserProfile {
950
905
  /**
951
- * 通话挂断后可调用
906
+ * 用户 ID
952
907
  */
953
- getSummary(): IEndSummary;
954
- }
955
-
956
- declare enum RCCallLanguage {
957
- ZH = "zh",
958
- EN = "en"
959
- }
960
-
961
- /**
962
- * 产生session的场景
963
- */
964
- declare enum ProduceTypes {
908
+ userId: string;
965
909
  /**
966
- * 主叫
910
+ * 用户 状态
967
911
  */
968
- CALLER = 1,
912
+ state: RCCallUserState;
969
913
  /**
970
- * 被叫
914
+ * 是否是通话发起者
971
915
  */
972
- CALLEE = 2
973
- }
974
-
975
- declare class RCCallSession {
916
+ isCaller: boolean;
976
917
  /**
977
- * 状态机实例
918
+ * 是否是远端用户
978
919
  */
979
- private _stateMachine;
920
+ isRemote: boolean;
980
921
  /**
981
- * rtc实例
922
+ * 用户 deviceId
923
+ * 主要用于记录远端的用户的 deviceId, 用于处理多端消息
982
924
  */
983
- private readonly _rtcClient;
984
- private readonly _logger;
925
+ deviceId?: string;
926
+ }
927
+ interface IUserStateChangeInfo {
985
928
  /**
986
- * session的其它选项
929
+ * 用户数据
987
930
  */
988
- private _options;
931
+ user: IUserData;
989
932
  /**
990
- * RTC房间实例
933
+ * 挂断原因( user.state 为 RCCallUserState.NONE 时返回)
991
934
  */
992
- private _room;
935
+ reason?: RCCallEndReason;
936
+ }
937
+ interface IStateChangeInfo {
993
938
  /**
994
- * 用户传进来的 对session的监听 (要在RCCallClient的_onInvite里判断,要求执行完onSession必须注册session的监听,所以这里是public)
939
+ * 状态
995
940
  */
996
- _listener: ISessionListener | null;
941
+ state: RCCallSessionState;
997
942
  /**
998
- * RTC订阅、发布重试的次数
943
+ * state 为 RCCallSessionState.END 时返回
999
944
  */
1000
- private readonly _RETRYCOUNT;
945
+ reason?: RCCallEndReason;
946
+ }
947
+ declare type IInvitedUsers = ISenderInfo;
948
+ interface IMemberModifyInfo {
1001
949
  /**
1002
- * 加入房间定时器
950
+ * 发起者信息
1003
951
  */
1004
- private joinRoomTimer;
1005
- constructor(
952
+ sender: ISenderInfo;
1006
953
  /**
1007
- * 状态机实例
954
+ * 被邀请用户 ID 列表
1008
955
  */
1009
- _stateMachine: RCCallStateMachine,
956
+ invitedUsers: IInvitedUsers[];
957
+ }
958
+ interface IMediaModifyInfo {
1010
959
  /**
1011
- * rtc实例
960
+ * 发起者信息
1012
961
  */
1013
- _rtcClient: RCRTCClient, _logger: ILogger,
962
+ sender: ISenderInfo;
1014
963
  /**
1015
- * session的其它选项
964
+ * 修改后的媒体类型
1016
965
  */
1017
- _options?: IRCCallSessionOptions);
966
+ mediaType: RCCallMediaType;
967
+ }
968
+ interface ICallStateMachineWatchers {
1018
969
  /**
1019
- * 加入房间
970
+ * 用户状态变更
971
+ * @param info
1020
972
  */
1021
- private _joinRoom;
973
+ onUserStateChange: (info: IUserStateChangeInfo) => void;
1022
974
  /**
1023
- * (初始化房间的时候) 订阅远程的流,把远程的流抛给用户
975
+ * 房间状态变更
976
+ * @param info
1024
977
  */
1025
- private _subscribeInRoomRemoteTrack;
978
+ onStateChange: (info: IStateChangeInfo) => void;
1026
979
  /**
1027
- * 可以重试的订阅
1028
- * @param params.tracks tracks
1029
- * @param params.isAllowSubscribeRetry 是否允许重试
1030
- * @param params.count 允许重试的次数
980
+ * 收到响铃
981
+ * @param sender 发起用户信息
1031
982
  */
1032
- private _subscribeRetry;
983
+ onRinging: (sender: ISenderInfo) => void;
1033
984
  /**
1034
- * 发布本地资源的逻辑
1035
- *
985
+ * 收到接听
986
+ * @param sender 发起用户信息
1036
987
  */
1037
- private _publish;
988
+ onAccept: (sender: ISenderInfo) => void;
1038
989
  /**
1039
- * 可以重试的发布
1040
- * @param params.tracks tracks
1041
- * @param params.isAllowPublishRetry 是否允许重试
1042
- * @param params.count 允许重试的次数
990
+ * 收到挂断
1043
991
  */
1044
- private _publishRetry;
992
+ onHungup: (sender: ISenderInfo, reason: RCCallEndReason) => void;
1045
993
  /**
1046
- * 退出房间
994
+ * 收到人员变更
995
+ * @param sender 发起用户信息
1047
996
  */
1048
- private _leaveRoom;
997
+ onMemberModify: (info: IMemberModifyInfo) => void;
1049
998
  /**
1050
- * 出现异常后要处理的逻辑,
1051
- * @param endReason 原因
999
+ * 收到通话类型变更
1000
+ * @param sender 发起用户信息
1052
1001
  */
1053
- private _exceptionClose;
1002
+ onMediaModify: (info: IMediaModifyInfo) => void;
1054
1003
  /**
1055
- * 用户调用的,注册session上的监听
1004
+ * 是否跨appkey
1005
+ * @param ifCross 是否为跨appkey通信
1056
1006
  */
1057
- registerSessionListener(listener: ISessionListener): void;
1007
+ crossAppkey: (ifCross: boolean) => void;
1008
+ }
1009
+ /**
1010
+ * 发送邀请时的可选项
1011
+ */
1012
+ interface IInviteOptions {
1058
1013
  /**
1059
- * 调RTC API 获得本地流
1014
+ * 消息的扩展信息
1060
1015
  */
1061
- private _getLocalTrackCore;
1062
- private _getLocalTrack;
1016
+ extra?: string;
1063
1017
  /**
1064
- * 通话中更换音频设备
1018
+ * 移动端推送配置
1065
1019
  */
1066
- changeAudioDevice(audioConstraints?: IMicphoneAudioProfile): Promise<{
1067
- code: RCCallErrorCode;
1068
- }>;
1020
+ pushConfig?: IPushConfig;
1021
+ }
1022
+
1023
+ /**
1024
+ * 注释
1025
+ * TODO
1026
+ */
1027
+ declare enum MsgCallStatus {
1028
+ OUTGOING = 1,
1029
+ INCOMING = 2,
1030
+ RINGING = 3,
1031
+ CONNECTED = 4,
1032
+ IDLE = 5,
1033
+ ACCEPTED = 6
1034
+ }
1035
+
1036
+ interface IOfflineRecord {
1037
+ channelId: string;
1038
+ conversationType: ConversationType;
1039
+ targetId: string;
1040
+ mediaType: RCCallMediaType;
1041
+ callId: string;
1042
+ inviterId: string;
1043
+ endReason: RCCallEndReason;
1044
+ beginTimestamp: number;
1045
+ endTimestamp: number;
1046
+ duration: number;
1047
+ }
1048
+
1049
+ interface ISendBaseOptions {
1069
1050
  /**
1070
- * 群呼叫中继续邀请
1071
- * @param userIds 被邀请用户 ID 列表
1072
- * @param options.extra 消息的扩展信息
1073
- * @deprecated 5.1.2 废弃 options.pushTitle 通知的标题
1074
- * @deprecated 5.1.2 废弃 options.pushContent 通知内容
1051
+ * 组织 ID
1075
1052
  */
1076
- invite(userIds: string[], options?: IInviteOptions): Promise<{
1077
- code: RCCallErrorCode;
1078
- }>;
1053
+ channelId: string;
1079
1054
  /**
1080
- * 同意接听
1055
+ * 会话类型
1081
1056
  */
1082
- accept(constraints?: IMediaStreamConstraints): Promise<{
1083
- code: RCCallErrorCode;
1084
- }>;
1057
+ conversationType: ConversationType;
1085
1058
  /**
1086
- * 挂断
1059
+ * 目标 ID (单聊:对方 Id;群聊: 群组 Id)
1087
1060
  */
1088
- hungup(): Promise<{
1089
- code: RCCallErrorCode;
1090
- }>;
1061
+ targetId: string;
1062
+ }
1063
+ interface IExistedUserPofiles {
1091
1064
  /**
1092
- * 通话媒体变更
1093
- * @param mediaType RCCallMediaType.AUDIO 改为音频通话 | RCCallMediaType.AUDIO_VIDEO 改为音视频通话
1065
+ * 用户 ID
1094
1066
  */
1095
- _changeMediaType(mediaType: RCCallMediaType): Promise<{
1096
- code: RCCallErrorCode;
1097
- }>;
1067
+ userId: string;
1098
1068
  /**
1099
- * 获得本地视频
1069
+ * 通话类型
1100
1070
  */
1101
- private _getLocalVideoTracks;
1071
+ mediaType: RCCallMediaType;
1102
1072
  /**
1103
- * 获得本地音频
1073
+ * 与移动端一致的通话状态
1104
1074
  */
1105
- private _getLocalAudioTracks;
1075
+ callStatus: MsgCallStatus;
1106
1076
  /**
1107
- * 把通话的MediaType升级到音视频
1077
+ * PC 端 mediaId 直接传 userId, mediaId iOS 需要解出来渲染视图用。
1108
1078
  */
1109
- private _setMediaTypeToAudioAndVideo;
1079
+ mediaId?: string;
1080
+ }
1081
+ interface IMsgListener {
1082
+ onInvite?: (msg: IReceivedMessage) => void;
1083
+ onRinging?: (msg: IReceivedMessage) => void;
1084
+ onAccept?: (msg: IReceivedMessage) => void;
1085
+ onMemberModify?: (msg: IReceivedMessage) => void;
1086
+ onMediaModify?: (msg: IReceivedMessage) => void;
1087
+ onHungup?: (msg: IReceivedMessage) => void;
1088
+ sendAccept?: (info: {
1089
+ callId: string;
1090
+ }) => void;
1091
+ onOfflineRecord?: (record: IOfflineRecord) => void;
1092
+ }
1093
+ interface IInviteMsgOptions extends ISendBaseOptions {
1110
1094
  /**
1111
- * 把通话的MediaType降级到音频
1112
- * @param isSendMesssage 是否需要发消息, 默认发消息
1095
+ * 呼叫 ID( RTC 房间 ID )
1113
1096
  */
1114
- private _setMediaTypeToAudio;
1097
+ callId: string;
1115
1098
  /**
1116
- * 通话降级,目前需求只做通话降级,音视频可以降级为音频,音频不能升到音视频, 发消息成功才算降级成功
1117
- *
1099
+ * 通话媒体类型
1118
1100
  */
1119
- descendAbility(): Promise<{
1120
- code: RCCallErrorCode;
1121
- }>;
1101
+ mediaType: RCCallMediaType;
1122
1102
  /**
1123
- * 禁用视频track
1103
+ * 被邀请人用户 ID 列表
1124
1104
  */
1125
- disableVideoTrack(): Promise<{
1126
- code: RCCallErrorCode;
1127
- }>;
1105
+ inviteUserIds: string[];
1128
1106
  /**
1129
- * 启用视频track
1107
+ * 扩展信息
1130
1108
  */
1131
- enableVideoTrack(): Promise<{
1132
- code: RCCallErrorCode;
1133
- }>;
1109
+ extra: string;
1134
1110
  /**
1135
- * 禁用音频track
1111
+ * 移动端推送配置
1136
1112
  */
1137
- disableAudioTrack(): Promise<{
1138
- code: RCCallErrorCode;
1139
- } | undefined>;
1113
+ pushConfig?: IPushConfig;
1140
1114
  /**
1141
- * 启用音频track
1142
- */
1143
- enableAudioTrack(): Promise<{
1144
- code: RCCallErrorCode;
1145
- } | undefined>;
1115
+ * 跨appkey参数
1116
+ */
1117
+ roomType?: number;
1118
+ }
1119
+ interface IMemberModifyMsgOptions extends ISendBaseOptions {
1146
1120
  /**
1147
- * 销毁本地流
1121
+ * 呼叫 ID( RTC 房间 ID )
1148
1122
  */
1149
- private _destroyTracks;
1123
+ callId: string;
1150
1124
  /**
1151
- * 向外抛出本地流
1125
+ * 通话媒体类型
1152
1126
  */
1153
- private _notifyTrackReady;
1127
+ mediaType: RCCallMediaType;
1154
1128
  /**
1155
- * 房间上注册事件
1129
+ * 被邀请人用户 ID 列表
1156
1130
  */
1157
- private _registerRoomEventListener;
1131
+ inviteUserIds: string[];
1158
1132
  /**
1159
- * 注册房间质量数据监听器
1133
+ * 获取会话发起者 Id
1160
1134
  */
1161
- private _registerReportListener;
1135
+ callerId: string;
1162
1136
  /**
1163
- * 通话唯一标识
1137
+ * 当前通话中的所有人,包含未接听用户
1164
1138
  */
1165
- getSessionId(): string;
1139
+ existedUserPofiles: IExistedUserPofiles[];
1166
1140
  /**
1167
- * 获取房间当前会话 Id,当房间内已无成员时房间会回收,重新加入时 sessionId 将更新,(用户录制资源用的)
1141
+ * 当前通话中的所有人,包含未接听用户
1168
1142
  */
1169
- getRTCSessionId(): string | null;
1143
+ directionalUserIdList: string[];
1170
1144
  /**
1171
- * 目标 ID,单呼对方人员 Id, 群呼群组 Id
1145
+ * 扩展信息
1172
1146
  */
1173
- getTargetId(): string;
1147
+ extra: string;
1174
1148
  /**
1175
- * 获取会话类型
1149
+ * 移动端推送配置
1176
1150
  */
1177
- getConversationType(): ConversationType;
1151
+ pushConfig?: IPushConfig;
1152
+ }
1153
+ interface IRingingMsgOptions extends ISendBaseOptions {
1178
1154
  /**
1179
- * 组织 ID
1155
+ * 呼叫 ID( RTC 房间 ID )
1180
1156
  */
1181
- getChannelId(): string;
1157
+ callId: string;
1182
1158
  /**
1183
- * 房间人员列表,不包含本端信息
1159
+ * 群呼中需要接收响铃的用户 ID 列表
1184
1160
  */
1185
- getRemoteUsers(): IUserData[];
1186
- /**
1187
- * 房间人员列表,不包含本端信息
1188
- */
1189
- getUsers(): IUserData[];
1161
+ userIds?: string[];
1162
+ }
1163
+ interface IAcceptMsgOptions extends ISendBaseOptions {
1190
1164
  /**
1191
- * 获取人员状态
1165
+ * 呼叫 ID( RTC 房间 ID )
1192
1166
  */
1193
- getUserState(userId: string): RCCallUserState;
1167
+ callId: string;
1194
1168
  /**
1195
- * 获取session状态
1169
+ * 通话媒体类型
1196
1170
  */
1197
- getState(): RCCallSessionState;
1171
+ mediaType: RCCallMediaType;
1198
1172
  /**
1199
- * 获得会话发起者id
1173
+ * 群呼中需要接收接听消息的用户 ID 列表
1200
1174
  */
1201
- getCallerId(): string;
1175
+ userIds: string[];
1176
+ }
1177
+ interface IHungupMsgOptions extends ISendBaseOptions {
1202
1178
  /**
1203
- * 获得mediaType
1179
+ * 呼叫 ID( RTC 房间 ID )
1204
1180
  */
1205
- getMediaType(): RCCallMediaType;
1206
- }
1207
-
1208
- interface ISender {
1209
- userId: string;
1181
+ callId: string;
1210
1182
  /**
1211
- * 用户名
1212
- */
1213
- name?: string;
1183
+ * 挂断原因
1184
+ */
1185
+ reason: RCCallEndReason;
1214
1186
  /**
1215
- * 用户头像地址
1216
- */
1217
- portraitUri?: string;
1187
+ * 群呼中需要接收挂断消息的用户 ID 列表
1188
+ */
1189
+ userIds: string[];
1218
1190
  /**
1219
- * user info 中附加信息
1220
- */
1221
- extra?: string;
1191
+ * 移动端推送配置
1192
+ */
1193
+ pushConfig?: IPushConfig;
1222
1194
  }
1223
- interface IMuteUser extends ISender {
1195
+ interface IMediaModifyMsgOptions extends ISendBaseOptions {
1224
1196
  /**
1225
- * 是否禁用
1197
+ * 呼叫 ID( RTC 房间 ID )
1226
1198
  */
1227
- muted: boolean;
1199
+ callId: string;
1228
1200
  /**
1229
- * track类型
1201
+ * 通话媒体类型
1230
1202
  */
1231
- kind: string;
1203
+ mediaType: RCCallMediaType;
1232
1204
  /**
1233
- * trackId
1205
+ * 群呼中需要媒体变更消息的用户 ID 列表
1234
1206
  */
1235
- trackId: string;
1207
+ userIds: string[];
1236
1208
  }
1209
+
1210
+ declare type MsgListenerKeys = keyof IMsgListener;
1237
1211
  /**
1238
- * CallLib 初始化参数
1212
+ * 消息接收处理: 在线消息、离线消息
1213
+ * 发送消息处理: 发送不同类型消息封装
1239
1214
  */
1240
- interface IRCCallInitOptions {
1241
- /**
1242
- * RTC实例
1243
- */
1244
- rtcClient: RCRTCClient;
1245
- /**
1246
- * 收到邀请后,产生新的session
1247
- */
1248
- onSession: (session: RCCallSession, extra?: string) => void;
1215
+ declare class CallMessageHandler extends EventEmitter {
1216
+ private readonly _context;
1217
+ private readonly _runtime;
1218
+ private readonly _logger;
1249
1219
  /**
1250
- * session已关闭
1220
+ * 离线消息处理时间间隔
1251
1221
  */
1252
- onSessionClose: (session: RCCallSession, summary?: IEndSummary) => void;
1222
+ private readonly _offlineMsgItv;
1223
+ private readonly _getStateMachine;
1224
+ private _watchers;
1225
+ private _userInfo;
1226
+ private _msgBufferList;
1227
+ private _hadHandleMsgTimer;
1228
+ private _offlineRecorder;
1229
+ private _deviceId;
1230
+ constructor(_context: RTCPluginContext, _runtime: IRuntime, _logger: ILogger,
1253
1231
  /**
1254
- * 离线期间收到的呼叫记录
1255
- * @param record
1256
- * @returns
1232
+ * 离线消息处理时间间隔
1257
1233
  */
1258
- onOfflineRecord?: (record: IOfflineRecord) => void;
1234
+ _offlineMsgItv: number, _getStateMachine: (callId: string) => RCCallStateMachine | null);
1235
+ private _onMessage;
1259
1236
  /**
1260
- * 是否允许接听新呼叫,当前正在通话,如果收到新的邀请,是直接挂断,还是允许选择, 默认值false,直接挂断新的session
1261
- *
1262
- * 暂不对外暴露
1237
+ * 在线消息抛给状态机处理
1263
1238
  */
1239
+ private _onRecvOnlineCallMsg;
1264
1240
  /**
1265
- * 是否允许订阅重试, 默认为false
1241
+ * 消息 buffer 列表处理逻辑
1242
+ * 1、每 20ms 检查一次 buffer list
1243
+ * 2、取出已经延迟 200 的消息列表进行消费 | 无延迟 200ms 内消息直接递归
1244
+ * 3、消费分为 离线消息消费逻辑、在线消息消费逻辑,消费后递归
1266
1245
  */
1267
- isAllowSubscribeRetry?: boolean;
1268
- /**
1269
- * 是否允许发布重试, 默认为false
1270
- */
1271
- isAllowPublishRetry?: boolean;
1246
+ private _handleBufferMsgs;
1247
+ registerEventListener(listener: IMsgListener): void;
1248
+ registerStateMachineEvent(callId: string, funcName: MsgListenerKeys, event: (...args: any[]) => void): void;
1249
+ unregisterStateMachineEvent(callId: string): void;
1250
+ registerUserInfo(userInfo: IUserProfile): void;
1272
1251
  /**
1273
- * 禁用视频时关摄像头, 默认false
1252
+ * 发送 IM 消息
1274
1253
  */
1275
- isOffCameraWhenVideoDisable?: boolean;
1254
+ private _sendCallMessage;
1276
1255
  /**
1277
- * RTC 房间加入类型
1256
+ * 发送邀请消息
1278
1257
  */
1279
- joinType?: RTCJoinType;
1258
+ sendInvite(options: IInviteMsgOptions): Promise<{
1259
+ code: RCCallErrorCode;
1260
+ message?: IReceivedMessage | undefined;
1261
+ }>;
1280
1262
  /**
1281
- * 允许降级获得流,获得音视频不成功 ,降级获得音频
1263
+ * 发送人员变更消息
1282
1264
  */
1283
- isAllowDemotionGetStream?: boolean;
1265
+ sendMemeberModify(options: IMemberModifyMsgOptions): Promise<{
1266
+ code: RCCallErrorCode;
1267
+ message?: IReceivedMessage | undefined;
1268
+ }>;
1284
1269
  /**
1285
- * 该参数已废弃,请使用 `logOutputLevel` 替代
1286
- * @deprecated - version 5.2.2
1270
+ * 发送响铃消息
1287
1271
  */
1288
- logLevel?: LogLevel;
1272
+ sendRinging(options: IRingingMsgOptions): Promise<{
1273
+ code: RCCallErrorCode;
1274
+ message?: IReceivedMessage | undefined;
1275
+ }>;
1289
1276
  /**
1290
- * 日志输出等级
1291
- * @since version 5.2.2
1277
+ * 发送同意接听消息
1292
1278
  */
1293
- logOutputLevel?: LogL.DEBUG | LogL.INFO | LogL.WARN | LogL.ERROR;
1279
+ sendAccept(options: IAcceptMsgOptions): Promise<{
1280
+ code: RCCallErrorCode;
1281
+ message?: IReceivedMessage | undefined;
1282
+ }>;
1294
1283
  /**
1295
- * 该参数已废弃
1296
- * @deprecated - version 5.2.0
1284
+ * 发送挂断消息
1297
1285
  */
1298
- logStdout?: (logLevel: LogLevel, content: string) => void;
1286
+ sendHungup(options: IHungupMsgOptions): Promise<{
1287
+ code: RCCallErrorCode;
1288
+ message?: IReceivedMessage | undefined;
1289
+ }>;
1299
1290
  /**
1300
- * 语言设置 (推送), 不传默认为中文
1291
+ * 发送媒体变更消息
1301
1292
  */
1302
- lang?: RCCallLanguage;
1293
+ sendMediaModify(options: IMediaModifyMsgOptions): Promise<{
1294
+ code: RCCallErrorCode;
1295
+ message?: IReceivedMessage | undefined;
1296
+ }>;
1303
1297
  }
1304
- /**
1305
- * 呼叫、挂断推送信息
1306
- */
1307
- interface IPushConfig {
1298
+
1299
+ declare class RCCallStateMachine {
1300
+ private readonly _context;
1301
+ private readonly _runtime;
1302
+ private readonly _logger;
1303
+ private readonly _callMsgHandler;
1304
+ private readonly _channelId;
1305
+ private readonly _conversationType;
1306
+ private readonly _targetId;
1307
+ private _mediaType;
1308
+ private readonly _callId;
1308
1309
  /**
1309
- * 推送标题
1310
+ * 房间状态
1310
1311
  */
1311
- pushTitle?: string;
1312
+ private _sessionState;
1312
1313
  /**
1313
- * 推送内容
1314
+ * 用户状态及信息
1314
1315
  */
1315
- pushContent?: string;
1316
- }
1317
- /**
1318
- * session上的监听
1319
- */
1320
- interface ISessionListener {
1316
+ private _userInfo;
1321
1317
  /**
1322
- * 当对方已响铃
1318
+ * 用户计时器映射
1323
1319
  */
1324
- onRinging: (sender: ISender, session: RCCallSession) => void;
1320
+ private _userTimers;
1325
1321
  /**
1326
- * 当对方已同意
1322
+ * 监听器
1327
1323
  */
1328
- onAccept: (sender: ISender, session: RCCallSession) => void;
1324
+ private _watchers;
1329
1325
  /**
1330
- * 当对方已挂断
1326
+ * 呼叫超时时间 (单位:毫秒)
1331
1327
  */
1332
- onHungup: (sender: ISender, reason: RCCallEndReason, session: RCCallSession) => void;
1328
+ private _callTimeout;
1333
1329
  /**
1334
- * 群组通话,人员改变
1330
+ * 通话建立开始时间
1335
1331
  */
1336
- onMemberModify: (sender: ISender, invitedUsers: IInvitedUsers[], session: RCCallSession) => void;
1332
+ private _beginTimestamp;
1337
1333
  /**
1338
- * 通话降级
1334
+ * 通话结束时间
1339
1335
  */
1340
- onMediaModify: (sender: ISender, mediaType: RCCallMediaType, session: RCCallSession) => void;
1336
+ private _endTimestamp;
1341
1337
  /**
1342
- * 当接到流
1338
+ * 通话结束原因
1343
1339
  */
1344
- onTrackReady: (track: RCTrack, session?: RCCallSession) => void;
1340
+ private _endReason;
1345
1341
  /**
1346
- * 关闭 或 开启 音频
1342
+ * 主叫 ID
1343
+ * 发起邀请为当前用户 ID
1344
+ * 收到邀请为 senderUserId
1345
+ * 收到人员变更邀请为消息体中 callerId
1347
1346
  */
1348
- onAudioMuteChange: (muteUser: IMuteUser, session: RCCallSession) => void;
1347
+ private _callerId;
1349
1348
  /**
1350
- * 关闭 或 开启 视频
1349
+ * 当次通话邀请者 ID
1350
+ * 发起邀请为当前用户 ID、收到邀请为 senderUserId、收到人员变更邀请为消息体中 senderUserId
1351
1351
  */
1352
- onVideoMuteChange: (muteUser: IMuteUser, session: RCCallSession) => void;
1353
- /**
1354
- * 资源订阅失败
1355
- */
1356
- onTrackSubscribeFail?: (code: RCRTCCode, session: RCCallSession) => void;
1357
- /**
1358
- * 资源发布失败
1359
- */
1360
- onTrackPublishFail?: (code: RCRTCCode, session: RCCallSession) => void;
1352
+ private _inviterId;
1361
1353
  /**
1362
- * 用于接收RTC状态数据报告
1354
+ * 是否是跨 appkey
1363
1355
  */
1364
- onRTCStateReport?: (report: IRCRTCStateReport, session: RCCallSession) => void;
1356
+ private _isCrossAppkey;
1357
+ private _hungupPushConfig?;
1358
+ constructor(_context: RTCPluginContext, _runtime: IRuntime, _logger: ILogger, _callMsgHandler: CallMessageHandler, _channelId: string, _conversationType: ConversationType, _targetId: string, _mediaType: RCCallMediaType, _callId: string);
1365
1359
  /**
1366
- * RTC 每次 Ping 结果
1360
+ * 获取校正后超时时间
1367
1361
  */
1368
- onPing?: (result: RCRTCPingResult, session: RCCallSession) => void;
1362
+ private _getTimeout;
1363
+ private _clearTimerById;
1369
1364
  /**
1370
- * ~ICE 连接状态变更通知~
1371
- * @since version 5.1.5
1365
+ * 通知 call 层房间状态变更及原因
1372
1366
  */
1373
- onICEConnectionStateChange?: (state: RTCIceConnectionState, session: RCCallSession) => void;
1374
- }
1375
- /**
1376
- * 创建session的options
1377
- */
1378
- interface IRCCallSessionOptions {
1367
+ private _notifyStateChange;
1379
1368
  /**
1380
- * 本地资源,用户主动发起会话的时候,会先获得本地资源
1369
+ * 通知 call 层人员状态变更及原因
1381
1370
  */
1382
- localTracks?: RCLocalTrack[];
1371
+ private _notifyUserStateChange;
1372
+ private _otherClientHandle;
1383
1373
  /**
1384
- * 是否允许订阅重试, 默认为false
1385
- */
1386
- isAllowSubscribeRetry?: boolean;
1374
+ * 正在通话中,且不是当前已接通用户设备(deviceId)发来的消息
1375
+ */
1376
+ private _isRemoteInvalidMsg;
1377
+ private _onRinging;
1378
+ private _onAccept;
1379
+ private _onMediaModify;
1380
+ private _onHungup;
1387
1381
  /**
1388
- * 是否允许发布重试, 默认为false
1382
+ * 注册事件监听
1383
+ * @params watchers
1389
1384
  */
1390
- isAllowPublishRetry?: boolean;
1385
+ registerEventListener(watchers: ICallStateMachineWatchers): void;
1391
1386
  /**
1392
- * 禁用视频时关摄像头, 默认false
1387
+ * 收到 invite 消息时状态机更新(CallEngine 内部调用)
1388
+ * @param message 接收消息
1393
1389
  */
1394
- isOffCameraWhenVideoDisable?: boolean;
1390
+ __onInvite(message: IReceivedMessage): void;
1395
1391
  /**
1396
- * RTC 房间加入类型
1392
+ * 收到 memberModify 消息时状态机更新(CallEngine 内部调用)
1393
+ * @param message 接收消息
1397
1394
  */
1398
- joinType?: RTCJoinType;
1395
+ __onMemberModify(message: IReceivedMessage): void;
1399
1396
  /**
1400
- * 允许降级获得流,获得音视频不成功 ,降级获得音频
1397
+ * 处理已有 session ,不允许再接听新会话情况
1401
1398
  */
1402
- isAllowDemotionGetStream?: boolean;
1399
+ __handleInviteInSession(): void;
1403
1400
  /**
1404
- * 产生session的场景,是主叫产生 被叫产生
1401
+ * 主动呼叫 (CallEngine 内部调用)
1402
+ * @param userIds 被邀请用户 ID 列表
1403
+ * @param extra 消息的扩展信息
1404
+ * @param pushConfig 移动端推送配置
1405
1405
  */
1406
- produceType?: ProduceTypes;
1407
- isCrossAppkey?: boolean;
1406
+ __call(userIds: string[], extra: string | undefined, pushConfig: IPushConfig, isCrossAppkey?: boolean): Promise<{
1407
+ code: RCCallErrorCode;
1408
+ }>;
1408
1409
  /**
1409
- * 呼叫推送配置
1410
+ * 接听
1410
1411
  */
1411
- callPushConfig?: IPushConfig;
1412
+ accept(): Promise<{
1413
+ code: RCCallErrorCode;
1414
+ }>;
1412
1415
  /**
1413
- * 挂断推送配置
1416
+ * 群呼叫中继续邀请
1417
+ * @param userIds 被邀请用户 ID 列表
1414
1418
  */
1415
- hungupPushConfig?: IPushConfig;
1416
- }
1417
- interface IRCTrackBitrate {
1419
+ invite(userIds: string[], options?: IInviteOptions): Promise<{
1420
+ code: RCCallErrorCode;
1421
+ }>;
1422
+ private _hungupHandle;
1418
1423
  /**
1419
- * 最大码率
1424
+ * 挂断
1420
1425
  */
1421
- max: number;
1426
+ hungup(): Promise<{
1427
+ code: RCCallErrorCode;
1428
+ }>;
1422
1429
  /**
1423
- * 最小码率
1430
+ * 修改通话媒体类型
1431
+ * @param mediaType RCCallMediaType.AUDIO 改为音频通话 | RCCallMediaType.AUDIO_VIDEO 改为音视频通话
1424
1432
  */
1425
- min: number;
1433
+ changeMediaType(mediaType: RCCallMediaType): Promise<{
1434
+ code: RCCallErrorCode;
1435
+ }>;
1426
1436
  /**
1427
- * 上行起始码率
1437
+ * 用户加入通话补偿机制(rtc userJoin 事件触发)
1438
+ * 主叫呼叫后,未收到被叫 accept 消息,但收到了 userJoin 同样补偿更新用户、房间状态、呼叫计时器
1428
1439
  */
1429
- start?: number;
1430
- }
1431
- /**
1432
- * RCCallClient call方法的传参
1433
- */
1434
- interface IRCCallParams {
1435
- targetId: string;
1440
+ userJoin(userIds: string[]): void;
1436
1441
  /**
1437
- * 音频 or 音视频, 默认音频
1442
+ * 用户离开通话补偿机制(rtc userLeave、kickOff 事件触发)
1443
+ * 通话中远端用户挂断,挂断消息未到,但是监听到 rtc userLeave 同样补偿更新用户、房间状态
1438
1444
  */
1439
- mediaType: RCCallMediaType;
1445
+ userLeave(userIds: string[]): void;
1440
1446
  /**
1441
- * session上要注册的监听事件
1447
+ * Call 层己方异常失败后调用的方法
1448
+ * 触发时机:音视频服务异常、获取资源失败、加入 RTC 房间失败、发布|订阅失败
1442
1449
  */
1443
- listener: ISessionListener;
1450
+ close(reason: RCCallEndReason): void;
1451
+ setHungupPushConfig(pushConfig: IPushConfig): void;
1444
1452
  /**
1445
- * 组织 Id,可选
1453
+ * 通话唯一标识
1446
1454
  */
1447
- channelId?: string;
1455
+ getCallId(): string;
1448
1456
  /**
1449
- * 用于获取己方媒体资源的参数
1457
+ * 多组织 ID
1450
1458
  */
1451
- constraints?: {
1452
- video?: ICameraVideoProfile;
1453
- audio: IMicphoneAudioProfile;
1454
- };
1459
+ getChannelId(): string;
1455
1460
  /**
1456
- * 消息的扩展信息
1461
+ * 目标 ID,单呼对方人员 Id, 群呼群组 Id
1457
1462
  */
1458
- extra?: string;
1459
- /**
1460
- * 对方显示通知的标题
1461
- */
1462
- pushTitle?: string;
1463
+ getTargetId(): string;
1463
1464
  /**
1464
- * 对方显示的通知内容
1465
+ * 获取会话类型
1465
1466
  */
1466
- pushContent?: string;
1467
+ getConversationType(): ConversationType;
1467
1468
  /**
1468
- * 设置码率
1469
+ * 获取远端成员 ID 列表
1469
1470
  */
1470
- bitrate?: {
1471
- video?: IRCTrackBitrate;
1472
- audio?: number;
1473
- };
1471
+ getRemoteUserIds(): string[];
1474
1472
  /**
1475
- * 是否为跨 appkey 通话
1473
+ * 获取远端成员信息列表
1476
1474
  */
1477
- isCrossAppkey?: boolean;
1478
- }
1479
- interface IMediaStreamConstraints {
1480
- video?: ICameraVideoProfile;
1481
- audio?: IMicphoneAudioProfile;
1482
- }
1483
- /**
1484
- * RCCallClient callInGroup方法的传参
1485
- */
1486
- interface IRCCallInGroupParams {
1487
- targetId: string;
1488
- userIds: string[];
1489
- mediaType: RCCallMediaType;
1475
+ getRemoteUsers(): IUserData[];
1490
1476
  /**
1491
- * session上要注册的监听事件
1477
+ * 获取房间状态
1492
1478
  */
1493
- listener: ISessionListener;
1479
+ getState(): RCCallSessionState;
1494
1480
  /**
1495
- * 组织 Id,可选
1481
+ * 获取人员状态
1496
1482
  */
1497
- channelId?: string;
1483
+ getUserState(userId: string): RCCallUserState;
1498
1484
  /**
1499
- * 用于获取己方媒体资源的参数
1485
+ * 获取会话发起者 Id
1500
1486
  */
1501
- constraints?: IMediaStreamConstraints;
1487
+ getCallerId(): string;
1502
1488
  /**
1503
- * 消息的扩展信息
1489
+ * 获取当次会话邀请者 Id
1504
1490
  */
1505
- extra?: string;
1491
+ getInviterId(): string;
1506
1492
  /**
1507
- * 对方显示通知的标题
1493
+ * 获取当前通话媒体类型
1508
1494
  */
1509
- pushTitle?: string;
1510
- /**
1511
- * 对方显示的通知内容
1512
- */
1513
- pushContent?: string;
1495
+ getMediaType(): RCCallMediaType;
1514
1496
  /**
1515
- * 设置码率
1497
+ * 通话挂断后可调用
1516
1498
  */
1517
- bitrate?: {
1518
- video?: IRCTrackBitrate;
1519
- audio?: number;
1520
- };
1499
+ getSummary(): IEndSummary;
1521
1500
  }
1522
- interface IDeviceChangeParams {
1523
- audio?: IMicphoneAudioProfile;
1524
- video?: ICameraVideoProfile;
1501
+
1502
+ declare enum RCCallLanguage {
1503
+ ZH = "zh",
1504
+ EN = "en"
1525
1505
  }
1526
1506
 
1527
1507
  declare class RCCallClient {
@@ -1544,8 +1524,14 @@ declare class RCCallClient {
1544
1524
  * session列表
1545
1525
  */
1546
1526
  private _sessionList;
1547
- private _callPushConfig;
1548
- private _hungupPushConfig;
1527
+ /**
1528
+ * 移动端呼叫推送配置
1529
+ */
1530
+ private _callPushConfig?;
1531
+ /**
1532
+ * 移动端挂断推送配置
1533
+ */
1534
+ private _hungupPushConfig?;
1549
1535
  constructor(_context: RTCPluginContext, _runtime: IRuntime, _logger: BasicLogger, _options: IRCCallInitOptions);
1550
1536
  /**
1551
1537
  * 监听onInvite
@@ -1644,7 +1630,9 @@ declare class RCCallClient {
1644
1630
  * @param hungupPushConfig.pushTitle 挂断推送标题
1645
1631
  * @param hungupPushConfig.pushContent 挂断推送内容
1646
1632
  */
1647
- setPushConfig(callPushConfig?: IPushConfig, hungupPushConfig?: IPushConfig): void;
1633
+ setPushConfig(callPushConfig: IPushConfig, hungupPushConfig: IPushConfig): {
1634
+ code: RCCallErrorCode.STATE_MACHINE_EXIT | RCCallErrorCode.SEND_MSG_ERROR | RCCallErrorCode.REJECTED_BY_BLACKLIST | RCCallErrorCode.NOT_IN_GROUP | RCCallErrorCode.GET_LOCAL_AUDIO_TRACK_ERROR | RCCallErrorCode.GET_LOCAL_VIDEO_TRACK_ERROR | RCCallErrorCode.GET_LOCAL_AUDIO_AND_VIDEO_TRACK_ERROR | RCCallErrorCode.JOIN_ROOM_ERROR | RCCallErrorCode.AUDIO_PUBLISH_ERROR | RCCallErrorCode.VIDEO_PUBLISH_ERROR | RCCallErrorCode.AUDIO_AND_VIDEO_PUBLISH_ERROR | RCCallErrorCode.QUERY_JOINED_USER_INFO_ERROR | RCCallErrorCode.MISSING_VIDEO_TRACK_ERROR | RCCallErrorCode.UNPUBLISH_VIDEO_ERROR | RCCallErrorCode.CONVERSATION_NOT_GROUP_ERROR | RCCallErrorCode.NOT_IN_ROOM_ERROR | RCCallErrorCode.PARAM_ERROR;
1635
+ } | undefined;
1648
1636
  }
1649
1637
 
1650
1638
  declare const installer: IPluginGenerator<RCCallClient, IRCCallInitOptions>;