@vkontakte/calls-sdk 2.8.11-dev.229c3704.0 → 2.8.11-dev.2bb68767.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.
Files changed (75) hide show
  1. package/CallsSDK.d.ts +66 -27
  2. package/abstract/BaseApi.d.ts +3 -4
  3. package/abstract/BaseSignaling.d.ts +5 -7
  4. package/calls-sdk.cjs.js +11 -11
  5. package/calls-sdk.esm.js +6247 -5339
  6. package/classes/AudioFix.d.ts +5 -1
  7. package/classes/AudioOutput.d.ts +5 -1
  8. package/classes/CallRegistry.d.ts +26 -0
  9. package/classes/Conversation.d.ts +33 -9
  10. package/classes/ConversationResponseValidator.d.ts +3 -0
  11. package/classes/DebugInfo.d.ts +3 -0
  12. package/classes/DisplayLayoutRequester.d.ts +39 -0
  13. package/classes/ExternalIdCache.d.ts +19 -0
  14. package/classes/MediaSource.d.ts +12 -1
  15. package/classes/ParticipantIdRegistry.d.ts +3 -0
  16. package/classes/ProducerCommandSerializationService.d.ts +3 -0
  17. package/classes/SignalingActor.d.ts +3 -1
  18. package/classes/SpeakerDetector.d.ts +2 -1
  19. package/classes/SpecListener.d.ts +10 -1
  20. package/classes/StatsLogger.d.ts +29 -0
  21. package/classes/VideoEffectsFpsLimiter.d.ts +3 -0
  22. package/classes/asr/AsrReceiver.d.ts +3 -1
  23. package/classes/codec/LibVPxDecoder.d.ts +3 -0
  24. package/classes/codec/LibVPxEncoder.d.ts +3 -1
  25. package/classes/codec/WebCodecsDecoder.d.ts +3 -0
  26. package/classes/codec/WebCodecsEncoder.d.ts +3 -1
  27. package/classes/codec/WorkerBase.d.ts +7 -0
  28. package/classes/screenshare/BaseStreamBuilder.d.ts +4 -1
  29. package/classes/screenshare/CanvasRenderer.d.ts +3 -1
  30. package/classes/screenshare/ScreenCaptureReceiver.d.ts +7 -1
  31. package/classes/screenshare/ScreenCaptureSender.d.ts +5 -1
  32. package/classes/screenshare/ScreenCongestionControl.d.ts +3 -1
  33. package/classes/screenshare/StreamBuilder.d.ts +5 -1
  34. package/classes/screenshare/TrackGeneratorRenderer.d.ts +3 -1
  35. package/classes/screenshare/WebmBuilder.d.ts +3 -1
  36. package/classes/stat/CodecStatsAggregator.d.ts +7 -7
  37. package/classes/stat/ConversationStats.d.ts +21 -0
  38. package/classes/stat/StatAggregator.d.ts +6 -6
  39. package/classes/stat/StatFirstMediaReceived.d.ts +6 -2
  40. package/classes/stat/StatPings.d.ts +9 -9
  41. package/classes/stat/StatScreenShareFirstFrame.d.ts +3 -1
  42. package/classes/stat/StatSignalingCommands.d.ts +8 -8
  43. package/classes/transport/BaseTransport.d.ts +1 -1
  44. package/classes/transport/DirectStatReporter.d.ts +3 -1
  45. package/classes/transport/DirectTransport.d.ts +12 -1
  46. package/classes/transport/PerfStatReporter.d.ts +5 -1
  47. package/classes/transport/ServerTransport.d.ts +10 -2
  48. package/classes/transport/Transport.d.ts +16 -14
  49. package/default/Api.d.ts +8 -11
  50. package/default/Signaling.d.ts +39 -45
  51. package/default/SignalingTransport.d.ts +68 -0
  52. package/enums/HangupType.d.ts +2 -1
  53. package/enums/SignalingNotification.d.ts +2 -1
  54. package/enums/TransportState.d.ts +10 -0
  55. package/enums/TransportTopology.d.ts +5 -0
  56. package/package.json +2 -2
  57. package/static/Capabilities.d.ts +5 -0
  58. package/static/Debug.d.ts +27 -8
  59. package/static/External.d.ts +146 -71
  60. package/static/Params.d.ts +111 -71
  61. package/static/Utils.d.ts +3 -2
  62. package/static/WebRTCUtils.d.ts +6 -4
  63. package/types/Capabilities.d.ts +24 -0
  64. package/types/Conversation.d.ts +1 -1
  65. package/types/FastStart.d.ts +1 -0
  66. package/types/Participant.d.ts +1 -0
  67. package/types/ParticipantLayout.d.ts +33 -0
  68. package/types/PerfStatReporter.d.ts +2 -1
  69. package/types/SignalingMessage.d.ts +10 -1
  70. package/types/Statistics.d.ts +1 -1
  71. package/types/WebTransport.d.ts +4 -0
  72. package/utils/DebugStorage.d.ts +100 -1
  73. package/classes/Logger.d.ts +0 -36
  74. package/classes/stat/EventMetricsService.d.ts +0 -9
  75. package/static/ConversationDebugLogger.d.ts +0 -13
