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