@vkontakte/calls-sdk 2.8.11-dev.c08ac4e9.0 → 2.8.11-dev.c0a05ac7.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 (67) hide show
  1. package/CallsSDK.d.ts +49 -23
  2. package/abstract/BaseApi.d.ts +2 -3
  3. package/abstract/BaseSignaling.d.ts +5 -7
  4. package/calls-sdk.cjs.js +11 -11
  5. package/calls-sdk.esm.js +5638 -5243
  6. package/classes/AudioFix.d.ts +5 -1
  7. package/classes/AudioOutput.d.ts +5 -1
  8. package/classes/CallRegistry.d.ts +22 -0
  9. package/classes/Conversation.d.ts +17 -6
  10. package/classes/DebugInfo.d.ts +3 -0
  11. package/classes/DisplayLayoutRequester.d.ts +8 -1
  12. package/classes/ExternalIdCache.d.ts +19 -0
  13. package/classes/MediaSource.d.ts +12 -1
  14. package/classes/ParticipantIdRegistry.d.ts +3 -0
  15. package/classes/ProducerCommandSerializationService.d.ts +3 -0
  16. package/classes/SignalingActor.d.ts +3 -1
  17. package/classes/SpeakerDetector.d.ts +2 -1
  18. package/classes/SpecListener.d.ts +7 -1
  19. package/classes/{Logger.d.ts → StatsLogger.d.ts} +3 -10
  20. package/classes/VideoEffectsFpsLimiter.d.ts +3 -0
  21. package/classes/asr/AsrReceiver.d.ts +3 -1
  22. package/classes/codec/LibVPxDecoder.d.ts +3 -0
  23. package/classes/codec/LibVPxEncoder.d.ts +3 -1
  24. package/classes/codec/WebCodecsDecoder.d.ts +3 -0
  25. package/classes/codec/WebCodecsEncoder.d.ts +3 -1
  26. package/classes/codec/WorkerBase.d.ts +5 -0
  27. package/classes/screenshare/BaseStreamBuilder.d.ts +4 -1
  28. package/classes/screenshare/CanvasRenderer.d.ts +3 -1
  29. package/classes/screenshare/ScreenCaptureReceiver.d.ts +7 -1
  30. package/classes/screenshare/ScreenCaptureSender.d.ts +5 -1
  31. package/classes/screenshare/ScreenCongestionControl.d.ts +3 -1
  32. package/classes/screenshare/StreamBuilder.d.ts +5 -1
  33. package/classes/screenshare/TrackGeneratorRenderer.d.ts +3 -1
  34. package/classes/screenshare/WebmBuilder.d.ts +3 -1
  35. package/classes/stat/CodecStatsAggregator.d.ts +7 -7
  36. package/classes/stat/ConversationStats.d.ts +21 -0
  37. package/classes/stat/StatAggregator.d.ts +6 -6
  38. package/classes/stat/StatFirstMediaReceived.d.ts +4 -1
  39. package/classes/stat/StatPings.d.ts +9 -9
  40. package/classes/stat/StatScreenShareFirstFrame.d.ts +3 -1
  41. package/classes/stat/StatSignalingCommands.d.ts +8 -8
  42. package/classes/transport/BaseTransport.d.ts +1 -1
  43. package/classes/transport/DirectStatReporter.d.ts +3 -1
  44. package/classes/transport/DirectTransport.d.ts +9 -1
  45. package/classes/transport/PerfStatReporter.d.ts +5 -1
  46. package/classes/transport/ServerTransport.d.ts +10 -2
  47. package/classes/transport/Transport.d.ts +11 -14
  48. package/default/Api.d.ts +3 -11
  49. package/default/Signaling.d.ts +13 -3
  50. package/enums/SignalingNotification.d.ts +2 -1
  51. package/enums/TransportState.d.ts +10 -0
  52. package/enums/TransportTopology.d.ts +5 -0
  53. package/package.json +1 -1
  54. package/static/Capabilities.d.ts +5 -0
  55. package/static/Debug.d.ts +27 -8
  56. package/static/External.d.ts +146 -71
  57. package/static/Params.d.ts +90 -70
  58. package/static/Utils.d.ts +3 -2
  59. package/static/WebRTCUtils.d.ts +6 -4
  60. package/types/Capabilities.d.ts +24 -0
  61. package/types/Conversation.d.ts +1 -1
  62. package/types/FastStart.d.ts +1 -0
  63. package/types/SignalingMessage.d.ts +8 -1
  64. package/types/Statistics.d.ts +1 -1
  65. package/utils/DebugStorage.d.ts +100 -1
  66. package/classes/stat/EventMetricsService.d.ts +0 -9
  67. package/static/ConversationDebugLogger.d.ts +0 -13
