@vkontakte/calls-sdk 2.8.11-dev.0d771d48.0 → 2.8.11-dev.0e6b88ca.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 +60 -35
  2. package/abstract/BaseApi.d.ts +4 -7
  3. package/abstract/BaseSignaling.d.ts +5 -7
  4. package/calls-sdk.cjs.js +11 -11
  5. package/calls-sdk.esm.js +6338 -5320
  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 +48 -12
  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/{Logger.d.ts → StatsLogger.d.ts} +3 -13
  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 +13 -14
  49. package/default/Api.d.ts +11 -13
  50. package/default/Signaling.d.ts +39 -45
  51. package/default/SignalingTransport.d.ts +68 -0
  52. package/enums/HangupType.d.ts +1 -0
  53. package/enums/SignalingNotification.d.ts +3 -1
  54. package/enums/TransportState.d.ts +10 -0
  55. package/enums/TransportTopology.d.ts +5 -0
  56. package/package.json +1 -1
  57. package/static/Capabilities.d.ts +5 -0
  58. package/static/Debug.d.ts +27 -8
  59. package/static/External.d.ts +146 -75
  60. package/static/Params.d.ts +113 -82
  61. package/static/ParticipantConnectionStatusUtils.d.ts +16 -0
  62. package/static/Utils.d.ts +3 -2
  63. package/static/WebRTCUtils.d.ts +6 -4
  64. package/types/Capabilities.d.ts +24 -0
  65. package/types/Conversation.d.ts +1 -1
  66. package/types/FastStart.d.ts +1 -0
  67. package/types/Participant.d.ts +12 -1
  68. package/types/ParticipantLayout.d.ts +33 -0
  69. package/types/PushData.d.ts +3 -0
  70. package/types/SignalingMessage.d.ts +19 -2
  71. package/types/Statistics.d.ts +1 -1
  72. package/types/WebTransport.d.ts +4 -0
  73. package/utils/DebugStorage.d.ts +100 -1
  74. package/classes/stat/EventMetricsService.d.ts +0 -9
  75. package/static/ConversationDebugLogger.d.ts +0 -13
@@ -100,6 +100,12 @@ export type ParamsObject = {
100
100
  waitMessageDelay: number;
101
101
  /** @hidden */
102
102
  waitAnotherTabDelay: number;
103
+ /**
104
+ * Время ожидания подключения вызываемого абонента к signaling, ms.
105
+ * Положительное значение включает ограничение.
106
+ * Если параметр не задан или равен 0, ожидание не ограничивается.
107
+ */
108
+ calleeUnavailableWaitingTime?: number;
103
109
  /** @hidden */
104
110
  debugLog: boolean;
105
111
  /** @hidden */
@@ -256,13 +262,6 @@ export type ParamsObject = {
256
262
  perfStatReportEnabled: boolean;
257
263
  /** @hidden */
258
264
  callStatReportEnabled: boolean;
259
- /**
260
- * Включает логирование событий продуктовой статистики.
261
- *
262
- * _По умолчанию: `false`_
263
- * @hidden
264
- */
265
- clientEventsLoggingEnabled: boolean;
266
265
  /**
267
266
  * Отдавать приоритет кодеку H264 для исходящего видео
268
267
  *
@@ -306,6 +305,12 @@ export type ParamsObject = {
306
305
  * _По умолчанию: `30`_
307
306
  */
308
307
  videoTracksCount: number;
308
+ /**
309
+ * Минимальный интервал отправки diff для requestDisplayLayout в миллисекундах.
310
+ *
311
+ * _По умолчанию: `250`_
312
+ */
313
+ requestDisplayLayoutThrottleMs: number;
309
314
  /** @hidden */
310
315
  movieShare: boolean;
311
316
  /** @hidden */
@@ -343,7 +348,14 @@ export type ParamsObject = {
343
348
  * Включает поддержку режима WAIT_FOR_ADMIN в звонках.
344
349
  */
345
350
  waitForAdminInGroupCalls: boolean;
351
+ /**
352
+ * Включает поддержку удержания звонка
353
+ */
346
354
  hold: boolean;
355
+ /**
356
+ * Максимальное количество параллельных звонков
357
+ */
358
+ maxParallelCalls: number;
347
359
  /**
348
360
  * Индекс участника для первого chunk'а который придет при установке соединения с сервером
349
361
  *
@@ -487,107 +499,113 @@ export type ParamsObject = {
487
499
  * _По умолчанию: `false`_
488
500
  */
489
501
  transparentAudio: boolean;
502
+ /**
503
+ * Включить получение обновлений состояния медийной сессии участников
504
+ *
505
+ * _По умолчанию: `false`_
506
+ */
507
+ enableSessionStateUpdates: boolean;
490
508
  /**
491
509
  * Получен локальный стрим с камеры/микрофона
492
510
  */
493
- onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
511
+ onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
494
512
  /**
495
513
  * Локальный стрим изменился
496
514
  */
497
- onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind) => void;
515
+ onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind, conversationId?: string) => void;
498
516
  /**
499
517
  * Локальный стрим с экрана добавлен/удалён
500
518
  */
501
- onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
519
+ onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
502
520
  /**
503
521
  * Локальный стрим вимоджи добавлен/удалён
504
522
  */
505
- onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
523
+ onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
506
524
  /**
507
525
  * Произошла ошибка вимоджи
508
526
  */
509
- onVmojiError?: (error: VmojiError) => void;
527
+ onVmojiError?: (error: VmojiError, conversationId?: string) => void;
510
528
  /**
511
529
  * Изменился статус локального соединения
512
530
  */
513
- onLocalStatus?: (status: ParticipantStatus) => void;
531
+ onLocalStatus?: (status: ParticipantStatus, conversationId?: string) => void;
514
532
  /**
515
533
  * Получен стрим собеседника.
516
534
  * Если сервер закончил стримить собеседника, вместо стрима будет передан null
517
535
  */
518
- onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
536
+ onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
519
537
  /**
520
538
  * Cтрим собеседника приостановлен/возобновлен.
521
539
  */
522
- onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean) => void;
540
+ onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean, conversationId?: string) => void;
523
541
  /**
524
542
  * Получен стрим с экрана собеседника.
525
543
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
526
544
  */