@@ -1,5 +1,5 @@
1
1
  import type { VideoEffects } from '@vkontakte/calls-video-effects';
2
- import type { EffectVoiceChange } from '@vkontakte/calls-audio-effects';
2
+ import type { EffectVoiceChange, VadControllerOptions, VadLib } from '@vkontakte/calls-audio-effects';
3
3
  import type * as Vmoji from '@vkontakte/calls-vmoji';
4
4
  import { IAsrData } from '../types/Asr';
5
5
  import { ConversationData } from '../types/Conversation';
@@ -188,6 +188,14 @@ export type ParamsObject = {
188
188
  * Можно установить позднее методом `setAudioEffects`
189
189
  */
190
190
  audioEffects: EffectVoiceChange | null;
191
+ /**
192
+ * Namespace библиотеки VAD из `@vkontakte/calls-audio-effects`.
193
+ *
194
+ * Можно установить методом `setVad`
195
+ */
196
+ vad: VadLib | null;
197
+ /** Настройки VAD (threshold, hangoverMs, enabled) */
198
+ vadOptions: VadControllerOptions;
191
199
  /**
192
200
  * Максимальная ширина видео в пикселях для видео эффекта
193
201
  *
@@ -306,6 +314,12 @@ export type ParamsObject = {
306
314
  * _По умолчанию: `30`_
307
315
  */
308
316
  videoTracksCount: number;
317
+ /**
318
+ * Минимальный интервал отправки diff для requestDisplayLayout в миллисекундах.
319
+ *
320
+ * _По умолчанию: `250`_
321
+ */
322
+ requestDisplayLayoutThrottleMs: number;
309
323
  /** @hidden */
310
324
  movieShare: boolean;
311
325
  /** @hidden */
@@ -343,7 +357,14 @@ export type ParamsObject = {
343
357
  * Включает поддержку режима WAIT_FOR_ADMIN в звонках.
344
358
  */
345
359
  waitForAdminInGroupCalls: boolean;
360
+ /**
361
+ * Включает поддержку удержания звонка
362
+ */
346
363
  hold: boolean;
364
+ /**
365
+ * Максимальное количество параллельных звонков
366
+ */
367
+ maxParallelCalls: number;
347
368
  /**
348
369
  * Индекс участника для первого chunk'а который придет при установке соединения с сервером
349
370
  *
@@ -490,104 +511,104 @@ export type ParamsObject = {
490
511
  /**
491
512
  * Получен локальный стрим с камеры/микрофона
492
513
  */
493
- onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
514
+ onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
494
515
  /**
495
516
  * Локальный стрим изменился
496
517
  */
497
- onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind) => void;
518
+ onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind, conversationId?: string) => void;
498
519
  /**
499
520
  * Локальный стрим с экрана добавлен/удалён
500
521
  */
501
- onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
522
+ onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
502
523
  /**
503
524
  * Локальный стрим вимоджи добавлен/удалён
504
525
  */
