@rongcloud/plugin-call 5.2.3 → 5.2.5

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,1222 @@ 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
+ /**
631
+ * 呼叫、挂断推送信息
632
+ */
633
+ interface IPushConfig extends Partial<IPushConfig$1> {
634
+ }
635
+ /**
636
+ * session上的监听
637
+ */
638
+ interface ISessionListener {
638
639
  /**
639
- * 对方显示通知的标题
640
+ * 当对方已响铃
640
641
  */
641
- pushTitle?: string;
642
+ onRinging: (sender: ISender, session: RCCallSession) => void;
642
643
  /**
643
- * 对方显示的通知内容
644
+ * 当对方已同意
644
645
  */
645
- pushContent?: string;
646
- }
647
- interface IMediaModifyMsgOptions extends ISendBaseOptions {
646
+ onAccept: (sender: ISender, session: RCCallSession) => void;
648
647
  /**
649
- * 呼叫 ID( RTC 房间 ID )
648
+ * 当对方已挂断
650
649
  */
651
- callId: string;
650
+ onHungup: (sender: ISender, reason: RCCallEndReason, session: RCCallSession) => void;
652
651
  /**
653
- * 通话媒体类型
652
+ * 群组通话,人员改变
654
653
  */
655
- mediaType: RCCallMediaType;
654
+ onMemberModify: (sender: ISender, invitedUsers: IInvitedUsers[], session: RCCallSession) => void;
656
655
  /**
657
- * 群呼中需要媒体变更消息的用户 ID 列表
656
+ * 通话降级
658
657
  */
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;
658
+ onMediaModify: (sender: ISender, mediaType: RCCallMediaType, session: RCCallSession) => void;
671
659
  /**
672
- * 离线消息处理时间间隔
660
+ * 当接到流
673
661
  */
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,
662
+ onTrackReady: (track: RCTrack, session?: RCCallSession) => void;
683
663
  /**
684
- * 离线消息处理时间间隔
664
+ * 关闭 或 开启 音频
685
665
  */
686
- _offlineMsgItv: number, _getStateMachine: (callId: string) => RCCallStateMachine | null);
687
- private _onMessage;
666
+ onAudioMuteChange: (muteUser: IMuteUser, session: RCCallSession) => void;
688
667
  /**
689
- * 在线消息抛给状态机处理
668
+ * 关闭 或 开启 视频
690
669
  */
691
- private _onRecvOnlineCallMsg;
670
+ onVideoMuteChange: (muteUser: IMuteUser, session: RCCallSession) => void;
692
671
  /**
693
- * 消息 buffer 列表处理逻辑
694
- * 1、每 20ms 检查一次 buffer list
695
- * 2、取出已经延迟 200 的消息列表进行消费 | 无延迟 200ms 内消息直接递归
696
- * 3、消费分为 离线消息消费逻辑、在线消息消费逻辑,消费后递归
672
+ * 资源订阅失败
697
673
  */
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;
674
+ onTrackSubscribeFail?: (code: RCRTCCode, session: RCCallSession) => void;
703
675
  /**
704
- * 发送 IM 消息
705
- */
706
- private _sendCallMessage;
676
+ * 资源发布失败
677
+ */
678
+ onTrackPublishFail?: (code: RCRTCCode, session: RCCallSession) => void;
707
679
  /**
708
- * 发送邀请消息
680
+ * 用于接收RTC状态数据报告
709
681
  */
710
- sendInvite(options: IInviteMsgOptions): Promise<{
711
- code: RCCallErrorCode;
712
- message?: IReceivedMessage | undefined;
713
- }>;
682
+ onRTCStateReport?: (report: IRCRTCStateReport, session: RCCallSession) => void;
714
683
  /**
715
- * 发送人员变更消息
684
+ * RTC 每次 Ping 结果
716
685
  */
717
- sendMemeberModify(options: IMemberModifyMsgOptions): Promise<{
718
- code: RCCallErrorCode;
719
- message?: IReceivedMessage | undefined;
720
- }>;
686
+ onPing?: (result: RCRTCPingResult, session: RCCallSession) => void;
721
687
  /**
722
- * 发送响铃消息
688
+ * ~ICE 连接状态变更通知~
689
+ * @since version 5.1.5
723
690
  */
724
- sendRinging(options: IRingingMsgOptions): Promise<{
725
- code: RCCallErrorCode;
726
- message?: IReceivedMessage | undefined;
727
- }>;
691
+ onICEConnectionStateChange?: (state: RTCIceConnectionState, session: RCCallSession) => void;
692
+ }
693
+ /**
694
+ * 创建session的options
695
+ */
696
+ interface IRCCallSessionOptions {
728
697
  /**
729
- * 发送同意接听消息
698
+ * 本地资源,用户主动发起会话的时候,会先获得本地资源
730
699
  */
731
- sendAccept(options: IAcceptMsgOptions): Promise<{
732
- code: RCCallErrorCode;
733
- message?: IReceivedMessage | undefined;
734
- }>;
700
+ localTracks?: RCLocalTrack[];
735
701
  /**
736
- * 发送挂断消息
702
+ * 是否允许订阅重试, 默认为false
737
703
  */
738
- sendHungup(options: IHungupMsgOptions): Promise<{
739
- code: RCCallErrorCode;
740
- message?: IReceivedMessage | undefined;
741
- }>;
704
+ isAllowSubscribeRetry?: boolean;
742
705
  /**
743
- * 发送媒体变更消息
706
+ * 是否允许发布重试, 默认为false
744
707
  */
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;
708
+ isAllowPublishRetry?: boolean;
761
709
  /**
762
- * 房间状态
710
+ * 禁用视频时关摄像头, 默认false
763
711
  */
764
- private _sessionState;
712
+ isOffCameraWhenVideoDisable?: boolean;
765
713
  /**
766
- * 用户状态及信息
714
+ * RTC 房间加入类型
767
715
  */
768
- private _userInfo;
716
+ joinType?: RTCJoinType;
769
717
  /**
770
- * 用户计时器映射
718
+ * 允许降级获得流,获得音视频不成功 ,降级获得音频
771
719
  */
772
- private _userTimers;
720
+ isAllowDemotionGetStream?: boolean;
773
721
  /**
774
- * 监听器
722
+ * 产生session的场景,是主叫产生 或 被叫产生
775
723
  */
776
- private _watchers;
724
+ produceType?: ProduceTypes;
725
+ isCrossAppkey?: boolean;
777
726
  /**
778
- * 呼叫超时时间 (单位:毫秒)
727
+ * 呼叫推送配置
779
728
  */
780
- private _callTimeout;
729
+ callPushConfig?: IPushConfig;
781
730
  /**
782
- * 通话建立开始时间
731
+ * 挂断推送配置
783
732
  */
784
- private _beginTimestamp;
733
+ hungupPushConfig?: IPushConfig;
734
+ }
735
+ interface IRCTrackBitrate {
785
736
  /**
786
- * 通话结束时间
737
+ * 最大码率
787
738
  */
788
- private _endTimestamp;
739
+ max: number;
789
740
  /**
790
- * 通话结束原因
741
+ * 最小码率
791
742
  */
792
- private _endReason;
743
+ min: number;
793
744
  /**
794
- * 主叫 ID
795
- * 发起邀请为当前用户 ID
796
- * 收到邀请为 senderUserId
797
- * 收到人员变更邀请为消息体中 callerId
745
+ * 上行起始码率
798
746
  */
799
- private _callerId;
747
+ start?: number;
748
+ }
749
+ /**
750
+ * RCCallClient call方法的传参
751
+ */
752
+ interface IRCCallParams {
753
+ targetId: string;
800
754
  /**
801
- * 当次通话邀请者 ID
802
- * 发起邀请为当前用户 ID、收到邀请为 senderUserId、收到人员变更邀请为消息体中 senderUserId
755
+ * 音频 or 音视频, 默认音频
803
756
  */
804
- private _inviterId;
757
+ mediaType: RCCallMediaType;
805
758
  /**
806
- * 是否是跨 appkey
759
+ * session上要注册的监听事件
807
760
  */
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);
761
+ listener: ISessionListener;
812
762
  /**
813
- * 获取校正后超时时间
763
+ * 组织 Id,可选
814
764
  */