527
- onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
545
+ onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
528
546
  /**
529
547
  * Получен стрим вимоджи собеседника.
530
548
  * Если сервер закончил стримить вимоджи собеседника, вместо стрима будет передан null
531
549
  */
532
- onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
550
+ onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
533
551
  /**
534
552
  * Получен стрим трансляция или мувик от собеседника.
535
553
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
536
554
  */
537
- onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
555
+ onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
538
556
  /**
539
557
  * Получен собственный стрим трансляция или мувик.
540
558
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
541
559
  */
542
- onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
560
+ onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
543
561
  /**
544
562
  * Получено обновление стрима или лайва от собеседника.
545
563
  */
546
- onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
564
+ onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
547
565
  /**
548
566
  * Получено обновление собственного стрима или лайва.
549
567
  */
550
- onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
568
+ onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
551
569
  /**
552
570
  * Начат звонок
553
571
  */
554
- onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms) => void;
572
+ onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms, conversationId?: string) => void;
555
573
  /**
556
574
  * Начальный список участников для постраничного звонка
557
575
  */
558
- onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk) => void;
576
+ onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk, conversationId?: string) => void;
559
577
  /**
560
578
  * Изменились данные стрима собеседника
561
579
  */
562
- onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null) => void;
580
+ onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
563
581
  /**
564
582
  * Изменились данные стрима собеседника
565
583
  */
566
- onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings) => void;
584
+ onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, conversationId?: string) => void;
567
585
  /**
568
586
  * Полученны данные по стримам (лайв/мувик) от собеседника
569
587
  */
570
- onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
588
+ onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
571
589
  /**
572
590
  * Полученны данные по остановленным стримам (лайв/мувик) от собеседника
573
591
  */
574
- onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
592
+ onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
575
593
  /**
576
594
  * Полученны данные по собственным стримам (лайв/мувик)
577
595
  */
578
- onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
596
+ onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
579
597
  /**
580
598
  * Полученны данные по собственным остановленным стримам (лайв/мувик)
581
599
  */
582
- onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
600
+ onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
583
601
  /**
584
602
  * Добавили участника
585
603
  */
586
- onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
604
+ onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
587
605
  /**
588
606
  * Участник присоединился к звонку
589
607
  */
590
- onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers) => void;
608
+ onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers, conversationId?: string) => void;
591
609
  /**
592
610
  * Получены данные по изменению локальных состояний со стороны админа
593
611
  * Например, принудительно опущена рука
@@ -595,19 +613,19 @@ export type ParamsObject = {
595
613
  * @param participantState Полный объект состояния участника, полученный от SDK/сервера.
596
614
  * @param global `true` – действие глобальное (для всех участников), `false` – действие локальное (только у текущего пользователя).
597
615
  */