505
- onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
526
+ onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
506
527
  /**
507
528
  * Произошла ошибка вимоджи
508
529
  */
509
- onVmojiError?: (error: VmojiError) => void;
530
+ onVmojiError?: (error: VmojiError, conversationId?: string) => void;
510
531
  /**
511
532
  * Изменился статус локального соединения
512
533
  */
513
- onLocalStatus?: (status: ParticipantStatus) => void;
534
+ onLocalStatus?: (status: ParticipantStatus, conversationId?: string) => void;
514
535
  /**
515
536
  * Получен стрим собеседника.
516
537
  * Если сервер закончил стримить собеседника, вместо стрима будет передан null
517
538
  */
518
- onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
539
+ onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
519
540
  /**
520
541
  * Cтрим собеседника приостановлен/возобновлен.
521
542
  */
522
- onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean) => void;
543
+ onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean, conversationId?: string) => void;
523
544
  /**
524
545
  * Получен стрим с экрана собеседника.
525
546
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
526
547
  */
527
- onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
548
+ onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
528
549
  /**
529
550
  * Получен стрим вимоджи собеседника.
530
551
  * Если сервер закончил стримить вимоджи собеседника, вместо стрима будет передан null
531
552
  */
532
- onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
553
+ onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
533
554
  /**
534
555
  * Получен стрим трансляция или мувик от собеседника.
535
556
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
536
557
  */
537
- onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
558
+ onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
538
559
  /**
539
560
  * Получен собственный стрим трансляция или мувик.
540
561
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
541
562
  */
542
- onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
563
+ onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
543
564
  /**
544
565
  * Получено обновление стрима или лайва от собеседника.
545
566
  */
546
- onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
567
+ onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
547
568
  /**
548
569
  * Получено обновление собственного стрима или лайва.
549
570
  */
550
- onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
571
+ onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
551
572
  /**
552
573
  * Начат звонок
553
574
  */
554
- onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms) => void;
575
+ onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms, conversationId?: string) => void;
555
576
  /**
556
577
  * Начальный список участников для постраничного звонка
557
578
  */
558
- onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk) => void;
579
+ onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk, conversationId?: string) => void;
559
580
  /**
560
581
  * Изменились данные стрима собеседника
561
582
  */
562
- onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null) => void;
583
+ onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
563
584
  /**
564
585
  * Изменились данные стрима собеседника
565
586
  */
566
- onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings) => void;
587
+ onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, conversationId?: string) => void;
567
588
  /**
568
589
  * Полученны данные по стримам (лайв/мувик) от собеседника
569
590
  */
570
- onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
591
+ onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
571
592
  /**
572
593
  * Полученны данные по остановленным стримам (лайв/мувик) от собеседника
573
594
  */
574
- onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
595
+ onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
575
596
  /**
576
597
  * Полученны данные по собственным стримам (лайв/мувик)
577
598
  */
578
- onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
599
+ onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
579
600
  /**
580
601
  * Полученны данные по собственным остановленным стримам (лайв/мувик)
581
602
  */
582
- onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
603
+ onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
583
604
  /**
584
605
  * Добавили участника
585
606
  */
586
- onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
607
+ onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
587
608
  /**
588
609
  * Участник присоединился к звонку
589
610
  */
590
- onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers) => void;
611
+ onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers, conversationId?: string) => void;
591
612
  /**
592
613
  * Получены данные по изменению локальных состояний со стороны админа
593
614
  * Например, принудительно опущена рука
@@ -595,19 +616,19 @@ export type ParamsObject = {
595
616
  * @param participantState Полный объект состояния участника, полученный от SDK/сервера.
596
617
  * @param global `true` – действие глобальное (для всех участников), `false` – действие локальное (только у текущего пользователя).
597
618
  */
598
- onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean) => void;
619
+ onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean, conversationId?: string) => void;
599
620
  /**
600
621
  * Изменились данные состояний собеседника
601
622
  */
602
- onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null) => void;
623
+ onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
603
624
  /**
604
625
  * Изменились данные состояний нескольких собеседников
605
626
  */