815
- private _getTimeout;
816
- private _clearTimerById;
765
+ channelId?: string;
817
766
  /**
818
- * 通知 call 层房间状态变更及原因
767
+ * 用于获取己方媒体资源的参数
819
768
  */
820
- private _notifyStateChange;
769
+ constraints?: {
770
+ video?: ICameraVideoProfile;
771
+ audio: IMicphoneAudioProfile;
772
+ };
821
773
  /**
822
- * 通知 call 层人员状态变更及原因
774
+ * 消息的扩展信息
823
775
  */
824
- private _notifyUserStateChange;
825
- private _otherClientHandle;
776
+ extra?: string;
826
777
  /**
827
- * 正在通话中,且不是当前已接通用户设备(deviceId)发来的消息
778
+ * 对方显示通知的标题
828
779
  */
829
- private _isRemoteInvalidMsg;
830
- private _onRinging;
831
- private _onAccept;
832
- private _onMediaModify;
833
- private _onHungup;
780
+ pushTitle?: string;
834
781
  /**
835
- * 注册事件监听
836
- * @params watchers
782
+ * 对方显示的通知内容
837
783
  */
838
- registerEventListener(watchers: ICallStateMachineWatchers): void;
784
+ pushContent?: string;
839
785
  /**
840
- * 收到 invite 消息时状态机更新(CallEngine 内部调用)
841
- * @param message 接收消息
786
+ * 设置码率
842
787
  */
843
- __onInvite(message: IReceivedMessage): void;
788
+ bitrate?: {
789
+ video?: IRCTrackBitrate;
790
+ audio?: number;
791
+ };
844
792
  /**
845
- * 收到 memberModify 消息时状态机更新(CallEngine 内部调用)
846
- * @param message 接收消息
793
+ * 是否为跨 appkey 通话
847
794
  */