598
- onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean) => void;
616
+ onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean, conversationId?: string) => void;
599
617
  /**
600
618
  * Изменились данные состояний собеседника
601
619
  */
602
- onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null) => void;
620
+ onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
603
621
  /**
604
622
  * Изменились данные состояний нескольких собеседников
605
623
  */
606
- onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId) => void;
624
+ onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId, conversationId?: string) => void;
607
625
  /**
608
626
  * Изменился статус соединения собеседников
609
627
  */
610
- onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any) => void;
628
+ onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any, conversationId?: string) => void;
611
629
  /**
612
630
  * Разрешения на доступы были запрошены в браузере
613
631
  */
@@ -619,56 +637,56 @@ export type ParamsObject = {
619
637
  /**
620
638
  * Пользователь отключился от звонка
621
639
  */
622
- onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
640
+ onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
623
641
  /**
624
642
  * Изменилось состояние звонка
625
643
  */
626
- onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData) => void;
644
+ onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData, conversationId?: string) => void;
627
645
  /**
628
646
  * Изменилось состояние камеры или микрофона
629
647
  */
630
- onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean) => void;
648
+ onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean, conversationId?: string) => void;
631
649
  /**
632
650
  * Изменились состояния устройств пользователя или разрешения включать камеру/микрофон
633
651
  */
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;
652
+ 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
653
  /**
636
654
  * Изменились роли собеседника в звонке
637
655
  */
638
- onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean) => void;
656
+ onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
639
657
  /**
640
658
  * Изменились свои роли в звонке
641
659
  */
642
- onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean) => void;
660
+ onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
643
661
  /**
644
662
  * Закрепляет/открепляет собеседника для всех
645
663
  */
646
- onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null) => void;
664
+ onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null, conversationId?: string) => void;
647
665
  /**
648
666
  * Закрепляет/открепляет текущего пользователя у других собеседников
649
667
  */
650
- onLocalPin?: (unpin: boolean) => void;
668
+ onLocalPin?: (unpin: boolean, conversationId?: string) => void;
651
669
  /**
652
670
  * Изменились опции звонка
653
671
  */
654
- onOptionsChanged?: (options: ConversationOption[]) => void;
655
- onRateNeeded?: Function;
672
+ onOptionsChanged?: (options: ConversationOption[], conversationId?: string) => void;
673
+ onRateNeeded?: (conversationId?: string) => void;
656
674
  /**
657
675
  * Изменился говорящий в звонке
658
676
  */
659
- onSpeakerChanged?: (userId: ExternalParticipantId) => void;
677
+ onSpeakerChanged?: (userId: ExternalParticipantId, conversationId?: string) => void;
660
678
  /**
661
679
  * Громкость собеседников
662
680
  */
663
681
  onVolumesDetected?: (volumes: {
664
682
  uid: ExternalParticipantId;
665
683
  volume: number;
666
- }[]) => void;
684
+ }[], conversationId?: string) => void;
667
685
  /**
668
686
  * Громкость своего микрофона
669
687
  */
670
688
  onLocalVolume?: (volume: number, isMicEnabled: boolean) => void;
671
- onJoinStatus?: Function;
689
+ onJoinStatus?: (available: boolean, chatId: string, conversationId?: string) => void;
672
690
  /**
673
691
  * Звонок был завершен
674
692
  */
@@ -676,12 +694,12 @@ export type ParamsObject = {
676
694
  /**
677
695
  * Входящий звонок был принят мной
678
696
  */
679
- onCallAccepted?: () => void;
697
+ onCallAccepted?: (conversationId?: string) => void;
680
698
  /**
681
699
  * Исходящий звонок был принят кем-то
682
700
  * @param userId
683
701
  */
684
- onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities) => void;
702
+ onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities, conversationId?: string) => void;
685
703
  /**
686
704
  * Список устройств изменился
687
705
  */
@@ -695,32 +713,28 @@ export type ParamsObject = {
695
713
  * Требуется обновление токена
696
714
  */
697
715
  onTokenExpired?: () => void;
698
- /**
699
- * Клиент устарел и требует обновления
700
- */
701
- onObsoleteClient?: () => void;
702
716
  /**
703
717
  * Получено сообщение чата
704
718
  */
705
- onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean) => void;
719
+ onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
706
720
  /**
707
721
  * Получены данные от собеседника
708
722
  */