606
- onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId) => void;
627
+ onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId, conversationId?: string) => void;
607
628
  /**
608
629
  * Изменился статус соединения собеседников
609
630
  */
610
- onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any) => void;
631
+ onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any, conversationId?: string) => void;
611
632
  /**
612
633
  * Разрешения на доступы были запрошены в браузере
613
634
  */
@@ -619,56 +640,56 @@ export type ParamsObject = {
619
640
  /**
620
641
  * Пользователь отключился от звонка
621
642
  */
622
- onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
643
+ onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
623
644
  /**
624
645
  * Изменилось состояние звонка
625
646
  */
626
- onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData) => void;
647
+ onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData, conversationId?: string) => void;
627
648
  /**
628
649
  * Изменилось состояние камеры или микрофона
629
650
  */
630
- onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean) => void;
651
+ onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean, conversationId?: string) => void;
631
652
  /**
632
653
  * Изменились состояния устройств пользователя или разрешения включать камеру/микрофон
633
654
  */
634
- onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalParticipantId | null, adminId: ExternalParticipantId | null, stateUpdated?: boolean, requestedMedia?: MediaOption[], roomId?: number | null) => void;
655
+ onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalParticipantId | null, adminId: ExternalParticipantId | null, stateUpdated?: boolean, requestedMedia?: MediaOption[], roomId?: number | null, conversationId?: string) => void;
635
656
  /**
636
657
  * Изменились роли собеседника в звонке
637
658
  */
638
- onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean) => void;
659
+ onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
639
660
  /**
640
661
  * Изменились свои роли в звонке
641
662
  */
642
- onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean) => void;
663
+ onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
643
664
  /**
644
665
  * Закрепляет/открепляет собеседника для всех
645
666
  */
646
- onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null) => void;
667
+ onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null, conversationId?: string) => void;
647
668
  /**
648
669
  * Закрепляет/открепляет текущего пользователя у других собеседников
649
670
  */
650
- onLocalPin?: (unpin: boolean) => void;
671
+ onLocalPin?: (unpin: boolean, conversationId?: string) => void;
651
672
  /**
652
673
  * Изменились опции звонка
653
674
  */
654
- onOptionsChanged?: (options: ConversationOption[]) => void;
655
- onRateNeeded?: Function;
675
+ onOptionsChanged?: (options: ConversationOption[], conversationId?: string) => void;
676
+ onRateNeeded?: (conversationId?: string) => void;
656
677
  /**
657
678
  * Изменился говорящий в звонке
658
679
  */
659
- onSpeakerChanged?: (userId: ExternalParticipantId) => void;
680
+ onSpeakerChanged?: (userId: ExternalParticipantId, conversationId?: string) => void;
660
681
  /**
661
682
  * Громкость собеседников
662
683
  */
663
684
  onVolumesDetected?: (volumes: {
664
685
  uid: ExternalParticipantId;
665
686
  volume: number;
666
- }[]) => void;
687
+ }[], conversationId?: string) => void;
667
688
  /**
668
689
  * Громкость своего микрофона
669
690
  */
670
691
  onLocalVolume?: (volume: number, isMicEnabled: boolean) => void;
671
- onJoinStatus?: Function;
692
+ onJoinStatus?: (available: boolean, chatId: string, conversationId?: string) => void;
672
693
  /**
673
694
  * Звонок был завершен
674
695
  */
@@ -676,12 +697,12 @@ export type ParamsObject = {
676
697
  /**
677
698
  * Входящий звонок был принят мной
678
699
  */
679
- onCallAccepted?: () => void;
700
+ onCallAccepted?: (conversationId?: string) => void;
680
701
  /**
681
702
  * Исходящий звонок был принят кем-то
682
703
  * @param userId
683
704
  */
684
- onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities) => void;
705
+ onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities, conversationId?: string) => void;
685
706
  /**
686
707
  * Список устройств изменился
687
708
  */
@@ -698,25 +719,25 @@ export type ParamsObject = {
698
719
  /**
699
720
  * Получено сообщение чата
700
721
  */
701
- onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean) => void;
722
+ onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
702
723
  /**
703
724
  * Получены данные от собеседника
704
725
  */