@@ -349,7 +349,14 @@ export type ParamsObject = {
349
349
  * Включает поддержку режима WAIT_FOR_ADMIN в звонках.
350
350
  */
351
351
  waitForAdminInGroupCalls: boolean;
352
+ /**
353
+ * Включает поддержку удержания звонка
354
+ */
352
355
  hold: boolean;
356
+ /**
357
+ * Максимальное количество параллельных звонков
358
+ */
359
+ maxParallelCalls: number;
353
360
  /**
354
361
  * Индекс участника для первого chunk'а который придет при установке соединения с сервером
355
362
  *
@@ -496,104 +503,104 @@ export type ParamsObject = {
496
503
  /**
497
504
  * Получен локальный стрим с камеры/микрофона
498
505
  */
499
- onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
506
+ onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
500
507
  /**
501
508
  * Локальный стрим изменился
502
509
  */
503
- onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind) => void;
510
+ onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind, conversationId?: string) => void;
504
511
  /**
505
512
  * Локальный стрим с экрана добавлен/удалён
506
513
  */
507
- onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
514
+ onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
508
515
  /**
509
516
  * Локальный стрим вимоджи добавлен/удалён
510
517
  */
511
- onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
518
+ onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
512
519
  /**
513
520
  * Произошла ошибка вимоджи
514
521
  */
515
- onVmojiError?: (error: VmojiError) => void;
522
+ onVmojiError?: (error: VmojiError, conversationId?: string) => void;
516
523
  /**
517
524
  * Изменился статус локального соединения
518
525
  */
519
- onLocalStatus?: (status: ParticipantStatus) => void;
526
+ onLocalStatus?: (status: ParticipantStatus, conversationId?: string) => void;
520
527
  /**
521
528
  * Получен стрим собеседника.
522
529
  * Если сервер закончил стримить собеседника, вместо стрима будет передан null
523
530
  */
524
- onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
531
+ onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
525
532
  /**
526
533
  * Cтрим собеседника приостановлен/возобновлен.
527
534
  */
528
- onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean) => void;
535
+ onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean, conversationId?: string) => void;
529
536
  /**
530
537
  * Получен стрим с экрана собеседника.
531
538
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
532
539
  */
533
- onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
540
+ onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
534
541
  /**
535
542
  * Получен стрим вимоджи собеседника.
536
543
  * Если сервер закончил стримить вимоджи собеседника, вместо стрима будет передан null
537
544
  */
538
- onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
545
+ onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
539
546
  /**
540
547
  * Получен стрим трансляция или мувик от собеседника.
541
548
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
542
549
  */
543
- onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
550
+ onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
544
551
  /**
545
552
  * Получен собственный стрим трансляция или мувик.
546
553
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
547
554
  */
548
- onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
555
+ onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
549
556
  /**
550
557
  * Получено обновление стрима или лайва от собеседника.
551
558
  */
552
- onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
559
+ onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
553
560
  /**
554
561
  * Получено обновление собственного стрима или лайва.
555
562
  */
556
- onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
563
+ onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
557
564
  /**
558
565
  * Начат звонок
559
566
  */
560
- onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms) => void;
567
+ onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms, conversationId?: string) => void;
561
568
  /**
562
569
  * Начальный список участников для постраничного звонка
563
570
  */
564
- onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk) => void;
571
+ onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk, conversationId?: string) => void;
565
572
  /**
566
573
  * Изменились данные стрима собеседника
567
574
  */