709
- onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean) => void;
723
+ onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
710
724
  /**
711
725
  * Начата трансляция/запись звонка
712
726
  */
713
- onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null) => void;
727
+ onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null, conversationId?: string) => void;
714
728
  /**
715
729
  * Закончена трансляция/запись звонка
716
730
  */
717
- onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null) => void;
731
+ onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null, conversationId?: string) => void;
718
732
  /**
719
733
  * Состояние своей сети
720
734
  *
721
735
  * @param rating Оценка качества соединения от 0 до 1
722
736
  */
723
- onLocalNetworkStatusChanged?: (rating: number) => void;
737
+ onLocalNetworkStatusChanged?: (rating: number, conversationId?: string) => void;
724
738
  /**
725
739
  * Состояние сети участников
726
740
  *
@@ -729,11 +743,17 @@ export type ParamsObject = {
729
743
  onNetworkStatusChanged?: (status: {
730
744
  uid: ExternalParticipantId;
731
745
  rating: number;
732
- }[]) => void;
746
+ }[], conversationId?: string) => void;
733
747
  /**
734
748
  * Получено отладочное сообщение. Работает только при выключенном режиме отладки
735
749
  */
736
750
  onDebugMessage?: (type: DebugMessageType, ...args: any[]) => void;
751
+ /**
752
+ * Получено отладочное сообщение с контекстом звонка. Работает только при выключенном режиме отладки
753
+ */
754
+ onDebugMessageWithContext?: (type: DebugMessageType, context: {
755
+ conversationId: string | null;
756
+ }, ...args: any[]) => void;
737
757
  /**
738
758
  * Статистика звонка
739
759
  */
@@ -751,74 +771,74 @@ export type ParamsObject = {
751
771
  * @param addedParticipantIds Некоторое количество участников, добавленных в зал
752
772
  * @param removedParticipantIds Некоторое количество участников, убранных из зала
753
773
  */
754
- onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[]) => void;
774
+ onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[], conversationId?: string) => void;
755
775
  /**
756
776
  * Получен микшированный аудио стрим.
757
777
  * @hidden
758
778
  * @param stream стрим от WebRTC
759
779
  */
760
- onRemoteMixedAudioStream?: (stream: MediaStream) => void;
780
+ onRemoteMixedAudioStream?: (stream: MediaStream, conversationId?: string) => void;
761
781
  /**
762
782
  * Получена новая ссылка на звонок
763
783
  * @param joinLink токен присоединения к звонку
764
784
  */
765
- onJoinLinkChanged?: (joinLink: string) => void;
785
+ onJoinLinkChanged?: (joinLink: string, conversationId?: string) => void;
766
786
  /**
767
787
  * Получено обновление списка сессионных залов
768
788
  * @param updates список обновлений по залам
769
789
  */
770
- onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>) => void;
790
+ onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>, conversationId?: string) => void;
771
791
  /**
772
792
  * Получено обновление сессионных зало
773
793
  * @param eventTypes список событий
774
794
  * @param roomId номер сессионного зала
775
795
  * @param room сессионный зал
776
796
  */
777
- onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null) => void;
797
+ onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null, conversationId?: string) => void;
778
798
  /**
779
799
  * Получение обновление списка участников в сессионном зале
780
800
  * @param update обновление списка участников
781
801
  */
782
- onRoomParticipantsUpdated?: (update: RoomParticipantUpdate) => void;
802
+ onRoomParticipantsUpdated?: (update: RoomParticipantUpdate, conversationId?: string) => void;
783
803
  /**
784
804
  * Получение информации о смене зала
785
805
  * @param roomId номер сессионного зала
786
806
  */
787
- onRoomSwitched?: (roomId: number | null) => void;
807
+ onRoomSwitched?: (roomId: number | null, conversationId?: string) => void;
788
808
  /**
789
809
  * Установить id сессионного зала на старте звонка
790
810
  * @param roomId номер сессионного зала
791
811
  */
792
- onRoomStart?: (roomId: number | null) => void;
812
+ onRoomStart?: (roomId: number | null, conversationId?: string) => void;
793
813
  /**
794
814
  * Получены новые реакции в звонке
795
815
  * @param feedback массив с реакциями
796
816
  */
