@ylink-sdk/meeting 0.2.0-beta.9 → 0.2.2

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,2481 @@
1
+ /// <reference types="node" />
2
+
3
+ import { Canceler } from '@ylink-sdk/shared';
4
+ import { Emitter } from '@ylink-sdk/shared';
5
+ import { EventType } from '@ylink-sdk/shared';
6
+ import { ICancelToken } from '@ylink-sdk/shared';
7
+ import { Request as Request_2 } from '@ylink-sdk/shared';
8
+ import { RequestError } from '@ylink-sdk/shared';
9
+
10
+ declare type AddVirtualClassParams = VirtualClassParams & {
11
+ vmrId: string;
12
+ type: number;
13
+ };
14
+
15
+ export declare interface audioStats {
16
+ /**
17
+ * 编解码器
18
+ */
19
+ codec: string;
20
+ /**
21
+ * bps 带宽
22
+ */
23
+ bandwidth: number;
24
+ /**
25
+ * ms 环回延时
26
+ */
27
+ rtt: number;
28
+ /**
29
+ * ms 抖动
30
+ */
31
+ jitter: number;
32
+ /**
33
+ * % 丢包率
34
+ */
35
+ lossrate: number;
36
+ /**
37
+ * 个 丢包数
38
+ */
39
+ packetlost: number;
40
+ }
41
+
42
+ declare interface BarrageRecord {
43
+ id: string;
44
+ content: string;
45
+ time: number;
46
+ durationType: string;
47
+ duration: number;
48
+ }
49
+
50
+ /**
51
+ * 呼叫记录用户
52
+ */
53
+ export declare interface callRecordUser {
54
+ type: InviteType;
55
+ contact: string;
56
+ displayName: string;
57
+ displayNamePinyin: string;
58
+ role: ROLE;
59
+ account: number;
60
+ groupIDs: number[];
61
+ zone: string;
62
+ inviteState: 'fail' | 'inviting' | 'success';
63
+ inviteTime: number;
64
+ inviteTransID: string;
65
+ inviterDisplayName: string;
66
+ resultInfo?: {
67
+ bizCode?: number;
68
+ reasonCode?: number;
69
+ message?: string;
70
+ };
71
+ }
72
+
73
+ export declare class Chat extends Module<ChatData, Events_9> {
74
+ constructor(ctx: Context);
75
+ _topic(): string;
76
+ _bindOn(): void;
77
+ /**
78
+ * 发送聊天信息
79
+ * @params
80
+ * @returns
81
+ */
82
+ msg(params: {
83
+ msgID: string;
84
+ contentType: string;
85
+ content: string;
86
+ msgType?: number;
87
+ receiver?: {
88
+ userID: number;
89
+ };
90
+ timestamp?: number;
91
+ sender?: {
92
+ userID?: number;
93
+ displayName?: string;
94
+ };
95
+ }): Promise<any>;
96
+ /**
97
+ * 查询聊天历史信息
98
+ * @returns
99
+ */
100
+ historyMsg(params: {
101
+ limit: number;
102
+ }): Promise<any>;
103
+ }
104
+
105
+ export declare type ChatData = object;
106
+
107
+ export declare interface ChatMsgPayload {
108
+ body: Msg;
109
+ state: PollingPayloadState;
110
+ }
111
+
112
+ declare interface Config {
113
+ /**
114
+ * 服务器地址
115
+ * @example https://meetings.ylyun.com/control
116
+ */
117
+ baseURL: string;
118
+ /**
119
+ * 需加载的模块
120
+ * @example
121
+ * ```
122
+ * import { createMeeting, Users, Setting } from '@ylink-sdk/meeting'
123
+ * const meeting = createMeeting({
124
+ * ...
125
+ * modules: [Users, Setting]
126
+ * })
127
+ * ```
128
+ */
129
+ modules: any[];
130
+ /**
131
+ * 当前设备ID
132
+ */
133
+ clientID?: string;
134
+ /**
135
+ * 消息推送采用子线程模式,避免推送过快,抢占请求资源
136
+ * @example
137
+ * ```
138
+ * // vite框架示例
139
+ * import { createMeeting } from '@ylink-sdk/meeting'
140
+ * import PollingWorker from '@ylink-sdk/meeting/dist/worker/polling.worker.prod.js?worker'
141
+ * const meeting = createMeeting({
142
+ * ...
143
+ * worker: new PollingWorker()
144
+ * })
145
+ * ```
146
+ */
147
+ worker?: Worker;
148
+ /**
149
+ * 创建的meeting实例为单例
150
+ */
151
+ singleton?: boolean;
152
+ }
153
+
154
+ /**
155
+ * 全局上下文
156
+ */
157
+ export declare interface Context {
158
+ /**
159
+ * 全局配置
160
+ */
161
+ config: {
162
+ /**
163
+ * 服务器地址
164
+ * @example https://meetings.ylyun.com/control
165
+ */
166
+ baseURL: string;
167
+ /**
168
+ * 传入的依赖模块
169
+ */
170
+ modules: Array<any>;
171
+ /**
172
+ * 是否采用单例模式
173
+ */
174
+ singleton: boolean;
175
+ /**
176
+ * 请求配置
177
+ */
178
+ request: {
179
+ /**
180
+ * 取消请求
181
+ * @summary SDK内部默认对polling和keepalive接口进行配置
182
+ */
183
+ cancelToken: {
184
+ token: ICancelToken;
185
+ cancel: Canceler;
186
+ };
187
+ /**
188
+ * Api接口前缀
189
+ */
190
+ prefix: {
191
+ /**
192
+ * 会控
193
+ * /meeting-ctrl/api/v1/
194
+ * @default /meeting-ctrl/api/v1/
195
+ */
196
+ ctrl: string;
197
+ /**
198
+ * 会议管理
199
+ * /conference-manager/api/v1/
200
+ * @default /conference-manager/api/v1/
201
+ */
202
+ conference: string;
203
+ /**
204
+ * 用户管理
205
+ * /user-manager/api/v1/
206
+ * @default /user-manager/api/v1/
207
+ */
208
+ user: string;
209
+ /**
210
+ * 投票
211
+ * /vote/api/v1/
212
+ * @default /vote/api/v1/
213
+ */
214
+ vote: string;
215
+ [prop: string]: string;
216
+ };
217
+ /**
218
+ * 设备ID
219
+ */
220
+ clientID: string;
221
+ /**
222
+ * 会议归属地
223
+ */
224
+ location: string;
225
+ /**
226
+ * 会议ID
227
+ */
228
+ meetingID: string;
229
+ /**
230
+ * 会控token
231
+ */
232
+ ctrlID: string;
233
+ /**
234
+ * 当前会话
235
+ */
236
+ sessionID: string;
237
+ /**
238
+ * 当前用户ID
239
+ */
240
+ userID: number;
241
+ /**
242
+ * 投票服务唯一标识
243
+ */
244
+ voteTk: string;
245
+ };
246
+ };
247
+ /**
248
+ * 消息推送子线程
249
+ */
250
+ worker?: Worker;
251
+ /**
252
+ * 事件通知
253
+ */
254
+ emitter: Emitter<Events>;
255
+ /**
256
+ * 请求能力
257
+ */
258
+ request: Request_2;
259
+ /**
260
+ * 业务模块
261
+ */
262
+ modules: Record<string, any>;
263
+ /**
264
+ * 会议状态
265
+ */
266
+ state: STATE;
267
+ /**
268
+ * 轮询定时器状态
269
+ */
270
+ status: {
271
+ /**
272
+ * 消息推送-长轮询状态
273
+ */
274
+ polling: {
275
+ /**
276
+ * 是否运行中
277
+ */
278
+ running: boolean;
279
+ /**
280
+ * 重试次数
281
+ */
282
+ attempts: number;
283
+ /**
284
+ * 定时器
285
+ */
286
+ timer?: NodeJS.Timeout | null;
287
+ };
288
+ /**
289
+ * 保活轮询状态
290
+ */
291
+ keepalive: {
292
+ /**
293
+ * 是否运行中
294
+ */
295
+ running: boolean;
296
+ /**
297
+ * 重试次数
298
+ */
299
+ attempts: number;
300
+ /**
301
+ * 定时器
302
+ */
303
+ timer?: NodeJS.Timeout | null;
304
+ /**
305
+ * 轮询间隔时间,正常为20S
306
+ */
307
+ interval: number;
308
+ };
309
+ };
310
+ cleanup: (reason?: Reason) => void;
311
+ }
312
+
313
+ /**
314
+ * 创建SDK会议实例
315
+ * @param config
316
+ * @returns YlinkSDKMeeting
317
+ */
318
+ export declare function createMeeting(config: Config): YlinkSDKMeeting;
319
+
320
+ declare type EditVirtualClassParams = VirtualClassParams & {
321
+ templateId: string;
322
+ };
323
+
324
+ /**
325
+ * 终端类型
326
+ */
327
+ export declare enum ENDPOINT_TYPE {
328
+ /**
329
+ * webRTC
330
+ */
331
+ WEBAPP = "webApp",
332
+ /**
333
+ * web会控
334
+ */
335
+ WEBCTRL = "webCtrl",
336
+ /**
337
+ * 微信小程序
338
+ */
339
+ WECHATMP = "weChatMP",
340
+ /**
341
+ * 监视者
342
+ */
343
+ SUPERVISION = "supervision",
344
+ /**
345
+ * 虚拟教室终端
346
+ */
347
+ BIGSCREEN = "bigScreen",
348
+ /**
349
+ * 桌面客户端
350
+ */
351
+ DESKTOP = "desktop",
352
+ /**
353
+ * 移动客户端
354
+ */
355
+ MOBILE = "mobile",
356
+ /**
357
+ * 亿联硬件终端
358
+ */
359
+ VCS = "vcs",
360
+ /**
361
+ * SIP终端
362
+ */
363
+ SIP = "sip",
364
+ /**
365
+ * 323终端
366
+ */
367
+ H323 = "h323",
368
+ /**
369
+ * PSTN电话
370
+ */
371
+ PSTN = "pstn",
372
+ /**
373
+ * 多流终端 - 从流
374
+ */
375
+ MULTI_STREAM = "multiStream"
376
+ }
377
+
378
+ /**
379
+ * 全局事件
380
+ */
381
+ export declare enum EVENT {
382
+ /**
383
+ * 请求异常
384
+ */
385
+ REQUEST_ERROR = "requestError",
386
+ /**
387
+ * 会议状态
388
+ */
389
+ STATE = "state",
390
+ /**
391
+ * 入会失败
392
+ */
393
+ FAILED = "failed"
394
+ }
395
+
396
+ /**
397
+ * emitter 事件
398
+ */
399
+ declare type Events = {
400
+ [EVENT.STATE]: {
401
+ state: STATE;
402
+ reason?: Reason;
403
+ };
404
+ [EVENT.REQUEST_ERROR]: RequestError;
405
+ [EVENT.FAILED]: Reason;
406
+ [MeEvent.INIT]: MeData;
407
+ [MeEvent.UPDATE]: any;
408
+ [MeEvent.ROLECHANGE]: ROLE;
409
+ [MeEvent.LOBBYCHANGE]: boolean;
410
+ pollError: {
411
+ message: string;
412
+ };
413
+ keepaliveError: {
414
+ message: string;
415
+ };
416
+ me: any;
417
+ setUserVideo: any;
418
+ setUserAudio: any;
419
+ meetingState: any;
420
+ recording: any;
421
+ meetingSetting: any;
422
+ spotlightVideo: any;
423
+ interactiveUsers: any;
424
+ lobbyUsers: any;
425
+ broadcastUsers: any;
426
+ advCtrlUsers: any;
427
+ hostLayout: any;
428
+ attendeeLayout: any;
429
+ audienceLayout: any;
430
+ meetingView: any;
431
+ personalView: any;
432
+ vote: any;
433
+ meetingBarrage: any;
434
+ meetingInfo: any;
435
+ callRecord: any;
436
+ participantCount: any;
437
+ liveStream: any;
438
+ chatMsg: any;
439
+ transcriptMsg: any;
440
+ qa: any;
441
+ queryCallStats: {
442
+ body: {
443
+ interval: number;
444
+ count: number;
445
+ };
446
+ };
447
+ interpretation: any;
448
+ };
449
+
450
+ declare type Events_10 = {
451
+ hostLayoutChange: ViewData['hostLayout'];
452
+ attendeeLayoutChange: ViewData['attendeeLayout'];
453
+ audienceLayoutChange: ViewData['audienceLayout'];
454
+ personalLayoutsChange: ViewData['personalLayouts'];
455
+ };
456
+
457
+ declare type Events_11 = {
458
+ questionChange: {
459
+ questions: Map<string, Question>;
460
+ };
461
+ questionDelete: {
462
+ question: Question;
463
+ };
464
+ questionUpdate: {
465
+ question: Question;
466
+ };
467
+ questionAdd: {
468
+ question: Question;
469
+ selfSent: boolean;
470
+ };
471
+ };
472
+
473
+ declare type Events_12 = {
474
+ transcriptMsg: Transcription;
475
+ };
476
+
477
+ declare type Events_13 = {
478
+ interpretationChange: InterpretationData;
479
+ };
480
+
481
+ declare type Events_14 = Record<EventType, unknown>;
482
+
483
+ declare type Events_15 = Record<EventType, any>;
484
+
485
+ declare type Events_16 = Record<EventType, any>;
486
+
487
+ declare type Events_2 = {
488
+ [MeEvent.INIT]: MeData;
489
+ [MeEvent.UPDATE]: any;
490
+ [MeEvent.UPDATE_USER_STATE]: {
491
+ data: MeData;
492
+ event?: 'roleChange' | 'inLobbyChange';
493
+ };
494
+ [MeEvent.ROLECHANGE]: ROLE;
495
+ [MeEvent.AUDIOCHANGE]: MeMedia;
496
+ [MeEvent.HANDUPCHANGE]: boolean;
497
+ [MeEvent.SETAUDIO]: SetMedia;
498
+ [MeEvent.VIDEOCHANGE]: MeMedia;
499
+ [MeEvent.SETVIDEO]: SetMedia;
500
+ [MeEvent.SHARECHANGE]: MeMedia;
501
+ [MeEvent.DISPLAYNAMECHANGE]: string;
502
+ [MeEvent.SPOTLIGHTVIDEOCHANGE]: boolean;
503
+ [MeEvent.LOBBYCHANGE]: boolean;
504
+ [MeEvent.BARRAGECHANGE]: MeData['barrage'] | null;
505
+ [MeEvent.LEAVE]: any;
506
+ };
507
+
508
+ declare type Events_3 = Record<EventType, any>;
509
+
510
+ declare type Events_4 = {
511
+ interactiveUsersChange: {
512
+ users: User[];
513
+ isFull: boolean;
514
+ };
515
+ lobbyUsersChange: {
516
+ users: User[];
517
+ isFull: boolean;
518
+ };
519
+ broadcastUsersChange: {
520
+ users: User[];
521
+ isFull: boolean;
522
+ };
523
+ advCtrlUsersChange: {
524
+ users: User[];
525
+ isFull: boolean;
526
+ };
527
+ interactiveUsersDelete: {
528
+ user: User;
529
+ resultInfo: User['resultInfo'];
530
+ };
531
+ lobbyUsersDelete: {
532
+ user: User;
533
+ resultInfo: User['resultInfo'];
534
+ };
535
+ broadcastUsersDelete: {
536
+ user: User;
537
+ resultInfo: User['resultInfo'];
538
+ };
539
+ advCtrlUsersDelete: {
540
+ user: User;
541
+ resultInfo: User['resultInfo'];
542
+ };
543
+ interactiveUsersUpdate: {
544
+ user: User;
545
+ };
546
+ lobbyUsersUpdate: {
547
+ user: User;
548
+ };
549
+ broadcastUsersUpdate: {
550
+ user: User;
551
+ };
552
+ advCtrlUsersUpdate: {
553
+ user: User;
554
+ };
555
+ interactiveUsersAdd: {
556
+ user: User;
557
+ resultInfo: User['resultInfo'];
558
+ };
559
+ lobbyUsersAdd: {
560
+ user: User;
561
+ resultInfo: User['resultInfo'];
562
+ };
563
+ broadcastUsersAdd: {
564
+ user: User;
565
+ resultInfo: User['resultInfo'];
566
+ };
567
+ advCtrlUsersAdd: {
568
+ user: User;
569
+ resultInfo: User['resultInfo'];
570
+ };
571
+ };
572
+
573
+ declare type Events_5 = {
574
+ userIDsChange: number[];
575
+ };
576
+
577
+ declare type Events_6 = {
578
+ callRecordUsersChange: callRecordUser[];
579
+ };
580
+
581
+ declare type Events_7 = {
582
+ voteChange: {
583
+ vote: VoteData['vote'];
584
+ changeData: VoteBody;
585
+ };
586
+ };
587
+
588
+ declare type Events_8 = {
589
+ barrageRecordChange: BarrageRecord[];
590
+ };
591
+
592
+ declare type Events_9 = {
593
+ chatMsg: Msg;
594
+ };
595
+
596
+ export declare class Info extends Module<InfoData, Events_3> {
597
+ constructor(ctx: Context);
598
+ _topic(): string;
599
+ _bindOn(): void;
600
+ /**
601
+ * 会议标题修改
602
+ * @params 设置参数
603
+ * @returns 返回的数据
604
+ */
605
+ subject(params: {
606
+ subject: string;
607
+ }): Promise<any>;
608
+ /**
609
+ * 关闭会议准备模式
610
+ * @returns 返回的数据
611
+ */
612
+ practiceSession(): Promise<any>;
613
+ /**
614
+ * 获取分享信息
615
+ * @param params
616
+ * @returns
617
+ */
618
+ shareInfo(params: {
619
+ /**
620
+ * 会议号码
621
+ */
622
+ meetingNum: string;
623
+ /**
624
+ * 需要预约成员信息带true
625
+ */
626
+ participant?: boolean;
627
+ }): Promise<any>;
628
+ /**
629
+ * 获取会议静态数据
630
+ * @param params
631
+ * @returns
632
+ */
633
+ meetings(params: {
634
+ /**
635
+ * 会议号
636
+ */
637
+ meetingNum: string;
638
+ /**
639
+ * 调取credential接口获取的临时秘钥
640
+ */
641
+ credential: string;
642
+ /**
643
+ * 需要预约成员信息带true
644
+ */
645
+ participant?: boolean;
646
+ /**
647
+ * 需要AVC配置信息带true
648
+ */
649
+ avcConfig?: boolean;
650
+ }): Promise<any>;
651
+ /**
652
+ * 会议邀请邮件
653
+ * @param params
654
+ * @returns
655
+ */
656
+ mailTemplate(params: {
657
+ language: string;
658
+ }): Promise<any>;
659
+ }
660
+
661
+ export declare interface InfoData {
662
+ meetingNum: string;
663
+ meetingID: string;
664
+ allowJoinBeforeHost: boolean;
665
+ askToUnmuteEnabled: boolean;
666
+ consentToRecord: boolean;
667
+ createType: 'vmr' | 'scheduled' | 'meetNow';
668
+ eid: string;
669
+ meetingType: 'meeting' | 'webinar';
670
+ organizer: {
671
+ displayName: string;
672
+ subjectID: string;
673
+ };
674
+ partySubType: number;
675
+ pwd: string;
676
+ seq: number;
677
+ sequence: number;
678
+ startTime: number;
679
+ subject: string;
680
+ speakerShowSelf: boolean;
681
+ asrServiceAvailable: boolean;
682
+ recordUserEnabled: boolean;
683
+ premiseRecordEnabled?: boolean;
684
+ planID?: string;
685
+ vmrID?: string;
686
+ allowLocalRecord?: boolean;
687
+ youtubeLiveStreamDisabled?: boolean;
688
+ allowLiveStream?: boolean;
689
+ isVirtualClassroom?: boolean;
690
+ liveCaptionEnabled?: boolean;
691
+ practiceSession?: boolean;
692
+ audienceHideNonVideoEnabled?: boolean;
693
+ webinarSurveyLink?: string;
694
+ interpretationEnabled?: boolean;
695
+ participantCount: {
696
+ hostAttendee: number;
697
+ audience: number;
698
+ };
699
+ multiStreamEnabled?: boolean;
700
+ }
701
+
702
+ export declare class Interpretation extends Module<InterpretationData, Events_13> {
703
+ constructor(ctx: Context);
704
+ _topic(): string;
705
+ _bindOn(): void;
706
+ /**
707
+ * 开启或更新传译
708
+ * @param params
709
+ * @returns
710
+ */
711
+ interpretationStart(params: {
712
+ interpreters: InterpretationData['interpreters'];
713
+ }): Promise<any>;
714
+ /**
715
+ * 结束同声传译
716
+ * @returns
717
+ */
718
+ interpretationEnd(): Promise<any>;
719
+ }
720
+
721
+ export declare type InterpretationData = {
722
+ status: 'started' | 'stopped';
723
+ interpreters: {
724
+ userID?: number;
725
+ subjectID?: string;
726
+ displayName: string;
727
+ firstLanguage: Language;
728
+ secondLanguage: Language;
729
+ }[];
730
+ };
731
+
732
+ export declare interface InterpretationPayload {
733
+ body: InterpretationData;
734
+ state: PollingPayloadState;
735
+ }
736
+
737
+ export declare class Invite extends Module<InviteData, Events_6> {
738
+ static setDisplayNamePinyinProp: (name: string) => string;
739
+ constructor(ctx: Context);
740
+ _topic(): string;
741
+ _bindOn(): void;
742
+ /**
743
+ * 邀请
744
+ * @param params
745
+ * @returns
746
+ */
747
+ invite(params: {
748
+ type: InviteType;
749
+ contacts: string[];
750
+ zone?: string;
751
+ }): Promise<any>;
752
+ }
753
+
754
+ /**
755
+ * Invite 数据
756
+ */
757
+ export declare interface InviteData {
758
+ callRecordUsers: callRecordUser[];
759
+ }
760
+
761
+ /**
762
+ * 邀请用户类型
763
+ */
764
+ export declare type InviteType = 'account' | 'subjectID' | 'sip' | 'h323' | 'pstn' | 'teams' | 'number';
765
+
766
+ /**
767
+ * 入会参数
768
+ */
769
+ export declare interface JoinParams {
770
+ /**
771
+ * 会议号
772
+ */
773
+ meetingNum: string;
774
+ /**
775
+ * 会议明文密码
776
+ */
777
+ pwd?: string;
778
+ /**
779
+ * 用户显示名
780
+ */
781
+ displayName: string;
782
+ /**
783
+ * 终端类型
784
+ */
785
+ endpointType: ENDPOINT_TYPE;
786
+ /**
787
+ * 邀请入会的事务ID(邀请入会必选)
788
+ */
789
+ inviteTransID?: string;
790
+ /**
791
+ * 组织架构IDs
792
+ */
793
+ groupIDs?: Array<string>;
794
+ /**
795
+ * 云账号
796
+ */
797
+ account?: string;
798
+ /**
799
+ * 终端设备类型UA
800
+ */
801
+ userAgent?: string;
802
+ /**
803
+ * 账号的GroupName名称
804
+ */
805
+ groupName?: string;
806
+ /**
807
+ * 入会链接,不带meetingNum则必选
808
+ */
809
+ url?: string;
810
+ /**
811
+ * 手机区号
812
+ */
813
+ mobileCode?: string;
814
+ /**
815
+ * 手机号
816
+ */
817
+ mobile?: string;
818
+ /**
819
+ * 注册邮箱
820
+ */
821
+ regEmail?: string;
822
+ /**
823
+ * 云账号用户邮箱
824
+ */
825
+ accEmail?: string;
826
+ /**
827
+ * 观众注册唯一标识
828
+ */
829
+ tk?: string;
830
+ }
831
+
832
+ export declare interface Language {
833
+ name: string;
834
+ id: number;
835
+ }
836
+
837
+ export declare interface Layout {
838
+ mode: LayoutMode;
839
+ layout: LayoutContent;
840
+ seq?: number;
841
+ applyToAttendee?: boolean;
842
+ }
843
+
844
+ export declare interface LayoutContent {
845
+ type: string;
846
+ disallowShowSameVideo?: boolean;
847
+ hideNonVideo?: boolean;
848
+ name?: string;
849
+ pollCount?: number;
850
+ pollSeconds?: number;
851
+ pictures?: Picture[];
852
+ count?: number;
853
+ layout?: string;
854
+ mode?: string;
855
+ }
856
+
857
+ export declare type LayoutMode = 'custom' | 'basic';
858
+
859
+ export declare interface Live {
860
+ duration?: number;
861
+ lastStartTime?: number;
862
+ content?: string;
863
+ contentType?: string;
864
+ layout: {
865
+ type?: string;
866
+ };
867
+ liveCaptionEnabled?: boolean;
868
+ platform?: string;
869
+ status?: string;
870
+ watchURL?: string;
871
+ requesting?: boolean;
872
+ resultInfo?: {
873
+ bizCode?: string;
874
+ };
875
+ bizCode?: string;
876
+ watchPassword?: string;
877
+ userID?: string;
878
+ }
879
+
880
+ export declare class LiveStream extends Module<LiveStreamData, Events_14> {
881
+ constructor(ctx: Context);
882
+ _topic(): string;
883
+ _bindOn(): void;
884
+ /**
885
+ * 设置直播状态
886
+ * @returns 返回的数据
887
+ */
888
+ setStatus(params: {
889
+ platform: string;
890
+ action: string;
891
+ }): Promise<any>;
892
+ /**
893
+ * 设置直播描述信息
894
+ * @returns 返回的数据
895
+ */
896
+ liveStreamDescription(params: {
897
+ platform: string;
898
+ contentType: string;
899
+ content: string;
900
+ }): Promise<any>;
901
+ /**
902
+ * 录制状态修改
903
+ * @params 设置参数
904
+ * @returns 返回的数据
905
+ */
906
+ liveStreamSetting(params: {
907
+ platform: string;
908
+ layout: {
909
+ type: string;
910
+ };
911
+ liveCaptionEnabled: boolean;
912
+ }): Promise<any>;
913
+ }
914
+
915
+ export declare interface LiveStreamData {
916
+ liveStreams: Live[];
917
+ status: Status[];
918
+ resultInfo: {
919
+ bizCode?: string;
920
+ };
921
+ jetlag: number;
922
+ }
923
+
924
+ export declare class Me extends Module<MeData, Events_2> {
925
+ constructor(ctx: Context);
926
+ _topic(): string;
927
+ _bindOn(): void;
928
+ /**
929
+ * 上报客户端音视频状态
930
+ * @param params
931
+ * @param isForce
932
+ * @returns
933
+ */
934
+ updateUserState(params: {
935
+ audio: Partial<MediaState>;
936
+ video: Partial<MediaState>;
937
+ share?: Partial<MediaState>;
938
+ }, isForce?: boolean): Promise<Response_2>;
939
+ rePolling(event?: 'roleChange' | 'inLobbyChange'): Promise<void>;
940
+ }
941
+
942
+ export declare interface MeData {
943
+ /**
944
+ * 是否上报了媒体状态
945
+ */
946
+ isUpdatedUserState: boolean;
947
+ /**
948
+ * 是否被设为焦点视频
949
+ */
950
+ isSpotlightVideo: boolean;
951
+ userID: number;
952
+ role: ROLE;
953
+ joinTime: number;
954
+ endpointType: ENDPOINT_TYPE;
955
+ isInLobby: boolean;
956
+ isHandUp: boolean;
957
+ displayName: string;
958
+ subjectID: string;
959
+ caps: number;
960
+ initialMediaState: {
961
+ audio: MediaState;
962
+ video: MediaState;
963
+ };
964
+ account?: string;
965
+ mediaContent?: {
966
+ accessMCs: Array<string>;
967
+ addrType: number;
968
+ crypto: string;
969
+ meetingParam: string;
970
+ topMC: string;
971
+ };
972
+ audio?: MeMedia;
973
+ video?: MeMedia;
974
+ share?: MeMedia;
975
+ barrage?: {
976
+ content?: string;
977
+ contentType?: string;
978
+ duration?: number;
979
+ position?: string;
980
+ receiver?: {
981
+ host: boolean;
982
+ attendee: boolean;
983
+ audience: boolean;
984
+ };
985
+ type?: string;
986
+ };
987
+ }
988
+
989
+ /**
990
+ * 媒体
991
+ * TODO
992
+ */
993
+ export declare interface MediaState {
994
+ /**
995
+ * 媒体开关状态
996
+ */
997
+ sendOn: boolean;
998
+ /**
999
+ * 设备的开启状态,true设备可用/false设备不可用
1000
+ */
1001
+ deviceOn?: boolean;
1002
+ /**
1003
+ * 暂停音频
1004
+ */
1005
+ recvOn?: boolean;
1006
+ blocked?: boolean;
1007
+ }
1008
+
1009
+ export declare enum MeEvent {
1010
+ /**
1011
+ * 初始化自身信息,正常为入会时进行调用
1012
+ */
1013
+ INIT = "meInit",
1014
+ /**
1015
+ * 涉及自身变更的通知,其他模块触发用
1016
+ */
1017
+ UPDATE = "meUpdate",
1018
+ /**
1019
+ * 用户上报自身媒体状态
1020
+ */
1021
+ UPDATE_USER_STATE = "updateUserState",
1022
+ /**
1023
+ * 角色变更
1024
+ */
1025
+ ROLECHANGE = "meRoleChange",
1026
+ /**
1027
+ * 音频状态变更
1028
+ */
1029
+ AUDIOCHANGE = "meAudioChange",
1030
+ /**
1031
+ * 举手状态变更
1032
+ */
1033
+ HANDUPCHANGE = "meHandupChange",
1034
+ /**
1035
+ * 远端请求开启音频
1036
+ */
1037
+ SETAUDIO = "setAudio",
1038
+ /**
1039
+ * 视频状态变更
1040
+ */
1041
+ VIDEOCHANGE = "meVideoChange",
1042
+ /**
1043
+ * 远端请求开启视频
1044
+ */
1045
+ SETVIDEO = "setVideo",
1046
+ /**
1047
+ * 辅流状态变更
1048
+ */
1049
+ SHARECHANGE = "meShareChange",
1050
+ /**
1051
+ * 显示名变更
1052
+ */
1053
+ DISPLAYNAMECHANGE = "meDisplayNameChange",
1054
+ /**
1055
+ * 焦点视频状态变更
1056
+ */
1057
+ SPOTLIGHTVIDEOCHANGE = "meSpotlightVideoChange",
1058
+ /**
1059
+ * 进入/离开等候室变更
1060
+ */
1061
+ LOBBYCHANGE = "meLobbyChange",
1062
+ /**
1063
+ * 横幅变更
1064
+ */
1065
+ BARRAGECHANGE = "meBarrageChange",
1066
+ /**
1067
+ * 离开会议
1068
+ */
1069
+ LEAVE = "leave"
1070
+ }
1071
+
1072
+ declare type MeMedia = MediaState & {
1073
+ opBy?: number;
1074
+ };
1075
+
1076
+ declare abstract class Module<T extends object, E extends Record<EventType, unknown>> {
1077
+ moduleName: string;
1078
+ ctx: Context;
1079
+ data: T;
1080
+ emitter: Emitter<E>;
1081
+ on: Emitter<E>['on'];
1082
+ off: Emitter<E>['off'];
1083
+ constructor(ctx: Context, moduleName: string);
1084
+ /**
1085
+ * 数据清理
1086
+ */
1087
+ cleanup(): void;
1088
+ /**
1089
+ * 关联外部响应式数据
1090
+ * @param obj
1091
+ */
1092
+ reactive(obj: Record<any, any>): T & ReactiveReturn;
1093
+ /**
1094
+ * 设置模块订阅的主题
1095
+ */
1096
+ abstract _topic(): string | string[];
1097
+ /**
1098
+ * 绑定对应的事件通知,来源polling
1099
+ */
1100
+ abstract _bindOn(): void;
1101
+ }
1102
+
1103
+ export declare interface Msg {
1104
+ msgID: string;
1105
+ contentType: string;
1106
+ content: string;
1107
+ msgType: number;
1108
+ receiver: {
1109
+ userID: number;
1110
+ };
1111
+ sender: MsgSender;
1112
+ timestamp: number;
1113
+ }
1114
+
1115
+ /**
1116
+ * 消息发送者
1117
+ */
1118
+ declare interface MsgSender {
1119
+ displayName: string;
1120
+ userID: number;
1121
+ }
1122
+
1123
+ export declare interface PersonalLayout {
1124
+ mode: 'custom' | 'basic';
1125
+ layouts: LayoutContent[];
1126
+ seq: number;
1127
+ subscriber?: PersonalLayoutSubscriber;
1128
+ templateStatus?: number;
1129
+ }
1130
+
1131
+ export declare interface PersonalLayoutSubscriber {
1132
+ userID: number;
1133
+ subjectID?: string;
1134
+ }
1135
+
1136
+ export declare interface Picture {
1137
+ index: number;
1138
+ subscribeType: string;
1139
+ subscribeToUsers?: SubscribeToUser[];
1140
+ priorSubscribeType?: string;
1141
+ }
1142
+
1143
+ /**
1144
+ * polling 下发事件状态
1145
+ */
1146
+ export declare type PollingPayloadState = 'full' | 'delete' | 'update';
1147
+
1148
+ export declare class Qa extends Module<QaData, Events_11> {
1149
+ constructor(ctx: Context);
1150
+ _topic(): string;
1151
+ _bindOn(): void;
1152
+ cleanup(): void;
1153
+ qaUpdate(questions: Map<string, Question>, data: any): void;
1154
+ createQuestion(data: Question): {
1155
+ isAnonymous: boolean;
1156
+ isTop: boolean;
1157
+ id: string;
1158
+ content: string;
1159
+ sender: {
1160
+ displayName: string;
1161
+ endpointID: string;
1162
+ };
1163
+ timestamp: number;
1164
+ status: string;
1165
+ answers: Map<any, any>;
1166
+ topSort: number;
1167
+ };
1168
+ createQuestionAnswer(data: QuestionAnswer): {
1169
+ isPrivate: boolean;
1170
+ content: string;
1171
+ id: string;
1172
+ sender: {
1173
+ displayName: string;
1174
+ endpointID: string;
1175
+ };
1176
+ timestamp: number;
1177
+ };
1178
+ /**
1179
+ * 问答
1180
+ * @param params
1181
+ * @returns
1182
+ */
1183
+ qa(params: {
1184
+ command: QaCommand;
1185
+ question: {
1186
+ isAnonymous: boolean;
1187
+ isTop: boolean;
1188
+ id: string;
1189
+ content: string;
1190
+ sender: {
1191
+ endpointID: string;
1192
+ displayName: string;
1193
+ };
1194
+ };
1195
+ }): Promise<any>;
1196
+ }
1197
+
1198
+ export declare type QaCommand = 'addQuestion' | 'dismissQuestion' | 'reopenQuestion' | 'updateQuestion' | 'deleteQuestion' | 'answerQuestion' | 'deleteAnswer';
1199
+
1200
+ export declare interface QaData {
1201
+ questions: Map<string, Question>;
1202
+ topSort: number;
1203
+ }
1204
+
1205
+ export declare interface QaPayload {
1206
+ body: {
1207
+ command: QaCommand;
1208
+ question: Question;
1209
+ };
1210
+ state: PollingPayloadState;
1211
+ }
1212
+
1213
+ export declare interface Question {
1214
+ isAnonymous: boolean;
1215
+ isTop: boolean;
1216
+ id: string;
1217
+ content: string;
1218
+ sender: {
1219
+ displayName: string;
1220
+ endpointID: string;
1221
+ };
1222
+ timestamp: number;
1223
+ status: string;
1224
+ answers: Map<string, QuestionAnswer>;
1225
+ topSort?: number;
1226
+ }
1227
+
1228
+ export declare interface QuestionAnswer {
1229
+ isPrivate: boolean;
1230
+ id: string;
1231
+ sender: {
1232
+ displayName: string;
1233
+ endpointID: string;
1234
+ };
1235
+ content: string;
1236
+ timestamp: number;
1237
+ }
1238
+
1239
+ export declare type ReactiveReturn = {
1240
+ /**
1241
+ * 取消响应式关联
1242
+ */
1243
+ _destory: () => void;
1244
+ };
1245
+
1246
+ export declare type Reason = ResultInfo & {
1247
+ data?: any;
1248
+ };
1249
+
1250
+ /**
1251
+ * 录制状态
1252
+ */
1253
+ export declare enum RECORD_STATUS {
1254
+ STARTED = "started",
1255
+ PAUSED = "paused",
1256
+ STARTING = "starting",
1257
+ STOPPED = "stopped"
1258
+ }
1259
+
1260
+ export declare class Recording extends Module<RecordingData, Events_15> {
1261
+ constructor(ctx: Context);
1262
+ _topic(): string;
1263
+ _bindOn(): void;
1264
+ /**
1265
+ * 录制记录
1266
+ * @returns 返回的数据
1267
+ */
1268
+ history(): Promise<any>;
1269
+ /**
1270
+ * 录制状态修改
1271
+ * @params 设置参数
1272
+ * @returns 返回的数据
1273
+ */
1274
+ status(params: {
1275
+ action: 'start' | 'pause' | 'stop';
1276
+ }): Promise<any>;
1277
+ /**
1278
+ * 录制布局控制
1279
+ * @params 设置参数
1280
+ * @returns 返回的数据
1281
+ */
1282
+ layout(params: {
1283
+ mode?: 'basic' | 'custom';
1284
+ layoutOption: string;
1285
+ layout?: LayoutContent;
1286
+ }): Promise<any>;
1287
+ /**
1288
+ * 会控指定与会者录制
1289
+ * @params 设置参数
1290
+ * @returns 返回的数据
1291
+ */
1292
+ designatedUsers(params: {
1293
+ recordUsers: RecordUsers[];
1294
+ }): Promise<any>;
1295
+ /**
1296
+ * 指定与会者成员添加
1297
+ * @params 设置参数
1298
+ * @returns 返回的数据
1299
+ */
1300
+ participantAdd(params: {
1301
+ sourceId: string;
1302
+ content: string;
1303
+ sourceType: number;
1304
+ }): Promise<any>;
1305
+ /**
1306
+ * 指定与会者成员清除
1307
+ * @params 设置参数
1308
+ * @returns 返回的数据
1309
+ */
1310
+ participantDelete(params: {
1311
+ sourceId: string;
1312
+ sourceType: number;
1313
+ }): Promise<any>;
1314
+ /**
1315
+ * 会议模板列表
1316
+ * @params 设置参数
1317
+ * @returns 返回的数据
1318
+ */
1319
+ getTemplates(params: {
1320
+ vmrId: string;
1321
+ }): Promise<any>;
1322
+ /**
1323
+ * 根据id列表获取用户信息
1324
+ * @params 设置参数
1325
+ * @returns 返回的数据
1326
+ */
1327
+ getByIds(params: {
1328
+ ids: string[];
1329
+ }): Promise<any>;
1330
+ /**
1331
+ * 设置录制布局
1332
+ * @params 设置参数
1333
+ * @returns 返回的数据
1334
+ */
1335
+ recordLayout(params: RecordLayoutMap): Promise<any>;
1336
+ }
1337
+
1338
+ export declare interface RecordingData {
1339
+ isPracticeSession?: boolean;
1340
+ recording: RecordingMap;
1341
+ liveTime?: number;
1342
+ status: Status_2;
1343
+ resultInfo: {
1344
+ bizCode?: string;
1345
+ };
1346
+ stime: number;
1347
+ }
1348
+
1349
+ export declare interface RecordingMap {
1350
+ status?: string;
1351
+ layout: {
1352
+ layout?: {
1353
+ type: string;
1354
+ name?: string;
1355
+ };
1356
+ mode?: string;
1357
+ };
1358
+ layoutOption: string;
1359
+ recordUsers?: RecordUsers[];
1360
+ requesting?: boolean;
1361
+ transcriptEnabled: boolean;
1362
+ watermarkEnabled: boolean;
1363
+ layoutID?: string;
1364
+ lastStartTime?: number;
1365
+ duration?: number;
1366
+ seq?: number;
1367
+ }
1368
+
1369
+ export declare interface RecordLayoutMap {
1370
+ layoutOption?: string;
1371
+ mode?: string;
1372
+ layout: {
1373
+ layout?: {
1374
+ type: string;
1375
+ };
1376
+ mode?: string;
1377
+ };
1378
+ layoutID?: string;
1379
+ }
1380
+
1381
+ export declare interface RecordUsers {
1382
+ subjectID: string;
1383
+ userID?: number;
1384
+ isMultiStreamRecordUser?: boolean;
1385
+ multiStreamPictureCount?: number;
1386
+ }
1387
+
1388
+ export declare function reset(ctx: Context): void;
1389
+
1390
+ /**
1391
+ * 请求响应体
1392
+ */
1393
+ declare interface Response_2 {
1394
+ /**
1395
+ * 业务码,成功900200
1396
+ */
1397
+ bizCode: number;
1398
+ /**
1399
+ * 数据
1400
+ */
1401
+ data?: any;
1402
+ /**
1403
+ * 错误信息
1404
+ */
1405
+ error?: {
1406
+ /**
1407
+ * 错误码
1408
+ */
1409
+ errorCode: number;
1410
+ /**
1411
+ * 信息
1412
+ */
1413
+ msg: string;
1414
+ };
1415
+ /**
1416
+ * 标识,-1失败,>-1成功
1417
+ */
1418
+ ret?: number;
1419
+ }
1420
+ export { Response_2 as Response }
1421
+
1422
+ /**
1423
+ * 退会/移出列表原因
1424
+ */
1425
+ export declare interface ResultInfo {
1426
+ /**
1427
+ * 业务码
1428
+ */
1429
+ bizCode?: number;
1430
+ /**
1431
+ * 原因码
1432
+ */
1433
+ reasonCode?: number;
1434
+ /**
1435
+ * 信息
1436
+ */
1437
+ message?: string;
1438
+ }
1439
+
1440
+ /**
1441
+ * 角色
1442
+ */
1443
+ export declare enum ROLE {
1444
+ /**
1445
+ * 主持人(组织者)
1446
+ */
1447
+ HOST = "host",
1448
+ /**
1449
+ * 联席主持人(会议中被设置为主持人的)
1450
+ */
1451
+ COHOST = "coHost",
1452
+ /**
1453
+ * 与会者
1454
+ */
1455
+ ATTENDEE = "attendee",
1456
+ /**
1457
+ * 观众
1458
+ */
1459
+ AUDIENCE = "audience"
1460
+ }
1461
+
1462
+ export declare interface SetMedia {
1463
+ cred: string;
1464
+ sendOn: boolean;
1465
+ operator?: {
1466
+ userID: number;
1467
+ };
1468
+ }
1469
+
1470
+ export declare class Setting extends Module<SettingData, Events_16> {
1471
+ constructor(ctx: Context);
1472
+ _topic(): string;
1473
+ _bindOn(): void;
1474
+ /**
1475
+ * 会议设置
1476
+ * @params 设置参数
1477
+ * @returns 返回的数据
1478
+ */
1479
+ setting(params: any): Promise<any>;
1480
+ /**
1481
+ * 全体静音
1482
+ * @params 设置参数
1483
+ * @returns 返回的数据
1484
+ */
1485
+ muteAll(): Promise<any>;
1486
+ /**
1487
+ * 全体解除静音
1488
+ * @params 设置参数
1489
+ * @returns 返回的数据
1490
+ */
1491
+ unmuteAll(): Promise<any>;
1492
+ }
1493
+
1494
+ export declare interface SettingData {
1495
+ meetingNum: string;
1496
+ meetingID: string;
1497
+ lock: boolean;
1498
+ allowRenameSelf: boolean;
1499
+ showAvatar: boolean;
1500
+ chatSetting: {
1501
+ attendeePermission: 'all' | 'public' | 'host' | 'disabled';
1502
+ audiencePermission: 'all' | 'public' | 'host' | 'disabled';
1503
+ };
1504
+ mediaSetting: {
1505
+ audio: {
1506
+ muteOnJoin: boolean;
1507
+ speakingMode: 'free' | 'handUp';
1508
+ allowUnmuteSelf: boolean;
1509
+ };
1510
+ video: {
1511
+ muteOnJoin: boolean;
1512
+ allowUnmuteSelf: boolean;
1513
+ };
1514
+ share: {
1515
+ annotationPermission: 'all' | 'sharerHost';
1516
+ sharePermission: 'allGrab' | 'hostGrab' | 'hostStart' | 'multi';
1517
+ watermark: boolean;
1518
+ };
1519
+ };
1520
+ lobbySetting: {
1521
+ autoAdmitted: number;
1522
+ enabled: boolean;
1523
+ };
1524
+ ivrSetting: {
1525
+ chime: 'off' | 'self' | 'all' | 'selfAndHost';
1526
+ };
1527
+ qaSetting: {
1528
+ allowAnonymousQuestion: boolean;
1529
+ audienceViewPermission: 'onlyTop' | 'onlyAnswered' | 'all';
1530
+ enabled: boolean;
1531
+ };
1532
+ voteSetting: {
1533
+ enabled: boolean;
1534
+ };
1535
+ siteNameSetting: {
1536
+ backgroundColor: number;
1537
+ customStyleOn: boolean;
1538
+ fontColor: number;
1539
+ fontSize: number;
1540
+ horizontalPosition: number;
1541
+ on: boolean;
1542
+ verticalPosition: number;
1543
+ };
1544
+ asrSetting: {
1545
+ allowViewTranscriptHistory: boolean;
1546
+ };
1547
+ seq?: number;
1548
+ }
1549
+
1550
+ export declare class SpotlightVideo extends Module<SpotlightVideoData, Events_5> {
1551
+ constructor(ctx: Context);
1552
+ _topic(): string;
1553
+ _bindOn(): void;
1554
+ /**
1555
+ * 设置焦点
1556
+ */
1557
+ spotlight(params: {
1558
+ userID: number;
1559
+ action: 'add' | 'remove' | 'replace' | 'removeAll';
1560
+ }): Promise<any>;
1561
+ }
1562
+
1563
+ export declare interface SpotlightVideoData {
1564
+ userIDs: number[];
1565
+ }
1566
+
1567
+ /**
1568
+ * 会议状态类型
1569
+ */
1570
+ export declare enum STATE {
1571
+ /**
1572
+ * 未入会或退会
1573
+ */
1574
+ CLOSE = 0,
1575
+ /**
1576
+ * 已入会
1577
+ */
1578
+ JOINED = 1,
1579
+ /**
1580
+ * 一切就绪
1581
+ */
1582
+ READY = 2
1583
+ }
1584
+
1585
+ declare interface Status {
1586
+ platform: string;
1587
+ status: string;
1588
+ }
1589
+
1590
+ declare type Status_2 = 'starting' | 'started' | 'stopped' | 'paused';
1591
+
1592
+ export declare interface SubscribeToUser {
1593
+ subjectID: string;
1594
+ userID?: number;
1595
+ }
1596
+
1597
+ export declare class Transcript extends Module<TranscriptData, Events_12> {
1598
+ constructor(ctx: Context);
1599
+ _topic(): string;
1600
+ _bindOn(): void;
1601
+ cleanup(): void;
1602
+ /**
1603
+ * 查询转写历史信息
1604
+ * @returns
1605
+ */
1606
+ historyMsg(params: {
1607
+ limit: number;
1608
+ }): Promise<any>;
1609
+ }
1610
+
1611
+ export declare type TranscriptData = object;
1612
+
1613
+ export declare interface Transcription {
1614
+ content: string;
1615
+ timestamp: number;
1616
+ sender: {
1617
+ userID: number;
1618
+ displayName: string;
1619
+ };
1620
+ sentenceID: string;
1621
+ }
1622
+
1623
+ export declare interface TranscriptPayload {
1624
+ body: Transcription;
1625
+ state: PollingPayloadState;
1626
+ }
1627
+
1628
+ /**
1629
+ * User 数据
1630
+ */
1631
+ export declare interface User {
1632
+ /**
1633
+ * 会控用户ID
1634
+ */
1635
+ userID: number;
1636
+ /**
1637
+ * 用户账号
1638
+ */
1639
+ account?: string;
1640
+ /**
1641
+ * 终端类型
1642
+ */
1643
+ endpointType: ENDPOINT_TYPE;
1644
+ /**
1645
+ * 用户名
1646
+ */
1647
+ displayName: string;
1648
+ /**
1649
+ * 用户名拼音
1650
+ */
1651
+ displayNamePinyin: string;
1652
+ /**
1653
+ * 音频能力
1654
+ */
1655
+ audio?: UserMedia;
1656
+ /**
1657
+ * 视频能力 观众无此能力
1658
+ */
1659
+ video?: UserMedia;
1660
+ /**
1661
+ * 辅流能力 观众无此能力
1662
+ */
1663
+ share?: UserMedia;
1664
+ /**
1665
+ * 协作能力 观众无此能力
1666
+ */
1667
+ whiteboard?: UserMedia;
1668
+ /**
1669
+ * 个人能力集
1670
+ */
1671
+ caps?: number;
1672
+ /**
1673
+ * 临时分配的权限
1674
+ */
1675
+ perm?: number;
1676
+ /**
1677
+ * 所属组织
1678
+ */
1679
+ groupIDs?: Array<string>;
1680
+ /**
1681
+ * 是否举手
1682
+ */
1683
+ isHandUp?: boolean;
1684
+ /**
1685
+ * 是否在大厅
1686
+ */
1687
+ isInLobby?: boolean;
1688
+ /**
1689
+ * 入会时间,单位毫秒
1690
+ */
1691
+ joinTime?: number;
1692
+ /**
1693
+ * 角色
1694
+ */
1695
+ role?: ROLE;
1696
+ /**
1697
+ * 用户ID
1698
+ */
1699
+ subjectID?: string;
1700
+ /**
1701
+ * 举手时间
1702
+ */
1703
+ handUpTime?: number;
1704
+ /**
1705
+ * 变更原因
1706
+ */
1707
+ resultInfo?: ResultInfo;
1708
+ /**
1709
+ * 本地录制
1710
+ */
1711
+ localRecord?: {
1712
+ status: RECORD_STATUS;
1713
+ };
1714
+ /**
1715
+ * 传译员
1716
+ */
1717
+ interpret?: {
1718
+ isInterpreter: boolean;
1719
+ activeLanguage: string;
1720
+ };
1721
+ /**
1722
+ * 多流终端中主流UserID
1723
+ */
1724
+ parentUserID?: number;
1725
+ }
1726
+
1727
+ /**
1728
+ * User 媒体状态
1729
+ */
1730
+ export declare interface UserMedia {
1731
+ /**
1732
+ * 设备的开启状态,true设备可用/false设备不可用
1733
+ */
1734
+ deviceOn?: boolean;
1735
+ /**
1736
+ * 暂不使用
1737
+ */
1738
+ recvOn?: boolean;
1739
+ /**
1740
+ * 媒体开关状态,比如:false禁言/true解禁言
1741
+ */
1742
+ sendOn?: boolean;
1743
+ /**
1744
+ * 操作者 1(other) 表示被别人操作;0(self) 或没有该字段 表示自己操作
1745
+ */
1746
+ opBy?: number;
1747
+ serverCoop?: boolean;
1748
+ sourceID?: number;
1749
+ blocked: boolean;
1750
+ }
1751
+
1752
+ export declare class Users extends Module<UsersData, Events_4> {
1753
+ static setDisplayNamePinyinProp: (name: string) => string;
1754
+ constructor(ctx: Context);
1755
+ _topic(): string[] | "interactive";
1756
+ _bindOn(): void;
1757
+ /**
1758
+ * 关联外部响应式数据
1759
+ * @param obj
1760
+ */
1761
+ reactive(obj: Record<any, any>): UsersData & ReactiveReturn;
1762
+ cleanup(): void;
1763
+ /**
1764
+ * 更新 - 补充用户信息:
1765
+ * 名称拼音
1766
+ * @param updateUser
1767
+ * @param user
1768
+ */
1769
+ updateUserProps(updateUser: User, user: User): void;
1770
+ /**
1771
+ * 设置音频
1772
+ * @param userID
1773
+ * @param params
1774
+ * @returns
1775
+ */
1776
+ setAudio(userID: number, params: {
1777
+ sendOn: boolean;
1778
+ cred?: string;
1779
+ }): Promise<any>;
1780
+ /**
1781
+ * 设置视频
1782
+ * @param userID
1783
+ * @param params
1784
+ * @returns
1785
+ */
1786
+ setVideo(userID: number, params: {
1787
+ sendOn: boolean;
1788
+ cred?: string;
1789
+ }): Promise<any>;
1790
+ /**
1791
+ * 设置辅流
1792
+ * @param userID
1793
+ * @param params
1794
+ * @returns
1795
+ */
1796
+ setShare(userID: number, params: {
1797
+ sendOn: boolean;
1798
+ }): Promise<any>;
1799
+ /**
1800
+ * 设置互动协作白板
1801
+ * @param userID
1802
+ * @param params
1803
+ * @returns
1804
+ */
1805
+ setWhiteboard(userID: number, params: {
1806
+ sendOn: boolean;
1807
+ }): Promise<any>;
1808
+ /**
1809
+ * 举手
1810
+ * @param userID
1811
+ * @param params
1812
+ * @returns
1813
+ */
1814
+ handUp(userID: number, params: {
1815
+ handUp: boolean;
1816
+ }): Promise<any>;
1817
+ /**
1818
+ * 修改用户角色
1819
+ * @param userID
1820
+ * @param params
1821
+ * @returns
1822
+ */
1823
+ setRole(userID: number, params: {
1824
+ role: ROLE;
1825
+ }): Promise<any>;
1826
+ /**
1827
+ * 改名
1828
+ * @param userID
1829
+ * @param params
1830
+ * @returns
1831
+ */
1832
+ rename(userID: number, params: {
1833
+ displayName: string;
1834
+ }): Promise<any>;
1835
+ /**
1836
+ * 移除用户
1837
+ * @param userID
1838
+ * @returns
1839
+ */
1840
+ remove(userID: number): Promise<any>;
1841
+ /**
1842
+ * 举手处理
1843
+ * @param userID
1844
+ * @param params
1845
+ * @returns
1846
+ */
1847
+ replyHandUp(userID: number, params: {
1848
+ permit: boolean;
1849
+ }): Promise<any>;
1850
+ /**
1851
+ * 摄像头控制
1852
+ */
1853
+ fecc(userID: number, params: {
1854
+ action: string;
1855
+ actionPlayTimes: number;
1856
+ }): Promise<any>;
1857
+ /**
1858
+ * 会议大厅状态切换 允许入会或者设为等待
1859
+ * @param userID
1860
+ * @param params
1861
+ * @returns
1862
+ */
1863
+ lobbyState(userID: number, params: {
1864
+ isInLobby: boolean;
1865
+ }): Promise<any>;
1866
+ /**
1867
+ * 设置用户本地录播权限
1868
+ * @param userID
1869
+ * @param params
1870
+ * @returns
1871
+ */
1872
+ allowLocalRecord(userID: number, params: {
1873
+ allow: boolean;
1874
+ }): Promise<any>;
1875
+ /**
1876
+ * 设置互动协作白板
1877
+ * @param userID
1878
+ * @param params
1879
+ * @returns
1880
+ */
1881
+ whiteboard(userID: number, params: {
1882
+ sendOn: boolean;
1883
+ }): Promise<any>;
1884
+ /**
1885
+ * 通话统计
1886
+ * @param userID
1887
+ * @returns
1888
+ */
1889
+ callStats(userID: number): Promise<any>;
1890
+ /**
1891
+ * 上报通话统计
1892
+ * @param userID
1893
+ * @returns
1894
+ */
1895
+ callStatsReport(params: {
1896
+ /**
1897
+ * 用户ID
1898
+ */
1899
+ userID: number;
1900
+ stats: {
1901
+ audio: audioStats;
1902
+ video: videoStats;
1903
+ share: videoStats;
1904
+ };
1905
+ deviceInfo: string;
1906
+ protocol: string;
1907
+ }): Promise<any>;
1908
+ /**
1909
+ * 举手全部拒绝
1910
+ * @returns
1911
+ */
1912
+ replyAllHandUp(): Promise<any>;
1913
+ /**
1914
+ * 大厅全部准入
1915
+ * @returns
1916
+ */
1917
+ admitAll(): Promise<any>;
1918
+ /**
1919
+ * 大厅全部移除
1920
+ * @returns
1921
+ */
1922
+ refuseAll(): Promise<any>;
1923
+ /**
1924
+ * 获取设备发送布局及视频源信息
1925
+ * @param userID
1926
+ * @returns
1927
+ */
1928
+ getSendLayout(userID: number): Promise<any>;
1929
+ /**
1930
+ * 设置设备发送布局
1931
+ * @param userID
1932
+ * @param params
1933
+ * @returns
1934
+ */
1935
+ setSendLayout(userID: number, params: {
1936
+ sendLayout: {
1937
+ type: string;
1938
+ pictures: {
1939
+ index: number;
1940
+ videoSources: {
1941
+ deviceID: string;
1942
+ }[];
1943
+ }[];
1944
+ };
1945
+ applyToPeopleVideo: boolean;
1946
+ applyToContentVideo: boolean;
1947
+ }): Promise<any>;
1948
+ /**
1949
+ * 更新用户发送布局状态
1950
+ * @param userID
1951
+ * @param params
1952
+ * @returns
1953
+ */
1954
+ setSendLayoutEnabled(userID: number, params: {
1955
+ enabled: boolean;
1956
+ }): Promise<any>;
1957
+ }
1958
+
1959
+ /**
1960
+ * Users 数据
1961
+ */
1962
+ export declare interface UsersData {
1963
+ /**
1964
+ * 互动方(参会者)成员列表
1965
+ */
1966
+ interactiveUsers: User[];
1967
+ /**
1968
+ * 等候室成员列表
1969
+ */
1970
+ lobbyUsers: User[];
1971
+ /**
1972
+ * 广播方(观众)成员列表
1973
+ */
1974
+ broadcastUsers: User[];
1975
+ /**
1976
+ * 虚拟教室终端 - 仅前端会控使用
1977
+ */
1978
+ advCtrlUsers: User[];
1979
+ }
1980
+
1981
+ export declare interface videoStats {
1982
+ /**
1983
+ * bps 带宽
1984
+ */
1985
+ bandwidth: number;
1986
+ /**
1987
+ * ms 环回延时
1988
+ */
1989
+ rtt: number;
1990
+ /**
1991
+ * ms 抖动
1992
+ */
1993
+ jitter: number;
1994
+ /**
1995
+ * 分辨率宽
1996
+ */
1997
+ width: number;
1998
+ /**
1999
+ * 分辨率高
2000
+ */
2001
+ height: number;
2002
+ /**
2003
+ * 帧率
2004
+ */
2005
+ fr: number;
2006
+ /**
2007
+ * % 丢包率
2008
+ */
2009
+ lossrate: number;
2010
+ /**
2011
+ * 个 丢包数
2012
+ */
2013
+ packetlost: number;
2014
+ }
2015
+
2016
+ export declare class View extends Module<ViewData, Events_10> {
2017
+ constructor(ctx: Context);
2018
+ _topic(): string[];
2019
+ _bindOn(): void;
2020
+ updateLayout(payload: ViewPayload, type: string): void;
2021
+ /**
2022
+ * 更新个人自定义布局
2023
+ * @param payload
2024
+ */
2025
+ private updatePersonalLayouts;
2026
+ /**
2027
+ * 主持人布局设置
2028
+ * @params 设置参数
2029
+ * @returns 返回的数据
2030
+ */
2031
+ hostLayout(params: Layout): Promise<any>;
2032
+ /**
2033
+ * 与会者布局设置
2034
+ * @params 设置参数
2035
+ * @returns 返回的数据
2036
+ */
2037
+ attendeeLayout(params: Layout): Promise<any>;
2038
+ /**
2039
+ * 观众布局设置
2040
+ * @params 设置参数
2041
+ * @returns 返回的数据
2042
+ */
2043
+ audienceLayout(params: Layout): Promise<any>;
2044
+ /**
2045
+ * 设置个人布局
2046
+ * @param params
2047
+ * @returns
2048
+ */
2049
+ personalLayout(params: Layout & {
2050
+ subscriber: PersonalLayoutSubscriber;
2051
+ }): Promise<any>;
2052
+ /**
2053
+ * 取消个人布局
2054
+ * @param params
2055
+ * @returns
2056
+ */
2057
+ personalLayoutDelete(params: {
2058
+ subscriber: PersonalLayoutSubscriber;
2059
+ }): Promise<any>;
2060
+ /**
2061
+ * 设置虚拟教室布局
2062
+ * @params 设置参数
2063
+ * @returns 返回的数据
2064
+ */
2065
+ virtualClassLayout(params: {
2066
+ blackList: string[];
2067
+ count: number;
2068
+ layout: LayoutContent;
2069
+ }): Promise<any>;
2070
+ /**
2071
+ * 关闭虚拟教室布局
2072
+ * @params 设置参数
2073
+ * @returns 返回的数据
2074
+ */
2075
+ closeVirtualClass(): Promise<any>;
2076
+ /**
2077
+ * 获取虚拟课堂布局
2078
+ * @params 设置参数
2079
+ * @returns 返回的数据
2080
+ */
2081
+ getVirtualClassTemplate(params: {
2082
+ vmrId: string;
2083
+ type: number;
2084
+ }): Promise<any>;
2085
+ /**
2086
+ * 添加虚拟课堂布局
2087
+ * @params 设置参数
2088
+ * @returns 返回的数据
2089
+ */
2090
+ addVirtualClassTemplate(params: AddVirtualClassParams): Promise<any>;
2091
+ /**
2092
+ * 编辑虚拟课堂布局
2093
+ * @params 设置参数
2094
+ * @returns 返回的数据
2095
+ */
2096
+ editVirtualClassTemplate(params: EditVirtualClassParams): Promise<any>;
2097
+ /**
2098
+ * 会议模板列表
2099
+ * @params 设置参数
2100
+ * @returns 返回的数据
2101
+ */
2102
+ getTemplates(params: {
2103
+ vmrId: string;
2104
+ }): Promise<any>;
2105
+ /**
2106
+ * 会议模板编辑
2107
+ * @params 设置参数
2108
+ * @returns 返回的数据
2109
+ */
2110
+ editTemplate(params: {
2111
+ vmrId: string;
2112
+ name: string;
2113
+ id: string;
2114
+ content: string;
2115
+ }): Promise<any>;
2116
+ /**
2117
+ * 会议模板添加
2118
+ * @params 设置参数
2119
+ * @returns 返回的数据
2120
+ */
2121
+ addTemplate(params: {
2122
+ vmrId: string;
2123
+ name: string;
2124
+ content: string;
2125
+ }): Promise<any>;
2126
+ /**
2127
+ * 会议模板删除
2128
+ * @params 设置参数
2129
+ * @returns 返回的数据
2130
+ */
2131
+ deleteTemplate(params: {
2132
+ vmrId: string;
2133
+ id: string;
2134
+ }): Promise<any>;
2135
+ /**
2136
+ * 会议模板获取默认模板参数
2137
+ * @params 设置参数
2138
+ * @returns 返回的数据
2139
+ */
2140
+ getDefaultTemplates(params: {
2141
+ vmrId: string;
2142
+ partyId: string;
2143
+ }): Promise<any>;
2144
+ /**
2145
+ * 会议模板设置默认模板
2146
+ * @params 设置参数
2147
+ * @returns 返回的数据
2148
+ */
2149
+ changeDefaultTemplate(params: {
2150
+ vmrId: string;
2151
+ id: string;
2152
+ isDefault: boolean;
2153
+ perspective: number;
2154
+ }): Promise<any>;
2155
+ /**
2156
+ * 会议模板个人默认布局绑定
2157
+ * @params 设置参数
2158
+ * @returns 返回的数据
2159
+ */
2160
+ perspectiveBind(params: {
2161
+ vmrId: string;
2162
+ bindList: {
2163
+ templateId: string;
2164
+ subjectIds: string[];
2165
+ }[];
2166
+ }): Promise<any>;
2167
+ }
2168
+
2169
+ export declare interface ViewData {
2170
+ hostLayout: Layout;
2171
+ attendeeLayout: Layout;
2172
+ audienceLayout: Layout;
2173
+ personalLayouts: Record<number | string, PersonalLayout>;
2174
+ }
2175
+
2176
+ declare interface ViewPayload {
2177
+ body: any;
2178
+ state: PollingPayloadState;
2179
+ event: string;
2180
+ }
2181
+
2182
+ declare interface VirtualClassParams {
2183
+ enabled: boolean;
2184
+ targetIds: string[];
2185
+ blacklistIds: string[];
2186
+ content: string;
2187
+ }
2188
+
2189
+ export declare class Vote extends Module<VoteData, Events_7> {
2190
+ constructor(ctx: Context);
2191
+ _topic(): string | string[];
2192
+ _bindOn(): void;
2193
+ /**
2194
+ * 查询投票列表
2195
+ * @params 设置参数
2196
+ * @returns 返回的数据
2197
+ */
2198
+ getVotes(params: {
2199
+ planID: string;
2200
+ vmrID: string;
2201
+ tk?: string;
2202
+ }): Promise<any>;
2203
+ /**
2204
+ * 查询投票详情
2205
+ * @param params
2206
+ * @returns
2207
+ */
2208
+ getVote(params: VotePathParams & {
2209
+ role: string;
2210
+ state: string;
2211
+ }): Promise<any>;
2212
+ /**
2213
+ * 查询用户投票选项
2214
+ * @param params
2215
+ * @returns
2216
+ */
2217
+ getMeVote(params: VotePathParams): Promise<any>;
2218
+ /**
2219
+ * 投票状态操作
2220
+ * @param params
2221
+ * @returns
2222
+ */
2223
+ voteStatus(pathParams: VotePathParams, params: {
2224
+ action: string;
2225
+ displayName?: string;
2226
+ role?: string;
2227
+ isAnonymous?: boolean;
2228
+ allowAttendeeVote?: boolean;
2229
+ }): Promise<any>;
2230
+ /**
2231
+ * 提交投票
2232
+ * @param pathParams
2233
+ * @param params
2234
+ * @returns
2235
+ */
2236
+ voteSubmit(pathParams: VotePathParams, params: {
2237
+ submitData: {
2238
+ selectedQuestions: {
2239
+ selectedOptionIDs: string[];
2240
+ questionID: string;
2241
+ }[];
2242
+ };
2243
+ userData: {
2244
+ displayName: string;
2245
+ account: string;
2246
+ role: string;
2247
+ subjectID: string;
2248
+ };
2249
+ }): Promise<any>;
2250
+ /**
2251
+ * 投票创建
2252
+ * @param params
2253
+ * @returns
2254
+ */
2255
+ voteAdd(params: VoteParams): Promise<any>;
2256
+ /**
2257
+ * 投票编辑
2258
+ * @param params
2259
+ * @returns
2260
+ */
2261
+ voteEdit(params: VoteParams): Promise<any>;
2262
+ /**
2263
+ * 投票删除
2264
+ * @param params
2265
+ * @returns
2266
+ */
2267
+ voteDelete(params: {
2268
+ ids: string[];
2269
+ }): Promise<any>;
2270
+ /**
2271
+ * 查询进行中/分享中的投票
2272
+ * @returns
2273
+ */
2274
+ voteInProgress(params?: {
2275
+ tk?: string;
2276
+ }): Promise<any>;
2277
+ }
2278
+
2279
+ declare interface VoteBody {
2280
+ action: string;
2281
+ status: number;
2282
+ voteID: string;
2283
+ }
2284
+
2285
+ export declare interface VoteData {
2286
+ vote: Record<string, VoteBody>;
2287
+ }
2288
+
2289
+ export declare interface VoteInfo {
2290
+ allowAttendeeVote: boolean;
2291
+ createTime: number;
2292
+ endTime: number;
2293
+ isAnonymous: boolean;
2294
+ isSharing: boolean;
2295
+ name: string;
2296
+ startTime: number;
2297
+ status: number;
2298
+ totalVotedCount: number;
2299
+ type: number;
2300
+ version: number;
2301
+ voteID: string;
2302
+ questions: VoteQuestionInfo[];
2303
+ }
2304
+
2305
+ export declare interface VoteParams {
2306
+ name: string;
2307
+ sourceId: string;
2308
+ sourceType: number;
2309
+ questions: VoteQuestionParams[];
2310
+ }
2311
+
2312
+ declare interface VotePathParams {
2313
+ voteID: string;
2314
+ tk?: string;
2315
+ }
2316
+
2317
+ export declare interface VoteQuestionInfo {
2318
+ chooseAtLeast: number;
2319
+ chooseAtMost: number;
2320
+ index: number;
2321
+ questionID: string;
2322
+ required: boolean;
2323
+ text: string;
2324
+ type: number;
2325
+ options: VoteQuestionOptionInfo[];
2326
+ totalVotedCount: number;
2327
+ }
2328
+
2329
+ export declare type VoteQuestionOptionInfo = {
2330
+ index: number;
2331
+ optionID: string;
2332
+ text: string;
2333
+ votedCount: number;
2334
+ };
2335
+
2336
+ export declare interface VoteQuestionOptionParams {
2337
+ sort: number;
2338
+ type: number;
2339
+ description: string;
2340
+ id: string;
2341
+ }
2342
+
2343
+ export declare interface VoteQuestionParams {
2344
+ id: string;
2345
+ sort: number;
2346
+ showType: number;
2347
+ required: boolean;
2348
+ chooseAtLeast: number;
2349
+ chooseAtMost: number;
2350
+ description: string;
2351
+ type: number;
2352
+ options: VoteQuestionOptionParams[];
2353
+ }
2354
+
2355
+ export declare class Words extends Module<WordsData, Events_8> {
2356
+ constructor(ctx: Context);
2357
+ _topic(): string;
2358
+ _bindOn(): void;
2359
+ /**
2360
+ * 发送字幕
2361
+ * @params 设置参数
2362
+ * @returns 返回的数据
2363
+ */
2364
+ barrage(params: any): Promise<any>;
2365
+ /**
2366
+ * 删除字幕
2367
+ * @params 设置参数
2368
+ * @returns 返回的数据
2369
+ */
2370
+ deleteBarrage(): Promise<any>;
2371
+ }
2372
+
2373
+ export declare interface WordsData {
2374
+ wordsDisplayStatus: boolean;
2375
+ barrageRecord: BarrageRecord[];
2376
+ backgroundColor?: string;
2377
+ content?: string;
2378
+ contentType?: string;
2379
+ duration?: number;
2380
+ fontColor?: string;
2381
+ fontSize?: number;
2382
+ position?: string;
2383
+ receiver?: {
2384
+ host: boolean;
2385
+ attendee: boolean;
2386
+ audience: boolean;
2387
+ };
2388
+ type?: string;
2389
+ timer?: NodeJS.Timeout | null;
2390
+ }
2391
+
2392
+ /**
2393
+ * meeting实例
2394
+ */
2395
+ export declare interface YlinkSDKMeeting {
2396
+ /**
2397
+ * 全局配置
2398
+ */
2399
+ config: Pick<Context, 'config'>['config'];
2400
+ /**
2401
+ * 请求
2402
+ */
2403
+ request: Request_2;
2404
+ /**
2405
+ * 会议状态
2406
+ */
2407
+ state: STATE;
2408
+ /**
2409
+ * 全局事件监听
2410
+ */
2411
+ on: Emitter<Events>['on'];
2412
+ /**
2413
+ * 取消全局事件监听
2414
+ */
2415
+ off: Emitter<Events>['off'];
2416
+ /**
2417
+ * 加入会议
2418
+ */
2419
+ join: (params: JoinParams) => Promise<Response_2>;
2420
+ /**
2421
+ * 离开会议
2422
+ */
2423
+ leave: (params?: {
2424
+ resultInfo: ResultInfo;
2425
+ }) => Promise<Response_2>;
2426
+ /**
2427
+ * 结束会议
2428
+ */
2429
+ end: () => Promise<Response_2>;
2430
+ /**
2431
+ * 模块 - 自身相关
2432
+ */
2433
+ me?: Me;
2434
+ /**
2435
+ * 模块 - 会议信息
2436
+ */
2437
+ info?: Info;
2438
+ /**
2439
+ * 模块 - 参会成员
2440
+ */
2441
+ users?: Users;
2442
+ /**
2443
+ * 模块 - 焦点视频
2444
+ */
2445
+ spotlightVideo?: SpotlightVideo;
2446
+ /**
2447
+ * 模块 - 邀请
2448
+ */
2449
+ invite?: Invite;
2450
+ /**
2451
+ * 模块 - 投票
2452
+ */
2453
+ vote?: Vote;
2454
+ /**
2455
+ * 模块 - 文字消息
2456
+ */
2457
+ words?: Words;
2458
+ /**
2459
+ * 聊天
2460
+ */
2461
+ chat?: Chat;
2462
+ /**
2463
+ * 布局
2464
+ */
2465
+ view?: View;
2466
+ /**
2467
+ * 问答
2468
+ */
2469
+ qa?: Qa;
2470
+ /**
2471
+ * 语音转写
2472
+ */
2473
+ transcript?: Transcript;
2474
+ /**
2475
+ * 同声传译
2476
+ */
2477
+ interpretation?: Interpretation;
2478
+ [props: string]: any;
2479
+ }
2480
+
2481
+ export { }