705
- onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean) => void;
726
+ onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
706
727
  /**
707
728
  * Начата трансляция/запись звонка
708
729
  */
709
- onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null) => void;
730
+ onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null, conversationId?: string) => void;
710
731
  /**
711
732
  * Закончена трансляция/запись звонка
712
733
  */
713
- onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null) => void;
734
+ onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null, conversationId?: string) => void;
714
735
  /**
715
736
  * Состояние своей сети
716
737
  *
717
738
  * @param rating Оценка качества соединения от 0 до 1
718
739
  */
719
- onLocalNetworkStatusChanged?: (rating: number) => void;
740
+ onLocalNetworkStatusChanged?: (rating: number, conversationId?: string) => void;
720
741
  /**
721
742
  * Состояние сети участников
722
743
  *
@@ -725,11 +746,17 @@ export type ParamsObject = {
725
746
  onNetworkStatusChanged?: (status: {
726
747
  uid: ExternalParticipantId;
727
748
  rating: number;
728
- }[]) => void;
749
+ }[], conversationId?: string) => void;
729
750
  /**
730
751
  * Получено отладочное сообщение. Работает только при выключенном режиме отладки
731
752
  */
732
753
  onDebugMessage?: (type: DebugMessageType, ...args: any[]) => void;
754
+ /**
755
+ * Получено отладочное сообщение с контекстом звонка. Работает только при выключенном режиме отладки
756
+ */
757
+ onDebugMessageWithContext?: (type: DebugMessageType, context: {
758
+ conversationId: string | null;
759
+ }, ...args: any[]) => void;
733
760
  /**
734
761
  * Статистика звонка
735
762
  */
@@ -747,74 +774,74 @@ export type ParamsObject = {
747
774
  * @param addedParticipantIds Некоторое количество участников, добавленных в зал
748
775
  * @param removedParticipantIds Некоторое количество участников, убранных из зала
749
776
  */
750
- onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[]) => void;
777
+ onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[], conversationId?: string) => void;
751
778
  /**
752
779
  * Получен микшированный аудио стрим.
753
780
  * @hidden
754
781
  * @param stream стрим от WebRTC
755
782
  */
756
- onRemoteMixedAudioStream?: (stream: MediaStream) => void;
783
+ onRemoteMixedAudioStream?: (stream: MediaStream, conversationId?: string) => void;
757
784
  /**
758
785
  * Получена новая ссылка на звонок
759
786
  * @param joinLink токен присоединения к звонку
760
787
  */
761
- onJoinLinkChanged?: (joinLink: string) => void;
788
+ onJoinLinkChanged?: (joinLink: string, conversationId?: string) => void;
762
789
  /**
763
790
  * Получено обновление списка сессионных залов
764
791
  * @param updates список обновлений по залам
765
792
  */
766
- onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>) => void;
793
+ onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>, conversationId?: string) => void;
767
794
  /**
768
795
  * Получено обновление сессионных зало
769
796
  * @param eventTypes список событий
770
797
  * @param roomId номер сессионного зала
771
798
  * @param room сессионный зал
772
799
  */
773
- onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null) => void;
800
+ onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null, conversationId?: string) => void;
774
801
  /**
775
802
  * Получение обновление списка участников в сессионном зале
776
803
  * @param update обновление списка участников
777
804
  */
778
- onRoomParticipantsUpdated?: (update: RoomParticipantUpdate) => void;
805
+ onRoomParticipantsUpdated?: (update: RoomParticipantUpdate, conversationId?: string) => void;
779
806
  /**
780
807
  * Получение информации о смене зала
781
808
  * @param roomId номер сессионного зала
782
809
  */
783
- onRoomSwitched?: (roomId: number | null) => void;
810
+ onRoomSwitched?: (roomId: number | null, conversationId?: string) => void;
784
811
  /**
785
812
  * Установить id сессионного зала на старте звонка
786
813
  * @param roomId номер сессионного зала
787
814
  */