797
- onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null) => void;
817
+ onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null, conversationId?: string) => void;
798
818
  /**
799
819
  * Изменился список ролей, которым доступны ConversationFeatures
800
820
  *
801
821
  * @param featuresPerRole Объект вида ключ: ConversationFeature = значение: UserRole[]
802
822
  * (если ключ фичи отсутствует, или в ролях пустой массив, считаем фичу доступной для всех пользователей)
803
823
  */
804
- onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole) => void;
824
+ onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole, conversationId?: string) => void;
805
825
  /**
806
826
  * Изменился Vmoji-аватар пользователя
807
827
  * @param externalId Id пользователя, у которого изменился аватар
808
828
  */
809
- onParticipantVmojiUpdate?: (externalId: ExternalParticipantId) => void;
829
+ onParticipantVmojiUpdate?: (externalId: ExternalParticipantId, conversationId?: string) => void;
810
830
  /**
811
831
  * Начата текстовая расшифровка звонка
812
832
  * @param initiatorId Id пользователя, запустившего расшифровку звонка
813
833
  * @param movieId Id расшифровки
814
834
  * @param roomId Id комнаты
815
835
  */
816
- onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null) => void;
836
+ onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null, conversationId?: string) => void;
817
837
  /**
818
838
  * Закончена текстовая расшифровка звонка
819
839
  * @param roomId Id комнаты
820
840
  */
821
- onAsrStopped?: (roomId: number | null) => void;
841
+ onAsrStopped?: (roomId: number | null, conversationId?: string) => void;
822
842
  /**
823
843
  * Получена расшифровка речи
824
844
  * @param id Id пользователя, произнесшего реплику
@@ -826,47 +846,53 @@ export type ParamsObject = {
826
846
  * @param timestamp Время расшифровки
827
847
  * @param duration Длительность реплики в расшифровке
828
848
  */
829
- onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number) => void;
849
+ onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number, conversationId?: string) => void;
830
850
  /**
831
851
  * Установка начальных параметров текстовой расшифровки звонка. (Используется при входе в звонок/ смене комнаты)
832
852
  * @param data Начальная информация по ASR
833
853
  * @param roomId Id Комнаты
834
854
  */
835
- onAsrSet?: (data: IAsrData | null, roomId: number | null) => void;
855
+ onAsrSet?: (data: IAsrData | null, roomId: number | null, conversationId?: string) => void;
836
856
  /**
837
857
  * Админ начал/остановил совместное использование стороннего web-приложения
838
858
  * @param userId id участника-админа
839
859
  * @param sharedUrl url страницы
840
860
  */
841
- onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId) => void;
861
+ onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId, conversationId?: string) => void;
842
862
  /**
843
863
  * Изменился id участника (деанонимизация)
844
864
  * @param prevId
845
865
  * @param newId
846
866
  */
847
- onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId) => void;
867
+ onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId, conversationId?: string) => void;
848
868
  /**
849
869
  * Предложение включить режим автоматического отключения приёма видео
850
870
  * в плохой сети
851
871
  * @param bandwidth текущая полоса пропускания, kbps
852
872
  */
853
- onVideoSuspendSuggest?: (bandwidth: number) => void;
873
+ onVideoSuspendSuggest?: (bandwidth: number, conversationId?: string) => void;
854
874
  /**
855
875
  * Одобрено повышение пользователя в зале ожидания/зале в режиме Audience
856
876
  *
857
877
  * @param adminParticipantId админ, одобривший повышение
858
878
  */
859
- onPromotionApproved?: (adminParticipantId: ExternalParticipantId) => void;
879
+ onPromotionApproved?: (adminParticipantId: ExternalParticipantId, conversationId?: string) => void;
860
880
  /**
861
881
  * Участник повышен/разжалован в зале ожидания/зале в режиме Audience
862
882
  *
863
883
  * @param demoted участник разжалован
864
884
  */
865
- onPromoted?: (demoted: boolean) => void;
885
+ onPromoted?: (demoted: boolean, conversationId?: string) => void;
886
+ /**
887
+ * Активным установлен определенный звонок
888
+ *
889
+ * @param conversationId ID звонка
890
+ */
891
+ onCallActive?: (conversationId: string) => void;
866
892
  /**
867
893
  * Собеседник подключился к сигналлингу
868
894
  */