568
- onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null) => void;
575
+ onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
569
576
  /**
570
577
  * Изменились данные стрима собеседника
571
578
  */
572
- onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings) => void;
579
+ onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, conversationId?: string) => void;
573
580
  /**
574
581
  * Полученны данные по стримам (лайв/мувик) от собеседника
575
582
  */
576
- onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
583
+ onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
577
584
  /**
578
585
  * Полученны данные по остановленным стримам (лайв/мувик) от собеседника
579
586
  */
580
- onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
587
+ onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
581
588
  /**
582
589
  * Полученны данные по собственным стримам (лайв/мувик)
583
590
  */
584
- onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
591
+ onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
585
592
  /**
586
593
  * Полученны данные по собственным остановленным стримам (лайв/мувик)
587
594
  */
588
- onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
595
+ onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
589
596
  /**
590
597
  * Добавили участника
591
598
  */
592
- onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
599
+ onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
593
600
  /**
594
601
  * Участник присоединился к звонку
595
602
  */
596
- onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers) => void;
603
+ onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers, conversationId?: string) => void;
597
604
  /**
598
605
  * Получены данные по изменению локальных состояний со стороны админа
599
606
  * Например, принудительно опущена рука
@@ -601,19 +608,19 @@ export type ParamsObject = {
601
608
  * @param participantState Полный объект состояния участника, полученный от SDK/сервера.
602
609
  * @param global `true` – действие глобальное (для всех участников), `false` – действие локальное (только у текущего пользователя).
603
610
  */
604
- onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean) => void;
611
+ onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean, conversationId?: string) => void;
605
612
  /**
606
613
  * Изменились данные состояний собеседника
607
614
  */
608
- onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null) => void;
615
+ onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
609
616
  /**
610
617
  * Изменились данные состояний нескольких собеседников
611
618
  */
612
- onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId) => void;
619
+ onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId, conversationId?: string) => void;
613
620
  /**
614
621
  * Изменился статус соединения собеседников
615
622
  */
616
- onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any) => void;
623
+ onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any, conversationId?: string) => void;
617
624
  /**
618
625
  * Разрешения на доступы были запрошены в браузере
619
626
  */
@@ -625,56 +632,56 @@ export type ParamsObject = {
625
632
  /**
626
633
  * Пользователь отключился от звонка
627
634
  */
628
- onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
635
+ onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
629
636
  /**
630
637
  * Изменилось состояние звонка
631
638
  */
632
- onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData) => void;
639
+ onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData, conversationId?: string) => void;
633
640
  /**
634
641
  * Изменилось состояние камеры или микрофона
635
642
  */
636
- onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean) => void;
643
+ onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean, conversationId?: string) => void;
637
644
  /**
638
645
  * Изменились состояния устройств пользователя или разрешения включать камеру/микрофон
639
646
  */
640
- 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;
647
+ 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;
641
648
  /**
642
649
  * Изменились роли собеседника в звонке
643
650
  */
644
- onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean) => void;
651
+ onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
645
652
  /**
646
653
  * Изменились свои роли в звонке
647
654
  */
648
- onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean) => void;
655
+ onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
649
656
  /**
650
657
  * Закрепляет/открепляет собеседника для всех
651
658
  */
652
- onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null) => void;
659
+ onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null, conversationId?: string) => void;
653
660
  /**
654
661
  * Закрепляет/открепляет текущего пользователя у других собеседников
655
662
  */
656
- onLocalPin?: (unpin: boolean) => void;
663
+ onLocalPin?: (unpin: boolean, conversationId?: string) => void;
657
664
  /**
658
665
  * Изменились опции звонка
659
666
  */
660
- onOptionsChanged?: (options: ConversationOption[]) => void;
661
- onRateNeeded?: Function;
667
+ onOptionsChanged?: (options: ConversationOption[], conversationId?: string) => void;
668
+ onRateNeeded?: (conversationId?: string) => void;
662
669
  /**
663
670
  * Изменился говорящий в звонке
664
671
  */