788
- onRoomStart?: (roomId: number | null) => void;
815
+ onRoomStart?: (roomId: number | null, conversationId?: string) => void;
789
816
  /**
790
817
  * Получены новые реакции в звонке
791
818
  * @param feedback массив с реакциями
792
819
  */
793
- onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null) => void;
820
+ onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null, conversationId?: string) => void;
794
821
  /**
795
822
  * Изменился список ролей, которым доступны ConversationFeatures
796
823
  *
797
824
  * @param featuresPerRole Объект вида ключ: ConversationFeature = значение: UserRole[]
798
825
  * (если ключ фичи отсутствует, или в ролях пустой массив, считаем фичу доступной для всех пользователей)
799
826
  */
800
- onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole) => void;
827
+ onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole, conversationId?: string) => void;
801
828
  /**
802
829
  * Изменился Vmoji-аватар пользователя
803
830
  * @param externalId Id пользователя, у которого изменился аватар
804
831
  */
805
- onParticipantVmojiUpdate?: (externalId: ExternalParticipantId) => void;
832
+ onParticipantVmojiUpdate?: (externalId: ExternalParticipantId, conversationId?: string) => void;
806
833
  /**
807
834
  * Начата текстовая расшифровка звонка
808
835
  * @param initiatorId Id пользователя, запустившего расшифровку звонка
809
836
  * @param movieId Id расшифровки
810
837
  * @param roomId Id комнаты
811
838
  */
812
- onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null) => void;
839
+ onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null, conversationId?: string) => void;
813
840
  /**
814
841
  * Закончена текстовая расшифровка звонка
815
842
  * @param roomId Id комнаты
816
843
  */
817
- onAsrStopped?: (roomId: number | null) => void;
844
+ onAsrStopped?: (roomId: number | null, conversationId?: string) => void;
818
845
  /**
819
846
  * Получена расшифровка речи
820
847
  * @param id Id пользователя, произнесшего реплику
@@ -822,47 +849,53 @@ export type ParamsObject = {
822
849
  * @param timestamp Время расшифровки
823
850
  * @param duration Длительность реплики в расшифровке
824
851
  */
825
- onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number) => void;
852
+ onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number, conversationId?: string) => void;
826
853
  /**
827
854
  * Установка начальных параметров текстовой расшифровки звонка. (Используется при входе в звонок/ смене комнаты)
828
855
  * @param data Начальная информация по ASR
829
856
  * @param roomId Id Комнаты
830
857
  */
831
- onAsrSet?: (data: IAsrData | null, roomId: number | null) => void;
858
+ onAsrSet?: (data: IAsrData | null, roomId: number | null, conversationId?: string) => void;
832
859
  /**
833
860
  * Админ начал/остановил совместное использование стороннего web-приложения
834
861
  * @param userId id участника-админа
835
862
  * @param sharedUrl url страницы
836
863
  */
837
- onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId) => void;
864
+ onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId, conversationId?: string) => void;
838
865
  /**
839
866
  * Изменился id участника (деанонимизация)
840
867
  * @param prevId
841
868
  * @param newId
842
869
  */
843
- onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId) => void;
870
+ onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId, conversationId?: string) => void;
844
871
  /**
845
872
  * Предложение включить режим автоматического отключения приёма видео
846
873
  * в плохой сети
847
874
  * @param bandwidth текущая полоса пропускания, kbps
848
875
  */
849
- onVideoSuspendSuggest?: (bandwidth: number) => void;
876
+ onVideoSuspendSuggest?: (bandwidth: number, conversationId?: string) => void;
850
877
  /**
851
878
  * Одобрено повышение пользователя в зале ожидания/зале в режиме Audience
852
879
  *
853
880
  * @param adminParticipantId админ, одобривший повышение
854
881
  */
855
- onPromotionApproved?: (adminParticipantId: ExternalParticipantId) => void;
882
+ onPromotionApproved?: (adminParticipantId: ExternalParticipantId, conversationId?: string) => void;
856
883
  /**
857
884
  * Участник повышен/разжалован в зале ожидания/зале в режиме Audience
858
885
  *
859
886
  * @param demoted участник разжалован
860
887
  */
