@tencentcloud/tuiroom-engine-electron 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -18,7 +18,7 @@ declare class TUIRoomEngine {
18
18
  private logger;
19
19
  private roomId;
20
20
  private localVideoQuality;
21
- private LocalAudioQuality;
21
+ private localAudioQuality;
22
22
  static setModule(Module: any): void;
23
23
  static once(event: string, func: Function): void;
24
24
  constructor();
@@ -34,6 +34,7 @@ declare class TUIRoomEngine {
34
34
  * @param args
35
35
  */
36
36
  private JSCallNativeFunctionPromise;
37
+ private JSCallNativeRequestFunctionPromise;
37
38
  /**
38
39
  * 登录 TUIRoomEngine
39
40
  *
@@ -194,7 +195,7 @@ declare class TUIRoomEngine {
194
195
  fetchRoomInfo(): Promise<TUIRoomInfo>;
195
196
  /**
196
197
  * 更新房间的名字(仅群主或者管理员可以调用)
197
- * @param {object} options 获取当前房间的名字
198
+ * @param {object} options
198
199
  * @param {string} options.roomName 更新当前房间的名字
199
200
  * @returns {Promise<void>}
200
201
  * @example
@@ -234,7 +235,7 @@ declare class TUIRoomEngine {
234
235
  * const userList = [];
235
236
  * let result;
236
237
  * do {
237
- * result = await globalProperties.roomEngine.getUserList();
238
+ * result = await roomEngine.getUserList();
238
239
  * userList.push(...result.userInfoList);
239
240
  * } while (result.nextSequence !== 0)
240
241
  */
@@ -258,434 +259,115 @@ declare class TUIRoomEngine {
258
259
  userId: string;
259
260
  }): Promise<any>;
260
261
  /**
261
- * 设置房间麦位最大值
262
- * @param {object} options
263
- * @param {number} options.maxSeatCount 设置房间麦位最大值<br/>
264
- * roomType TUIRoomType.kConference (教育及会议场景) 时,maxSeatCount 值不做限制;
265
- * roomType 为 TUIRoomType.kLivingRoom (直播场景) 时,maxSeatCount 最大限制为 16;
262
+ * 设置本地流的渲染位置
263
+ * @param {object} options 设置本地流的渲染位置的参数
264
+ * @param {TUIVideoStreamType} options.streamType 本地流类型
265
+ * @param {string} options.view streamType 对应的流渲染的 div 元素的 id
266
266
  * @returns {Promise<void>}
267
- * const roomEngine = new TUIRoomEngine();
268
- * await roomEngine.createRoom({ roomId: '12345' });
269
- * await roomEngine.setMaxSeatCount({ maxSeatCount: 16 })
270
- */
271
- setMaxSeatCount(options: {
272
- maxSeatCount: number;
273
- }): Promise<void>;
274
- private JSCallNativeRequestFunctionPromise;
275
- /**
276
- * 麦下用户可调用 takeSeat 成为麦上用户,仅麦上用户可发布本地音视频流。<br/>
277
- * 当 roomInfo.enableSeatControl 为 true 时,普通用户调用 takeSeat 方法需要等待主持人/管理员的同意后成为麦上用户。<br/>
278
- * 当 roomInfo.enableSeatControl 为 false 时,普通用户调用 takeSeat 方法成功后即为麦上用户。<br/>
279
- * 主持人&管理员调用 takeSeat 成功后即为麦上用户。<br/>
280
- * 麦上用户的变更通过 TUIRoomEvents.onSeatListChanged 通知所有用户。<br/>
281
- * @param {object} options 获取麦位的参数
282
- * @param {number} options.seatIndex 麦位 index, 无麦位序号时设置为 -1
283
- * @param {number} options.timeout 超时时间。若 timeout 设置为 0,则无超时时间
284
- * @param {Function} options.requestCallback 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
285
- * @returns {Promise<number>} <br/>
286
- * 当 roomIno.enableSeatControl 为 true,普通用户调用该接口时返回 request 结构体,普通用户可使用 request.requestId 调用 cancelRequest 接口取消上麦请求。
287
267
  *
288
268
  * @example
289
269
  * const roomEngine = new TUIRoomEngine();
290
270
  *
291
- * // 情景一:主持人/管理员上麦
292
- * // 情景二:当 roomInfo.enableSeatControl 为 false 时,普通用户上麦
293
- * await roomEngine.takeSeat({
294
- * seatIndex: -1,
295
- * timeout: 0,
271
+ * // 设置本地摄像头流的播放区域为 id 是 'preview-camera' 的 div 元素
272
+ * roomEngine.setLocalVideoView({
273
+ * streamType: TUIVideoStreamType.kCameraStream,
274
+ * view: 'preview-camera',
296
275
  * });
297
276
  *
298
- * // 情景三:当 roomInfo.enableSeatControl true 时,普通用户上麦
299
- * const request = await roomEngine.instance?.takeSeat({
300
- * seatIndex: -1,
301
- * timeout: 0,
302
- * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
303
- * switch (requestCallbackType) {
304
- * case TUIRequestCallbackType.kRequestAccepted:
305
- * // 请求被接受
306
- * break;
307
- * case TUIRequestCallbackType.kRequestRejected:
308
- * // 请求被拒绝
309
- * break;
310
- * case TUIRequestCallbackType.kRequestCancelled:
311
- * // 请求已取消
312
- * break;
313
- * case TUIRequestCallbackType.kRequestTimeout:
314
- * // 请求超时
315
- * break;
316
- * case TUIRequestCallbackType.kRequestError:
317
- * // 请求错误
318
- * break;
319
- * default:
320
- * break;
321
- * }
322
- * },
277
+ * // 设置本地屏幕分享流的播放区域为 id 'preview-screen' 的 div 元素
278
+ * roomEngine.setLocalVideoView({
279
+ * streamType: TUIVideoStreamType.kScreenStream,
280
+ * view: 'preview-screen',
323
281
  * });
324
282
  */
325
- takeSeat(options: {
326
- seatIndex: number;
327
- timeout: number;
328
- requestCallback?: (callbackInfo: TUIRequestCallback) => void;
329
- }): Promise<TUIRequest>;
283
+ setLocalVideoView(options: {
284
+ streamType: TUIVideoStreamType;
285
+ view: string;
286
+ }): void;
330
287
  /**
331
- * 离开麦位
288
+ * 打开本地摄像头,开始视频流采集
289
+ * @param {object} options 设置本地流的参数
332
290
  * @returns {Promise<void>}
333
- *
334
291
  * @example
335
292
  * const roomEngine = new TUIRoomEngine();
336
- * await roomEngine.leaveSeat();
293
+ * await roomEngine.openLocalCamera();
337
294
  */
338
- leaveSeat(): Promise<void>;
295
+ openLocalCamera(): Promise<void>;
339
296
  /**
340
- * 获取麦位列表
341
- * @returns {Promise<TUISeatInfo[]>}
297
+ * 关闭本地摄像头
298
+ * @returns {Promise<void>}
342
299
  *
343
300
  * @example
344
301
  * const roomEngine = new TUIRoomEngine();
345
- * const seatList = await roomEngine.getSeatList();
346
- * ;
302
+ * await roomEngine.closeLocalCamera();
347
303
  */
348
- getSeatList(): Promise<TUISeatInfo[]>;
304
+ closeLocalCamera(): Promise<void>;
349
305
  /**
350
- * 锁定某个麦位状态
351
- *
352
- * @param {object} options 锁定某个麦位需要的参数
353
- * @param {number} options.seatIndex 麦位索引
354
- * @param {TUISeatLockParams} options.lockParams 设备
306
+ * 打开麦克风
355
307
  * @returns {Promise<void>}
356
308
  *
357
309
  * @example
358
310
  * const roomEngine = new TUIRoomEngine();
359
- * await roomEngine.lockSeatByAdmin({
360
- * seatIndex: -1,
361
- * lockParams: TUISeatLockParams.lockVideo
362
- * });
311
+ * await roomEngine.openLocalMicrophone();
363
312
  */
364
- lockSeatByAdmin(options: {
365
- seatIndex: number;
366
- lockParams: TUISeatLockParams;
367
- }): Promise<any>;
313
+ openLocalMicrophone(): Promise<void>;
368
314
  /**
369
- * 请求远端用户打开媒体设备
370
- * @param {object} options 请求远端用户打开摄像头的参数
371
- * @param {string} options.userId 用户 Id
372
- * @param {TUIMediaDevice} options.device 请求的设备
373
- * @param {number} options.timeout 超时时间。若 timeout 设置为 0 ,则无超时时间
374
- * @param {Function} 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
375
- * @return {Promise<number>} <br/>
376
- * 该接口返回 requestId,用户可使用该 requestId 调用 cancelRequest 接口取消请求
315
+ * 关闭本地麦克风, 停止采集音频流
316
+ * @returns {Promise<void>}
377
317
  *
378
318
  * @example
379
319
  * const roomEngine = new TUIRoomEngine();
380
- * const requestId = roomEngine.openRemoteDeviceByAdmin({
381
- * userId: 'user_1234',
382
- * device: TUIMediaDevice.kMicrophone //请求的设备为麦克风
383
- * timeout: 0,
384
- * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
385
- * switch (requestCallbackType) {
386
- * case TUIRequestCallbackType.kRequestAccepted:
387
- * // 请求被接受
388
- * break;
389
- * case TUIRequestCallbackType.kRequestRejected:
390
- * // 请求被拒绝
391
- * break;
392
- * case TUIRequestCallbackType.kRequestCancelled:
393
- * // 请求已取消
394
- * break;
395
- * case TUIRequestCallbackType.kRequestTimeout:
396
- * // 请求超时
397
- * break;
398
- * case TUIRequestCallbackType.kRequestError:
399
- * // 请求错误
400
- * break;
401
- * default:
402
- * break;
403
- * }
404
- * },
405
- * });
320
+ * await roomEngine.closeLocalMicrophone();
406
321
  */
407
- openRemoteDeviceByAdmin(options: {
408
- userId: string;
409
- device: TUIMediaDevice;
410
- timeout: number;
411
- requestCallback?: (callbackInfo: TUIRequestCallback) => void;
412
- }): Promise<TUIRequest>;
322
+ closeLocalMicrophone(): Promise<void>;
413
323
  /**
414
- * 参会者向主持人申请打开设备
324
+ * 设置本地视频流的编码参数
325
+ * @param {object} options
326
+ * @param {TUIVideoQuality} options.quality
415
327
  *
416
- * @param {object} options 请求远端用户打开摄像头的参数
417
- * @param {TUIMediaDevice} options.device 请求的设备
418
- * @param {number} options.timeout 超时时间。若 timeout 设置为 0 ,则无超时时间
419
- * @param {Function} 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
420
- * @return {Promise<number>} <br/>
421
- * 该接口返回 requestId,用户可使用该 requestId 调用 cancelRequest 接口取消请求
328
+ * - 360p TUIVideoQuality.kVideoQuality_360p <br/>
329
+ * - 540p TUIVideoQuality.kVideoQuality_540p <br/>
330
+ * - 720p TUIVideoQuality.kVideoQuality_720p <br/>
331
+ * - 1080p TUIVideoQuality.kVideoQuality_1080p <br/>
332
+ *
333
+ * @returns {Promise<void>}
422
334
  *
423
335
  * @example
424
336
  * const roomEngine = new TUIRoomEngine();
425
- * const requestId = roomEngine.applyToAdminToOpenLocalDevice({
426
- * device: TUIMediaDevice.kMicrophone, //请求打开麦克风
427
- * timeout: 0,
428
- * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
429
- * switch (requestCallbackType) {
430
- * case TUIRequestCallbackType.kRequestAccepted:
431
- * // 请求被接受
432
- * break;
433
- * case TUIRequestCallbackType.kRequestRejected:
434
- * // 请求被拒绝
435
- * break;
436
- * case TUIRequestCallbackType.kRequestCancelled:
437
- * // 请求已取消
438
- * break;
439
- * case TUIRequestCallbackType.kRequestTimeout:
440
- * // 请求超时
441
- * break;
442
- * case TUIRequestCallbackType.kRequestError:
443
- * // 请求错误
444
- * break;
445
- * default:
446
- * break;
447
- * }
448
- * },
337
+ * await roomEngine.updateVideoQuality({
338
+ * quality: TUIVideoQuality.kVideoQuality_360p,
449
339
  * });
450
340
  */
451
- applyToAdminToOpenLocalDevice(options: {
452
- device: TUIMediaDevice;
453
- timeout: number;
454
- requestCallback?: (callbackInfo: TUIRequestCallback) => void;
455
- }): Promise<TUIRequest>;
341
+ updateVideoQuality(options: {
342
+ quality: TUIVideoQuality;
343
+ }): Promise<void>;
456
344
  /**
457
- * 关闭远端用户媒体设备
345
+ * 设置本地音频的参数<br/>
346
+ * @param {object} options 设置本地音频的参数
347
+ * @param {TUIAudioQuality} options.quality
348
+ *
349
+ * - TUIAudioQuality.kAudioProfileSpeech:语言模式;采样率:16k<br/>
350
+ * - TUIAudioQuality.kAudioProfileDefault:标准模式(或者默认模式);采样率:48k<br/>
351
+ * - TUIAudioQuality.kAudioProfileMusic:音乐模式;采样率:48k
458
352
  *
459
- * @param {object} options 关闭远端用户摄像头的参数
460
- * @param {string} options.userId 用户 Id
461
- * @param {TUIMediaDevice} options.device 用户 Id
462
353
  * @returns {Promise<void>}
463
354
  *
464
355
  * @example
465
356
  * const roomEngine = new TUIRoomEngine();
466
- * await roomEngine.closeRemoteDeviceByAdmin({
467
- * userId: 'user_1234',
468
- * device: TUIMediaDevice.kMicrophone, //关闭掉麦克风
357
+ * await roomEngine.updateAudioQuality({
358
+ * quality: TUIAudioQuality.kAudioProfileSpeech,
469
359
  * });
470
360
  */
471
- closeRemoteDeviceByAdmin(options: {
472
- userId: string;
473
- device: TUIMediaDevice;
361
+ updateAudioQuality(options: {
362
+ quality: TUIAudioQuality;
474
363
  }): Promise<void>;
475
364
  /**
476
- * 邀请其他人上麦
477
- * @param {object} options 邀请其他人上麦的参数
478
- * @param {number} options.seatIndex 麦位 index, roomType 为 TUIRoomType.kConference 时无需关心,填 -1 即可
479
- * @param {string} options.userId 用户 Id
480
- * @param {number} options.timeout 超时时间,设置为 0 时,无超时时间
481
- * @param {Function} options.requestCallback 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
482
- * @returns {Promise<number>} <br/>
483
- * 该接口返回 requestId,用户可使用该 requestId 调用 cancelRequest 接口取消请求
365
+ * 开始向远端推本地视频流
366
+ * @returns {Promise<void>}
484
367
  *
485
368
  * @example
486
369
  * const roomEngine = new TUIRoomEngine();
487
- * const requestId = await roomEngine.takeUserOnSeatByAdmin({
488
- * seatIndex: 0,
489
- * userId: 'user_1234',
490
- * timeout: 0,
491
- * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
492
- * switch (requestCallbackType) {
493
- * case TUIRequestCallbackType.kRequestAccepted:
494
- * // 请求被接受
495
- * break;
496
- * case TUIRequestCallbackType.kRequestRejected:
497
- * // 请求被拒绝
498
- * break;
499
- * case TUIRequestCallbackType.kRequestCancelled:
500
- * // 请求已取消
501
- * break;
502
- * case TUIRequestCallbackType.kRequestTimeout:
503
- * // 请求超时
504
- * break;
505
- * case TUIRequestCallbackType.kRequestError:
506
- * // 请求错误
507
- * break;
508
- * default:
509
- * break;
510
- * }
511
- * },
512
- * });
513
- */
514
- takeUserOnSeatByAdmin(options: {
515
- seatIndex: number;
516
- userId: string;
517
- timeout: number;
518
- requestCallback?: (callbackInfo: TUIRequestCallback) => void;
519
- }): Promise<TUIRequest>;
520
- /**
521
- * 要求其他人下麦
522
- * @param {object} options 要求其他人下麦的参数
523
- * @param {number} options.seatIndex 麦位 index
524
- * @param {string} options.userId 用户 Id
525
- * @returns {Promise<void>}
526
- *
527
- * @example
528
- * const roomEngine = new TUIRoomEngine();
529
- * await roomEngine.kickUserOffSeatByAdmin({
530
- * seatIndex: 0,
531
- * userId: 'user_1234',
532
- * });
533
- */
534
- kickUserOffSeatByAdmin(options: {
535
- seatIndex: number;
536
- userId: string;
537
- }): Promise<void>;
538
- /**
539
- * 取消已经发出的请求
540
- * @param {object} options 取消已经发出请求的参数
541
- * @param {string} options.requestId 请求 Id
542
- * @returns {Promise<void>}
543
- *
544
- * @example
545
- * const roomEngine = new TUIRoomEngine();
546
- * await roomEngine.cancelRequest({
547
- * requestId: '', // 请使用实际 requestId
548
- * });
549
- */
550
- cancelRequest(options: {
551
- requestId: string;
552
- }): Promise<void>;
553
- /**
554
- * 回复远端用户的请求
555
- * @param {object} options 回复远端用户的请求的参数
556
- * @param {string} options.requestId 请求 Id
557
- * @param {boolean} options.agree 是否同意
558
- * @returns {Promise<void>}
559
- *
560
- * @example
561
- * const roomEngine = new TUIRoomEngine();
562
- *
563
- * // 同意远端的请求
564
- * await roomEngine.responseRemoteRequest({
565
- * requestId: '', // 请使用实际 requestId
566
- * agree: true,
567
- * });
568
- *
569
- * // 拒绝远端的请求
570
- * await roomEngine.responseRemoteRequest({
571
- * requestId: '', // 请使用实际 requestId
572
- * agree: false,
573
- * });
574
- */
575
- responseRemoteRequest(options: {
576
- requestId: string;
577
- agree: boolean;
578
- }): Promise<any>;
579
- /**
580
- * 设置本地流的渲染位置
581
- * @param {object} options 设置本地流的渲染位置的参数
582
- * @param {TUIVideoStreamType} options.streamType 本地流类型
583
- * @param {string} options.view streamType 对应的流渲染的 div 元素的 id
584
- * @returns {Promise<void>}
585
- *
586
- * @example
587
- * const roomEngine = new TUIRoomEngine();
588
- *
589
- * // 设置本地摄像头流的播放区域为 id 是 'preview-camera' 的 div 元素
590
- * roomEngine.setLocalVideoView({
591
- * streamType: TUIVideoStreamType.kCameraStream,
592
- * view: 'preview-camera',
593
- * });
594
- *
595
- * // 设置本地屏幕分享流的播放区域为 id 是 'preview-screen' 的 div 元素
596
- * roomEngine.setLocalVideoView({
597
- * streamType: TUIVideoStreamType.kScreenStream,
598
- * view: 'preview-screen',
599
- * });
600
- */
601
- setLocalVideoView(options: {
602
- streamType: TUIVideoStreamType;
603
- view: string;
604
- }): void;
605
- /**
606
- * 打开本地摄像头,开始视频流采集
607
- * @param {object} options 设置本地流的参数
608
- * @returns {Promise<void>}
609
- * @example
610
- * const roomEngine = new TUIRoomEngine();
611
- * await roomEngine.openLocalCamera();
612
- */
613
- openLocalCamera(): Promise<void>;
614
- /**
615
- * 关闭本地摄像头
616
- * @returns {Promise<void>}
617
- *
618
- * @example
619
- * const roomEngine = new TUIRoomEngine();
620
- * await roomEngine.closeLocalCamera();
621
- */
622
- closeLocalCamera(): Promise<void>;
623
- /**
624
- * 打开麦克风
625
- * @returns {Promise<void>}
626
- *
627
- * @example
628
- * const roomEngine = new TUIRoomEngine();
629
- * await roomEngine.openLocalMicrophone();
630
- */
631
- openLocalMicrophone(): Promise<void>;
632
- /**
633
- * 关闭本地麦克风, 停止采集音频流
634
- * @returns {Promise<void>}
635
- *
636
- * @example
637
- * const roomEngine = new TUIRoomEngine();
638
- * await roomEngine.closeLocalMicrophone();
639
- */
640
- closeLocalMicrophone(): Promise<void>;
641
- /**
642
- * 设置本地视频流的编码参数
643
- * @param {object} options
644
- * @param {TUIVideoQuality} options.quality
645
- *
646
- * - 360p TUIVideoQuality.kVideoQuality_360p <br/>
647
- * - 540p TUIVideoQuality.kVideoQuality_540p <br/>
648
- * - 720p TUIVideoQuality.kVideoQuality_720p <br/>
649
- * - 1080p TUIVideoQuality.kVideoQuality_1080p <br/>
650
- *
651
- * @returns {Promise<void>}
652
- *
653
- * @example
654
- * const roomEngine = new TUIRoomEngine();
655
- * await roomEngine.updateVideoQuality({
656
- * quality: TUIVideoQuality.kVideoQuality_360p,
657
- * });
658
- */
659
- updateVideoQuality(options: {
660
- quality: TUIVideoQuality;
661
- }): Promise<void>;
662
- /**
663
- * 设置本地音频的参数<br/>
664
- * @param {object} options 设置本地音频的参数
665
- * @param {TUIAudioQuality} options.quality
666
- *
667
- * - TUIAudioQuality.kAudioProfileSpeech:语言模式;采样率:16k<br/>
668
- * - TUIAudioQuality.kAudioProfileDefault:标准模式(或者默认模式);采样率:48k<br/>
669
- * - TUIAudioQuality.kAudioProfileMusic:音乐模式;采样率:48k
670
- *
671
- * @returns {Promise<void>}
672
- *
673
- * @example
674
- * const roomEngine = new TUIRoomEngine();
675
- * await roomEngine.updateAudioQuality({
676
- * quality: TUIAudioQuality.kAudioProfileSpeech,
677
- * });
678
- */
679
- updateAudioQuality(options: {
680
- quality: TUIAudioQuality;
681
- }): Promise<void>;
682
- /**
683
- * 开始向远端推本地视频流
684
- * @returns {Promise<void>}
685
- *
686
- * @example
687
- * const roomEngine = new TUIRoomEngine();
688
- * await roomEngine.startPushLocalVideo();
370
+ * await roomEngine.startPushLocalVideo();
689
371
  */
690
372
  startPushLocalVideo(): Promise<void>;
691
373
  /**
@@ -808,59 +490,167 @@ declare class TUIRoomEngine {
808
490
  isMute: boolean;
809
491
  }): Promise<void>;
810
492
  /**
811
- * 改变用户的角色,仅主持人可调用该接口
812
- * @param {object} options 改变用户的角色,仅主持人可调用该接口的参数
493
+ * 请求远端用户打开媒体设备
494
+ * @param {object} options 请求远端用户打开摄像头的参数
813
495
  * @param {string} options.userId 用户 Id
814
- * @param {TUIRole} options.userRole 用户角色
815
- * @returns {Promise<void>}
496
+ * @param {TUIMediaDevice} options.device 请求的设备
497
+ * @param {number} options.timeout 超时时间。若 timeout 设置为 0 ,则无超时时间
498
+ * @param {Function} 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
499
+ * @return {Promise<number>} <br/>
500
+ * 该接口返回 requestId,用户可使用该 requestId 调用 cancelRequest 接口取消请求
816
501
  *
817
502
  * @example
818
503
  * const roomEngine = new TUIRoomEngine();
819
- * // 将房间移交给用户 user_1234
820
- * await roomEngine.changeUserRole({
821
- * userId: 'user_1234',
822
- * userRole: TUIRole.kRoomOwner,
823
- * });
824
- *
825
- * // 将用户 user_1234 设置为房间管理员
826
- * await roomEngine.changeUserRole({
827
- * userId: 'user_1234',
828
- * userRole: TUIRole.kAdministrator,
504
+ * const requestId = roomEngine.openRemoteDeviceByAdmin({
505
+ * userId: 'user_1234',
506
+ * device: TUIMediaDevice.kMicrophone //请求的设备为麦克风
507
+ * timeout: 0,
508
+ * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
509
+ * switch (requestCallbackType) {
510
+ * case TUIRequestCallbackType.kRequestAccepted:
511
+ * // 请求被接受
512
+ * break;
513
+ * case TUIRequestCallbackType.kRequestRejected:
514
+ * // 请求被拒绝
515
+ * break;
516
+ * case TUIRequestCallbackType.kRequestCancelled:
517
+ * // 请求已取消
518
+ * break;
519
+ * case TUIRequestCallbackType.kRequestTimeout:
520
+ * // 请求超时
521
+ * break;
522
+ * case TUIRequestCallbackType.kRequestError:
523
+ * // 请求错误
524
+ * break;
525
+ * default:
526
+ * break;
527
+ * }
528
+ * },
829
529
  * });
830
530
  */
831
- changeUserRole(options: {
531
+ openRemoteDeviceByAdmin(options: {
832
532
  userId: string;
833
- userRole: TUIRole;
834
- }): Promise<void>;
533
+ device: TUIMediaDevice;
534
+ timeout: number;
535
+ requestCallback?: (callbackInfo: TUIRequestCallback) => void;
536
+ }): Promise<TUIRequest>;
835
537
  /**
836
- * 将用户踢出房间,仅主持人和管理员可调用该接口
837
- * @param {object} options
838
- * @param {string} options.userId 用户 Id
839
- * @returns {Promise<void>}
538
+ * 参会者向主持人申请打开设备
539
+ *
540
+ * @param {object} options 请求远端用户打开摄像头的参数
541
+ * @param {TUIMediaDevice} options.device 请求的设备
542
+ * @param {number} options.timeout 超时时间。若 timeout 设置为 0 ,则无超时时间
543
+ * @param {Function} 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
544
+ * @return {Promise<number>} <br/>
545
+ * 该接口返回 requestId,用户可使用该 requestId 调用 cancelRequest 接口取消请求
840
546
  *
841
547
  * @example
842
548
  * const roomEngine = new TUIRoomEngine();
843
- * await roomEngine.kickRemoteUserOutOfRoom({
844
- * userId: 'user_1234',
845
- * });
846
- */
847
- kickRemoteUserOutOfRoom(options: {
848
- userId: string;
849
- }): Promise<void>;
850
- /**
851
- * 所有用户的设备是否允许被使用
852
- * @param {object} options 所有用户的设备是否被允许使用所用到的参数
853
- * @param {TUIMediaDevice} options.device 被禁用的设备
854
- * @param {boolean} options.isDisable 是否被禁用
855
- * @returns {Promise<void>}
856
- * @example
857
- * // Example 1: 禁止所有用户打开麦克风
858
- * await roomEngine.disableDeviceForAllUserByAdmin({
859
- * device: TUIMediaDevice.kMicrophone,
860
- * isDisable: true,
861
- * })
862
- * // Example 2: 允许所有用户打开麦克风
863
- * await roomEngine.disableDeviceForAllUserByAdmin({
549
+ * const requestId = roomEngine.applyToAdminToOpenLocalDevice({
550
+ * device: TUIMediaDevice.kMicrophone, //请求打开麦克风
551
+ * timeout: 0,
552
+ * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
553
+ * switch (requestCallbackType) {
554
+ * case TUIRequestCallbackType.kRequestAccepted:
555
+ * // 请求被接受
556
+ * break;
557
+ * case TUIRequestCallbackType.kRequestRejected:
558
+ * // 请求被拒绝
559
+ * break;
560
+ * case TUIRequestCallbackType.kRequestCancelled:
561
+ * // 请求已取消
562
+ * break;
563
+ * case TUIRequestCallbackType.kRequestTimeout:
564
+ * // 请求超时
565
+ * break;
566
+ * case TUIRequestCallbackType.kRequestError:
567
+ * // 请求错误
568
+ * break;
569
+ * default:
570
+ * break;
571
+ * }
572
+ * },
573
+ * });
574
+ */
575
+ applyToAdminToOpenLocalDevice(options: {
576
+ device: TUIMediaDevice;
577
+ timeout: number;
578
+ requestCallback?: (callbackInfo: TUIRequestCallback) => void;
579
+ }): Promise<TUIRequest>;
580
+ /**
581
+ * 关闭远端用户媒体设备
582
+ *
583
+ * @param {object} options 关闭远端用户摄像头的参数
584
+ * @param {string} options.userId 用户 Id
585
+ * @param {TUIMediaDevice} options.device 用户 Id
586
+ * @returns {Promise<void>}
587
+ *
588
+ * @example
589
+ * const roomEngine = new TUIRoomEngine();
590
+ * await roomEngine.closeRemoteDeviceByAdmin({
591
+ * userId: 'user_1234',
592
+ * device: TUIMediaDevice.kMicrophone, //关闭掉麦克风
593
+ * });
594
+ */
595
+ closeRemoteDeviceByAdmin(options: {
596
+ userId: string;
597
+ device: TUIMediaDevice;
598
+ }): Promise<void>;
599
+ /**
600
+ * 取消已经发出的请求
601
+ * @param {object} options 取消已经发出请求的参数
602
+ * @param {string} options.requestId 请求 Id
603
+ * @returns {Promise<void>}
604
+ *
605
+ * @example
606
+ * const roomEngine = new TUIRoomEngine();
607
+ * await roomEngine.cancelRequest({
608
+ * requestId: '', // 请使用实际 requestId
609
+ * });
610
+ */
611
+ cancelRequest(options: {
612
+ requestId: string;
613
+ }): Promise<void>;
614
+ /**
615
+ * 回复远端用户的请求
616
+ * @param {object} options 回复远端用户的请求的参数
617
+ * @param {string} options.requestId 请求 Id
618
+ * @param {boolean} options.agree 是否同意
619
+ * @returns {Promise<void>}
620
+ *
621
+ * @example
622
+ * const roomEngine = new TUIRoomEngine();
623
+ *
624
+ * // 同意远端的请求
625
+ * await roomEngine.responseRemoteRequest({
626
+ * requestId: '', // 请使用实际 requestId
627
+ * agree: true,
628
+ * });
629
+ *
630
+ * // 拒绝远端的请求
631
+ * await roomEngine.responseRemoteRequest({
632
+ * requestId: '', // 请使用实际 requestId
633
+ * agree: false,
634
+ * });
635
+ */
636
+ responseRemoteRequest(options: {
637
+ requestId: string;
638
+ agree: boolean;
639
+ }): Promise<any>;
640
+ /**
641
+ * 禁止/允许所有用户打开媒体设备(此接口对于房主和管理员无效)
642
+ * @param {object} options
643
+ * @param {TUIMediaDevice} options.device 操作的媒体设备
644
+ * @param {boolean} options.isDisable 是否被禁止
645
+ * @returns {Promise<void>}
646
+ * @example
647
+ * // Example 1: 禁止所有用户打开麦克风
648
+ * await roomEngine.disableDeviceForAllUserByAdmin({
649
+ * device: TUIMediaDevice.kMicrophone,
650
+ * isDisable: true,
651
+ * })
652
+ * // Example 2: 允许所有用户打开麦克风
653
+ * await roomEngine.disableDeviceForAllUserByAdmin({
864
654
  * device: TUIMediaDevice.kMicrophone,
865
655
  * isDisable: false,
866
656
  * })
@@ -870,9 +660,9 @@ declare class TUIRoomEngine {
870
660
  isDisable: boolean;
871
661
  }): Promise<void>;
872
662
  /**
873
- * 所有用户的是否允许发消息
874
- * @param {object} options 所有用户是否被允许发消息所用到的参数
875
- * @param {boolean} options.isDisable 是否被允许使用
663
+ * 禁止/允许所有用户发送消息
664
+ * @param {object} options
665
+ * @param {boolean} options.isDisable 是否被禁止
876
666
  * @returns {Promise<void>}
877
667
  * @example
878
668
  * await roomEngine.disableSendingMessageForAllUser({
@@ -884,10 +674,10 @@ declare class TUIRoomEngine {
884
674
  isDisable: boolean;
885
675
  }): Promise<void>;
886
676
  /**
887
- * 特定用户是否被允许发消息
888
- * @param {object} options 特定用户的是否被允许发消息所用到的参数
889
- * @param {string} options.userId 特定用户的 userId
890
- * @param {boolean} options.isDisable 是否被允许使用
677
+ * 禁止/允许某个用户发送消息
678
+ * @param {object} options
679
+ * @param {string} options.userId 用户的 Id
680
+ * @param {boolean} options.isDisable 是否被禁止
891
681
  * @returns {Promise<void>}
892
682
  * @example
893
683
  * await roomEngine.disableSendingMessageByAdmin({
@@ -899,6 +689,220 @@ declare class TUIRoomEngine {
899
689
  userId: string;
900
690
  isDisable: boolean;
901
691
  }): Promise<void>;
692
+ /**
693
+ * 改变用户的角色,仅主持人可调用该接口
694
+ * @param {object} options 改变用户的角色,仅主持人可调用该接口的参数
695
+ * @param {string} options.userId 用户 Id
696
+ * @param {TUIRole} options.userRole 用户角色
697
+ * @returns {Promise<void>}
698
+ *
699
+ * @example
700
+ * const roomEngine = new TUIRoomEngine();
701
+ * // 将房间移交给用户 user_1234
702
+ * await roomEngine.changeUserRole({
703
+ * userId: 'user_1234',
704
+ * userRole: TUIRole.kRoomOwner,
705
+ * });
706
+ *
707
+ * // 将用户 user_1234 设置为房间管理员
708
+ * await roomEngine.changeUserRole({
709
+ * userId: 'user_1234',
710
+ * userRole: TUIRole.kAdministrator,
711
+ * });
712
+ */
713
+ changeUserRole(options: {
714
+ userId: string;
715
+ userRole: TUIRole;
716
+ }): Promise<void>;
717
+ /**
718
+ * 将用户踢出房间,仅主持人和管理员可调用该接口
719
+ * @param {object} options
720
+ * @param {string} options.userId 用户 Id
721
+ * @returns {Promise<void>}
722
+ *
723
+ * @example
724
+ * const roomEngine = new TUIRoomEngine();
725
+ * await roomEngine.kickRemoteUserOutOfRoom({
726
+ * userId: 'user_1234',
727
+ * });
728
+ */
729
+ kickRemoteUserOutOfRoom(options: {
730
+ userId: string;
731
+ }): Promise<void>;
732
+ /**
733
+ * 设置房间麦位最大值
734
+ * @param {object} options
735
+ * @param {number} options.maxSeatCount 设置房间麦位最大值<br/>
736
+ * roomType 为 TUIRoomType.kConference (教育及会议场景) 时,maxSeatCount 值不做限制;
737
+ * roomType 为 TUIRoomType.kLivingRoom (直播场景) 时,maxSeatCount 最大限制为 16;
738
+ * @returns {Promise<void>}
739
+ * const roomEngine = new TUIRoomEngine();
740
+ * await roomEngine.createRoom({ roomId: '12345' });
741
+ * await roomEngine.setMaxSeatCount({ maxSeatCount: 16 })
742
+ */
743
+ setMaxSeatCount(options: {
744
+ maxSeatCount: number;
745
+ }): Promise<void>;
746
+ /**
747
+ * 获取麦位列表
748
+ * @returns {Promise<TUISeatInfo[]>}
749
+ *
750
+ * @example
751
+ * const roomEngine = new TUIRoomEngine();
752
+ * const seatList = await roomEngine.getSeatList();
753
+ * ;
754
+ */
755
+ getSeatList(): Promise<TUISeatInfo[]>;
756
+ /**
757
+ * 麦下用户可调用 takeSeat 成为麦上用户,仅麦上用户可发布本地音视频流。<br/>
758
+ * 主持人&管理员调用 takeSeat 成功后即为麦上用户。<br/>
759
+ * roomInfo.SpeechMode 为 TUISpeechMode.kFreeToSpeak 模式时,普通用户调用 takeSeat 方法成功后即为麦上用户。<br/>
760
+ * roomInfo.SpeechMode 为 TUISpeechMode.kSpeakAfterTakingSeat 模式时,普通用户调用 takeSeat 方法需要等待主持人/管理员的同意后成为麦上用户。<br/>
761
+ * 麦上用户的变更通过 TUIRoomEvents.onSeatListChanged 通知所有用户。<br/>
762
+ * @param {object} options 获取麦位的参数
763
+ * @param {number} options.seatIndex 麦位 index, 无麦位序号时设置为 -1
764
+ * @param {number} options.timeout 超时时间。若 timeout 设置为 0,则无超时时间
765
+ * @param {Function} options.requestCallback 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
766
+ * @returns {Promise<number>} <br/>
767
+ * 该接口返回 request 结构体,当 request.requestId 不为 '' 时,用户可调用 cancelRequest 接口取消上麦请求。
768
+ *
769
+ * @example
770
+ * const roomEngine = new TUIRoomEngine();
771
+ *
772
+ * // 情景一:主持人/管理员上麦
773
+ * // 情景二:roomInfo.SpeechMode 为 TUISpeechMode.kFreeToSpeak 模式时,普通用户上麦
774
+ * await roomEngine.takeSeat({
775
+ * seatIndex: -1,
776
+ * timeout: 0,
777
+ * });
778
+ *
779
+ * // 情景三:roomInfo.SpeechMode 为 TUISpeechMode.kSpeakAfterTakingSeat 模式时,普通用户上麦
780
+ * const request = await roomEngine.instance?.takeSeat({
781
+ * seatIndex: -1,
782
+ * timeout: 0,
783
+ * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
784
+ * switch (requestCallbackType) {
785
+ * case TUIRequestCallbackType.kRequestAccepted:
786
+ * // 请求被接受
787
+ * break;
788
+ * case TUIRequestCallbackType.kRequestRejected:
789
+ * // 请求被拒绝
790
+ * break;
791
+ * case TUIRequestCallbackType.kRequestCancelled:
792
+ * // 请求已取消
793
+ * break;
794
+ * case TUIRequestCallbackType.kRequestTimeout:
795
+ * // 请求超时
796
+ * break;
797
+ * case TUIRequestCallbackType.kRequestError:
798
+ * // 请求错误
799
+ * break;
800
+ * default:
801
+ * break;
802
+ * }
803
+ * },
804
+ * });
805
+ */
806
+ takeSeat(options: {
807
+ seatIndex: number;
808
+ timeout: number;
809
+ requestCallback?: (callbackInfo: TUIRequestCallback) => void;
810
+ }): Promise<TUIRequest>;
811
+ /**
812
+ * 离开麦位
813
+ * @returns {Promise<void>}
814
+ *
815
+ * @example
816
+ * const roomEngine = new TUIRoomEngine();
817
+ * await roomEngine.leaveSeat();
818
+ */
819
+ leaveSeat(): Promise<void>;
820
+ /**
821
+ * 邀请其他人上麦(仅房间主持人和管理员可调用此方法)
822
+ * @param {object} options 邀请其他人上麦的参数
823
+ * @param {number} options.seatIndex 麦位 index, roomType 为 TUIRoomType.kConference 时无需关心,填 -1 即可
824
+ * @param {string} options.userId 用户 Id
825
+ * @param {number} options.timeout 超时时间,设置为 0 时,无超时时间
826
+ * @param {Function} options.requestCallback 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
827
+ * @returns {Promise<number>} <br/>
828
+ * 该接口返回 requestId,用户可使用该 requestId 调用 cancelRequest 接口取消请求
829
+ *
830
+ * @example
831
+ * const roomEngine = new TUIRoomEngine();
832
+ * const requestId = await roomEngine.takeUserOnSeatByAdmin({
833
+ * seatIndex: 0,
834
+ * userId: 'user_1234',
835
+ * timeout: 0,
836
+ * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
837
+ * switch (requestCallbackType) {
838
+ * case TUIRequestCallbackType.kRequestAccepted:
839
+ * // 请求被接受
840
+ * break;
841
+ * case TUIRequestCallbackType.kRequestRejected:
842
+ * // 请求被拒绝
843
+ * break;
844
+ * case TUIRequestCallbackType.kRequestCancelled:
845
+ * // 请求已取消
846
+ * break;
847
+ * case TUIRequestCallbackType.kRequestTimeout:
848
+ * // 请求超时
849
+ * break;
850
+ * case TUIRequestCallbackType.kRequestError:
851
+ * // 请求错误
852
+ * break;
853
+ * default:
854
+ * break;
855
+ * }
856
+ * },
857
+ * });
858
+ */
859
+ takeUserOnSeatByAdmin(options: {
860
+ seatIndex: number;
861
+ userId: string;
862
+ timeout: number;
863
+ requestCallback?: (callbackInfo: TUIRequestCallback) => void;
864
+ }): Promise<TUIRequest>;
865
+ /**
866
+ * 将其他人踢下麦(仅房间主持人和管理员可调用此方法)
867
+ * @param {object} options 要求其他人下麦的参数
868
+ * @param {number} options.seatIndex 麦位 index
869
+ * @param {string} options.userId 用户 Id
870
+ * @returns {Promise<void>}
871
+ *
872
+ * @example
873
+ * const roomEngine = new TUIRoomEngine();
874
+ * await roomEngine.kickUserOffSeatByAdmin({
875
+ * seatIndex: 0,
876
+ * userId: 'user_1234',
877
+ * });
878
+ */
879
+ kickUserOffSeatByAdmin(options: {
880
+ seatIndex: number;
881
+ userId: string;
882
+ }): Promise<void>;
883
+ /**
884
+ * 锁定某个麦位状态(仅房间主持人和管理员可调用此方法)
885
+ *
886
+ * @param {object} options 锁定某个麦位需要的参数
887
+ * @param {number} options.seatIndex 麦位索引
888
+ * @param {TUISeatLockParams} options.lockParams 锁麦参数
889
+ * @returns {Promise<void>}
890
+ *
891
+ * @example
892
+ * const roomEngine = new TUIRoomEngine();
893
+ * await roomEngine.lockSeatByAdmin({
894
+ * seatIndex: -1,
895
+ * lockParams: {
896
+ * lockSeat: true,
897
+ * lockVideo: true,
898
+ * lockAudio: true,
899
+ * }
900
+ * });
901
+ */
902
+ lockSeatByAdmin(options: {
903
+ seatIndex: number;
904
+ lockParams: TUISeatLockParams;
905
+ }): Promise<any>;
902
906
  /**
903
907
  * 发送文本消息
904
908
  * @param {object} options