@rongcloud/plugin-call-plus 1.0.0

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.
@@ -0,0 +1,3134 @@
1
+ import { RCConnectionStatus, EventEmitter, BasicLogger, RTCJoinType, EnableLogL, PluginContext, IRuntime, IPluginGenerator } from '@rongcloud/engine';
2
+ import { EnableLogL as EnableLogL$1 } from '@rongcloud/imlib-next';
3
+ import { RCRTCClient, RCRemoteTrack, RCTrack, ISubscribeAttr, RCRTCCode, RCLocalAudioTrack, RCRemoteAudioTrack, RCFrameRate, RCResolution } from '@rongcloud/plugin-rtc';
4
+ export { RCFrameRate as RCCallPlusFrameRate, RCResolution as RCCallPlusResolution } from '@rongcloud/plugin-rtc';
5
+
6
+ /**
7
+ * 对话动作
8
+ */
9
+ declare enum DialogAction {
10
+ /**
11
+ * 请求
12
+ */
13
+ REQUEST = "request",
14
+ /**
15
+ * 接受
16
+ */
17
+ ACCEPT = "accept",
18
+ /**
19
+ * 拒绝
20
+ */
21
+ REFUSE = "refuse",
22
+ /**
23
+ * 请求取消
24
+ */
25
+ CANCEL = "cancel",
26
+ /**
27
+ * 通知
28
+ */
29
+ NOTICE = "notice",
30
+ /**
31
+ * 超时
32
+ */
33
+ TIMEOUT = "timeout"
34
+ }
35
+
36
+ /**
37
+ * 呼叫媒体类型
38
+ */
39
+ declare enum RCCallPlusMediaType {
40
+ /**
41
+ * 音频
42
+ */
43
+ AUDIO = 0,
44
+ /**
45
+ * 音视频
46
+ */
47
+ AUDIO_VIDEO = 1,
48
+ /**
49
+ * 视频
50
+ */
51
+ VIDEO = 2
52
+ }
53
+
54
+ /**
55
+ * 通话状态
56
+ */
57
+ declare enum RCCallPlusCallState {
58
+ /**
59
+ * 初始状态
60
+ */
61
+ IDLE = 0,
62
+ /**
63
+ * 正在呼叫
64
+ */
65
+ CALLING = 100,
66
+ /**
67
+ * 被邀请
68
+ */
69
+ INVITED = 101,
70
+ /**
71
+ * 响铃
72
+ */
73
+ RINGING = 102,
74
+ /**
75
+ * 忙线响铃
76
+ */
77
+ BUSYLINE_RINGING = 103,
78
+ /**
79
+ * 忙线等待
80
+ */
81
+ BUSYLINE_WAIT = 104,
82
+ /**
83
+ * 通话连接中
84
+ */
85
+ CONNECTING = 200,
86
+ /**
87
+ * 通话中
88
+ */
89
+ ONCALL = 300,
90
+ /**
91
+ * 通话结束
92
+ */
93
+ ENDED = 1000,
94
+ /**
95
+ * 远端未接听
96
+ */
97
+ NOANSWER = 1001,
98
+ /**
99
+ * 己端未接听
100
+ */
101
+ MISSED = 1002,
102
+ /**
103
+ * 己端取消通话
104
+ */
105
+ CANCELED = 1003,
106
+ /**
107
+ * 远端拒绝
108
+ */
109
+ DECLINED = 1004,
110
+ ERROR = 2000
111
+ }
112
+
113
+ /**
114
+ * 呼叫类型
115
+ */
116
+ declare enum RCCallPlusType {
117
+ /**
118
+ * 单呼
119
+ */
120
+ SINGLE = 0,
121
+ /**
122
+ * 多人呼叫
123
+ */
124
+ MULTI = 1
125
+ }
126
+
127
+ declare enum RCCallDirection {
128
+ /**
129
+ * 呼出
130
+ */
131
+ OUT = -1,
132
+ /**
133
+ * 群呼
134
+ */
135
+ GROUP = 0,
136
+ /**
137
+ * 呼入
138
+ */
139
+ IN = 1
140
+ }
141
+
142
+ /**
143
+ * 事件类型
144
+ */
145
+ declare enum CallServerEventType {
146
+ /**
147
+ * 提示窗口
148
+ */
149
+ PROMPT = 0,
150
+ /**
151
+ * CallServer 下发通话时长变更类型
152
+ */
153
+ CALL_DURATION = 10,
154
+ /**
155
+ * 收到远端第一帧时间
156
+ */
157
+ FIRST_FRAME = 20
158
+ }
159
+
160
+ /**
161
+ * 对话类型
162
+ */
163
+ declare enum DialogType {
164
+ SWITCH_MEDIA_TYPE = 1
165
+ }
166
+
167
+ declare enum RCCallStage {
168
+ /**
169
+ * 闲置
170
+ */
171
+ NONE = 0,
172
+ /**
173
+ * 呼叫中
174
+ */
175
+ CALLING = 1,
176
+ /**
177
+ * 通话中
178
+ */
179
+ ONCALL = 2
180
+ }
181
+
182
+ declare enum RCCallUserType {
183
+ /**
184
+ * 普通用户
185
+ */
186
+ NORMAL = 0,
187
+ /**
188
+ * 观察者(只订阅其他人的资源,不发流)
189
+ */
190
+ OBSERVER = 1
191
+ }
192
+
193
+ /**
194
+ * 通话额外类型(移动端特有)
195
+ */
196
+ declare enum SecretCallType {
197
+ /**
198
+ * 普通通话
199
+ */
200
+ NORMAL = 0,
201
+ /**
202
+ * 密聊
203
+ */
204
+ SECRET = 1
205
+ }
206
+
207
+ declare enum RCCallPlusSessionUserState {
208
+ /**
209
+ * IDLE
210
+ */
211
+ IDLE = 0,
212
+ /**
213
+ * 发起呼叫
214
+ */
215
+ CALLING = 100,
216
+ /**
217
+ * 被邀请
218
+ */
219
+ INVITED = 101,
220
+ /**
221
+ * 响铃
222
+ */
223
+ RINGING = 102,
224
+ /**
225
+ * 己方忙碌直接挂断
226
+ */
227
+ BUSYLINE_RINGING = 103,
228
+ /**
229
+ * 己方忙碌等待接听其他通话
230
+ */
231
+ BUSYLINE_WAIT = 104,
232
+ /**
233
+ * 通话连接中
234
+ */
235
+ CONNECTING = 200,
236
+ /**
237
+ * 正在通话中
238
+ */
239
+ ONCALL = 300,
240
+ /**
241
+ * 正在系统通话中
242
+ */
243
+ ONPHONE = 301,
244
+ /**
245
+ * 通话结束
246
+ */
247
+ ENDED = 1000,
248
+ /**
249
+ * 远端未接听
250
+ */
251
+ NO_ANSWER = 1001,
252
+ /**
253
+ * 己端超时未接听
254
+ */
255
+ MISSED = 1002,
256
+ /**
257
+ * 通话取消
258
+ */
259
+ CANCELLED = 1003,
260
+ /**
261
+ * 通话拒绝
262
+ */
263
+ DECLINED = 1004,
264
+ /**
265
+ * 异常
266
+ */
267
+ ERROR = 2000
268
+ }
269
+
270
+ declare enum RCCallTargetType {
271
+ SIGNAL = 0,
272
+ GROUP = 1,
273
+ DEPARTMENT = 2
274
+ }
275
+
276
+ declare enum ForwardType {
277
+ /**
278
+ * 通过下一次人员状态 userState 的下发同步带下去
279
+ */
280
+ SOON_AFETER = 0,
281
+ /**
282
+ * 立即转发
283
+ */
284
+ CURRENT = 1
285
+ }
286
+
287
+ declare enum RCCallPlusReason {
288
+ IDLE = 0,
289
+ CALLING = 100,
290
+ INVITED = 101,
291
+ RINGING = 102,
292
+ BUSYLINE_RINGING = 103,
293
+ BUSYLINE_WAIT = 104,
294
+ CONNECTING = 200,
295
+ ONCALL = 300,
296
+ ON_PHONE = 301,
297
+ ON_PHONE_END = 302,
298
+ /**
299
+ * 输入设备不可用
300
+ */
301
+ ON_DEVICE_DISABLE = 303,
302
+ /**
303
+ * 输入设备可用
304
+ */
305
+ ON_DEVICE_ENABLE = 304,
306
+ /**
307
+ * 本端异常离开
308
+ */
309
+ ABNORMAL_END = 999,
310
+ /**
311
+ * 通话结束
312
+ */
313
+ ENDED = 1000,
314
+ /**
315
+ * 远端未接听
316
+ */
317
+ NO_ANSWER = 1001,
318
+ /**
319
+ * 己端未接听
320
+ */
321
+ MISSED = 1002,
322
+ /**
323
+ * 己端通话取消
324
+ */
325
+ CANCELLED = 1003,
326
+ /**
327
+ * 远端拒绝
328
+ */
329
+ DECLINED = 1004,
330
+ /**
331
+ * 其他端呼出(当前端被踢)
332
+ */
333
+ OTHER_CLIENT_CALLING = 1010,
334
+ /**
335
+ * 其他端已接听
336
+ */
337
+ OTHER_CLIENT_ACCEPT = 1011,
338
+ /**
339
+ * 加入 RTC 房间失败
340
+ */
341
+ JOIN_ROOM_ERR = 1105,
342
+ /**
343
+ * 发布资源失败
344
+ */
345
+ PUBLISH_ERR = 1106,
346
+ /**
347
+ * 订阅资源失败
348
+ */
349
+ SUBSCRIBE_ERR = 1107,
350
+ /**
351
+ * 接听系统通话
352
+ */
353
+ ACCEPT_CARRIER = 1108,
354
+ /**
355
+ * 被禁止通话
356
+ */
357
+ KICKED_BY_SERVER = 1109,
358
+ /**
359
+ * RTC Ping 失败被踢出房间
360
+ */
361
+ CONNECTION_ERR = 1110,
362
+ /**
363
+ * 用户退出登录被踢出房间
364
+ */
365
+ LOGOUT = 1111,
366
+ /**
367
+ * 用户被其他端登录挤下线
368
+ */
369
+ OTHER_CLIENT_LOGIN = 1112,
370
+ /**
371
+ * 其他端加入新通话
372
+ */
373
+ OTHER_CLIENT_JOINED = 1113,
374
+ /**
375
+ * 其他端已在其他通话中(己端 A1 其他端正在通话中,A2 多端又加入房间被拒绝后通话结束 A2 的状态)
376
+ */
377
+ OTHER_CLIENT_IN_ROOM = 1114,
378
+ /**
379
+ * 其他端已挂断
380
+ */
381
+ OTHER_CLIENT_HANGUP = 1151,
382
+ /**
383
+ * 远端用户加入房间失败
384
+ */
385
+ REMOTE_JOIN_RTC_ERROR = 1205,
386
+ /**
387
+ * 远端用户发布资源失败
388
+ */
389
+ REMOTE_PUBLISH_ERROR = 1206,
390
+ /**
391
+ * 远端用户订阅资源失败
392
+ */
393
+ REMOTE_SUBSCRIBE_ERROR = 1207,
394
+ /**
395
+ * 远端用户已被(封禁)禁止通话
396
+ */
397
+ REMOTE_KICKED_BY_SERVER = 1209,
398
+ /**
399
+ * 远端用户UDP连接断开
400
+ */
401
+ REMOTE_CONNECTION_ERROR = 1210,
402
+ /**
403
+ * 远端用户退出IM登录
404
+ */
405
+ REMOTE_LOGOUT = 1211,
406
+ /**
407
+ * 远端用户被其他端登录挤下线
408
+ */
409
+ REMOTE_OTHER_CLIENT_LOGIN = 1212,
410
+ /**
411
+ * 远端用户被其他端加入房间 joinRoom 踢出
412
+ */
413
+ REMOTE_OTHER_JOINED_RTC = 1213,
414
+ /**
415
+ * 远端用户的其他端已经在房间中,不允许 joinRoom 进行音视频通话
416
+ */
417
+ REMOTE_OTHER_CLIENT_IN_RTC = 1214
418
+ }
419
+
420
+ /**
421
+ * 用户信息
422
+ */
423
+ interface IUser {
424
+ /**
425
+ * 用户 ID
426
+ */
427
+ userId: string;
428
+ /**
429
+ * 用户类型 (0:正常用户 1:观察者)
430
+ */
431
+ userType?: RCCallUserType;
432
+ /**
433
+ * 来源对象类型
434
+ */
435
+ targetType?: RCCallTargetType;
436
+ /**
437
+ * 来源对象 ID
438
+ */
439
+ targetId?: string;
440
+ /**
441
+ * 用户昵称(可传手机号)
442
+ */
443
+ nickName?: string;
444
+ /**
445
+ * 组织ID
446
+ */
447
+ orgId?: string;
448
+ }
449
+ /**
450
+ * 忙线用户列表
451
+ */
452
+ interface IBusylineUser {
453
+ /**
454
+ * 用户 ID
455
+ */
456
+ userId: string;
457
+ /**
458
+ * 用户状态
459
+ */
460
+ sessionStatus: RCCallPlusSessionUserState;
461
+ }
462
+ /**
463
+ * base singal content
464
+ */
465
+ interface IBaseSingalCon {
466
+ /**
467
+ * 服务返回的呼叫 ID
468
+ */
469
+ callId: string;
470
+ }
471
+ /**
472
+ * 开始呼叫信令内容
473
+ */
474
+ interface IStartCallCon {
475
+ /**
476
+ * 用户生成 callId
477
+ */
478
+ clientCallId: string;
479
+ /**
480
+ * 目标用户信息列表
481
+ */
482
+ toUsers: IUser[];
483
+ /**
484
+ * 呼叫类型
485
+ */
486
+ callType: RCCallPlusType;
487
+ /**
488
+ * 通话媒体类型
489
+ */
490
+ mediaType: RCCallPlusMediaType;
491
+ /**
492
+ * 是否密聊
493
+ */
494
+ secretChat: SecretCallType;
495
+ /**
496
+ * 当前用户的来源组 ID 类型
497
+ */
498
+ targetType?: RCCallTargetType;
499
+ /**
500
+ * 当前用户的来源组 ID
501
+ */
502
+ targetId?: string;
503
+ /**
504
+ * 发起人用户昵称(可为手机号)
505
+ */
506
+ nickName?: string;
507
+ /**
508
+ * 正在通话中的老版房间 ID (老版 call 或 meeting)
509
+ */
510
+ oldRoomId?: string;
511
+ }
512
+ /**
513
+ * 单呼信令内容
514
+ */
515
+ interface IStartSingleCon {
516
+ /**
517
+ * 用户生成 callId
518
+ */
519
+ clientCallId: string;
520
+ /**
521
+ * 被叫用户 ID
522
+ */
523
+ toUserId: string;
524
+ /**
525
+ * 媒体类型
526
+ */
527
+ mediaType: RCCallPlusMediaType;
528
+ /**
529
+ * 用户来源组 ID 类型
530
+ */
531
+ targetType?: RCCallTargetType;
532
+ /**
533
+ * 来源组 ID
534
+ */
535
+ targetId?: string;
536
+ /**
537
+ * 是否密聊(0: 否;1: 是)
538
+ * PC 目前无密聊,写死 0
539
+ */
540
+ secretChat: SecretCallType;
541
+ /**
542
+ * 单聊加密 key
543
+ */
544
+ secretChatKey?: string;
545
+ /**
546
+ * 正在通话中的老版房间 ID (老版 call 或 meeting)
547
+ */
548
+ oldRoomId?: string;
549
+ /**
550
+ * 组织ID
551
+ */
552
+ toOrgId?: string;
553
+ }
554
+ /**
555
+ * 群呼信令内容
556
+ */
557
+ interface IStartGroupCon {
558
+ /**
559
+ * 用户生成 callId
560
+ */
561
+ clientCallId: string;
562
+ /**
563
+ * 目标用户列表
564
+ */
565
+ toUsers: IUser[];
566
+ /**
567
+ * 通话媒体类型
568
+ */
569
+ mediaType: RCCallPlusMediaType;
570
+ /**
571
+ * 用户来源组 ID 类型
572
+ */
573
+ targetType?: RCCallTargetType;
574
+ /**
575
+ * 来源组 ID
576
+ */
577
+ targetId?: string;
578
+ /**
579
+ * 发起人用户昵称(可为手机号)
580
+ */
581
+ nickName?: string;
582
+ /**
583
+ * 正在通话中的老版房间 ID (老版 call 或 meeting)
584
+ */
585
+ oldRoomId?: string;
586
+ }
587
+ /**
588
+ * 开始呼叫 Server 返回
589
+ */
590
+ interface IStartCallRes extends IBaseSingalCon {
591
+ /**
592
+ * 传入的 clientCallId
593
+ */
594
+ clientCallId: string;
595
+ /**
596
+ * 人员支持情况,后期可能废弃谨慎使用
597
+ */
598
+ toUsersSupport?: {
599
+ [userId: string]: 0 | 1;
600
+ };
601
+ /**
602
+ * 占线用户列表
603
+ */
604
+ busylineUsers?: IBusylineUser[];
605
+ }
606
+ /**
607
+ * 邀请好友加入信令内容
608
+ */
609
+ interface IInviteCallCon extends IBaseSingalCon {
610
+ /**
611
+ * 目标用户列表
612
+ */
613
+ toUsers: IUser[];
614
+ }
615
+ /**
616
+ * 邀请好友加入信令结果
617
+ */
618
+ interface IInviteCallRes extends IBaseSingalCon {
619
+ /**
620
+ * 呼叫类型
621
+ */
622
+ callType: RCCallPlusType;
623
+ /**
624
+ * 占线用户列表
625
+ */
626
+ busylineUsers?: IBusylineUser[];
627
+ }
628
+ /**
629
+ * server 通话用户列表
630
+ */
631
+ interface ICallSessionUser {
632
+ /**
633
+ * 用户 ID
634
+ */
635
+ userId: string;
636
+ /**
637
+ * 用户状态
638
+ */
639
+ sessionStatus: RCCallPlusSessionUserState;
640
+ /**
641
+ * 状态发生时间
642
+ */
643
+ statusTime: number;
644
+ /**
645
+ * 通话时长(单位:s)群组各人通话时长不同
646
+ */
647
+ duration: number;
648
+ /**
649
+ * 是否变化(否:0、是:1)
650
+ */
651
+ changed: 0 | 1;
652
+ /**
653
+ * 邀请 userId 的用户 ID
654
+ */
655
+ inviteUserId: string;
656
+ /**
657
+ * 用户系统状态
658
+ */
659
+ sysStatus: RCCallPlusReason;
660
+ /**
661
+ * 当前用户的来源组 ID 类型 (来源用户的群组、通讯录等等)
662
+ */
663
+ targetType?: RCCallTargetType;
664
+ /**
665
+ * 当前用户的来源组 ID
666
+ */
667
+ targetId?: string;
668
+ }
669
+ /**
670
+ * 通话邀请下发信令内容
671
+ */
672
+ interface IPubInviteCon extends IBaseSingalCon {
673
+ /**
674
+ * deviceId
675
+ */
676
+ toDeviceId: string;
677
+ /**
678
+ * 通话发起人
679
+ */
680
+ callingUserId: string;
681
+ /**
682
+ * 本次邀请人
683
+ */
684
+ inviteUserId: string;
685
+ /**
686
+ * 呼叫类型
687
+ */
688
+ callType: RCCallPlusType;
689
+ /**
690
+ * 媒体类型
691
+ */
692
+ mediaType: RCCallPlusMediaType;
693
+ /**
694
+ * 是否密聊
695
+ */
696
+ secretChat?: SecretCallType;
697
+ /**
698
+ * 通话用户列表
699
+ */
700
+ callSessionUsers: ICallSessionUser[];
701
+ /**
702
+ * 来源组 ID 类型
703
+ */
704
+ targetType?: RCCallTargetType;
705
+ /**
706
+ * 来源组 ID
707
+ */
708
+ targetId?: string;
709
+ }
710
+ /**
711
+ * 通话响铃信令内容
712
+ */
713
+ interface IRingingCallCon extends IBaseSingalCon {
714
+ }
715
+ /**
716
+ * 通话接听信令内容
717
+ */
718
+ interface IAcceptCallCon extends IBaseSingalCon {
719
+ }
720
+ /**
721
+ * 直接加入通话信令内容
722
+ */
723
+ interface IJoinCallCon extends IBaseSingalCon {
724
+ }
725
+ /**
726
+ * 通话挂断信令内容
727
+ */
728
+ interface IHangupCallCon extends IBaseSingalCon {
729
+ sysStatus?: RCCallPlusReason;
730
+ }
731
+ /**
732
+ * 通话状态上报信令内容
733
+ */
734
+ interface IStatusUpCon extends IBaseSingalCon {
735
+ /**
736
+ * call server 用户状态
737
+ */
738
+ sessionStatus: RCCallPlusSessionUserState;
739
+ }
740
+ /**
741
+ * 通话状态下发信令内容
742
+ */
743
+ interface IStatusDownCont extends IBaseSingalCon {
744
+ /**
745
+ * deviceId
746
+ */
747
+ toDeviceId: string;
748
+ /**
749
+ * server 通话状态
750
+ */
751
+ callStatus: RCCallPlusCallState;
752
+ /**
753
+ * 通话时长
754
+ */
755
+ duration: number;
756
+ /**
757
+ * call server 用户信息列表
758
+ */
759
+ callSessionUsers: ICallSessionUser[];
760
+ /**
761
+ * 通话开始时间
762
+ */
763
+ startTime?: number;
764
+ /**
765
+ * 同步服务端时间
766
+ */
767
+ syncTime?: number;
768
+ }
769
+ /**
770
+ * 通话事件上报
771
+ */
772
+ interface IEventUpCallCon extends IBaseSingalCon {
773
+ /**
774
+ * 事件类型,10 打开摄像头、11 关闭摄像头
775
+ */
776
+ eventType: CallServerEventType;
777
+ /**
778
+ * 目标用户 Id 列表
779
+ */
780
+ toUserIds?: string[];
781
+ /**
782
+ * 事件参数
783
+ */
784
+ eventArgs?: Object;
785
+ /**
786
+ * 事件发生时间戳
787
+ */
788
+ eventTime: number;
789
+ }
790
+ /**
791
+ * 通话事件下发
792
+ */
793
+ interface IEventDownCallCon extends IBaseSingalCon {
794
+ /**
795
+ * 事件类型,10 打开摄像头、11 关闭摄像头
796
+ */
797
+ eventType: CallServerEventType;
798
+ /**
799
+ * 事件参数
800
+ */
801
+ eventArgs?: Object;
802
+ /**
803
+ * 事件发起用户 ID
804
+ */
805
+ fromUserId: string;
806
+ /**
807
+ * 事件发生时间戳
808
+ */
809
+ eventTime: number;
810
+ }
811
+ /**
812
+ * 对话数据上行
813
+ */
814
+ interface IDialogUpCallCon extends IBaseSingalCon {
815
+ /**
816
+ * 事务 ID
817
+ */
818
+ transactionId?: string;
819
+ /**
820
+ * 对话类型
821
+ */
822
+ dialogType: DialogType;
823
+ /**
824
+ * 对话动作
825
+ */
826
+ action: DialogAction;
827
+ /**
828
+ * 附加数据,上传为可选
829
+ */
830
+ extraKeyVal?: {
831
+ mediaType: RCCallPlusMediaType;
832
+ reason?: DialogAction;
833
+ } | {
834
+ cameraOn: 0 | 1;
835
+ };
836
+ /**
837
+ * 目标用户 Id
838
+ */
839
+ toUserIds?: string[];
840
+ }
841
+ /**
842
+ * 对话数据下行信令内容
843
+ */
844
+ interface IDialogDownCallCon extends IDialogUpCallCon {
845
+ /**
846
+ * 操作者 ID
847
+ */
848
+ promoterId: string;
849
+ /**
850
+ * 同步时间戳
851
+ */
852
+ syncTime: number;
853
+ /**
854
+ * 附加数据
855
+ */
856
+ extraKeyVal: {
857
+ mediaType: RCCallPlusMediaType;
858
+ reason?: DialogAction;
859
+ };
860
+ }
861
+ /**
862
+ * 日志记录获取
863
+ */
864
+ interface ISyncCallLogCon {
865
+ /**
866
+ * 要获取的 userId
867
+ */
868
+ userId: string;
869
+ /**
870
+ * 同步时间戳
871
+ */
872
+ syncTime: number;
873
+ /**
874
+ * 每页记录数 默认 30
875
+ */
876
+ count?: number;
877
+ }
878
+ interface ISyncCallLogRes extends IBaseSingalCon {
879
+ callType: RCCallPlusType;
880
+ callDir: RCCallDirection;
881
+ mediaType: RCCallPlusMediaType;
882
+ /**
883
+ * 是否为密聊: 否 0、是 1
884
+ */
885
+ secretChat: 0 | 1;
886
+ /**
887
+ * 用户 ID
888
+ */
889
+ userId: string;
890
+ /**
891
+ * 目标 ID
892
+ */
893
+ targetId: string;
894
+ /**
895
+ * 呼叫发起者 ID
896
+ */
897
+ callingUserId: string;
898
+ /**
899
+ * 参与者 ID 列表
900
+ */
901
+ callUserIds: string[];
902
+ /**
903
+ * 通话状态
904
+ */
905
+ callStatus: RCCallPlusCallState;
906
+ /**
907
+ * 用户通话状态
908
+ */
909
+ sessionStatus: RCCallPlusSessionUserState;
910
+ /**
911
+ * 用户系统状态
912
+ */
913
+ sysStatus: RCCallPlusReason;
914
+ startTime: number;
915
+ endTime: number;
916
+ duration: number;
917
+ /**
918
+ * 通话创建时间
919
+ */
920
+ crtTime: number;
921
+ /**
922
+ * 同步数据
923
+ */
924
+ syncTime: number;
925
+ }
926
+ interface ISyncCallLogResList {
927
+ hasMore: 0 | 1;
928
+ callLogList: ISyncCallLogRes[];
929
+ /**
930
+ * 列表中最大时间戳
931
+ */
932
+ maxTime: number;
933
+ /**
934
+ * 删除的列表
935
+ */
936
+ delLogList: {
937
+ callId: string;
938
+ /**
939
+ * 当前用户 ID
940
+ */
941
+ userId: string;
942
+ }[];
943
+ /**
944
+ * 最后已读的 callId
945
+ */
946
+ lastReadedCallId: string;
947
+ }
948
+ /**
949
+ * 日志记录下发信令内容
950
+ */
951
+ interface IPubCallLog extends ISyncCallLogRes {
952
+ }
953
+ interface ISignalTransporterListener {
954
+ /**
955
+ * 收到 call 邀请
956
+ * @param isDirectly 是否为直发信令
957
+ */
958
+ onInvite(data: IPubInviteCon, isDirectly: boolean, traceId: string): void;
959
+ /**
960
+ * 收到通话状态变更
961
+ */
962
+ onStatusDown(data: IStatusDownCont, traceId: string, sessionId?: string): void;
963
+ /**
964
+ * 其他端通话状态变更
965
+ */
966
+ onOtherClientStatusDown(data: IStatusDownCont, traceId: string): void;
967
+ /**
968
+ * 收到设备变更相关事件
969
+ */
970
+ onEventDown(data: IEventDownCallCon, traceId: string): void;
971
+ /**
972
+ * 收到通话结束日志
973
+ */
974
+ onRecvCallEndLog(data: IPubCallLog, traceId: string): void;
975
+ /**
976
+ * 收到媒体类型变更
977
+ */
978
+ onSwitchMediaType(data: IDialogDownCallCon, traceId: string): void;
979
+ /**
980
+ * IM 状态变更
981
+ */
982
+ onIMStateChange(state: RCConnectionStatus): void;
983
+ }
984
+ interface IQryUserHasCallRes extends IBaseSingalCon {
985
+ /**
986
+ * 通话阶段
987
+ */
988
+ hasCallStage: RCCallStage;
989
+ }
990
+ interface IGetUserCallStateListRes {
991
+ callStateList: {
992
+ callId: string;
993
+ callType: RCCallPlusType;
994
+ mediaType: RCCallPlusMediaType;
995
+ /**
996
+ * 呼叫发起者 ID
997
+ */
998
+ callingUserId: string;
999
+ /**
1000
+ * 通话参与用户 ID 列表
1001
+ */
1002
+ callUserIds: string[];
1003
+ /**
1004
+ * 通话状态
1005
+ */
1006
+ callStatus: RCCallPlusCallState;
1007
+ /**
1008
+ * 用户会话状态
1009
+ */
1010
+ userSessionStatus: RCCallPlusSessionUserState;
1011
+ /**
1012
+ * 生成时间
1013
+ */
1014
+ crtTime: number;
1015
+ /**
1016
+ * 最后一次变更时间
1017
+ */
1018
+ syncTime: number;
1019
+ /**
1020
+ * 来源对象类型
1021
+ */
1022
+ targetType: RCCallTargetType;
1023
+ /**
1024
+ * 来源对象ID(根据targetType分别指定个人,群组ID,默认值为userId)
1025
+ */
1026
+ targetId: string;
1027
+ startTime: number;
1028
+ }[];
1029
+ }
1030
+ interface IClearCallLogRes {
1031
+ /**
1032
+ * 删除数量
1033
+ */
1034
+ rowCount: number;
1035
+ }
1036
+ interface IGetCallSessionServerRes extends IBaseSingalCon {
1037
+ /**
1038
+ * 发起人
1039
+ */
1040
+ callingUserId: string;
1041
+ /**
1042
+ * callType
1043
+ */
1044
+ callType: RCCallPlusType;
1045
+ /**
1046
+ * 媒体类型
1047
+ */
1048
+ mediaType: RCCallPlusMediaType;
1049
+ /**
1050
+ * 通话状态
1051
+ */
1052
+ callStatus: RCCallPlusCallState;
1053
+ /**
1054
+ * 通话用户人员列表信息
1055
+ */
1056
+ callSessionUsers: {
1057
+ userId: string;
1058
+ sessionStatus: RCCallPlusSessionUserState;
1059
+ statusReason: string;
1060
+ statusTime: number;
1061
+ sysStatus: RCCallPlusReason;
1062
+ targetType: RCCallTargetType;
1063
+ targetId: string;
1064
+ }[];
1065
+ /**
1066
+ * 开始通话时间戳
1067
+ */
1068
+ startTime: number;
1069
+ /**
1070
+ * 通话时长(单位:s)
1071
+ */
1072
+ duration: number;
1073
+ /**
1074
+ * 同步时间戳
1075
+ */
1076
+ syncTime: number;
1077
+ }
1078
+ interface IGetCallTimeInfoRes extends IBaseSingalCon {
1079
+ /**
1080
+ * 开始通话时间戳
1081
+ */
1082
+ startTime: number;
1083
+ /**
1084
+ * 服务器当前时间
1085
+ */
1086
+ syncTime: number;
1087
+ /**
1088
+ * 通话时长(单位:s)
1089
+ */
1090
+ duration: number;
1091
+ /**
1092
+ * 首帧时间
1093
+ */
1094
+ firstFrametime: number;
1095
+ }
1096
+ interface ISysStatusUpOpts extends IBaseSingalCon {
1097
+ /**
1098
+ * 人员系统状态
1099
+ */
1100
+ sysStatus: RCCallPlusReason;
1101
+ /**
1102
+ * 是否立即转发(0:否 1是)
1103
+ * 否的话会通过下一次人员状态 userState 的下发同步带下去
1104
+ */
1105
+ forward: ForwardType;
1106
+ }
1107
+ interface IGetDelayTimeInfoRes {
1108
+ /**
1109
+ * 获取 CallServer 与用户本地时间的差值,用于矫正与 CallServer 的时间
1110
+ */
1111
+ delayTime: number;
1112
+ /**
1113
+ * callServer 接口返回时间
1114
+ */
1115
+ rtt: number;
1116
+ }
1117
+
1118
+ interface ICallId {
1119
+ /**
1120
+ * 通话唯一 ID
1121
+ */
1122
+ callId: string;
1123
+ }
1124
+ interface ISessionUser {
1125
+ /**
1126
+ * 成员 ID
1127
+ */
1128
+ userId: string;
1129
+ /**
1130
+ * 成员状态
1131
+ */
1132
+ userState: RCCallPlusSessionUserState;
1133
+ /**
1134
+ * 成员系统状态
1135
+ */
1136
+ systemState: RCCallPlusReason;
1137
+ /**
1138
+ * 摄像头是否可用
1139
+ */
1140
+ cameraEnable: boolean;
1141
+ /**
1142
+ * 麦克风是否可用
1143
+ */
1144
+ microphoneEnable: boolean;
1145
+ /**
1146
+ * 来源组 ID 类型
1147
+ */
1148
+ targetType?: RCCallTargetType;
1149
+ /**
1150
+ * 来源组 ID
1151
+ */
1152
+ targetId?: string;
1153
+ /**
1154
+ * 用户类型 (0:正常用户 1:观察者)
1155
+ */
1156
+ userType?: RCCallUserType;
1157
+ /**
1158
+ * 状态时间
1159
+ */
1160
+ stateTime?: number;
1161
+ }
1162
+ interface IRCCallPlusCallRecord {
1163
+ /**
1164
+ * 呼叫 ID
1165
+ */
1166
+ callId: string;
1167
+ /**
1168
+ * 通话类型
1169
+ */
1170
+ callType: RCCallPlusType;
1171
+ /**
1172
+ * 呼叫方向
1173
+ */
1174
+ callDirection: RCCallDirection;
1175
+ /**
1176
+ * 通话媒体类型
1177
+ */
1178
+ mediaType: RCCallPlusMediaType;
1179
+ /**
1180
+ * 呼叫发起者 ID
1181
+ */
1182
+ callerUserId: string;
1183
+ /**
1184
+ * 参与者 ID
1185
+ */
1186
+ callUserIds: string[];
1187
+ /**
1188
+ * 通话状态
1189
+ */
1190
+ sessionState: RCCallPlusCallState;
1191
+ /**
1192
+ * 用户状态
1193
+ */
1194
+ userState: RCCallPlusSessionUserState;
1195
+ /**
1196
+ * 通话开始时间戳
1197
+ */
1198
+ startTimestamp: number;
1199
+ /**
1200
+ * 通话结束时间戳
1201
+ */
1202
+ endTimestamp: number;
1203
+ /**
1204
+ * 通话时长(单位:s)
1205
+ */
1206
+ duration: number;
1207
+ /**
1208
+ * 同步时间戳
1209
+ */
1210
+ syncTimestamp: number;
1211
+ /**
1212
+ * 用户系统状态
1213
+ */
1214
+ systemState: RCCallPlusReason;
1215
+ /**
1216
+ * 创建时间
1217
+ */
1218
+ createTimestamp: number;
1219
+ }
1220
+ interface IUserInfo {
1221
+ /**
1222
+ * 用户 ID
1223
+ */
1224
+ userId: string;
1225
+ /**
1226
+ * 用户类型 (0:正常用户 1:观察者)
1227
+ */
1228
+ userType?: RCCallUserType;
1229
+ /**
1230
+ * 来源对象类型
1231
+ */
1232
+ targetType?: RCCallTargetType;
1233
+ /**
1234
+ * 来源对象 ID
1235
+ */
1236
+ targetId?: string;
1237
+ /**
1238
+ * 组织 ID
1239
+ */
1240
+ orgId?: string;
1241
+ }
1242
+ interface IStartCallOpts extends ICallId {
1243
+ /**
1244
+ * 被邀请人信息
1245
+ */
1246
+ toUsers: IUserInfo[];
1247
+ /**
1248
+ * 通话类型
1249
+ */
1250
+ callType: RCCallPlusType;
1251
+ /**
1252
+ * 通话媒体类型
1253
+ */
1254
+ mediaType: RCCallPlusMediaType;
1255
+ /**
1256
+ * 当前用户来源组 ID 类型
1257
+ */
1258
+ targetType?: RCCallTargetType;
1259
+ /**
1260
+ * 当前用户来源组 ID
1261
+ */
1262
+ targetId?: string;
1263
+ /**
1264
+ * 正在通话中的老版房间 ID (老版 call 或 meeting)
1265
+ * 传入后,会将此房间中的多端中的自己直接踢掉
1266
+ */
1267
+ oldRoomId?: string;
1268
+ }
1269
+ interface IStartCallResult {
1270
+ /**
1271
+ * 通话唯一 ID
1272
+ */
1273
+ callId: string;
1274
+ /**
1275
+ * 传入的 clientCallId
1276
+ */
1277
+ clientCallId: string;
1278
+ /**
1279
+ * 人员支持情况,后期可能废弃谨慎使用
1280
+ */
1281
+ toUsersSupport?: {
1282
+ [userId: string]: 0 | 1;
1283
+ };
1284
+ /**
1285
+ * 占线用户列表
1286
+ */
1287
+ busylineUsers?: IBusylineUser[];
1288
+ }
1289
+ interface IInviteOpts {
1290
+ /**
1291
+ * 被邀请人信息
1292
+ */
1293
+ toUsers: IUserInfo[];
1294
+ /**
1295
+ * 来源组 ID 类型
1296
+ */
1297
+ targetType?: RCCallTargetType;
1298
+ /**
1299
+ * 来源组 ID
1300
+ */
1301
+ targetId?: string;
1302
+ }
1303
+ interface IInviteRes extends ICallId {
1304
+ callType: RCCallPlusType;
1305
+ busylineUsers?: IBusylineUser[];
1306
+ }
1307
+ interface IAcceptOpts extends ICallId {
1308
+ }
1309
+ interface IHangupForBusyOpts extends ICallId {
1310
+ /**
1311
+ * 用户系统状态
1312
+ */
1313
+ systemState?: RCCallPlusReason;
1314
+ }
1315
+ interface IJoinCallOpts {
1316
+ callId: string;
1317
+ mediaType: RCCallPlusMediaType;
1318
+ }
1319
+ interface IGetCallLogListOpts {
1320
+ /**
1321
+ * 获取时间戳之后的数据
1322
+ */
1323
+ timestamp: number;
1324
+ /**
1325
+ * 获取数量
1326
+ */
1327
+ count?: number;
1328
+ }
1329
+ interface IRCCallPlusGetCallRecordRes {
1330
+ /**
1331
+ * 是否有更多通话记录
1332
+ */
1333
+ hasMore: boolean;
1334
+ /**
1335
+ * 通话记录列表
1336
+ */
1337
+ list: IRCCallPlusCallRecord[];
1338
+ /**
1339
+ * 列表中最大时间戳
1340
+ */
1341
+ maxTime: number;
1342
+ }
1343
+ interface IReqChangeMediaTypeOpts {
1344
+ /**
1345
+ * 通话媒体类型
1346
+ */
1347
+ mediaType: RCCallPlusMediaType;
1348
+ /**
1349
+ * 需要接收的用户 ID 列表
1350
+ */
1351
+ toUserIds: string[];
1352
+ }
1353
+ interface IResChangeMediaTypeOpts {
1354
+ /**
1355
+ * 事务 ID
1356
+ */
1357
+ transactionId: string;
1358
+ /**
1359
+ * 是否同意
1360
+ */
1361
+ agree: boolean;
1362
+ }
1363
+ interface ICancelChangeMediaTypeOpts {
1364
+ /**
1365
+ * 事务 ID
1366
+ */
1367
+ transactionId: string;
1368
+ }
1369
+ interface IReqChangeMediaTypeRes {
1370
+ /**
1371
+ * 事务 ID
1372
+ */
1373
+ transactionId: string;
1374
+ }
1375
+ interface IGetCallSessionRes extends ICallId {
1376
+ /**
1377
+ * 呼叫发起者
1378
+ */
1379
+ startCallerId: string;
1380
+ /**
1381
+ * callType
1382
+ */
1383
+ callType: RCCallPlusType;
1384
+ /**
1385
+ * 媒体类型
1386
+ */
1387
+ mediaType: RCCallPlusMediaType;
1388
+ /**
1389
+ * 通话状态
1390
+ */
1391
+ sessionState: RCCallPlusCallState;
1392
+ /**
1393
+ * 通话用户人员列表
1394
+ */
1395
+ callSessionUsers: ISessionUser[];
1396
+ /**
1397
+ * 开始通话时间戳
1398
+ */
1399
+ startTime: number;
1400
+ /**
1401
+ * 通话时长(单位:s)
1402
+ */
1403
+ duration: number;
1404
+ /**
1405
+ * 同步时间戳
1406
+ */
1407
+ syncTime: number;
1408
+ }
1409
+
1410
+ declare enum CallTimerEventType {
1411
+ INVITER = "inviter",
1412
+ INVITEE = "invitee"
1413
+ }
1414
+ interface IOldDialogData {
1415
+ transactionId?: string;
1416
+ action: DialogAction;
1417
+ mediaType: RCCallPlusMediaType;
1418
+ }
1419
+ /**
1420
+ * SDK 内部使用 Session 实例
1421
+ */
1422
+ declare class RCCallInnerSession extends EventEmitter {
1423
+ /**
1424
+ * Call ID
1425
+ */
1426
+ private readonly _callId;
1427
+ /**
1428
+ * session 状态
1429
+ */
1430
+ private _state;
1431
+ /**
1432
+ * 通话类型
1433
+ */
1434
+ private _callType;
1435
+ /**
1436
+ * 通话媒体类型
1437
+ */
1438
+ private _mediaType;
1439
+ /**
1440
+ * session 呼叫发起者
1441
+ */
1442
+ private _startCallerId;
1443
+ /**
1444
+ * 本次 session 的邀请者
1445
+ */
1446
+ private _callerId;
1447
+ /**
1448
+ * 当前 session 人员信息列表
1449
+ */
1450
+ private _callUsers;
1451
+ private readonly _logger;
1452
+ /**
1453
+ * 请求更新的 mediaType
1454
+ */
1455
+ private _reqMediaType;
1456
+ /**
1457
+ * 邀请者超时计时器
1458
+ */
1459
+ private _inviterTimerId;
1460
+ /**
1461
+ * 被邀请者超时计时器
1462
+ */
1463
+ private _inviteeTimerId;
1464
+ /**
1465
+ * 当前 session 人员信息列表
1466
+ */
1467
+ /**
1468
+ * 旧 dialog 数据,用于对比
1469
+ */
1470
+ private _oldDialogData;
1471
+ /**
1472
+ * 记录是否本地有挂断
1473
+ */
1474
+ private isLocalClientHangup;
1475
+ /**
1476
+ * 构造器
1477
+ */
1478
+ constructor(
1479
+ /**
1480
+ * Call ID
1481
+ */
1482
+ _callId: string,
1483
+ /**
1484
+ * session 状态
1485
+ */
1486
+ _state: RCCallPlusCallState,
1487
+ /**
1488
+ * 通话类型
1489
+ */
1490
+ _callType: RCCallPlusType,
1491
+ /**
1492
+ * 通话媒体类型
1493
+ */
1494
+ _mediaType: RCCallPlusMediaType,
1495
+ /**
1496
+ * session 呼叫发起者
1497
+ */
1498
+ _startCallerId: string,
1499
+ /**
1500
+ * 本次 session 的邀请者
1501
+ */
1502
+ _callerId: string,
1503
+ /**
1504
+ * 当前 session 人员信息列表
1505
+ */
1506
+ _callUsers: ISessionUser[], _logger: BasicLogger);
1507
+ /**
1508
+ * 获取 CallID
1509
+ */
1510
+ getCallId(): string;
1511
+ /**
1512
+ * 获取状态
1513
+ */
1514
+ getSessionState(): RCCallPlusCallState;
1515
+ /**
1516
+ * 获取通话类型
1517
+ */
1518
+ getCallType(): RCCallPlusType;
1519
+ /**
1520
+ * 获取媒体类型
1521
+ */
1522
+ getMediaType(): RCCallPlusMediaType;
1523
+ /**
1524
+ * 获取 session 发起者
1525
+ */
1526
+ getStartCallerId(): string;
1527
+ /**
1528
+ * 本次 session 邀请者
1529
+ */
1530
+ getCallerId(): string;
1531
+ /**
1532
+ * 获取 session user list
1533
+ */
1534
+ getUserList(): ISessionUser[];
1535
+ /**
1536
+ * 请求更新的 mediaType
1537
+ */
1538
+ getReqMediaType(): RCCallPlusMediaType | null;
1539
+ /**
1540
+ * inviterTimerId
1541
+ */
1542
+ getInviterTimerId(): number;
1543
+ /**
1544
+ * inviteeTimerId
1545
+ */
1546
+ getInviteeTimerId(): number;
1547
+ getAllTimerIds(): number[];
1548
+ setUserDeviceEnable(userId: string, mediaType: RCCallPlusMediaType, enable: boolean, traceId: string): void;
1549
+ /**
1550
+ * 更新人员列表, 并返回更新的人员列表
1551
+ * 根据人员状态去添加、删除、更新
1552
+ * 根据状态时间,判断是否更新,无时间戳的为本地状态调整,直接更新
1553
+ */
1554
+ updateUserList(users: ISessionUser[], traceId: string): ISessionUser[];
1555
+ setOldDialogData(data: IOldDialogData): void;
1556
+ /** ======私有方法============================================================================================= */
1557
+ /**
1558
+ * 更新 session 状态
1559
+ */
1560
+ updateSessionState(state: RCCallPlusCallState): void;
1561
+ /**
1562
+ * 更新通话类型(升降级设置)
1563
+ */
1564
+ updateCallType(callType: RCCallPlusType): void;
1565
+ /**
1566
+ * 更新媒体类型(升降级)
1567
+ */
1568
+ updateMediaType(mediaType: RCCallPlusMediaType): void;
1569
+ /**
1570
+ * 更新请求的媒体类型(升降级)
1571
+ */
1572
+ updateReqMediaType(mediaType: RCCallPlusMediaType | null): void;
1573
+ /**
1574
+ * 更新 invter timer id
1575
+ */
1576
+ updateTimerId(type: CallTimerEventType, timerId: number): void;
1577
+ /**
1578
+ * 获取
1579
+ */
1580
+ getOldDialogData(): IOldDialogData;
1581
+ /**
1582
+ * 设置是否是己端挂断
1583
+ */
1584
+ setIsLocalClientHangup(isLocalClientHangup: boolean): void;
1585
+ getIsLocalClientHangup(): boolean;
1586
+ }
1587
+
1588
+ interface IRCCallInitOptions {
1589
+ /**
1590
+ * RTC 实例
1591
+ */
1592
+ rtcClient: RCRTCClient;
1593
+ /**
1594
+ * RTC 房间加入类型
1595
+ */
1596
+ joinType?: RTCJoinType;
1597
+ /**
1598
+ * 控制台日志输出等级
1599
+ */
1600
+ outputLogLevel?: EnableLogL;
1601
+ /**
1602
+ * 修改默认的 log 输出函数
1603
+ * @deprecated
1604
+ */
1605
+ logStdout?: (logLevel: EnableLogL, content: string) => void;
1606
+ }
1607
+
1608
+ declare enum CallServerAction {
1609
+ /**
1610
+ * 开始单人呼叫
1611
+ */
1612
+ START_SINGLE_CALL = "startSingleCall",
1613
+ /**
1614
+ * 开始多人呼叫
1615
+ */
1616
+ START_GROUP_CALL = "startGroupCall",
1617
+ /**
1618
+ * 邀请好友加入通话
1619
+ */
1620
+ INVITE_CALL = "inviteCall",
1621
+ /**
1622
+ * 下发邀请通话数据
1623
+ */
1624
+ PUB_INVITE_CALL = "pubInviteCall",
1625
+ /**
1626
+ * 通话响铃
1627
+ */
1628
+ RINGING_CALL = "ringCall",
1629
+ /**
1630
+ * 接受通话
1631
+ */
1632
+ ACCEPT_CALL = "acceptCall",
1633
+ /**
1634
+ * 加入通话
1635
+ */
1636
+ JOIN_CALL = "joinCall",
1637
+ /**
1638
+ * 挂断通话
1639
+ */
1640
+ HANGUP_CALL = "hangupCall",
1641
+ /**
1642
+ * 通话状态上报
1643
+ */
1644
+ STATUS_UP_CALL = "statusUpCall",
1645
+ /**
1646
+ * 通话状态下发
1647
+ */
1648
+ STATUS_DOWN_CALL = "statusDownCall",
1649
+ /**
1650
+ * 通话事件上报
1651
+ */
1652
+ EVENT_UP_CALL = "eventUpCall",
1653
+ /**
1654
+ * 通话事件下发
1655
+ */
1656
+ EVENT_DOWN_CALL = "eventDownCall",
1657
+ /**
1658
+ * 对话数据上行
1659
+ */
1660
+ DIALOG_UP_CALL = "dialogUpCall",
1661
+ /**
1662
+ * 对话数据下行
1663
+ */
1664
+ DIALOG_DOWN_CALL = "dialogDownCall",
1665
+ /**
1666
+ * 获取用户会话数据列表
1667
+ */
1668
+ GET_CALL_USER_SESSION_LIST = "getCallUSerSessionList",
1669
+ /**
1670
+ * 日志记录同步
1671
+ */
1672
+ SYNC_CALL_LOG = "syncCallLog",
1673
+ /**
1674
+ * 日志记录下发
1675
+ */
1676
+ PUB_CALL_LOG = "pubCallLog",
1677
+ /**
1678
+ * 批量删除通话记录
1679
+ */
1680
+ DEL_CALL_LOG = "deleteCallLog",
1681
+ /**
1682
+ * 查询当前用户已有的 call 状态
1683
+ */
1684
+ QRY_CALL_STATE = "queryUserHasCall",
1685
+ /**
1686
+ * 查询 callServer 当前时间戳
1687
+ */
1688
+ QRY_SRV_TIMESTAMP = "getCallSrvTimeStamp",
1689
+ /**
1690
+ * 获取当前用户进行的 call 列表
1691
+ */
1692
+ GET_CALL_STATE_LIST = "getUserCallStateList",
1693
+ /**
1694
+ * 清除当前用户通话记录
1695
+ */
1696
+ CLEAR_CALL_LOG = "cleanCallLog",
1697
+ /**
1698
+ * 获取 call 会话信息
1699
+ */
1700
+ GET_CALL_SESSION = "getCallSession",
1701
+ /**
1702
+ * 获取 call 时间信息
1703
+ */
1704
+ GET_CALL_TIME_INFO = "getCallTimeInfo",
1705
+ /**
1706
+ * 结束当前用户异常的callSession(包含各个阶段),主要用于应用异常退出再启动、各种通话异常当中。酌情调用
1707
+ */
1708
+ END_ABNORMAL_CALL = "endUserAbnormalCalls",
1709
+ /**
1710
+ * 用户系统状态上报
1711
+ */
1712
+ SYS_STATUS_UP = "sysStatusUp",
1713
+ /**
1714
+ * 上报通话记录已读状态
1715
+ */
1716
+ UP_CALL_LOG_READED = "upCallLogReaded",
1717
+ /**
1718
+ * 下发通话记录已读状态
1719
+ */
1720
+ PUB_CALL_LOG_READED = "pubCallLogReaded",
1721
+ /**
1722
+ * 下发下行信令数据序号Id (弱网补偿方法,移动端已实现,PC 未实现)
1723
+ */
1724
+ PUB_NACK_SEQ_ID = "pubNACKSeqId",
1725
+ /**
1726
+ * 查询当前用户参与的未结束的callSession的CallId列表,group专用,可在groupcall结束时,补偿各端的快捷入口是否消失的判断
1727
+ */
1728
+ GET_USER_CALL_SESSION_ID_LIST = "getUserCallSessionIdList"
1729
+ }
1730
+
1731
+ declare enum RCCallPlusInnerCode {
1732
+ SUCCESS = 0,
1733
+ /**
1734
+ * 无效的响应时间(接口响应时间过长)
1735
+ */
1736
+ INVALID_RESPONSE_TIME = 80170,
1737
+ /**
1738
+ * 非最优响应时间
1739
+ */
1740
+ NONOPTIMAL_RES_TIME = 80171
1741
+ }
1742
+
1743
+ /**
1744
+ * 校时模块
1745
+ */
1746
+ declare class TimeCorrectioner {
1747
+ private readonly _callEngine;
1748
+ private readonly _logger;
1749
+ private readonly _singleCallDurationEv;
1750
+ /**
1751
+ * 接口响应时间
1752
+ */
1753
+ private _RTT;
1754
+ /**
1755
+ * 可用的接口响应时间下限(单位: ms)
1756
+ */
1757
+ private _validMinRTT;
1758
+ /**
1759
+ * 可用的接口响应时间上限(单位: ms)
1760
+ */
1761
+ private _validMaxRTT;
1762
+ /**
1763
+ * 与 callServer 的时间偏差时间(单位: ms)
1764
+ */
1765
+ private _deltaTime;
1766
+ /**
1767
+ * timerId
1768
+ */
1769
+ private _timerId;
1770
+ /**
1771
+ * 轮训时间间隔(单位: ms)
1772
+ */
1773
+ private readonly _interval;
1774
+ /**
1775
+ * 最大重试次数
1776
+ */
1777
+ private readonly _maxRetryTimes;
1778
+ constructor(_callEngine: RCCallEngine, _logger: BasicLogger, _singleCallDurationEv: (callId: string, clientStartTime: number, clientFirstFrameTime: number, traceId: string) => void);
1779
+ /**
1780
+ * 从服务端获取通话时长、通话开始时间
1781
+ */
1782
+ getCallClientTimeByServer(callId: string, traceId: string): Promise<{
1783
+ code: number;
1784
+ duration?: number;
1785
+ clientStartTime?: number;
1786
+ }>;
1787
+ /**
1788
+ * 直接计算客户端开始时间
1789
+ */
1790
+ calcClientStartTime(callId: string, startTime: number, traceId: string): {
1791
+ code: RCCallPlusInnerCode;
1792
+ clientStartTime?: number;
1793
+ };
1794
+ private _startTimes;
1795
+ /**
1796
+ * 开始定时递归获取与 CallServer 的时间偏差值
1797
+ */
1798
+ start(traceId: string): void;
1799
+ /**
1800
+ * 停止定时轮训
1801
+ */
1802
+ stop(traceId: string): void;
1803
+ /**
1804
+ * 重新定时轮训
1805
+ */
1806
+ restart(traceId: string): void;
1807
+ getLocalDelayTime(): number;
1808
+ getRTT(): number;
1809
+ /**
1810
+ * 获取与 CallServer 的时间偏差值,非通话中的计算
1811
+ */
1812
+ private _getDeltaTime;
1813
+ /**
1814
+ * 通话中获取开始时间
1815
+ */
1816
+ private _getDeltaTimeInCall;
1817
+ private _retryTimesInCall;
1818
+ private readonly _maxRetryTimesInCall;
1819
+ /**
1820
+ * 多次校正抛给业务层的通话开始时间、首帧时间
1821
+ */
1822
+ private _loopCorrectClientTime;
1823
+ }
1824
+
1825
+ declare class SignalTransporter extends EventEmitter {
1826
+ private readonly _context;
1827
+ private readonly _runtime;
1828
+ private readonly _initOpts;
1829
+ private readonly _timeCorrectioner;
1830
+ private readonly _logger;
1831
+ /**
1832
+ * 监听对象
1833
+ */
1834
+ _listener: ISignalTransporterListener;
1835
+ /**
1836
+ * 需要重试的 action
1837
+ */
1838
+ _needRetryActions: CallServerAction[];
1839
+ _sessionId: string;
1840
+ /**
1841
+ * constructor
1842
+ */
1843
+ constructor(_context: PluginContext, _runtime: IRuntime, _initOpts: IRCCallInitOptions, _timeCorrectioner: TimeCorrectioner, _logger: BasicLogger);
1844
+ getSessionId(): string;
1845
+ registerListener(listener: ISignalTransporterListener): void;
1846
+ startCall(msg: IStartCallCon, traceId: string): Promise<{
1847
+ code: number;
1848
+ data?: IStartCallRes;
1849
+ }>;
1850
+ startSingleCall(msg: IStartSingleCon, traceId: string): Promise<{
1851
+ code: number;
1852
+ data?: IStartCallRes;
1853
+ }>;
1854
+ startGroupCall(msg: IStartGroupCon, traceId: string): Promise<{
1855
+ code: number;
1856
+ data?: IStartCallRes;
1857
+ }>;
1858
+ inviteCall(msg: IInviteCallCon, traceId: string): Promise<{
1859
+ code: number;
1860
+ data?: IInviteCallRes;
1861
+ }>;
1862
+ ringingCall(msg: IRingingCallCon, traceId: string): Promise<{
1863
+ code: number;
1864
+ }>;
1865
+ acceptCall(msg: IAcceptCallCon, traceId: string): Promise<{
1866
+ code: number;
1867
+ }>;
1868
+ joinCall(msg: IJoinCallCon, traceId: string): Promise<{
1869
+ code: number;
1870
+ }>;
1871
+ hangupCall(msg: IHangupCallCon, traceId: string): Promise<{
1872
+ code: number;
1873
+ }>;
1874
+ statusUpCall(msg: IStatusUpCon, traceId: string): Promise<{
1875
+ code: number;
1876
+ }>;
1877
+ eventUpCall(msg: IEventUpCallCon, traceId: string): Promise<{
1878
+ code: number;
1879
+ }>;
1880
+ dialogUpCall(msg: IDialogUpCallCon, traceId: string): Promise<{
1881
+ code: number;
1882
+ }>;
1883
+ deleteCallRecord(userId: string, callIds: string[], traceId: string): Promise<{
1884
+ code: number;
1885
+ }>;
1886
+ syncCallLog(msg: ISyncCallLogCon, traceId: string): Promise<{
1887
+ code: number;
1888
+ data?: ISyncCallLogResList;
1889
+ }>;
1890
+ queryUserHasCall(): Promise<{
1891
+ code: number;
1892
+ data?: IQryUserHasCallRes;
1893
+ }>;
1894
+ getCallServerTimestamp(traceId: string): Promise<{
1895
+ code: number;
1896
+ data?: {
1897
+ syncTime: number;
1898
+ };
1899
+ }>;
1900
+ getCallTimeInfo(callId: string, traceId: string): Promise<{
1901
+ code: number;
1902
+ data?: IGetCallTimeInfoRes;
1903
+ }>;
1904
+ getUserCallStateList(traceId: string): Promise<{
1905
+ code: number;
1906
+ data?: IGetUserCallStateListRes;
1907
+ }>;
1908
+ clearCallRecord(traceId: string): Promise<{
1909
+ code: number;
1910
+ data?: IClearCallLogRes;
1911
+ }>;
1912
+ getCallSession(opts: IBaseSingalCon, traceId: string): Promise<{
1913
+ code: number;
1914
+ data?: IGetCallSessionServerRes;
1915
+ }>;
1916
+ sysStatusUp(opts: ISysStatusUpOpts, traceId: string): Promise<{
1917
+ code: number;
1918
+ }>;
1919
+ upCallLogReaded(opts: IBaseSingalCon): Promise<{
1920
+ code: number;
1921
+ }>;
1922
+ /** ======私有方法============================================================================================= */
1923
+ private _onIMConnectionStateChange;
1924
+ /**
1925
+ * call 信令发送
1926
+ * @param targetId 获取 call log (syncCallLog) 时传 userId, 其他 action 传 callId
1927
+ * @param key call server 定义 action
1928
+ * @param options action 携带参数,无参数传空字符串
1929
+ */
1930
+ private _sendCallSignal;
1931
+ /**
1932
+ * call 信令接收
1933
+ */
1934
+ private _onRecvCallSignal;
1935
+ /**
1936
+ * 根据 deviceId 判断数据是否应该下发
1937
+ * deviceId 为空字符串或 null 直接下发
1938
+ * deviceId 有具体的值,根据 deviceId 判断是否是己端的 deviceId
1939
+ */
1940
+ private _isValidData;
1941
+ /**
1942
+ * 收到邀请
1943
+ * @param isDirectly 是否为直发信令
1944
+ */
1945
+ private _onPubInviteCall;
1946
+ /**
1947
+ * 收到状态变更:响铃、忙碌、通话等待、对方未接听、己方未接听
1948
+ */
1949
+ private _onStatusDownCall;
1950
+ /**
1951
+ * 收到通话事件变更:打开|关闭 摄像头
1952
+ */
1953
+ private _onEventDownCall;
1954
+ /**
1955
+ * 收到通话调整事件及结果
1956
+ * 事件:媒体类型切换
1957
+ * 动作:请求、接受、拒绝、取消
1958
+ */
1959
+ private _onDialogDownCall;
1960
+ /**
1961
+ * 通话结束后,日志下发
1962
+ */
1963
+ private _onPubCallLog;
1964
+ /**
1965
+ * 补偿数据处理
1966
+ */
1967
+ private _onConpensationData;
1968
+ }
1969
+
1970
+ /**
1971
+ * 异常结束 call 处理存储类
1972
+ * 在呼出或呼入阶段的 call 进行本地存储,正常结束后清除
1973
+ * 异常结束后,本地取未清除的 callId, 通过服务接口清除异常结束的 call ,防止无法呼出或呼入
1974
+ */
1975
+ declare class AbnormalCall {
1976
+ private readonly _runtime;
1977
+ private readonly _logger;
1978
+ private _localStore;
1979
+ private _indexDBStore;
1980
+ private _storeKey;
1981
+ private _isSupportIndexDB;
1982
+ constructor(_runtime: IRuntime, _logger: BasicLogger);
1983
+ /**
1984
+ * 添加异常 callId
1985
+ */
1986
+ addAbnormallCallId(userId: string, callId: string): void;
1987
+ /**
1988
+ * 删除异常 callId
1989
+ */
1990
+ removeAbnormalCallIds(userId: string, callIds: string[]): void;
1991
+ /**
1992
+ * 获取异常结束的 callId 列表
1993
+ */
1994
+ getAbnormalCallIds(userId: string): Promise<string[] | null>;
1995
+ private _addByLocalStore;
1996
+ private _removeByLocalStore;
1997
+ private _getByLocalStore;
1998
+ private _addByIndexDB;
1999
+ private _removeByIndexDB;
2000
+ private _getByIndexDB;
2001
+ }
2002
+
2003
+ declare enum RCCallPlusMediaTypeChangeResult {
2004
+ /**
2005
+ * 请求方取消媒体类型变更
2006
+ */
2007
+ CANCEL_CHANGE_MEDIA_TYPE = 0,
2008
+ /**
2009
+ * 应答方拒绝媒体类型切换
2010
+ */
2011
+ REFUSE_CHANGE_MEDIA_TYPE = 1,
2012
+ /**
2013
+ * 服务仲裁允许媒体类型切换
2014
+ */
2015
+ SERVER_ALLOW_MEDIA_TYPE = 2,
2016
+ /**
2017
+ * 媒体类型切换超时
2018
+ */
2019
+ CHANGE_MEDIA_TYPE_TIMEOUT = 3
2020
+ }
2021
+
2022
+ declare class RCCallPlusReportModule {
2023
+ private readonly _logger;
2024
+ private _listener;
2025
+ constructor(_logger: BasicLogger);
2026
+ /**
2027
+ * 状态机事件注册
2028
+ */
2029
+ registerEventListener(listener: ICallPlusEventListener): void;
2030
+ /**
2031
+ * 回调应用层事件
2032
+ * @param eventName
2033
+ * @param attrs
2034
+ * @returns
2035
+ */
2036
+ private _callAppListener;
2037
+ onReceivedCall(session: RCCallPlusSession, traceId: string): void;
2038
+ onRemoteUserInvited(inviteeUserList: string[], inviterUserId: string, callId: string): void;
2039
+ onCallConnected(session: RCCallPlusSession): void;
2040
+ onCallTypeChanged(callType: RCCallPlusType, callId: string, traceId: string): void;
2041
+ /**
2042
+ * 增量上报远端人员状态变化
2043
+ */
2044
+ onRemoteUserStateChanged(data: {
2045
+ callId: string;
2046
+ userId: string;
2047
+ userState: RCCallPlusSessionUserState;
2048
+ reason?: RCCallPlusReason;
2049
+ }, traceId: string): void;
2050
+ onCallEnded(session: RCCallPlusSession, reason: RCCallPlusReason, traceId: string): void;
2051
+ onRemoteCameraStateChanged(callId: string, track: RCRemoteTrack): void;
2052
+ onRemoteMicrophoneStateChanged(callId: string, track: RCRemoteTrack): void;
2053
+ onReceivedCallRecord(record: IRCCallPlusCallRecord, traceId: string): void;
2054
+ onReceivedChangeMediaTypeRequest(userId: string, transactionId: string, mediaType: RCCallPlusMediaType, traceId: string): void;
2055
+ onReceivedChangeMediaTypeResult(info: {
2056
+ userId: string;
2057
+ transactionId: string;
2058
+ mediaType: RCCallPlusMediaType;
2059
+ code: RCCallPlusMediaTypeChangeResult;
2060
+ }, traceId: string): void;
2061
+ onReceivedCallStartTime(info: {
2062
+ callId: string;
2063
+ callStartTime: number;
2064
+ }, traceId: string): void;
2065
+ onReceivedCallFirstFrameTime(callId: string, callFirstFrameTime: number, traceId: string): void;
2066
+ onUserMediaAvailable(tracks: RCTrack[], traceId?: string): void;
2067
+ onFetchRemoteMediaError(tracks: ISubscribeAttr[], code: RCRTCCode): void;
2068
+ onUserAudioLevelChanged(audioLevelReportList: {
2069
+ track: RCLocalAudioTrack | RCRemoteAudioTrack;
2070
+ audioLevel: number;
2071
+ }[]): void;
2072
+ }
2073
+
2074
+ declare class RCCallEngine extends EventEmitter {
2075
+ private readonly _context;
2076
+ private readonly _runtime;
2077
+ private readonly _initOpts;
2078
+ private readonly _logger;
2079
+ private readonly _reportAppEventModule;
2080
+ static __INNER_SESSION_CLOSE__: string;
2081
+ static __INNER_SESSION_CONNECT__: string;
2082
+ static __INNER_CHANGE_MEDIA_TYPE__: string;
2083
+ static __INNER_INVITE__: string;
2084
+ /**
2085
+ * 主 session
2086
+ */
2087
+ _mainSession: RCCallInnerSession | null;
2088
+ /**
2089
+ * 在通话中收到的 邀请 session
2090
+ */
2091
+ _holdSessions: RCCallInnerSession[];
2092
+ /**
2093
+ * 信令模块
2094
+ */
2095
+ _signalModule: SignalTransporter;
2096
+ /**
2097
+ * 异常结束 call 处理器
2098
+ */
2099
+ _abnormalModule: AbnormalCall;
2100
+ /**
2101
+ * 记录单呼中,是否上报过第一帧
2102
+ * 置 true 时机:收到远端第一帧,成功上报 Server
2103
+ * 置 false 时机:通话结束
2104
+ */
2105
+ private _isUpFirstFrameTime;
2106
+ /**
2107
+ * 通话为 ONCALL 时,SDK 需给业务层上报通话开始计时事件
2108
+ * 会收到多次 ONCALL,所以需要标识是否已抛过事件
2109
+ */
2110
+ private _callStartMap;
2111
+ /**
2112
+ * 校时器
2113
+ */
2114
+ _timeCorrectioner: TimeCorrectioner;
2115
+ /**
2116
+ * 构造器
2117
+ */
2118
+ constructor(_context: PluginContext, _runtime: IRuntime, _initOpts: IRCCallInitOptions, _logger: BasicLogger, _reportAppEventModule: RCCallPlusReportModule);
2119
+ /**
2120
+ * 发起呼叫
2121
+ */
2122
+ startCall(opts: IStartCallOpts, traceId: string): Promise<{
2123
+ code: number;
2124
+ data?: IStartCallResult;
2125
+ }>;
2126
+ /**
2127
+ * 通话中邀请
2128
+ */
2129
+ invite(opts: IInviteOpts, traceId: string): Promise<{
2130
+ code: number;
2131
+ data?: IInviteRes;
2132
+ }>;
2133
+ /**
2134
+ * beforeHangup
2135
+ */
2136
+ clearAllTimer(callId: string, traceId: string): void;
2137
+ /**
2138
+ * 挂断
2139
+ * 通话请求取消、通话拒绝
2140
+ */
2141
+ hangup(opts: IHangupForBusyOpts, traceId: string): Promise<{
2142
+ code: number;
2143
+ }>;
2144
+ /**
2145
+ * 接收邀请
2146
+ * 通话中又收到新来电后,接听新来电时,必须先挂断之前的通话(mainSession)
2147
+ */
2148
+ accept(opts: IAcceptOpts, traceId: string): Promise<{
2149
+ code: number;
2150
+ }>;
2151
+ /**
2152
+ * 直接加入
2153
+ */
2154
+ joinCall(opts: IJoinCallOpts, traceId: string): Promise<{
2155
+ code: number;
2156
+ }>;
2157
+ /**
2158
+ * 通话媒体变更请求
2159
+ */
2160
+ requestChangeMediaType(opts: IReqChangeMediaTypeOpts, traceId: string): Promise<{
2161
+ code: number;
2162
+ data?: IReqChangeMediaTypeRes;
2163
+ }>;
2164
+ /**
2165
+ * 通话媒体类型变更请求响应
2166
+ */
2167
+ responseChangeMediaType(opts: IResChangeMediaTypeOpts, traceId: string): Promise<{
2168
+ code: number;
2169
+ }>;
2170
+ /**
2171
+ * 取消通话媒体类型切换请求
2172
+ */
2173
+ cancelChangeMediaType(opts: ICancelChangeMediaTypeOpts, traceId: string): Promise<{
2174
+ code: number;
2175
+ }>;
2176
+ /**
2177
+ * 获取 call log 列表
2178
+ */
2179
+ getCallLogList(opts: IGetCallLogListOpts, traceId: string): Promise<{
2180
+ code: number;
2181
+ data?: IRCCallPlusGetCallRecordRes;
2182
+ }>;
2183
+ /**
2184
+ * 批量删除通话日志
2185
+ */
2186
+ deleteCallLog(callIds: string[], traceId: string): Promise<{
2187
+ code: number;
2188
+ }>;
2189
+ /**
2190
+ * 获取 call server 当前时间戳
2191
+ */
2192
+ getCallServerTimestamp(traceId: string): Promise<{
2193
+ code: number;
2194
+ data?: number;
2195
+ }>;
2196
+ /**
2197
+ * 获取 call 时间信息
2198
+ */
2199
+ getCallTimeInfo(callId: string, traceId: string): Promise<{
2200
+ code: number;
2201
+ data?: IGetCallTimeInfoRes;
2202
+ }>;
2203
+ /**
2204
+ * 获取未结束的通话列表
2205
+ */
2206
+ getOpenCallList(traceId: string): Promise<{
2207
+ code: number;
2208
+ data?: IRCCallPlusCallRecord[];
2209
+ }>;
2210
+ /**
2211
+ * 清除当前用户的 call log
2212
+ */
2213
+ removeAllCallLog(traceId: string): Promise<{
2214
+ code: number;
2215
+ }>;
2216
+ /**
2217
+ * 通过 callId 获取 session 详细信息
2218
+ */
2219
+ getCallSession(opts: ICallId, traceId: string): Promise<{
2220
+ code: number;
2221
+ data?: IGetCallSessionRes;
2222
+ }>;
2223
+ getHoldSession(callId: string): RCCallPlusSession | null;
2224
+ /**
2225
+ * 获取当前主 session
2226
+ */
2227
+ getLocalMainSession(): RCCallPlusSession | null;
2228
+ /**
2229
+ * 设置主 session 状态
2230
+ */
2231
+ updateMainSessionState(state: RCCallPlusCallState): void;
2232
+ /**
2233
+ * 记录是否是本端挂断
2234
+ */
2235
+ setIsLocalClientHangup(isLocalClientHangup: boolean): void;
2236
+ /**
2237
+ * 通知人员状态
2238
+ * CallClient 也需要更新人员状态,定义为公共函数
2239
+ */
2240
+ updateUsersState(callId: string, users: ISessionUser[], traceId: string): void;
2241
+ setUserDeviceEnable(userId: string, mediaType: RCCallPlusMediaType, enable: boolean, traceId: string): void;
2242
+ /**
2243
+ * 获取通话开始时间
2244
+ */
2245
+ getCallStaringTime(opts: ICallId, traceId: string): Promise<{
2246
+ code: number;
2247
+ duration?: number;
2248
+ clientStartTime?: number;
2249
+ }>;
2250
+ /**
2251
+ * 人员系统状态上报
2252
+ */
2253
+ systemStatusUp(opts: ISysStatusUpOpts, traceId: string): Promise<{
2254
+ code: number;
2255
+ }>;
2256
+ /**
2257
+ * 单呼中收到远端流后,给 CallServer 上报,用于处理计时逻辑
2258
+ */
2259
+ upFirstFrameTime(traceId: string): Promise<{
2260
+ code: number;
2261
+ }>;
2262
+ /**
2263
+ * 上层模拟 statusDownCall, 结束 session
2264
+ * 通话建立后,只能结束 mainSession
2265
+ */
2266
+ endCurrentSession(currentUserSystemState: RCCallPlusReason, callId: string, traceId: string): void;
2267
+ /**
2268
+ * 上层 RTC 加入房间后重新开始校时
2269
+ */
2270
+ startTimeCorrection(traceId: string): void;
2271
+ getDelayTimeInfo(): IGetDelayTimeInfoRes;
2272
+ /**
2273
+ * holdSession 升级为 mainSession
2274
+ */
2275
+ upgradeMainSession(holdCallId: string): void;
2276
+ /** ======私有方法============================================================================================= */
2277
+ /**
2278
+ * IM 状态变更处理
2279
+ */
2280
+ private _onIMStateChange;
2281
+ /**
2282
+ * 处理发起邀请、收到邀请后计时超时
2283
+ * 提前模拟 _onStatusDown, 不再依赖 CallServer 下发的 _onStatusDown
2284
+ * 处理网络异常情况下上报 CallServer 失败,CallServer 不会下发 _onStatusDown 情况
2285
+ */
2286
+ private _handleCallTimeout;
2287
+ /**
2288
+ * 开启超时计时器
2289
+ */
2290
+ private _startTimer;
2291
+ /**
2292
+ * 停止超时计时器
2293
+ */
2294
+ private _stopTimer;
2295
+ /**
2296
+ * 收到 通话邀请
2297
+ */
2298
+ private _onInvite;
2299
+ /**
2300
+ * 收到 挂断(对方通话取消、通话拒绝)
2301
+ */
2302
+ private _onHangup;
2303
+ /**
2304
+ * 收到 接听
2305
+ */
2306
+ private _onAccept;
2307
+ /**
2308
+ * 收到状态下发
2309
+ */
2310
+ private _onStatusDown;
2311
+ /**
2312
+ * 收到其他端的状态下发
2313
+ */
2314
+ private _onOtherClientStatusDown;
2315
+ /**
2316
+ * 收到事件下发
2317
+ */
2318
+ private _onEventDown;
2319
+ /**
2320
+ * 通知单呼 duration 变更
2321
+ */
2322
+ private _onRecvSinCallDuration;
2323
+ /**
2324
+ * 收到媒体变更相关事件
2325
+ */
2326
+ private _onSwitchMediaType;
2327
+ /**
2328
+ * 收到 call log 日志
2329
+ */
2330
+ private _onRecvCallEndLog;
2331
+ /**
2332
+ * 通话结束
2333
+ */
2334
+ sessionClose(data: {
2335
+ callId: string;
2336
+ toDeviceId: string;
2337
+ }, traceId: string, isSelfHangup: boolean): void;
2338
+ /**
2339
+ * 根据 callId 移除 session
2340
+ */
2341
+ private _removeSession;
2342
+ /**
2343
+ * 不存在 mainSession 时,从服务端获取数据生成 mainSession, 并通知人员状态变更
2344
+ */
2345
+ private _createSessionByServer;
2346
+ /**
2347
+ * 兼容移动端 onPhone 无法消除问题
2348
+ * A1 移动端和 B 正在 call 中,且 onPhone 状态, A1 杀进程后,B 端展示的 onPhone 状态无法消失
2349
+ * A2 多端在接听和直接加入 call 时,上报 onPhoneEnd 状态,消除 B 端展示的 onPhone 状态
2350
+ */
2351
+ private _clearMobileOnPhone;
2352
+ private _onUserStateChange;
2353
+ private _onOtherMemberInvite;
2354
+ private _onRequestChangeMediaType;
2355
+ private _receiveMediaTypeChangeResult;
2356
+ private _onCallTypeChange;
2357
+ }
2358
+
2359
+ /**
2360
+ * 对外 session 实例,仅有获取方法,无法修改
2361
+ */
2362
+ declare class RCCallPlusSession {
2363
+ private readonly _session;
2364
+ private readonly _callEngine;
2365
+ private readonly _logger;
2366
+ private _startTime;
2367
+ private _duration;
2368
+ private _callId;
2369
+ constructor(_session: RCCallInnerSession, _callEngine: RCCallEngine, _logger: BasicLogger);
2370
+ /**
2371
+ * 获取 CallId
2372
+ */
2373
+ getCallId(): string;
2374
+ /**
2375
+ * 获取 session 状态
2376
+ */
2377
+ getState(): RCCallPlusCallState;
2378
+ /**
2379
+ * 获取通话类型
2380
+ */
2381
+ getCallType(): RCCallPlusType;
2382
+ /**
2383
+ * 获取通话媒体类型
2384
+ */
2385
+ getMediaType(): RCCallPlusMediaType;
2386
+ /**
2387
+ * 获取通话人员列表
2388
+ */
2389
+ getUserList(): {
2390
+ userId: string;
2391
+ state: RCCallPlusSessionUserState;
2392
+ }[];
2393
+ /**
2394
+ * 获取通话发起者 userId
2395
+ */
2396
+ getCreatorUserId(): string;
2397
+ /**
2398
+ * 获取通话邀请者 userId
2399
+ * 呼入有值,呼出时,值为本地用户 UserId
2400
+ */
2401
+ getInviterUserId(): string;
2402
+ /**
2403
+ * 获取通话起始时间
2404
+ */
2405
+ getCreateTimestamp(): Promise<{
2406
+ code: number;
2407
+ startTime?: number;
2408
+ }>;
2409
+ /**
2410
+ * 获取通话时长
2411
+ * 通话未结束前,值为 0
2412
+ */
2413
+ getDuration(): Promise<{
2414
+ code: number;
2415
+ duration?: number;
2416
+ }>;
2417
+ }
2418
+
2419
+ /**
2420
+ * @enum
2421
+ */
2422
+ declare const RCCallPlusCode: {
2423
+ /**
2424
+ * 成功
2425
+ */
2426
+ readonly SUCCESS: 0;
2427
+ /**
2428
+ * 参数错误
2429
+ */
2430
+ readonly PARAM_ERROR: 80001;
2431
+ /**
2432
+ * 存在未结束的 session
2433
+ */
2434
+ readonly SESSION_EXIST: 80002;
2435
+ /**
2436
+ * 未加入通话
2437
+ */
2438
+ readonly NOT_IN_CALL: 80003;
2439
+ /**
2440
+ * 媒体类型被禁止
2441
+ */
2442
+ readonly MEDIATYPE_INVALID: 80004;
2443
+ /**
2444
+ * 当前不是视频通话
2445
+ */
2446
+ readonly NOT_VIDEO_CALL: 80005;
2447
+ /**
2448
+ * 开通的音视频服务没有及时生效或音视频服务已关闭
2449
+ */
2450
+ readonly RTC_SERVICE_UNAVAILABLE: 80006;
2451
+ /**
2452
+ * 调用函数时,传入的用户列表为空错误
2453
+ */
2454
+ readonly USER_LIST_INVAILD: 80007;
2455
+ /**
2456
+ * 调用函数时,传入的通话 Id 为空错误
2457
+ */
2458
+ readonly CALL_ID_INVALID: 80008;
2459
+ /**
2460
+ * 事务 Id 为空错误
2461
+ */
2462
+ readonly TRANSACTION_ID_INVALID: 80009;
2463
+ /**
2464
+ * 调用函数时,传入的用户 Id 为空错误
2465
+ */
2466
+ readonly USER_ID_INVALID: 80010;
2467
+ /**
2468
+ * 发起单人呼叫时,人员列表中只能有一个人
2469
+ */
2470
+ readonly SINGLE_CALL_NOT_SUPPORT_MULTI_PERSON: 80011;
2471
+ /**
2472
+ * im 未连接
2473
+ */
2474
+ readonly SIGNAL_DISCONNECTED: 80012;
2475
+ /**
2476
+ * 摄像头未打开
2477
+ */
2478
+ readonly CAMERA_CLOSED: 80100;
2479
+ /**
2480
+ * 麦克风未打开
2481
+ */
2482
+ readonly MICROPHONE_CLOSED: 80101;
2483
+ /**
2484
+ * 无媒体资源
2485
+ */
2486
+ readonly MEDIA_RESOURCE_INVALIED: 80102;
2487
+ /**
2488
+ * 未 install RTC 插件
2489
+ */
2490
+ readonly NOT_INSTALL_RTC_PLUGIN: 80103;
2491
+ /**
2492
+ * 播放异常
2493
+ */
2494
+ readonly PLAY_MEDIA_FAILED: 80104;
2495
+ /**
2496
+ * 播放视频需要 video 元素
2497
+ */
2498
+ readonly VIDEO_VIEW_NOT_SET: 80105;
2499
+ };
2500
+
2501
+ /**
2502
+ * callPlus 初始化参数
2503
+ */
2504
+ interface ICallPlusInitOpts {
2505
+ /**
2506
+ * Web RTCLib 实例引用,必填
2507
+ */
2508
+ rtcClient: RCRTCClient;
2509
+ /**
2510
+ * 定义 callplus SDK 内部的日志输出等级,默认值 LogL.WARN
2511
+ */
2512
+ logOutputLevel?: EnableLogL$1;
2513
+ /**
2514
+ * 是否发布小流
2515
+ */
2516
+ isPubTiny?: boolean;
2517
+ }
2518
+ /**
2519
+ * callPlus 对外事件定义
2520
+ */
2521
+ interface ICallPlusEventListener {
2522
+ /**
2523
+ * 呼入通知
2524
+ * 收到呼入时,可选择接听或挂断通话
2525
+ * @param session 通话实例
2526
+ */
2527
+ onReceivedCall(session: RCCallPlusSession): void;
2528
+ /**
2529
+ * 群组通话收到远端人员被邀请加入通话通知,如 A 与 B 通话中,A 邀请 C,则 B 会收到此回调
2530
+ * @param inviteeUserList - 受邀人用户 ID 列表
2531
+ * @param inviterUserId - 邀请者用户 ID
2532
+ * @param callId - 所属通话;群聊中,己方已不在通话中的情况下,也会收到服务侧的事件通知
2533
+ */
2534
+ onRemoteUserInvited(inviteeUserList: string[], inviterUserId: string, callId: string): void;
2535
+ /**
2536
+ * 通话已建立,sdk 内部会发布音视频资源
2537
+ */
2538
+ onCallConnected(session: RCCallPlusSession): void;
2539
+ /**
2540
+ * 收到某个人的音频或视频可播放
2541
+ * 业务层可调 playMedia(userId, mediaType) 播放
2542
+ * @param userId 用户 id
2543
+ * @param mediaType 媒体类型
2544
+ */
2545
+ onUserMediaAvailable(userId: string, mediaType: RCCallPlusMediaType): void;
2546
+ /**
2547
+ * 通话结束(群组通话时,客户端挂断不代表通话结束)
2548
+ * @param session 通话实例
2549
+ * @param reason 通话结束原因
2550
+ */
2551
+ onCallEnded(session: RCCallPlusSession, reason: RCCallPlusReason): void;
2552
+ /**
2553
+ * 通话类型变更
2554
+ * @param type 单呼或群呼
2555
+ * @param callId 通话 id
2556
+ */
2557
+ onCallTypeChanged?(type: RCCallPlusType, callId: string): void;
2558
+ /**
2559
+ * 人员状态变更
2560
+ * @param callId 通话 id
2561
+ * @param userId 状态变更人员 id
2562
+ * @param state 人员变更后状态
2563
+ * @param reason 变更原因
2564
+ */
2565
+ onRemoteUserStateChanged?(callId: string, userId: string, state: RCCallPlusSessionUserState, reason?: RCCallPlusReason): void;
2566
+ /**
2567
+ * 远端摄像头开、关通知
2568
+ * @param callId 通话 id
2569
+ * @param userId 用户 id
2570
+ * @param disabled 是否关闭
2571
+ */
2572
+ onRemoteCameraStateChanged?(callId: string, userId: string, disabled: boolean): void;
2573
+ /**
2574
+ * 远端麦克风开、关通知
2575
+ * @param callId 通话 id
2576
+ * @param userId 用户 id
2577
+ * @param disabled 是否关闭
2578
+ */
2579
+ onRemoteMicrophoneStateChanged?(callId: string, userId: string, disabled: boolean): void;
2580
+ /**
2581
+ * 单呼或群呼结束后,服务器下发的通话日志
2582
+ * @param record 数据接口定义为:IRCCallPlusCallRecord,可通过 apiDoc 查看具体包含字段
2583
+ */
2584
+ onReceivedCallRecord?(record: IRCCallPlusCallRecord): void;
2585
+ /**
2586
+ * 收到媒体类型变更请求(仅单聊)
2587
+ * @param userId 请求发起人
2588
+ * @param transactionId 事物 id,本次请求和应答的唯一标识
2589
+ * @param mediaType 请求变更的媒体类型
2590
+ */
2591
+ onReceivedChangeMediaTypeRequest?(userId: string, transactionId: string, mediaType: RCCallPlusMediaType): void;
2592
+ /**
2593
+ * 媒体类型变更结果(仅单聊)
2594
+ * @param info.userId
2595
+ * @param info.transactionId 事物 id,本次请求和应答的唯一标识
2596
+ * @param info.mediaType 最终的媒体类型
2597
+ * @param info.code - 升级结果
2598
+ * - 请求方取消媒体类型变更
2599
+ * - 应答方拒绝媒体类型切换
2600
+ * - 服务仲裁允许媒体类型切换
2601
+ */
2602
+ onReceivedChangeMediaTypeResult?(info: {
2603
+ userId: string;
2604
+ transactionId: string;
2605
+ mediaType: RCCallPlusMediaType;
2606
+ code: RCCallPlusMediaTypeChangeResult;
2607
+ }): void;
2608
+ /**
2609
+ * 收到通话开始计时
2610
+ * @param info.callId 通话 id
2611
+ * @param info.callType 单聊或群聊
2612
+ * @param info.callStartTime 通话开始时间
2613
+ */
2614
+ onReceivedCallStartTime?(info: {
2615
+ callId: string;
2616
+ callType: RCCallPlusType;
2617
+ callStartTime: number;
2618
+ }): void;
2619
+ /**
2620
+ * 收到首帧时间
2621
+ * 收到首帧开始计费
2622
+ * @param callId 通话 id
2623
+ * @param callFirstFrameTime 通话首帧到达时间
2624
+ */
2625
+ onReceivedCallFirstFrameTime?(callId: string, callFirstFrameTime: number): void;
2626
+ /**
2627
+ * 获取远端媒体资源失败
2628
+ * @param userId 远端人员 id
2629
+ * @param code 失败原因
2630
+ */
2631
+ onFetchRemoteMediaError?(userId: string, code: number): void;
2632
+ /**
2633
+ * 人员音量变化
2634
+ * @param userId 本端或远端人员 id
2635
+ * @param audioLevel 音量值(0-100)
2636
+ */
2637
+ onUserAudioLevelChanged?(userId: string, audioLevel: number): void;
2638
+ }
2639
+ /**
2640
+ * 通话前视频配置
2641
+ */
2642
+ interface IVideoConfig {
2643
+ /**
2644
+ * 摄像头设备 ID
2645
+ */
2646
+ cameraId?: string;
2647
+ /**
2648
+ * 帧率
2649
+ */
2650
+ frameRate: RCFrameRate;
2651
+ /**
2652
+ * 分辨率
2653
+ */
2654
+ resolution: RCResolution;
2655
+ /**
2656
+ * 最小码率
2657
+ */
2658
+ minBitrate?: number;
2659
+ /**
2660
+ * 最大码率
2661
+ */
2662
+ maxBitrate?: number;
2663
+ }
2664
+ /**
2665
+ * 通话前音频配置
2666
+ */
2667
+ interface IAudioConfig {
2668
+ /**
2669
+ * 麦克风设备 ID
2670
+ */
2671
+ microphoneId?: string;
2672
+ /**
2673
+ * 采样率
2674
+ */
2675
+ sampleRate?: number;
2676
+ /**
2677
+ * 最小码率
2678
+ */
2679
+ minBitrate?: number;
2680
+ /**
2681
+ * 最大码率
2682
+ */
2683
+ maxBitrate?: number;
2684
+ }
2685
+ /**
2686
+ * 视频配置构建器
2687
+ */
2688
+ interface IVideoConfigBuilder {
2689
+ /**
2690
+ * 针对不同视频流分别配置帧率
2691
+ */
2692
+ setFrameRate(fps: number, tag: string): IVideoConfigBuilder;
2693
+ /**
2694
+ * 针对不同视频流分别配置分辨率
2695
+ */
2696
+ setVideoResolution(width: number, height: number, tag: string): IVideoConfigBuilder;
2697
+ /**
2698
+ * 设置默认 cameraId,作用域预览功能、呼叫取流等
2699
+ */
2700
+ setDefaultCameraId(cameraId: string): IVideoConfigBuilder;
2701
+ setBitrate(min: number, max: number, tag: string): IVideoConfigBuilder;
2702
+ build(): IVideoConfig;
2703
+ }
2704
+ /**
2705
+ * 音频配置构建器
2706
+ */
2707
+ interface IAudioConfigBuilder {
2708
+ /**
2709
+ * 指定默认麦克风
2710
+ */
2711
+ setDefaultMicrophoneId(microphoneId: string): IAudioConfigBuilder;
2712
+ setBitrate(min: number, max: number, tag: string): IAudioConfigBuilder;
2713
+ /**
2714
+ * 构建配置
2715
+ */
2716
+ build(): IAudioConfig;
2717
+ }
2718
+ interface ICallOpts {
2719
+ /**
2720
+ * 被叫人员 UserId 列表,单聊时需要验证长度为 1
2721
+ */
2722
+ userIds: string[];
2723
+ /**
2724
+ * 通话媒体类型:音频 or 音视频
2725
+ */
2726
+ mediaType: RCCallPlusMediaType;
2727
+ /**
2728
+ * 单人呼叫 or 多人呼叫
2729
+ */
2730
+ type: RCCallPlusType;
2731
+ }
2732
+ interface RCCallPlusPacketLossStats {
2733
+ /**
2734
+ * 丢包率:取值范围是 0-100
2735
+ */
2736
+ packetLostRate: number;
2737
+ /**
2738
+ * 码率大小,单位是 kbps
2739
+ */
2740
+ bitRate: number;
2741
+ }
2742
+ /**
2743
+ * RTC 音视频质量数据、音量上报接口
2744
+ */
2745
+ interface IStatusReportListener {
2746
+ /**
2747
+ * 发送丢包率信息回调,每秒回调一次
2748
+ * @param packetLostRate 丢包率,0-100
2749
+ * @param delay 发送端的网络延迟,单位毫秒
2750
+ */
2751
+ onSendPacketLoss(packetLostRate: number, delay: number): void;
2752
+ /**
2753
+ * 接收丢包率信息回调,每秒回调一次
2754
+ * @param data key: userId, value: 接收丢包统计数据
2755
+ * @param data[userId].packetLostRate 丢包率:取值范围是 0-100
2756
+ * @param data[userId].bitRate 码率大小,单位是 kbps
2757
+ */
2758
+ onReceivePacketLoss(data: {
2759
+ [userId: string]: RCCallPlusPacketLossStats;
2760
+ }): void;
2761
+ }
2762
+ /**
2763
+ * 人员及人员状态
2764
+ */
2765
+ interface RCCallPlusCallUser {
2766
+ userId: string;
2767
+ state: RCCallPlusSessionUserState;
2768
+ }
2769
+
2770
+ declare class RCAudioConfigBuilder {
2771
+ private _logger;
2772
+ private _audioConfig;
2773
+ constructor(_logger: BasicLogger);
2774
+ /**
2775
+ * 指定默认麦克风
2776
+ * microphoneId 取值可参考 https://doc.rongcloud.cn/rtc/Web/5.X/device#%E8%8E%B7%E5%8F%96%E9%BA%A6%E5%85%8B%E9%A3%8E%E8%AE%BE%E5%A4%87%E5%88%97%E8%A1%A8
2777
+ */
2778
+ setDefaultMicrophoneId(microphoneId: string): RCAudioConfigBuilder;
2779
+ /**
2780
+ * 设置最小、最大码率
2781
+ * 单位 kbps
2782
+ * 不设置时,取动态码率计算结果
2783
+ * @param min 最小码率
2784
+ * @param max 最大码率
2785
+ */
2786
+ setBitrate(min: number, max: number): RCAudioConfigBuilder;
2787
+ /**
2788
+ * 设置音频采样率,不建议自行修改
2789
+ * @param sampleRate 采样率
2790
+ */
2791
+ setSampleRate(sampleRate: number): RCAudioConfigBuilder;
2792
+ /** 构建配置 */
2793
+ build(): IAudioConfig;
2794
+ }
2795
+
2796
+ declare class RCVideoConfigBuilder {
2797
+ private _logger;
2798
+ private _videoConfig;
2799
+ constructor(_logger: BasicLogger);
2800
+ /** 针对不同视频流分别配置帧率 */
2801
+ setFrameRate(fps: RCFrameRate): RCVideoConfigBuilder;
2802
+ /** 针对不同视频流分别配置分辨率 */
2803
+ setVideoResolution(resolution: RCResolution): RCVideoConfigBuilder;
2804
+ /**
2805
+ * 设置默认 cameraId
2806
+ * cameraId 取值可参考 https://doc.rongcloud.cn/rtc/Web/5.X/device#%E8%8E%B7%E5%8F%96%E6%91%84%E5%83%8F%E5%A4%B4%E8%AE%BE%E5%A4%87%E5%88%97%E8%A1%A8
2807
+ * 作用于预览功能、呼叫取流等
2808
+ */
2809
+ setDefaultCameraId(cameraId: string): RCVideoConfigBuilder;
2810
+ /**
2811
+ * 设置最小、最大码率
2812
+ * 单位 kbps
2813
+ * 不设置时,取动态码率计算结果
2814
+ * @param min 最小码率
2815
+ * @param max 最大码率
2816
+ */
2817
+ setBitrate(min: number, max: number): RCVideoConfigBuilder;
2818
+ build(): IVideoConfig;
2819
+ }
2820
+
2821
+ declare class RCCallPlusClient {
2822
+ private readonly _context;
2823
+ private readonly _logger;
2824
+ private readonly _runtime;
2825
+ private readonly _initOpts;
2826
+ /**
2827
+ * 摄像头采集配置
2828
+ */
2829
+ private _videoConfig;
2830
+ /**
2831
+ * 麦克风采集配置
2832
+ */
2833
+ private _audioConfig;
2834
+ /**
2835
+ * 统计埋点类
2836
+ */
2837
+ private _callPlusStatistics;
2838
+ /**
2839
+ * client callId
2840
+ */
2841
+ private _clientCallId;
2842
+ /**
2843
+ * 是否为主动挂断
2844
+ */
2845
+ private _isLaunchHangup;
2846
+ /**
2847
+ * 呼叫过程中挂断
2848
+ */
2849
+ private _needHangupCallId;
2850
+ private _callEngine;
2851
+ private _rtcModule;
2852
+ /**
2853
+ * 上报应用层事件模块
2854
+ */
2855
+ _reportAppEventModule: RCCallPlusReportModule;
2856
+ constructor(_context: PluginContext, _logger: BasicLogger, _runtime: IRuntime, _initOpts: ICallPlusInitOpts);
2857
+ /**
2858
+ * 加房间、发布、订阅失败时需结束通话,并上报原因
2859
+ */
2860
+ private _rtcProcessFailHandle;
2861
+ /**
2862
+ * rtc peerConnection 异常断开时需结束通话,并上报原因
2863
+ */
2864
+ private _peerConnectionAbnormalClose;
2865
+ /**
2866
+ * 本端加入 RTC 房间,需更新本人 ONCALL 状态,重新校时
2867
+ */
2868
+ private _selfJoinedHandle;
2869
+ /**
2870
+ * 远端人员加入房间,更新远端人员状态和通话状态为 ONCALL
2871
+ */
2872
+ private _otherJoinedHandle;
2873
+ /**
2874
+ * 收到首帧上报给业务层
2875
+ */
2876
+ private _receiveFirstFrameHandle;
2877
+ /**
2878
+ * 被踢出房间时,需结束通话
2879
+ */
2880
+ private _kickoffHandle;
2881
+ /**
2882
+ * 远端资源音视频状态变化,需更新 session 中人员的设备状态
2883
+ */
2884
+ private _receiveDeviceEnableChangeHandle;
2885
+ /**
2886
+ * 通话挂断时,需清空内存,离开房间
2887
+ */
2888
+ private _sessionCloseHandle;
2889
+ /**
2890
+ * 注册应用层事件
2891
+ * 包含“收到呼叫、通话结束、通话人员状态变更、通话类型变更”等事件
2892
+ * ICallPlusEventListener 对象请参考 apiDoc
2893
+ */
2894
+ setCallPlusEventListener(listener: ICallPlusEventListener): void;
2895
+ /**
2896
+ * 注册音视频上下行丢包数据监听
2897
+ * 每秒上报一次
2898
+ * @param listener 类型为 IStatusReportListener,详细定义可参考 apiDoc
2899
+ * @param listener.onSendPacketLoss 发送丢包率信息回调
2900
+ * @param listener.onReceivePacketLoss 接收丢包率信息回调
2901
+ */
2902
+ setStatusReportListener(listener: IStatusReportListener): void;
2903
+ /**
2904
+ * 设置要观看人员(包括自己和对方)的媒体播放器
2905
+ * @param list 为一个列表,可传入多人的媒体播放器
2906
+ * @param item.userId 用户 id
2907
+ * @param item.videoElement 一个 video 元素,用于播放视频,需要挂载在业务层页面上
2908
+ * @param item.isTiny 是否观看别人的小流,小窗口时可以配置为 true,可节省带宽,userId 为远端用户时有效
2909
+ * @returns code 返回是否设置成功
2910
+ */
2911
+ setVideoView(list: {
2912
+ userId: string;
2913
+ videoElement: HTMLVideoElement;
2914
+ isTiny?: boolean;
2915
+ }[]): {
2916
+ code: number;
2917
+ };
2918
+ /**
2919
+ * 删除某个人的媒体播放器
2920
+ * 不观看某个人的视频时,业务层可以直接移除对应的 video 标签,
2921
+ * 调 removeVideoView 方法,SDK 内部会停止接收对方的媒体传输
2922
+ * @param userIds 用户 id 列表
2923
+ * @returns code 返回是否删除成功
2924
+ */
2925
+ removeVideoView(userIds: string[]): {
2926
+ code: number;
2927
+ };
2928
+ /**
2929
+ * 播放指定人员的音视频媒体
2930
+ * 播放某个人的视频前,请确保已经调用 `setVideoView` 方法为其设置视频视图
2931
+ * @param userId 指定要查看某个人的媒体资源
2932
+ * @param mediaType 指定播放音频还是视频
2933
+ * @returns 返回是否播放成功
2934
+ */
2935
+ playMedia(userId: string, mediaType: RCCallPlusMediaType): Promise<{
2936
+ code: number;
2937
+ }>;
2938
+ /**
2939
+ * 创建视频配置构建器
2940
+ * @returns RCVideoConfigBuilder 用于构造视频采集时的配置项,可以设置摄像头设备 id、帧率、分辨率等,
2941
+ * 设置完需调 build 方法,最终在 setVideoConfig 后生效
2942
+ */
2943
+ createVideoConfigBuilder(): RCVideoConfigBuilder;
2944
+ /**
2945
+ * 设置视频配置
2946
+ * 下次采集时生效,如切换摄像头、重新建立通话
2947
+ */
2948
+ setVideoConfig(cfg: IVideoConfig): {
2949
+ code: number;
2950
+ };
2951
+ /**
2952
+ * 创建音频配置构建器
2953
+ * @returns RCAudioConfigBuilder 用于构造音频采集时的配置项,可以设置麦克风设备 id
2954
+ * 设置完需调 build 方法,最终在 setAudioConfig 后生效
2955
+ */
2956
+ createAudioConfigBuilder(): RCAudioConfigBuilder;
2957
+ /**
2958
+ * 设置音频配置
2959
+ * 下次采集时生效,如重新建立通话
2960
+ */
2961
+ setAudioConfig(cfg: IAudioConfig): {
2962
+ code: number;
2963
+ };
2964
+ /**
2965
+ * 发起呼叫
2966
+ * @param userIds 被叫人员 userId 列表,单人呼叫仅需在数组中放置对方一人的 userId
2967
+ * @param type 单人呼叫 or 多人呼叫
2968
+ * @param mediaType 通话媒体类型: 音频 or 音视频
2969
+ * @returns callId 呼叫成功后,产生的会话 id
2970
+ */
2971
+ startCall(userIds: string[], callType?: RCCallPlusType, mediaType?: RCCallPlusMediaType): Promise<{
2972
+ code: number;
2973
+ callId?: string;
2974
+ }>;
2975
+ /**
2976
+ * 直接加入进行中的群组通话
2977
+ * @param callId 通话 id
2978
+ */
2979
+ joinMultiCall(callId: string): Promise<{
2980
+ code: number;
2981
+ }>;
2982
+ /**
2983
+ * 通话中邀请他人
2984
+ * 单人通话中邀请他人会引发通话类型变更
2985
+ * @param userIds 被邀请人列表
2986
+ * @returns busyUsers 返回忙线人员列表
2987
+ */
2988
+ invite(userIds: string[]): Promise<{
2989
+ code: number;
2990
+ busyUsers?: RCCallPlusCallUser[];
2991
+ }>;
2992
+ /**
2993
+ * 接听通话
2994
+ * @param callId 通话 id
2995
+ */
2996
+ accept(callId: string): Promise<{
2997
+ code: number;
2998
+ }>;
2999
+ private __innerHangup;
3000
+ /**
3001
+ * 挂断通话
3002
+ * @param callId 为可选参数,不传时,挂断正在进行的主 session,传入时可指定挂断主通话或暂未建立连接的通话
3003
+ * 暂未建立连接的通话:指已在通话中时,收到呼叫但暂未接听的通话
3004
+ */
3005
+ hangup(callId?: string): Promise<{
3006
+ code: number;
3007
+ }>;
3008
+ /**
3009
+ * 通话中发起媒体类型变更请求
3010
+ * @param mediaType 媒体类型
3011
+ * @returns transactionId 客户端和服务端交互的事务 id,在取消或应答媒体类型切换时传入
3012
+ */
3013
+ requestChangeMediaType(mediaType: RCCallPlusMediaType): Promise<{
3014
+ code: number;
3015
+ transactionId?: string;
3016
+ }>;
3017
+ /**
3018
+ * 取消切换媒体类型变更请求
3019
+ * @param transactionId 客户端和服务端交互的事务 id,为发起媒体类型变更请求返回的 transactionId
3020
+ */
3021
+ cancelChangeMediaType(transactionId: string): Promise<{
3022
+ code: number;
3023
+ }>;
3024
+ /**
3025
+ * 媒体类型变更应答
3026
+ * @param transactionId 客户端和服务端交互的事务 id,为 onReceivedChangeToVideo 监听收到 transactionId 参数值
3027
+ */
3028
+ replyChangeMediaType(transactionId: string, isAgree: boolean): Promise<{
3029
+ code: number;
3030
+ }>;
3031
+ /**
3032
+ * 获取当前进行中的通话
3033
+ * @returns RCCallPlusSession 对象或 null 为当前正在进行的通话对象
3034
+ */
3035
+ getCurrentCallSession(): RCCallPlusSession | null;
3036
+ /**
3037
+ * 从服务器获取未结束的通话记录
3038
+ * @returns records 一组未结束的通话记录
3039
+ */
3040
+ getAvailableCallRecordsFromServer(): Promise<{
3041
+ code: number;
3042
+ records?: IRCCallPlusCallRecord[];
3043
+ }>;
3044
+ /**
3045
+ * 分页查找当前用户的全部通话记录
3046
+ * @param startTimestamp 起始时间戳,返回大于此时间戳的通话记录
3047
+ * @param count 每次获取的数量
3048
+ * @returns result.hasMore 是否有更多通话记录
3049
+ * @returns result.list 通话记录列表,类型为 IRCCallPlusCallRecord[],可通过 apiDoc 查看具体包含字段
3050
+ * @returns result.maxTime 列表中最大时间戳,如果 hasMore 为 true,继续获取时,传入此时间戳
3051
+ */
3052
+ getCallRecords(startTimestamp: number, count: number): Promise<{
3053
+ code: number;
3054
+ result?: IRCCallPlusGetCallRecordRes;
3055
+ }>;
3056
+ /**
3057
+ * 根据 callId 集合批量删除通话记录
3058
+ * @param callIds callId 列表
3059
+ */
3060
+ deleteCallRecordsFromServer(callIds: string[]): Promise<{
3061
+ code: number;
3062
+ }>;
3063
+ /**
3064
+ * 清空所有通话记录
3065
+ */
3066
+ deleteAllCallRecordsFromServer(): Promise<{
3067
+ code: number;
3068
+ }>;
3069
+ /**
3070
+ * 开启摄像头
3071
+ * @description 通话过程中打开摄像头,如果扩散资源失败,即对方没收到本端打开摄像头的通知时,此次行为失败
3072
+ * @returns track 摄像头视频资源
3073
+ */
3074
+ startCamera(): Promise<{
3075
+ code: number;
3076
+ }>;
3077
+ /**
3078
+ * 关闭摄像头
3079
+ */
3080
+ stopCamera(): Promise<{
3081
+ code: number;
3082
+ }>;
3083
+ /**
3084
+ * 切换摄像头
3085
+ * 切换成功后 `ICallPlusEventListener` 监听器的 `onUserMediaAvailable` 中会收到新切换的摄像头资源可播放,此时调用 `callPlusClient.playMedia()` 可显示新摄像头的画面
3086
+ * @param cameraId 浏览器中取得的摄像头设备 id,可调 plugin-rtc 的 getCameras 方法取得
3087
+ * @description 通话前和通话中都可调用
3088
+ */
3089
+ switchCamera(cameraId: string): Promise<{
3090
+ code: number;
3091
+ }>;
3092
+ /**
3093
+ * 开启麦克风
3094
+ * @description 通话过程中打开麦克风,如果扩散资源失败,即对方没收到本端打开麦克风的通知时,此次行为失败
3095
+ */
3096
+ startMicrophone(): Promise<{
3097
+ code: number;
3098
+ }>;
3099
+ /**
3100
+ * 关闭麦克风
3101
+ * @description 通话过程中关闭麦克风,如果扩散资源失败,即对方没收到本端关闭麦克风的通知时,此次行为失败
3102
+ */
3103
+ stopMicrophone(): Promise<{
3104
+ code: number;
3105
+ }>;
3106
+ /**
3107
+ * 麦克风是否开启
3108
+ */
3109
+ isMicrophoneEnabled(): boolean;
3110
+ /**
3111
+ * 设置所有远端音频流是否可用
3112
+ * @param enable 为 true 时,静音所有远端音频流;为 false 时,启用所有远端音频流
3113
+ */
3114
+ setAllRemoteAudioEnable(enable: boolean): Promise<{
3115
+ code: number;
3116
+ }>;
3117
+ /**
3118
+ * 获取 SDK 版本信息
3119
+ * @returns SDK 版本号
3120
+ */
3121
+ getVersion(): string;
3122
+ /**
3123
+ * 获取摄像头列表
3124
+ */
3125
+ getCameras(): Promise<MediaDeviceInfo[]>;
3126
+ /**
3127
+ * 获取麦克风列表
3128
+ */
3129
+ getMicrophones(): Promise<MediaDeviceInfo[]>;
3130
+ }
3131
+
3132
+ declare const installer: IPluginGenerator<RCCallPlusClient, ICallPlusInitOpts>;
3133
+
3134
+ export { IAudioConfig, IAudioConfigBuilder, ICallOpts, ICallPlusEventListener, ICallPlusInitOpts, IRCCallPlusCallRecord, IRCCallPlusGetCallRecordRes, IStatusReportListener, IVideoConfig, IVideoConfigBuilder, RCAudioConfigBuilder, RCCallPlusCallState, RCCallPlusCallUser, RCCallPlusClient, RCCallPlusCode, RCCallPlusMediaType, RCCallPlusMediaTypeChangeResult, RCCallPlusPacketLossStats, RCCallPlusReason, RCCallPlusSession, RCCallPlusSessionUserState, RCCallPlusType, RCVideoConfigBuilder, installer };