665
- onSpeakerChanged?: (userId: ExternalParticipantId) => void;
672
+ onSpeakerChanged?: (userId: ExternalParticipantId, conversationId?: string) => void;
666
673
  /**
667
674
  * Громкость собеседников
668
675
  */
669
676
  onVolumesDetected?: (volumes: {
670
677
  uid: ExternalParticipantId;
671
678
  volume: number;
672
- }[]) => void;
679
+ }[], conversationId?: string) => void;
673
680
  /**
674
681
  * Громкость своего микрофона
675
682
  */
676
683
  onLocalVolume?: (volume: number, isMicEnabled: boolean) => void;
677
- onJoinStatus?: Function;
684
+ onJoinStatus?: (available: boolean, chatId: string, conversationId?: string) => void;
678
685
  /**
679
686
  * Звонок был завершен
680
687
  */
@@ -682,12 +689,12 @@ export type ParamsObject = {
682
689
  /**
683
690
  * Входящий звонок был принят мной
684
691
  */
685
- onCallAccepted?: () => void;
692
+ onCallAccepted?: (conversationId?: string) => void;
686
693
  /**
687
694
  * Исходящий звонок был принят кем-то
688
695
  * @param userId
689
696
  */
690
- onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities) => void;
697
+ onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities, conversationId?: string) => void;
691
698
  /**
692
699
  * Список устройств изменился
693
700
  */
@@ -704,25 +711,25 @@ export type ParamsObject = {
704
711
  /**
705
712
  * Получено сообщение чата
706
713
  */
707
- onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean) => void;
714
+ onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
708
715
  /**
709
716
  * Получены данные от собеседника
710
717
  */
711
- onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean) => void;
718
+ onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
712
719
  /**
713
720
  * Начата трансляция/запись звонка
714
721
  */
715
- onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null) => void;
722
+ onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null, conversationId?: string) => void;
716
723
  /**
717
724
  * Закончена трансляция/запись звонка
718
725
  */
719
- onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null) => void;
726
+ onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null, conversationId?: string) => void;
720
727
  /**
721
728
  * Состояние своей сети
722
729
  *
723
730
  * @param rating Оценка качества соединения от 0 до 1
724
731
  */
725
- onLocalNetworkStatusChanged?: (rating: number) => void;
732
+ onLocalNetworkStatusChanged?: (rating: number, conversationId?: string) => void;
726
733
  /**
727
734
  * Состояние сети участников
728
735
  *
@@ -731,11 +738,17 @@ export type ParamsObject = {
731
738
  onNetworkStatusChanged?: (status: {
732
739
  uid: ExternalParticipantId;
733
740
  rating: number;
734
- }[]) => void;
741
+ }[], conversationId?: string) => void;
735
742
  /**
736
743
  * Получено отладочное сообщение. Работает только при выключенном режиме отладки
737
744
  */
738
745
  onDebugMessage?: (type: DebugMessageType, ...args: any[]) => void;
746
+ /**
747
+ * Получено отладочное сообщение с контекстом звонка. Работает только при выключенном режиме отладки
748
+ */
749
+ onDebugMessageWithContext?: (type: DebugMessageType, context: {
750
+ conversationId: string | null;
751
+ }, ...args: any[]) => void;
739
752
  /**
740
753
  * Статистика звонка
741
754
  */
@@ -753,74 +766,74 @@ export type ParamsObject = {
753
766
  * @param addedParticipantIds Некоторое количество участников, добавленных в зал
754
767
  * @param removedParticipantIds Некоторое количество участников, убранных из зала
755
768
  */
756
- onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[]) => void;
769
+ onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[], conversationId?: string) => void;
757
770
  /**
758
771
  * Получен микшированный аудио стрим.
759
772
  * @hidden
760
773
  * @param stream стрим от WebRTC
761
774
  */
762
- onRemoteMixedAudioStream?: (stream: MediaStream) => void;
775
+ onRemoteMixedAudioStream?: (stream: MediaStream, conversationId?: string) => void;
763
776
  /**
764
777
  * Получена новая ссылка на звонок
765
778
  * @param joinLink токен присоединения к звонку
766
779
  */