861
- onPromoted?: (demoted: boolean) => void;
888
+ onPromoted?: (demoted: boolean, conversationId?: string) => void;
889
+ /**
890
+ * Активным установлен определенный звонок
891
+ *
892
+ * @param conversationId ID звонка
893
+ */
894
+ onCallActive?: (conversationId: string) => void;
862
895
  /**
863
896
  * Собеседник подключился к сигналлингу
864
897
  */
865
- onPeerRegistered?: () => void;
898
+ onPeerRegistered?: (conversationId?: string) => void;
866
899
  };
867
900
  export default abstract class Params {
868
901
  private static _params;
@@ -929,6 +962,10 @@ export default abstract class Params {
929
962
  static get displaySurface(): DisplayCaptureSurfaceType;
930
963
  static get audioEffects(): EffectVoiceChange | null;
931
964
  static set audioEffects(value: EffectVoiceChange | null);
965
+ static get vad(): VadLib | null;
966
+ static set vad(value: VadLib | null);
967
+ static get vadOptions(): VadControllerOptions;
968
+ static set vadOptions(value: VadControllerOptions);
932
969
  static get videoEffects(): VideoEffects | null;
933
970
  static set videoEffects(value: VideoEffects | null);
934
971
  static get videoEffectMaxWidth(): number;
@@ -963,6 +1000,7 @@ export default abstract class Params {
963
1000
  static get audioNack(): boolean;
964
1001
  static get movieShare(): boolean;
965
1002
  static get videoTracksCount(): number;
1003
+ static get requestDisplayLayoutThrottleMs(): number;
966
1004
  static get breakVideoPayloadTypes(): boolean;
967
1005
  static get useCallsToContacts(): boolean;
968
1006
  static get useParticipantListChunk(): boolean;
@@ -971,6 +1009,7 @@ export default abstract class Params {
971
1009
  static get addParticipant(): boolean;
972
1010
  static get waitForAdminInGroupCalls(): boolean;
973
1011
  static get hold(): boolean;
1012
+ static get maxParallelCalls(): number;
974
1013
  static get participantListChunkInitIndex(): number;
975
1014
  static get participantListChunkInitCount(): number | null;
976
1015
  static get filterObservers(): boolean;
@@ -1010,6 +1049,7 @@ export default abstract class Params {
1010
1049
  screenShareCongestionControl: boolean;
1011
1050
  screenShareCongestionControlThreshold: number;
1012
1051
  videoTracksCount: number;
1052
+ requestDisplayLayoutThrottleMs: number;
1013
1053
  asrDataChannel: boolean;
1014
1054
  videoMaxHeight: number;
1015
1055
  videoMaxWidth: number;
package/static/Utils.d.ts CHANGED
@@ -3,6 +3,7 @@ import { ExternalParticipant, ExternalParticipantListMarker } from '../types/Ext
3
3
  import { CompositeUserId, OkUserId, Participant, ParticipantId, ParticipantStateMapped } from '../types/Participant';
4
4
  import SignalingMessage from '../types/SignalingMessage';
5
5
  import VideoSettings from '../types/VideoSettings';
6
+ import { type DebugLogger } from './Debug';
6
7
  export declare const PARAMETERS_SEPARATOR = ":";
7
8
  export declare const DEVICE_IDX_PARAMETER = "d";
8
9
  /** @hidden */
@@ -36,8 +37,8 @@ declare namespace Utils {
36
37
  function delay(time: number, { signal }?: {
37
38
  signal?: AbortSignal;
38
39
  }): Promise<void>;
39
- function applySettings(pc: RTCPeerConnection, videoSettings: VideoSettings, prevSettings: any): any;
40
- function applyVideoTrackSettings(videoSettings: VideoSettings, s: RTCRtpSender, track: MediaStreamTrack | null, prevSettings: any, retSettings: any): void;
40
+ function applySettings(pc: RTCPeerConnection, videoSettings: VideoSettings, prevSettings: any, debug?: DebugLogger): any;
41
+ function applyVideoTrackSettings(videoSettings: VideoSettings, s: RTCRtpSender, track: MediaStreamTrack | null, prevSettings: any, retSettings: any, debug?: DebugLogger): void;
41
42
  /**
42
43
  * Проверяет, есть ли в первом массиве хотя бы один элемент из второго массива
43
44
  * @param arr Где ищем
@@ -2,6 +2,8 @@
2
2
  * Вспомогательный плагин для работы с WebRTC
3
3
  */
4
4
  import { IVideoDimentions } from '../types/MediaSettings';
5
+ import type StatsLogger from '../classes/StatsLogger';
6
+ import { type DebugLogger } from './Debug';
5
7
  /**
6
8
  * Тип камеры мобильного устройства
7
9
  */
@@ -83,24 +85,24 @@ declare namespace WebRTCUtils {
83
85
  * @param needAudio Нужно ли аудио
84
86
  * @param needEmptyTracks Добавлять ли в стрим пустые треки для отключенного видео/аудио
85
87
  */
86
- function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean): Promise<MediaStream>;
88
+ function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
87
89
  /**
88
90
  * Запрашивает трансляцию экрана пользователя с опциональным захватом звука
89
91
  */
90
- function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean): Promise<MediaStream>;
92
+ function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
91
93
  /**
92
94
  * Запрашивает камеру пользователя
93
95
  *
94
96
  * @param deviceId ID устройства
95
97
  * @param resolution Размеры видео
96
98
  */
97
- function getUserVideo(deviceId?: string, resolution?: IVideoDimentions): Promise<MediaStream>;
99
+ function getUserVideo(deviceId?: string, resolution?: IVideoDimentions, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
98
100
  /**
99
101
  * Запрашивает микрофон пользователя
100
102
  *
101
103
  * @param deviceId ID устройства
102
104
  */
103
- function getUserAudio(deviceId?: string): Promise<MediaStream>;
105
+ function getUserAudio(deviceId?: string, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
104
106
  /**
105
107
  * Устанавливает размер видео в стриме
106
108
  *
@@ -0,0 +1,24 @@
1
+ export type TCapabilities = {
2
+ estimatedPerformanceIndex: number;
3
+ audioMix: boolean;
4
+ consumerUpdate: boolean;
5
+ producerNotificationDataChannelVersion: number;
6
+ producerCommandDataChannelVersion: number;
7
+ consumerScreenDataChannelVersion: number;
8
+ producerScreenDataChannelVersion: number;
9
+ asrDataChannelVersion: number;
10
+ animojiDataChannelVersion: number;
11
+ animojiBackendRender: boolean;
12
+ onDemandTracks: boolean;
13
+ unifiedPlan: boolean;
14
+ singleSession: boolean;
15
+ videoTracksCount: number;
16
+ red: boolean;
17
+ audioShare: boolean;
18
+ fastScreenShare: boolean;
19
+ videoSuspend: boolean;
20
+ simulcast: boolean;
21
+ consumerFastScreenShare: boolean;
22
+ consumerFastScreenShareQualityOnDemand: boolean;
23
+ transparentAudio: boolean;
24
+ };
@@ -1,4 +1,4 @@
1
- import { TransportTopology } from '../classes/transport/Transport';
1
+ import TransportTopology from '../enums/TransportTopology';
2
2
  import CallDirection from '../enums/CallDirection';
3
3
  import CallType from '../enums/CallType';
4
4
  import ConversationFeature from '../enums/ConversationFeature';
@@ -31,6 +31,7 @@ export interface FastStartParams {
31
31
  conversationId: string;
32
32
  internalParams: string;
33
33
  externalIds?: ExternalId[];
34
+ payload: string;
34
35
  opponentType: CallType;
35
36
  mediaOptions: MediaOption[];
36
37
  joiningAllowed?: boolean;
@@ -72,6 +72,7 @@ export interface Participant {
72
72
  clientType: string;
73
73
  roles: UserRole[];
74
74
  participantState: ParticipantStateMapped;
75
+ isOnHold?: boolean;
75
76
  networkRating: number;
76
77
  lastRequestedLayouts: {
77
78
  [key: StreamDescriptionString]: ParticipantLayout;