869
- onPeerRegistered?: () => void;
895
+ onPeerRegistered?: (conversationId?: string) => void;
870
896
  };
871
897
  export default abstract class Params {
872
898
  private static _params;
@@ -917,6 +943,7 @@ export default abstract class Params {
917
943
  static get waitResponseDelay(): number;
918
944
  static get waitMessageDelay(): number;
919
945
  static get waitAnotherTabDelay(): number;
946
+ static get calleeUnavailableWaitingTime(): number | undefined;
920
947
  static get debugLog(): boolean;
921
948
  static get forceRelayPolicy(): boolean;
922
949
  static set forceRelayPolicy(value: boolean);
@@ -956,7 +983,6 @@ export default abstract class Params {
956
983
  static get networkStatisticsInterval(): number;
957
984
  static get perfStatReportEnabled(): boolean;
958
985
  static get callStatReportEnabled(): boolean;
959
- static get clientEventsLoggingEnabled(): boolean;
960
986
  static get enableLogPerfStatReport(): boolean;
961
987
  static get asrDataChannel(): boolean;
962
988
  static get consumerScreenDataChannelPacketSize(): number;
@@ -967,6 +993,7 @@ export default abstract class Params {
967
993
  static get audioNack(): boolean;
968
994
  static get movieShare(): boolean;
969
995
  static get videoTracksCount(): number;
996
+ static get requestDisplayLayoutThrottleMs(): number;
970
997
  static get breakVideoPayloadTypes(): boolean;
971
998
  static get useCallsToContacts(): boolean;
972
999
  static get useParticipantListChunk(): boolean;
@@ -975,6 +1002,7 @@ export default abstract class Params {
975
1002
  static get addParticipant(): boolean;
976
1003
  static get waitForAdminInGroupCalls(): boolean;
977
1004
  static get hold(): boolean;
1005
+ static get maxParallelCalls(): number;
978
1006
  static get participantListChunkInitIndex(): number;
979
1007
  static get participantListChunkInitCount(): number | null;
980
1008
  static get filterObservers(): boolean;
@@ -998,6 +1026,7 @@ export default abstract class Params {
998
1026
  static get webtransport(): boolean;
999
1027
  static get webtransportFF(): boolean;
1000
1028
  static get transparentAudio(): boolean;
1029
+ static get enableSessionStateUpdates(): boolean;
1001
1030
  static toJSON(): {
1002
1031
  apiKey: string;
1003
1032
  apiEnv: string;
@@ -1014,6 +1043,7 @@ export default abstract class Params {
1014
1043
  screenShareCongestionControl: boolean;
1015
1044
  screenShareCongestionControlThreshold: number;
1016
1045
  videoTracksCount: number;
1046
+ requestDisplayLayoutThrottleMs: number;
1017
1047
  asrDataChannel: boolean;
1018
1048
  videoMaxHeight: number;
1019
1049
  videoMaxWidth: number;
@@ -1032,5 +1062,6 @@ export default abstract class Params {
1032
1062
  webtransport: boolean;
1033
1063
  webtransportFF: boolean;
1034
1064
  transparentAudio: boolean;
1065
+ enableSessionStateUpdates: boolean;
1035
1066
  };
1036
1067
  }
@@ -0,0 +1,16 @@
1
+ import { ParticipantConnectionStatus, ParticipantSessionState } from '../types/Participant';
2
+ import { ParticipantStatus } from './External';
3
+ import TransportState from '../enums/TransportState';
4
+ type StatusTransition = {
5
+ status: ParticipantStatus;
6
+ shouldNotify: boolean;
7
+ };
8
+ declare namespace ParticipantConnectionStatusUtils {
9
+ function create(status?: Partial<ParticipantConnectionStatus> | null): ParticipantConnectionStatus;
10
+ function fromTransportState(state?: TransportState): ParticipantStatus | null;
11
+ function computeEffective(status: ParticipantConnectionStatus): ParticipantStatus;
12
+ function setSessionState(status: ParticipantConnectionStatus, sessionState?: ParticipantSessionState, sessionStateConnectedBySpeaker?: boolean): StatusTransition;
13
+ function setTransport(status: ParticipantConnectionStatus, transport: ParticipantStatus): StatusTransition;
14
+ function setSessionStateApplicable(status: ParticipantConnectionStatus, applicable: boolean): StatusTransition;
15
+ }
16
+ export default ParticipantConnectionStatusUtils;
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
  *