767
- onJoinLinkChanged?: (joinLink: string) => void;
780
+ onJoinLinkChanged?: (joinLink: string, conversationId?: string) => void;
768
781
  /**
769
782
  * Получено обновление списка сессионных залов
770
783
  * @param updates список обновлений по залам
771
784
  */
772
- onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>) => void;
785
+ onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>, conversationId?: string) => void;
773
786
  /**
774
787
  * Получено обновление сессионных зало
775
788
  * @param eventTypes список событий
776
789
  * @param roomId номер сессионного зала
777
790
  * @param room сессионный зал
778
791
  */
779
- onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null) => void;
792
+ onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null, conversationId?: string) => void;
780
793
  /**
781
794
  * Получение обновление списка участников в сессионном зале
782
795
  * @param update обновление списка участников
783
796
  */
784
- onRoomParticipantsUpdated?: (update: RoomParticipantUpdate) => void;
797
+ onRoomParticipantsUpdated?: (update: RoomParticipantUpdate, conversationId?: string) => void;
785
798
  /**
786
799
  * Получение информации о смене зала
787
800
  * @param roomId номер сессионного зала
788
801
  */
789
- onRoomSwitched?: (roomId: number | null) => void;
802
+ onRoomSwitched?: (roomId: number | null, conversationId?: string) => void;
790
803
  /**
791
804
  * Установить id сессионного зала на старте звонка
792
805
  * @param roomId номер сессионного зала
793
806
  */
794
- onRoomStart?: (roomId: number | null) => void;
807
+ onRoomStart?: (roomId: number | null, conversationId?: string) => void;
795
808
  /**
796
809
  * Получены новые реакции в звонке
797
810
  * @param feedback массив с реакциями
798
811
  */
799
- onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null) => void;
812
+ onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null, conversationId?: string) => void;
800
813
  /**
801
814
  * Изменился список ролей, которым доступны ConversationFeatures
802
815
  *
803
816
  * @param featuresPerRole Объект вида ключ: ConversationFeature = значение: UserRole[]
804
817
  * (если ключ фичи отсутствует, или в ролях пустой массив, считаем фичу доступной для всех пользователей)
805
818
  */
806
- onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole) => void;
819
+ onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole, conversationId?: string) => void;
807
820
  /**
808
821
  * Изменился Vmoji-аватар пользователя
809
822
  * @param externalId Id пользователя, у которого изменился аватар
810
823
  */
811
- onParticipantVmojiUpdate?: (externalId: ExternalParticipantId) => void;
824
+ onParticipantVmojiUpdate?: (externalId: ExternalParticipantId, conversationId?: string) => void;
812
825
  /**
813
826
  * Начата текстовая расшифровка звонка
814
827
  * @param initiatorId Id пользователя, запустившего расшифровку звонка
815
828
  * @param movieId Id расшифровки
816
829
  * @param roomId Id комнаты
817
830
  */
818
- onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null) => void;
831
+ onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null, conversationId?: string) => void;
819
832
  /**
820
833
  * Закончена текстовая расшифровка звонка
821
834
  * @param roomId Id комнаты
822
835
  */
823
- onAsrStopped?: (roomId: number | null) => void;
836
+ onAsrStopped?: (roomId: number | null, conversationId?: string) => void;
824
837
  /**
825
838
  * Получена расшифровка речи
826
839
  * @param id Id пользователя, произнесшего реплику
@@ -828,47 +841,53 @@ export type ParamsObject = {
828
841
  * @param timestamp Время расшифровки
829
842
  * @param duration Длительность реплики в расшифровке
830
843
  */
831
- onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number) => void;
844
+ onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number, conversationId?: string) => void;
832
845
  /**
833
846
  * Установка начальных параметров текстовой расшифровки звонка. (Используется при входе в звонок/ смене комнаты)
834
847
  * @param data Начальная информация по ASR
835
848
  * @param roomId Id Комнаты
836
849
  */
837
- onAsrSet?: (data: IAsrData | null, roomId: number | null) => void;
850
+ onAsrSet?: (data: IAsrData | null, roomId: number | null, conversationId?: string) => void;
838
851
  /**
839
852
  * Админ начал/остановил совместное использование стороннего web-приложения
840
853
  * @param userId id участника-админа
841
854
  * @param sharedUrl url страницы
842
855
  */