848
- __onMemberModify(message: IReceivedMessage): void;
795
+ isCrossAppkey?: boolean;
796
+ }
797
+ interface IMediaStreamConstraints {
798
+ video?: ICameraVideoProfile;
799
+ audio?: IMicphoneAudioProfile;
800
+ }
801
+ /**
802
+ * RCCallClient callInGroup方法的传参
803
+ */
804
+ interface IRCCallInGroupParams {
805
+ targetId: string;
806
+ userIds: string[];
807
+ mediaType: RCCallMediaType;
849
808
  /**
850
- * 处理已有 session ,不允许再接听新会话情况
809
+ * session上要注册的监听事件
851
810
  */
852
- __handleInviteInSession(): void;
811
+ listener: ISessionListener;
853
812
  /**
854
- * 主动呼叫 (CallEngine 内部调用)
855
- * @param userIds 被邀请用户 ID 列表
856
- * @param extra 消息的扩展信息
857
- * @param pushTitle 通知的标题
858
- * @param pushContent 通知的内容
813
+ * 组织 Id,可选
859
814
  */
860
- __call(userIds: string[], extra?: string, pushTitle?: string, pushContent?: string, isCrossAppkey?: boolean): Promise<{
861
- code: RCCallErrorCode;
862
- }>;
815
+ channelId?: string;
863
816
  /**
864
- * 接听
817
+ * 用于获取己方媒体资源的参数
865
818
  */
866
- accept(): Promise<{
867
- code: RCCallErrorCode;
868
- }>;
819
+ constraints?: IMediaStreamConstraints;
869
820
  /**
870
- * 群呼叫中继续邀请
871
- * @param userIds 被邀请用户 ID 列表
821
+ * 消息的扩展信息
872
822
  */
873
- invite(userIds: string[], options?: IInviteOptions): Promise<{
874
- code: RCCallErrorCode;
875
- }>;
876
- private _hungupHandle;
823
+ extra?: string;
877
824
  /**
878
- * 挂断
825
+ * 对方显示通知的标题
879
826
  */
880
- hungup(pushTitle?: string, pushContent?: string): Promise<{
881
- code: RCCallErrorCode;
882
- }>;
827
+ pushTitle?: string;
883
828
  /**
884
- * 修改通话媒体类型
885
- * @param mediaType RCCallMediaType.AUDIO 改为音频通话 | RCCallMediaType.AUDIO_VIDEO 改为音视频通话
886
- */
887
- changeMediaType(mediaType: RCCallMediaType): Promise<{
888
- code: RCCallErrorCode;
889
- }>;
829
+ * 对方显示的通知内容
830
+ */
831
+ pushContent?: string;
890
832
  /**
891
- * 用户加入通话补偿机制(rtc userJoin 事件触发)
892
- * 主叫呼叫后,未收到被叫 accept 消息,但收到了 userJoin 同样补偿更新用户、房间状态、呼叫计时器
833
+ * 设置码率
893
834
  */
894
- userJoin(userIds: string[]): void;
835
+ bitrate?: {
836
+ video?: IRCTrackBitrate;
837
+ audio?: number;
838
+ };
839
+ }
840
+ interface IDeviceChangeParams {
841
+ audio?: IMicphoneAudioProfile;
842
+ video?: ICameraVideoProfile;
843
+ }
844
+
845
+ interface IEndSummary {
895
846
  /**
896
- * 用户离开通话补偿机制(rtc userLeave、kickOff 事件触发)
897
- * 通话中远端用户挂断,挂断消息未到,但是监听到 rtc userLeave 同样补偿更新用户、房间状态
847
+ * 通话类型
898
848
  */
899
- userLeave(userIds: string[]): void;
849
+ conversationType: ConversationType;
900
850
  /**
901
- * Call 层己方异常失败后调用的方法
902
- * 触发时机:音视频服务异常、获取资源失败、加入 RTC 房间失败、发布|订阅失败
851
+ * 多组织 ID
903
852
  */
904
- close(reason: RCCallEndReason): void;
905
- setHungupPushConfig(pushConfig?: string, pushContent?: string): void;
853
+ channelId: string;
906
854
  /**
907
- * 通话唯一标识
855
+ * 目标 ID
908
856
  */
909
- getCallId(): string;
857
+ targetId: string;
910
858
  /**
911
- * 多组织 ID
859
+ * 通话媒体类型
912
860
  */
913
- getChannelId(): string;
861
+ mediaType: RCCallMediaType;
914
862
  /**
915
- * 目标 ID,单呼对方人员 Id, 群呼群组 Id
863
+ * 通话开始时间戳
916
864
  */
917
- getTargetId(): string;
865
+ beginTimestamp: number;
918
866
  /**
919
- * 获取会话类型
867
+ * 通话结束时间戳
920
868
  */
921
- getConversationType(): ConversationType;
869
+ endTimestamp: number;
922
870
  /**
923
- * 获取远端成员 ID 列表
871
+ * 通话时间
924
872
  */
925
- getRemoteUserIds(): string[];
926
- /**
927
- * 获取远端成员信息列表
928
- */
929
- getRemoteUsers(): IUserData[];
873
+ duration: number;
930
874
  /**
931
- * 获取房间状态
875
+ * 通话结束原因
932
876
  */
933
- getState(): RCCallSessionState;
877
+ endReason: RCCallEndReason;
878
+ }
879
+ interface IUserProfile {
934
880
  /**
935
- * 获取人员状态
881
+ * 用户名
936
882
  */
937
- getUserState(userId: string): RCCallUserState;
883
+ name?: string;
938
884
  /**
939
- * 获取会话发起者 Id
885
+ * 用户头像地址
940
886
  */
941
- getCallerId(): string;
887
+ portraitUri?: string;
942
888
  /**
943
- * 获取当次会话邀请者 Id
889
+ * user info 中附加信息
944
890
  */
945
- getInviterId(): string;
891
+ extra?: string;
892
+ }
893
+ /**
894
+ * 通话发起者信息
895
+ */
896
+ interface ISenderInfo extends IUserProfile {
946
897
  /**
947
- * 获取当前通话媒体类型
898
+ * 发起者 userId
948
899
  */
949
- getMediaType(): RCCallMediaType;
900
+ userId: string;
901
+ }
902
+ interface IUserData extends IUserProfile {
950
903
  /**
951
- * 通话挂断后可调用
904
+ * 用户 ID
952
905
  */
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 {
906
+ userId: string;
965
907
  /**
966
- * 主叫
908
+ * 用户 状态
967
909
  */
968
- CALLER = 1,
910
+ state: RCCallUserState;
969
911
  /**
970
- * 被叫
912
+ * 是否是通话发起者
971
913
  */
972
- CALLEE = 2
973
- }
974
-
975
- declare class RCCallSession {
914
+ isCaller: boolean;
976
915
  /**
977
- * 状态机实例
916
+ * 是否是远端用户
978
917
  */
979
- private _stateMachine;
918
+ isRemote: boolean;
980
919
  /**
981
- * rtc实例
920
+ * 用户 deviceId
921
+ * 主要用于记录远端的用户的 deviceId, 用于处理多端消息
982
922
  */
983
- private readonly _rtcClient;
984
- private readonly _logger;
923
+ deviceId?: string;
924
+ }
925
+ interface IUserStateChangeInfo {
985
926
  /**
986
- * session的其它选项
927
+ * 用户数据
987
928
  */
988
- private _options;
929
+ user: IUserData;
989
930
  /**
990
- * RTC房间实例
931
+ * 挂断原因( user.state 为 RCCallUserState.NONE 时返回)
991
932
  */
992
- private _room;
933
+ reason?: RCCallEndReason;
934
+ }
935
+ interface IStateChangeInfo {
993
936
  /**
994
- * 用户传进来的 对session的监听 (要在RCCallClient的_onInvite里判断,要求执行完onSession必须注册session的监听,所以这里是public)
937
+ * 状态
995
938
  */
996
- _listener: ISessionListener | null;
939
+ state: RCCallSessionState;
997
940
  /**
998
- * RTC订阅、发布重试的次数
941
+ * state 为 RCCallSessionState.END 时返回
999
942
  */
1000
- private readonly _RETRYCOUNT;
943
+ reason?: RCCallEndReason;
944
+ }
945
+ declare type IInvitedUsers = ISenderInfo;
946
+ interface IMemberModifyInfo {
1001
947
  /**
1002
- * 加入房间定时器
948
+ * 发起者信息
1003
949
  */
1004
- private joinRoomTimer;
1005
- constructor(
950
+ sender: ISenderInfo;
1006
951
  /**
1007
- * 状态机实例
952
+ * 被邀请用户 ID 列表
1008
953
  */
1009
- _stateMachine: RCCallStateMachine,
954
+ invitedUsers: IInvitedUsers[];
955
+ }
956
+ interface IMediaModifyInfo {
1010
957
  /**
1011
- * rtc实例
958
+ * 发起者信息
1012
959
  */
1013
- _rtcClient: RCRTCClient, _logger: ILogger,
960
+ sender: ISenderInfo;
1014
961
  /**
1015
- * session的其它选项
962
+ * 修改后的媒体类型
1016
963
  */
1017
- _options?: IRCCallSessionOptions);
964
+ mediaType: RCCallMediaType;
965
+ }
966
+ interface ICallStateMachineWatchers {
1018
967
  /**
1019
- * 加入房间
968
+ * 用户状态变更
969
+ * @param info
1020
970
  */
1021
- private _joinRoom;
971
+ onUserStateChange: (info: IUserStateChangeInfo) => void;
1022
972
  /**
1023
- * (初始化房间的时候) 订阅远程的流,把远程的流抛给用户
973
+ * 房间状态变更
974
+ * @param info
1024
975
  */
1025
- private _subscribeInRoomRemoteTrack;
976
+ onStateChange: (info: IStateChangeInfo) => void;
1026
977
  /**
1027
- * 可以重试的订阅
1028
- * @param params.tracks tracks
1029
- * @param params.isAllowSubscribeRetry 是否允许重试
1030
- * @param params.count 允许重试的次数
978
+ * 收到响铃
979
+ * @param sender 发起用户信息
1031
980
  */
1032
- private _subscribeRetry;
981
+ onRinging: (sender: ISenderInfo) => void;
1033
982
  /**
1034
- * 发布本地资源的逻辑
1035
- *
983
+ * 收到接听
984
+ * @param sender 发起用户信息
1036
985
  */
1037
- private _publish;
986
+ onAccept: (sender: ISenderInfo) => void;
1038
987
  /**
1039
- * 可以重试的发布
1040
- * @param params.tracks tracks
1041
- * @param params.isAllowPublishRetry 是否允许重试
1042
- * @param params.count 允许重试的次数
988
+ * 收到挂断
1043
989
  */
1044
- private _publishRetry;
990
+ onHungup: (sender: ISenderInfo, reason: RCCallEndReason) => void;
1045
991
  /**
1046
- * 退出房间
992
+ * 收到人员变更
993
+ * @param sender 发起用户信息
1047
994
  */
1048
- private _leaveRoom;
995
+ onMemberModify: (info: IMemberModifyInfo) => void;
1049
996
  /**
1050
- * 出现异常后要处理的逻辑,
1051
- * @param endReason 原因
997
+ * 收到通话类型变更
998
+ * @param sender 发起用户信息
1052
999
  */
1053
- private _exceptionClose;
1000
+ onMediaModify: (info: IMediaModifyInfo) => void;
1054
1001
  /**
1055
- * 用户调用的,注册session上的监听
1002
+ * 是否跨appkey
1003
+ * @param ifCross 是否为跨appkey通信
1056
1004
  */
1057
- registerSessionListener(listener: ISessionListener): void;
1005
+ crossAppkey: (ifCross: boolean) => void;
1006
+ }
1007
+ /**
1008
+ * 发送邀请时的可选项
1009
+ */
1010
+ interface IInviteOptions {
1058
1011
  /**
1059
- * 调RTC API 获得本地流
1012
+ * 消息的扩展信息
1060
1013
  */
1061
- private _getLocalTrackCore;
1062
- private _getLocalTrack;
1014
+ extra?: string;
1063
1015
  /**
1064
- * 通话中更换音频设备
1016
+ * 移动端推送配置
1065
1017
  */
1066
- changeAudioDevice(audioConstraints?: IMicphoneAudioProfile): Promise<{
1067
- code: RCCallErrorCode;
1068
- }>;
1018
+ pushConfig?: IPushConfig;
1019
+ }
1020
+
1021
+ /**
1022
+ * 注释
1023
+ * TODO
1024
+ */
1025
+ declare enum MsgCallStatus {
1026
+ OUTGOING = 1,
1027
+ INCOMING = 2,
1028
+ RINGING = 3,
1029
+ CONNECTED = 4,
1030
+ IDLE = 5,
1031
+ ACCEPTED = 6
1032
+ }
1033
+
1034
+ interface IOfflineRecord {
1035
+ channelId: string;
1036
+ conversationType: ConversationType;
1037
+ targetId: string;
1038
+ mediaType: RCCallMediaType;
1039
+ callId: string;
1040
+ inviterId: string;
1041
+ endReason: RCCallEndReason;
1042
+ beginTimestamp: number;
1043
+ endTimestamp: number;
1044
+ duration: number;
1045
+ }
1046
+
1047
+ interface ISendBaseOptions {
1069
1048
  /**
1070
- * 群呼叫中继续邀请
1071
- * @param userIds 被邀请用户 ID 列表
1072
- * @param options.extra 消息的扩展信息
1073
- * @deprecated 5.1.2 废弃 options.pushTitle 通知的标题
1074
- * @deprecated 5.1.2 废弃 options.pushContent 通知内容
1049
+ * 组织 ID
1075
1050
  */
1076
- invite(userIds: string[], options?: IInviteOptions): Promise<{
1077
- code: RCCallErrorCode;
1078
- }>;
1051
+ channelId: string;
1079
1052
  /**
1080
- * 同意接听
1053
+ * 会话类型
1081
1054
  */
1082
- accept(constraints?: IMediaStreamConstraints): Promise<{
1083
- code: RCCallErrorCode;
1084
- }>;
1055
+ conversationType: ConversationType;
1085
1056
  /**
1086
- * 挂断
1057
+ * 目标 ID (单聊:对方 Id;群聊: 群组 Id)
1087
1058
  */
1088
- hungup(): Promise<{
1089
- code: RCCallErrorCode;
1090
- }>;
1059
+ targetId: string;
1060
+ }
1061
+ interface IExistedUserPofiles {
1091
1062
  /**
1092
- * 通话媒体变更
1093
- * @param mediaType RCCallMediaType.AUDIO 改为音频通话 | RCCallMediaType.AUDIO_VIDEO 改为音视频通话
1063
+ * 用户 ID
1094
1064
  */
1095
- _changeMediaType(mediaType: RCCallMediaType): Promise<{
1096
- code: RCCallErrorCode;
1097
- }>;
1065
+ userId: string;
1098
1066
  /**
1099
- * 获得本地视频
1067
+ * 通话类型
1100
1068
  */
1101
- private _getLocalVideoTracks;
1069
+ mediaType: RCCallMediaType;
1102
1070
  /**
1103
- * 获得本地音频
1071
+ * 与移动端一致的通话状态
1104
1072
  */
1105
- private _getLocalAudioTracks;
1073
+ callStatus: MsgCallStatus;
1106
1074
  /**
1107
- * 把通话的MediaType升级到音视频
1075
+ * PC 端 mediaId 直接传 userId, mediaId iOS 需要解出来渲染视图用。
1108
1076
  */
1109
- private _setMediaTypeToAudioAndVideo;
1077
+ mediaId?: string;
1078
+ }
1079
+ interface IMsgListener {
1080
+ onInvite?: (msg: IReceivedMessage) => void;
1081
+ onRinging?: (msg: IReceivedMessage) => void;
1082
+ onAccept?: (msg: IReceivedMessage) => void;
1083
+ onMemberModify?: (msg: IReceivedMessage) => void;
1084
+ onMediaModify?: (msg: IReceivedMessage) => void;
1085
+ onHungup?: (msg: IReceivedMessage) => void;
1086
+ sendAccept?: (info: {
1087
+ callId: string;
1088
+ }) => void;
1089
+ onOfflineRecord?: (record: IOfflineRecord) => void;
1090
+ }
1091
+ interface IInviteMsgOptions extends ISendBaseOptions {
1110
1092
  /**
1111
- * 把通话的MediaType降级到音频
1112
- * @param isSendMesssage 是否需要发消息, 默认发消息
1093
+ * 呼叫 ID( RTC 房间 ID )
1113
1094
  */
1114
- private _setMediaTypeToAudio;
1095
+ callId: string;
1115
1096
  /**
1116
- * 通话降级,目前需求只做通话降级,音视频可以降级为音频,音频不能升到音视频, 发消息成功才算降级成功
1117
- *
1097
+ * 通话媒体类型
1118
1098
  */
1119
- descendAbility(): Promise<{
1120
- code: RCCallErrorCode;
1121
- }>;
1099
+ mediaType: RCCallMediaType;
1122
1100
  /**
1123
- * 禁用视频track
1101
+ * 被邀请人用户 ID 列表
1124
1102
  */
1125
- disableVideoTrack(): Promise<{
1126
- code: RCCallErrorCode;
1127
- }>;
1103
+ inviteUserIds: string[];
1128
1104
  /**
1129
- * 启用视频track
1105
+ * 扩展信息
1130
1106
  */
1131
- enableVideoTrack(): Promise<{
1132
- code: RCCallErrorCode;
1133
- }>;
1107
+ extra: string;
1134
1108
  /**
1135
- * 禁用音频track
1109
+ * 移动端推送配置
1136
1110
  */
1137
- disableAudioTrack(): Promise<{
1138
- code: RCCallErrorCode;
1139
- } | undefined>;
1111
+ pushConfig?: IPushConfig;
1140
1112
  /**
1141
- * 启用音频track
1142
- */
1143
- enableAudioTrack(): Promise<{
1144
- code: RCCallErrorCode;
1145
- } | undefined>;
1113
+ * 跨appkey参数
1114
+ */
1115
+ roomType?: number;
1116
+ }
1117
+ interface IMemberModifyMsgOptions extends ISendBaseOptions {
1146
1118
  /**
1147
- * 销毁本地流
1119
+ * 呼叫 ID( RTC 房间 ID )
1148
1120
  */
1149
- private _destroyTracks;
1121
+ callId: string;
1150
1122
  /**
1151
- * 向外抛出本地流
1123
+ * 通话媒体类型
1152
1124
  */
1153
- private _notifyTrackReady;
1125
+ mediaType: RCCallMediaType;
1154
1126
  /**
1155
- * 房间上注册事件
1127
+ * 被邀请人用户 ID 列表
1156
1128
  */
1157
- private _registerRoomEventListener;
1129
+ inviteUserIds: string[];
1158
1130
  /**
1159
- * 注册房间质量数据监听器
1131
+ * 获取会话发起者 Id
1160
1132
  */
1161
- private _registerReportListener;
1133
+ callerId: string;
1162
1134
  /**
1163
- * 通话唯一标识
1135
+ * 当前通话中的所有人,包含未接听用户
1164
1136
  */
1165
- getSessionId(): string;
1137
+ existedUserPofiles: IExistedUserPofiles[];
1166
1138
  /**
1167
- * 获取房间当前会话 Id,当房间内已无成员时房间会回收,重新加入时 sessionId 将更新,(用户录制资源用的)
1139
+ * 当前通话中的所有人,包含未接听用户
1168
1140
  */
1169
- getRTCSessionId(): string | null;
1141
+ directionalUserIdList: string[];
1170
1142
  /**
1171
- * 目标 ID,单呼对方人员 Id, 群呼群组 Id
1143
+ * 扩展信息
1172
1144
  */
1173
- getTargetId(): string;
1145
+ extra: string;
1174
1146
  /**
1175
- * 获取会话类型
1147
+ * 移动端推送配置
1176
1148
  */
1177
- getConversationType(): ConversationType;
1149
+ pushConfig?: IPushConfig;
1150
+ }
1151
+ interface IRingingMsgOptions extends ISendBaseOptions {
1178
1152
  /**
1179
- * 组织 ID
1153
+ * 呼叫 ID( RTC 房间 ID )
1180
1154
  */
1181
- getChannelId(): string;
1155
+ callId: string;
1182
1156
  /**
1183
- * 房间人员列表,不包含本端信息
1157
+ * 群呼中需要接收响铃的用户 ID 列表
1184
1158
  */
1185
- getRemoteUsers(): IUserData[];
1186
- /**
1187
- * 房间人员列表,不包含本端信息
1188
- */
1189
- getUsers(): IUserData[];
1159
+ userIds?: string[];
1160
+ }
1161
+ interface IAcceptMsgOptions extends ISendBaseOptions {
1190
1162
  /**
1191
- * 获取人员状态
1163
+ * 呼叫 ID( RTC 房间 ID )
1192
1164
  */
1193
- getUserState(userId: string): RCCallUserState;
1165
+ callId: string;
1194
1166
  /**
1195
- * 获取session状态
1167
+ * 通话媒体类型
1196
1168
  */
1197
- getState(): RCCallSessionState;
1169
+ mediaType: RCCallMediaType;
1198
1170
  /**
1199
- * 获得会话发起者id
1171
+ * 群呼中需要接收接听消息的用户 ID 列表
1200
1172
  */
1201
- getCallerId(): string;
1173
+ userIds: string[];
1174
+ }
1175
+ interface IHungupMsgOptions extends ISendBaseOptions {
1202
1176
  /**
1203
- * 获得mediaType
1177
+ * 呼叫 ID( RTC 房间 ID )
1204
1178
  */
1205
- getMediaType(): RCCallMediaType;
1206
- }
1207
-
1208
- interface ISender {
1209
- userId: string;
1179
+ callId: string;
1210
1180
  /**
1211
- * 用户名
1212
- */
1213
- name?: string;
1181
+ * 挂断原因
1182
+ */
1183
+ reason: RCCallEndReason;
1214
1184
  /**
1215
- * 用户头像地址
1216
- */
1217
- portraitUri?: string;
1185
+ * 群呼中需要接收挂断消息的用户 ID 列表
1186
+ */
1187
+ userIds: string[];
1218
1188
  /**
1219
- * user info 中附加信息
1220
- */
1221
- extra?: string;
1189
+ * 移动端推送配置
1190
+ */
1191
+ pushConfig?: IPushConfig;
1222
1192
  }
1223
- interface IMuteUser extends ISender {
1193
+ interface IMediaModifyMsgOptions extends ISendBaseOptions {
1224
1194
  /**
1225
- * 是否禁用
1195
+ * 呼叫 ID( RTC 房间 ID )
1226
1196
  */
1227
- muted: boolean;
1197
+ callId: string;
1228
1198
  /**
1229
- * track类型
1199
+ * 通话媒体类型
1230
1200
  */
1231
- kind: string;
1201
+ mediaType: RCCallMediaType;
1232
1202
  /**
1233
- * trackId
1203
+ * 群呼中需要媒体变更消息的用户 ID 列表
1234
1204
  */
1235
- trackId: string;
1205
+ userIds: string[];
1236
1206
  }
1207
+
1208
+ declare type MsgListenerKeys = keyof IMsgListener;
1237
1209
  /**
1238
- * CallLib 初始化参数
1210
+ * 消息接收处理: 在线消息、离线消息
1211
+ * 发送消息处理: 发送不同类型消息封装
1239
1212
  */
1240
- interface IRCCallInitOptions {
1241
- /**
1242
- * RTC实例
1243
- */
1244
- rtcClient: RCRTCClient;
1245
- /**
1246
- * 收到邀请后,产生新的session
1247
- */
1248
- onSession: (session: RCCallSession, extra?: string) => void;
1213
+ declare class CallMessageHandler extends EventEmitter {
1214
+ private readonly _context;
1215
+ private readonly _runtime;
1216
+ private readonly _logger;
1249
1217
  /**
1250
- * session已关闭
1218
+ * 离线消息处理时间间隔
1251
1219
  */
1252
- onSessionClose: (session: RCCallSession, summary?: IEndSummary) => void;
1220
+ private readonly _offlineMsgItv;
1221
+ private readonly _getStateMachine;
1222
+ private _watchers;
1223
+ private _userInfo;
1224
+ private _msgBufferList;
1225
+ private _hadHandleMsgTimer;
1226
+ private _offlineRecorder;
1227
+ private _deviceId;
1228
+ constructor(_context: RTCPluginContext, _runtime: IRuntime, _logger: ILogger,
1253
1229
  /**
1254
- * 离线期间收到的呼叫记录
1255
- * @param record
1256
- * @returns
1230
+ * 离线消息处理时间间隔
1257
1231
  */
1258
- onOfflineRecord?: (record: IOfflineRecord) => void;
1232
+ _offlineMsgItv: number, _getStateMachine: (callId: string) => RCCallStateMachine | null);
1233
+ private _onMessage;
1259
1234
  /**
1260
- * 是否允许接听新呼叫,当前正在通话,如果收到新的邀请,是直接挂断,还是允许选择, 默认值false,直接挂断新的session
1261
- *
1262
- * 暂不对外暴露
1235
+ * 在线消息抛给状态机处理
1263
1236
  */
1237
+ private _onRecvOnlineCallMsg;
1264
1238
  /**
1265
- * 是否允许订阅重试, 默认为false
1239
+ * 消息 buffer 列表处理逻辑
1240
+ * 1、每 20ms 检查一次 buffer list
1241
+ * 2、取出已经延迟 200 的消息列表进行消费 | 无延迟 200ms 内消息直接递归
1242
+ * 3、消费分为 离线消息消费逻辑、在线消息消费逻辑,消费后递归
1266
1243
  */
1267
- isAllowSubscribeRetry?: boolean;
1268
- /**
1269
- * 是否允许发布重试, 默认为false
1270
- */
1271
- isAllowPublishRetry?: boolean;
1244
+ private _handleBufferMsgs;
1245
+ registerEventListener(listener: IMsgListener): void;
1246
+ registerStateMachineEvent(callId: string, funcName: MsgListenerKeys, event: (...args: any[]) => void): void;
1247
+ unregisterStateMachineEvent(callId: string): void;
1248
+ registerUserInfo(userInfo: IUserProfile): void;
1272
1249
  /**
1273
- * 禁用视频时关摄像头, 默认false
1250
+ * 发送 IM 消息
1274
1251
  */
1275
- isOffCameraWhenVideoDisable?: boolean;
1252
+ private _sendCallMessage;
1276
1253
  /**
1277
- * RTC 房间加入类型
1254
+ * 发送邀请消息
1278
1255
  */
1279
- joinType?: RTCJoinType;
1256
+ sendInvite(options: IInviteMsgOptions): Promise<{
1257
+ code: RCCallErrorCode;
1258
+ message?: IReceivedMessage | undefined;
1259
+ }>;
1280
1260
  /**
1281
- * 允许降级获得流,获得音视频不成功 ,降级获得音频
1261
+ * 发送人员变更消息
1282
1262
  */
1283
- isAllowDemotionGetStream?: boolean;
1263
+ sendMemeberModify(options: IMemberModifyMsgOptions): Promise<{
1264
+ code: RCCallErrorCode;
1265
+ message?: IReceivedMessage | undefined;
1266
+ }>;
1284
1267
  /**
1285
- * 该参数已废弃,请使用 `logOutputLevel` 替代
1286
- * @deprecated - version 5.2.2
1268
+ * 发送响铃消息
1287
1269
  */
1288
- logLevel?: LogLevel;
1270
+ sendRinging(options: IRingingMsgOptions): Promise<{
1271
+ code: RCCallErrorCode;
1272
+ message?: IReceivedMessage | undefined;
1273
+ }>;
1289
1274
  /**
1290
- * 日志输出等级
1291
- * @since version 5.2.2
1275
+ * 发送同意接听消息
1292
1276
  */
1293
- logOutputLevel?: LogL.DEBUG | LogL.INFO | LogL.WARN | LogL.ERROR;
1277
+ sendAccept(options: IAcceptMsgOptions): Promise<{
1278
+ code: RCCallErrorCode;
1279
+ message?: IReceivedMessage | undefined;
1280
+ }>;
1294
1281
  /**
1295
- * 该参数已废弃
1296
- * @deprecated - version 5.2.0
1282
+ * 发送挂断消息
1297
1283
  */
1298
- logStdout?: (logLevel: LogLevel, content: string) => void;
1284
+ sendHungup(options: IHungupMsgOptions): Promise<{
1285
+ code: RCCallErrorCode;
1286
+ message?: IReceivedMessage | undefined;
1287
+ }>;
1299
1288
  /**
1300
- * 语言设置 (推送), 不传默认为中文
1289
+ * 发送媒体变更消息
1301
1290
  */
1302
- lang?: RCCallLanguage;
1291
+ sendMediaModify(options: IMediaModifyMsgOptions): Promise<{
1292
+ code: RCCallErrorCode;
1293
+ message?: IReceivedMessage | undefined;
1294
+ }>;
1303
1295
  }
1304
- /**
1305
- * 呼叫、挂断推送信息
1306
- */
1307
- interface IPushConfig {
1296
+
1297
+ declare class RCCallStateMachine {
1298
+ private readonly _context;
1299
+ private readonly _runtime;
1300
+ private readonly _logger;
1301
+ private readonly _callMsgHandler;
1302
+ private readonly _channelId;
1303
+ private readonly _conversationType;
1304
+ private readonly _targetId;
1305
+ private _mediaType;
1306
+ private readonly _callId;
1308
1307
  /**
1309
- * 推送标题
1308
+ * 房间状态
1310
1309
  */
1311
- pushTitle?: string;
1310
+ private _sessionState;
1312
1311
  /**
1313
- * 推送内容
1312
+ * 用户状态及信息
1314
1313
  */
1315
- pushContent?: string;
1316
- }
1317
- /**
1318
- * session上的监听
1319
- */
1320
- interface ISessionListener {
1314
+ private _userInfo;
1321
1315
  /**
1322
- * 当对方已响铃
1316
+ * 用户计时器映射
1323
1317
  */
1324
- onRinging: (sender: ISender, session: RCCallSession) => void;
1318
+ private _userTimers;
1325
1319
  /**
1326
- * 当对方已同意
1320
+ * 监听器
1327
1321
  */
1328
- onAccept: (sender: ISender, session: RCCallSession) => void;
1322
+ private _watchers;
1329
1323
  /**
1330
- * 当对方已挂断
1324
+ * 呼叫超时时间 (单位:毫秒)
1331
1325
  */
1332
- onHungup: (sender: ISender, reason: RCCallEndReason, session: RCCallSession) => void;
1326
+ private _callTimeout;
1333
1327
  /**
1334
- * 群组通话,人员改变
1328
+ * 通话建立开始时间
1335
1329
  */
1336
- onMemberModify: (sender: ISender, invitedUsers: IInvitedUsers[], session: RCCallSession) => void;
1330
+ private _beginTimestamp;
1337
1331
  /**
1338
- * 通话降级
1332
+ * 通话结束时间
1339
1333
  */
1340
- onMediaModify: (sender: ISender, mediaType: RCCallMediaType, session: RCCallSession) => void;
1334
+ private _endTimestamp;
1341
1335
  /**
1342
- * 当接到流
1336
+ * 通话结束原因
1343
1337
  */
1344
- onTrackReady: (track: RCTrack, session?: RCCallSession) => void;
1338
+ private _endReason;
1345
1339
  /**
1346
- * 关闭 或 开启 音频
1340
+ * 主叫 ID
1341
+ * 发起邀请为当前用户 ID
1342
+ * 收到邀请为 senderUserId
1343
+ * 收到人员变更邀请为消息体中 callerId
1347
1344
  */
1348
- onAudioMuteChange: (muteUser: IMuteUser, session: RCCallSession) => void;
1345
+ private _callerId;
1349
1346
  /**
1350
- * 关闭 或 开启 视频
1347
+ * 当次通话邀请者 ID
1348
+ * 发起邀请为当前用户 ID、收到邀请为 senderUserId、收到人员变更邀请为消息体中 senderUserId
1351
1349
  */
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;
1350
+ private _inviterId;
1361
1351
  /**
1362
- * 用于接收RTC状态数据报告
1352
+ * 是否是跨 appkey
1363
1353
  */
1364
- onRTCStateReport?: (report: IRCRTCStateReport, session: RCCallSession) => void;
1354
+ private _isCrossAppkey;
1355
+ private _hungupPushConfig?;
1356
+ constructor(_context: RTCPluginContext, _runtime: IRuntime, _logger: ILogger, _callMsgHandler: CallMessageHandler, _channelId: string, _conversationType: ConversationType, _targetId: string, _mediaType: RCCallMediaType, _callId: string);
1365
1357
  /**
1366
- * RTC 每次 Ping 结果
1358
+ * 获取校正后超时时间
1367
1359
  */
1368
- onPing?: (result: RCRTCPingResult, session: RCCallSession) => void;
1360
+ private _getTimeout;
1361
+ private _clearTimerById;
1369
1362
  /**
1370
- * ~ICE 连接状态变更通知~
1371
- * @since version 5.1.5
1363
+ * 通知 call 层房间状态变更及原因
1372
1364
  */
1373
- onICEConnectionStateChange?: (state: RTCIceConnectionState, session: RCCallSession) => void;
1374
- }
1375
- /**
1376
- * 创建session的options
1377
- */
1378
- interface IRCCallSessionOptions {
1365
+ private _notifyStateChange;
1379
1366
  /**
1380
- * 本地资源,用户主动发起会话的时候,会先获得本地资源
1367
+ * 通知 call 层人员状态变更及原因
1381
1368
  */
1382
- localTracks?: RCLocalTrack[];
1369
+ private _notifyUserStateChange;
1370
+ private _otherClientHandle;
1383
1371
  /**
1384
- * 是否允许订阅重试, 默认为false
1385
- */
1386
- isAllowSubscribeRetry?: boolean;
1372
+ * 正在通话中,且不是当前已接通用户设备(deviceId)发来的消息
1373
+ */
1374
+ private _isRemoteInvalidMsg;
1375
+ private _onRinging;
1376
+ private _onAccept;
1377
+ private _onMediaModify;
1378
+ private _onHungup;
1387
1379
  /**
1388
- * 是否允许发布重试, 默认为false
1380
+ * 注册事件监听
1381
+ * @params watchers
1389
1382
  */
1390
- isAllowPublishRetry?: boolean;
1383
+ registerEventListener(watchers: ICallStateMachineWatchers): void;
1391
1384
  /**
1392
- * 禁用视频时关摄像头, 默认false
1385
+ * 收到 invite 消息时状态机更新(CallEngine 内部调用)
1386
+ * @param message 接收消息
1393
1387
  */
1394
- isOffCameraWhenVideoDisable?: boolean;
1388
+ __onInvite(message: IReceivedMessage): void;
1395
1389
  /**
1396
- * RTC 房间加入类型
1390
+ * 收到 memberModify 消息时状态机更新(CallEngine 内部调用)
1391
+ * @param message 接收消息
1397
1392
  */
1398
- joinType?: RTCJoinType;
1393
+ __onMemberModify(message: IReceivedMessage): void;
1399
1394
  /**
1400
- * 允许降级获得流,获得音视频不成功 ,降级获得音频
1395
+ * 处理已有 session ,不允许再接听新会话情况
1401
1396
  */
1402
- isAllowDemotionGetStream?: boolean;
1397
+ __handleInviteInSession(): void;
1403
1398
  /**
1404
- * 产生session的场景,是主叫产生 被叫产生
1399
+ * 主动呼叫 (CallEngine 内部调用)
1400
+ * @param userIds 被邀请用户 ID 列表
1401
+ * @param extra 消息的扩展信息
1402
+ * @param pushConfig 移动端推送配置
1405
1403
  */
1406
- produceType?: ProduceTypes;
1407
- isCrossAppkey?: boolean;
1404
+ __call(userIds: string[], extra: string | undefined, pushConfig: IPushConfig, isCrossAppkey?: boolean): Promise<{
1405
+ code: RCCallErrorCode;
1406
+ }>;
1408
1407
  /**
1409
- * 呼叫推送配置
1408
+ * 接听
1410
1409
  */
1411
- callPushConfig?: IPushConfig;
1410
+ accept(): Promise<{
1411
+ code: RCCallErrorCode;
1412
+ }>;
1412
1413
  /**
1413
- * 挂断推送配置
1414
+ * 群呼叫中继续邀请
1415
+ * @param userIds 被邀请用户 ID 列表
1414
1416
  */
1415
- hungupPushConfig?: IPushConfig;
1416
- }
1417
- interface IRCTrackBitrate {
1417
+ invite(userIds: string[], options?: IInviteOptions): Promise<{
1418
+ code: RCCallErrorCode;
1419
+ }>;
1420
+ private _hungupHandle;
1418
1421
  /**
1419
- * 最大码率
1422
+ * 挂断
1420
1423
  */
1421
- max: number;
1424
+ hungup(): Promise<{
1425
+ code: RCCallErrorCode;
1426
+ }>;
1422
1427
  /**
1423
- * 最小码率
1428
+ * 修改通话媒体类型
1429
+ * @param mediaType RCCallMediaType.AUDIO 改为音频通话 | RCCallMediaType.AUDIO_VIDEO 改为音视频通话
1424
1430
  */
1425
- min: number;
1431
+ changeMediaType(mediaType: RCCallMediaType): Promise<{
1432
+ code: RCCallErrorCode;
1433
+ }>;
1426
1434
  /**
1427
- * 上行起始码率
1435
+ * 用户加入通话补偿机制(rtc userJoin 事件触发)
1436
+ * 主叫呼叫后,未收到被叫 accept 消息,但收到了 userJoin 同样补偿更新用户、房间状态、呼叫计时器
1428
1437
  */
1429
- start?: number;
1430
- }
1431
- /**
1432
- * RCCallClient call方法的传参
1433
- */
1434
- interface IRCCallParams {
1435
- targetId: string;
1438
+ userJoin(userIds: string[]): void;
1436
1439
  /**
1437
- * 音频 or 音视频, 默认音频
1440
+ * 用户离开通话补偿机制(rtc userLeave、kickOff 事件触发)
1441
+ * 通话中远端用户挂断,挂断消息未到,但是监听到 rtc userLeave 同样补偿更新用户、房间状态
1438
1442
  */
1439
- mediaType: RCCallMediaType;
1443
+ userLeave(userIds: string[]): void;
1440
1444
  /**
1441
- * session上要注册的监听事件
1445
+ * Call 层己方异常失败后调用的方法
1446
+ * 触发时机:音视频服务异常、获取资源失败、加入 RTC 房间失败、发布|订阅失败
1442
1447
  */
1443
- listener: ISessionListener;
1448
+ close(reason: RCCallEndReason): void;
1449
+ setHungupPushConfig(pushConfig: IPushConfig): void;
1444
1450
  /**
1445
- * 组织 Id,可选
1451
+ * 通话唯一标识
1446
1452
  */
1447
- channelId?: string;
1453
+ getCallId(): string;
1448
1454
  /**
1449
- * 用于获取己方媒体资源的参数
1455
+ * 多组织 ID
1450
1456
  */
1451
- constraints?: {
1452
- video?: ICameraVideoProfile;
1453
- audio: IMicphoneAudioProfile;
1454
- };
1457
+ getChannelId(): string;
1455
1458
  /**
1456
- * 消息的扩展信息
1459
+ * 目标 ID,单呼对方人员 Id, 群呼群组 Id
1457
1460
  */
1458
- extra?: string;
1459
- /**
1460
- * 对方显示通知的标题
1461
- */
1462
- pushTitle?: string;
1461
+ getTargetId(): string;
1463
1462
  /**
1464
- * 对方显示的通知内容
1463
+ * 获取会话类型
1465
1464
  */
1466
- pushContent?: string;
1465
+ getConversationType(): ConversationType;
1467
1466
  /**
1468
- * 设置码率
1467
+ * 获取远端成员 ID 列表
1469
1468
  */
1470
- bitrate?: {
1471
- video?: IRCTrackBitrate;
1472
- audio?: number;
1473
- };
1469
+ getRemoteUserIds(): string[];
1474
1470
  /**
1475
- * 是否为跨 appkey 通话
1471
+ * 获取远端成员信息列表
1476
1472
  */
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;
1473
+ getRemoteUsers(): IUserData[];
1490
1474
  /**
1491
- * session上要注册的监听事件
1475
+ * 获取房间状态
1492
1476
  */
1493
- listener: ISessionListener;
1477
+ getState(): RCCallSessionState;
1494
1478
  /**
1495
- * 组织 Id,可选
1479
+ * 获取人员状态
1496
1480
  */
1497
- channelId?: string;
1481
+ getUserState(userId: string): RCCallUserState;
1498
1482
  /**
1499
- * 用于获取己方媒体资源的参数
1483
+ * 获取会话发起者 Id
1500
1484
  */
1501
- constraints?: IMediaStreamConstraints;
1485
+ getCallerId(): string;
1502
1486
  /**
1503
- * 消息的扩展信息
1487
+ * 获取当次会话邀请者 Id
1504
1488
  */
1505
- extra?: string;
1489
+ getInviterId(): string;
1506
1490
  /**
1507
- * 对方显示通知的标题
1491
+ * 获取当前通话媒体类型
1508
1492
  */
1509
- pushTitle?: string;
1510
- /**
1511
- * 对方显示的通知内容
1512
- */
1513
- pushContent?: string;
1493
+ getMediaType(): RCCallMediaType;
1514
1494
  /**
1515
- * 设置码率
1495
+ * 通话挂断后可调用
1516
1496
  */
1517
- bitrate?: {
1518
- video?: IRCTrackBitrate;
1519
- audio?: number;
1520
- };
1497
+ getSummary(): IEndSummary;
1521
1498
  }
1522
- interface IDeviceChangeParams {
1523
- audio?: IMicphoneAudioProfile;
1524
- video?: ICameraVideoProfile;
1499
+
1500
+ declare enum RCCallLanguage {
1501
+ ZH = "zh",
1502
+ EN = "en"
1525
1503
  }
1526
1504
 
1527
1505
  declare class RCCallClient {
@@ -1544,8 +1522,14 @@ declare class RCCallClient {
1544
1522
  * session列表
1545
1523
  */
1546
1524
  private _sessionList;
1547
- private _callPushConfig;
1548
- private _hungupPushConfig;
1525
+ /**
1526
+ * 移动端呼叫推送配置
1527
+ */
1528
+ private _callPushConfig?;
1529
+ /**
1530
+ * 移动端挂断推送配置
1531
+ */
1532
+ private _hungupPushConfig?;
1549
1533
  constructor(_context: RTCPluginContext, _runtime: IRuntime, _logger: BasicLogger, _options: IRCCallInitOptions);
1550
1534
  /**
1551
1535
  * 监听onInvite
@@ -1638,13 +1622,12 @@ declare class RCCallClient {
1638
1622
  /**
1639
1623
  * 设置呼叫、挂断推送数据
1640
1624
  * @param callPushConfig 呼叫推送配置
1641
- * @param callPushConfig.pushTitle 呼叫推送标题
1642
- * @param callPushConfig.pushContent 呼叫推送内容
1643
1625
  * @param hungupPushConfig 挂断推送配置
1644
- * @param hungupPushConfig.pushTitle 挂断推送标题
1645
- * @param hungupPushConfig.pushContent 挂断推送内容
1626
+ * @description callLib 会内置 IPushConfig 中 pushData 的赋值,业务层无需关注 pushData 字段值
1646
1627
  */
1647
- setPushConfig(callPushConfig?: IPushConfig, hungupPushConfig?: IPushConfig): void;
1628
+ setPushConfig(callPushConfig: IPushConfig, hungupPushConfig: IPushConfig): {
1629
+ 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;
1630
+ } | undefined;
1648
1631
  }
1649
1632
 
1650
1633
  declare const installer: IPluginGenerator<RCCallClient, IRCCallInitOptions>;