843
- onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId) => void;
856
+ onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId, conversationId?: string) => void;
844
857
  /**
845
858
  * Изменился id участника (деанонимизация)
846
859
  * @param prevId
847
860
  * @param newId
848
861
  */
849
- onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId) => void;
862
+ onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId, conversationId?: string) => void;
850
863
  /**
851
864
  * Предложение включить режим автоматического отключения приёма видео
852
865
  * в плохой сети
853
866
  * @param bandwidth текущая полоса пропускания, kbps
854
867
  */
855
- onVideoSuspendSuggest?: (bandwidth: number) => void;
868
+ onVideoSuspendSuggest?: (bandwidth: number, conversationId?: string) => void;
856
869
  /**
857
870
  * Одобрено повышение пользователя в зале ожидания/зале в режиме Audience
858
871
  *
859
872
  * @param adminParticipantId админ, одобривший повышение
860
873
  */
861
- onPromotionApproved?: (adminParticipantId: ExternalParticipantId) => void;
874
+ onPromotionApproved?: (adminParticipantId: ExternalParticipantId, conversationId?: string) => void;
862
875
  /**
863
876
  * Участник повышен/разжалован в зале ожидания/зале в режиме Audience
864
877
  *
865
878
  * @param demoted участник разжалован
866
879
  */
867
- onPromoted?: (demoted: boolean) => void;
880
+ onPromoted?: (demoted: boolean, conversationId?: string) => void;
881
+ /**
882
+ * Активным установлен определенный звонок
883
+ *
884
+ * @param conversationId ID звонка
885
+ */
886
+ onCallActive?: (conversationId: string) => void;
868
887
  /**
869
888
  * Собеседник подключился к сигналлингу
870
889
  */
871
- onPeerRegistered?: () => void;
890
+ onPeerRegistered?: (conversationId?: string) => void;
872
891
  };
873
892
  export default abstract class Params {
874
893
  private static _params;
@@ -978,6 +997,7 @@ export default abstract class Params {
978
997
  static get addParticipant(): boolean;
979
998
  static get waitForAdminInGroupCalls(): boolean;
980
999
  static get hold(): boolean;
1000
+ static get maxParallelCalls(): number;
981
1001
  static get participantListChunkInitIndex(): number;
982
1002
  static get participantListChunkInitCount(): number | null;
983
1003
  static get filterObservers(): boolean;
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;
@@ -1,5 +1,5 @@
1
1
  import { AnimojiVersion } from '@vkontakte/calls-vmoji';
2
- import { TransportTopology } from '../classes/transport/Transport';
2
+ import TransportTopology from '../enums/TransportTopology';
3
3
  import ChatRoomEventType from '../enums/ChatRoomEventType';
4
4
  import ConversationFeature from '../enums/ConversationFeature';
5
5
  import ConversationOption from '../enums/ConversationOption';
@@ -366,6 +366,9 @@ declare namespace SignalingMessage {
366
366
  export interface Connection extends Notification {
367
367
  endpoint: string;
368
368
  conversation: Conversation;
369
+ conversationParams: {
370
+ serverTime: number;
371
+ };
369
372
  isConcurrent: boolean;
370
373
  peerId: PeerId;
371
374
  mediaModifiers: MediaModifiers;
@@ -452,6 +455,10 @@ declare namespace SignalingMessage {
452
455
  export interface VideoSuspendSuggest extends Notification {
453
456
  bandwidth: number;
454
457
  }
458
+ export interface Hold extends Notification {
459
+ participantId: ParticipantId;
460
+ hold: boolean;
461
+ }
455
462
  export {};
456
463
  }
457
464
  export default SignalingMessage;
@@ -1,4 +1,4 @@
1
- import { TransportTopology } from '../classes/transport/Transport';
1
+ import TransportTopology from '../enums/TransportTopology';
2
2
  export type StatTransport = {
3
3
  timestamp: number;
4
4
  availableOutgoingBitrate: number;