@wazo/sdk 0.38.7 → 0.38.8

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 (106) hide show
  1. package/dist/wazo-sdk.js +2 -2
  2. package/esm/__tests__/api-client.test.js +142 -2
  3. package/esm/__tests__/web-rtc-client.test.js +227 -27
  4. package/esm/api/calld.js +8 -0
  5. package/esm/api/confd.js +134 -2
  6. package/esm/api-client.js +142 -2
  7. package/esm/checker/Checker.js +183 -24
  8. package/esm/checker/checks/aor.js +142 -2
  9. package/esm/checker/checks/api.js +142 -2
  10. package/esm/checker/checks/index.js +183 -24
  11. package/esm/checker/checks/wazo-websocket.js +2 -0
  12. package/esm/checker/checks/webrtc-transport.js +181 -24
  13. package/esm/checker/checks/webrtc.js +181 -24
  14. package/esm/domain/AdHocAPIConference.js +142 -2
  15. package/esm/domain/Features.js +142 -2
  16. package/esm/domain/Meeting.js +18 -0
  17. package/esm/domain/MeetingAuthorization.js +70 -0
  18. package/esm/domain/Phone/CTIPhone.js +142 -2
  19. package/esm/domain/__tests__/Meeting.test.js +87 -1
  20. package/esm/domain/__tests__/MeetingAuthorization.test.js +109 -0
  21. package/esm/index.js +226 -27
  22. package/esm/service/CallApi.js +142 -2
  23. package/esm/service/getApiClient.js +142 -2
  24. package/esm/simple/Auth.js +226 -27
  25. package/esm/simple/Configuration.js +226 -27
  26. package/esm/simple/Directory.js +142 -2
  27. package/esm/simple/Phone.js +226 -27
  28. package/esm/simple/Websocket.js +3 -0
  29. package/esm/simple/index.js +226 -27
  30. package/esm/simple/room/LocalParticipant.js +226 -27
  31. package/esm/simple/room/Participant.js +226 -27
  32. package/esm/simple/room/RemoteParticipant.js +226 -27
  33. package/esm/simple/room/Room.js +226 -27
  34. package/esm/simple/room/SipRoom.js +226 -27
  35. package/esm/simple/room/Stream.js +226 -27
  36. package/esm/simple/room/__tests__/Participant.test.js +14747 -0
  37. package/esm/simple/room/__tests__/RemoteParticipant.test.js +226 -27
  38. package/esm/simple/utils.js +226 -27
  39. package/esm/utils/__tests__/object.test.js +57 -0
  40. package/esm/utils/__tests__/string.test.js +30 -0
  41. package/esm/utils/object.js +24 -0
  42. package/esm/utils/string.js +10 -0
  43. package/esm/web-rtc-client.js +181 -24
  44. package/esm/websocket-client.js +3 -1
  45. package/lib/__tests__/api-client.test.js +142 -2
  46. package/lib/__tests__/web-rtc-client.test.js +227 -27
  47. package/lib/api/calld.js +8 -0
  48. package/lib/api/confd.js +134 -2
  49. package/lib/api-client.js +142 -2
  50. package/lib/checker/Checker.js +183 -24
  51. package/lib/checker/checks/aor.js +142 -2
  52. package/lib/checker/checks/api.js +142 -2
  53. package/lib/checker/checks/index.js +183 -24
  54. package/lib/checker/checks/wazo-websocket.js +2 -0
  55. package/lib/checker/checks/webrtc-transport.js +181 -24
  56. package/lib/checker/checks/webrtc.js +181 -24
  57. package/lib/domain/AdHocAPIConference.js +142 -2
  58. package/lib/domain/Features.js +142 -2
  59. package/lib/domain/Meeting.js +18 -0
  60. package/lib/domain/MeetingAuthorization.js +79 -0
  61. package/lib/domain/Phone/CTIPhone.js +142 -2
  62. package/lib/domain/__tests__/Meeting.test.js +87 -1
  63. package/lib/domain/__tests__/MeetingAuthorization.test.js +111 -0
  64. package/lib/index.js +226 -27
  65. package/lib/service/CallApi.js +142 -2
  66. package/lib/service/getApiClient.js +142 -2
  67. package/lib/simple/Auth.js +226 -27
  68. package/lib/simple/Configuration.js +226 -27
  69. package/lib/simple/Directory.js +142 -2
  70. package/lib/simple/Phone.js +226 -27
  71. package/lib/simple/Websocket.js +3 -0
  72. package/lib/simple/index.js +226 -27
  73. package/lib/simple/room/LocalParticipant.js +226 -27
  74. package/lib/simple/room/Participant.js +226 -27
  75. package/lib/simple/room/RemoteParticipant.js +226 -27
  76. package/lib/simple/room/Room.js +226 -27
  77. package/lib/simple/room/SipRoom.js +226 -27
  78. package/lib/simple/room/Stream.js +226 -27
  79. package/lib/simple/room/__tests__/Participant.test.js +14757 -0
  80. package/lib/simple/room/__tests__/RemoteParticipant.test.js +226 -27
  81. package/lib/simple/utils.js +226 -27
  82. package/lib/utils/__tests__/object.test.js +59 -0
  83. package/lib/utils/__tests__/string.test.js +32 -0
  84. package/lib/utils/object.js +28 -0
  85. package/lib/utils/string.js +14 -0
  86. package/lib/web-rtc-client.js +181 -24
  87. package/lib/websocket-client.js +3 -0
  88. package/package.json +2 -2
  89. package/src/__tests__/web-rtc-client.test.js +46 -3
  90. package/src/api/calld.js +8 -0
  91. package/src/api/confd.js +43 -2
  92. package/src/domain/Meeting.js +20 -0
  93. package/src/domain/MeetingAuthorization.js +67 -0
  94. package/src/domain/__tests__/Meeting.test.js +70 -1
  95. package/src/domain/__tests__/MeetingAuthorization.test.js +58 -0
  96. package/src/simple/room/Participant.js +40 -0
  97. package/src/simple/room/Room.js +2 -2
  98. package/src/simple/room/SipRoom.js +1 -1
  99. package/src/simple/room/__tests__/Participant.test.js +81 -0
  100. package/src/types/WebSocketMessage.js +7 -1
  101. package/src/utils/__tests__/object.test.js +35 -0
  102. package/src/utils/__tests__/string.test.js +23 -0
  103. package/src/utils/object.js +15 -0
  104. package/src/utils/string.js +8 -0
  105. package/src/web-rtc-client.js +39 -22
  106. package/src/websocket-client.js +2 -0
@@ -2645,6 +2645,70 @@ class ExternalApp {
2645
2645
 
2646
2646
  //
2647
2647
 
2648
+ class MeetingAuthorization {
2649
+
2650
+
2651
+
2652
+
2653
+
2654
+
2655
+ constructor({
2656
+ meetingUuid,
2657
+ uuid,
2658
+ userUuid,
2659
+ userName,
2660
+ } = {}) {
2661
+ this.meetingUuid = meetingUuid;
2662
+ this.uuid = uuid;
2663
+ this.userUuid = userUuid;
2664
+ this.userName = userName;
2665
+ }
2666
+
2667
+ setStatus(status ) {
2668
+ this.status = status;
2669
+ }
2670
+
2671
+ getStatus() {
2672
+ return this.status;
2673
+ }
2674
+
2675
+ static parse(plain ) {
2676
+ const {
2677
+ meeting_uuid: meetingUuid,
2678
+ uuid,
2679
+ guest_uuid: userUuid,
2680
+ guest_name: userName,
2681
+ } = plain;
2682
+
2683
+ return new MeetingAuthorization({
2684
+ meetingUuid,
2685
+ uuid,
2686
+ userUuid,
2687
+ userName,
2688
+ });
2689
+ }
2690
+
2691
+ static parseMany(items ) {
2692
+ if (!items) {
2693
+ return [];
2694
+ }
2695
+ return items.map(MeetingAuthorization.parse);
2696
+ }
2697
+ }
2698
+
2699
+ //
2700
+
2701
+
2702
+
2703
+
2704
+
2705
+
2706
+
2707
+
2708
+
2709
+
2710
+
2711
+
2648
2712
 
2649
2713
 
2650
2714
 
@@ -2655,6 +2719,7 @@ class ExternalApp {
2655
2719
 
2656
2720
 
2657
2721
 
2722
+
2658
2723
 
2659
2724
 
2660
2725
  class Meeting {
@@ -2669,6 +2734,8 @@ class Meeting {
2669
2734
 
2670
2735
 
2671
2736
 
2737
+
2738
+
2672
2739
 
2673
2740
  static parse(plain ) {
2674
2741
  return new Meeting({
@@ -2681,6 +2748,7 @@ class Meeting {
2681
2748
  extension: plain.exten,
2682
2749
  persistent: plain.persistent,
2683
2750
  creationTime: moment(plain.creation_time).toDate(),
2751
+ requireAuthorization: plain.require_authorization,
2684
2752
  });
2685
2753
  }
2686
2754
 
@@ -2705,6 +2773,7 @@ class Meeting {
2705
2773
  extension,
2706
2774
  persistent,
2707
2775
  creationTime,
2776
+ requireAuthorization,
2708
2777
  } = {}) {
2709
2778
  this.guestSipAuthorization = guestSipAuthorization;
2710
2779
  this.uri = uri;
@@ -2715,6 +2784,7 @@ class Meeting {
2715
2784
  this.extension = extension;
2716
2785
  this.persistent = persistent;
2717
2786
  this.creationTime = creationTime;
2787
+ this.requireAuthorization = requireAuthorization;
2718
2788
 
2719
2789
  // Useful to compare instead of instanceof with minified code
2720
2790
  this.type = 'Meeting';
@@ -2725,8 +2795,32 @@ class Meeting {
2725
2795
  const [username, secret] = atob(this.guestSipAuthorization).split(':');
2726
2796
  return { username, secret };
2727
2797
  }
2798
+
2728
2799
  }
2729
2800
 
2801
+ //
2802
+
2803
+ const camelToUnderscore = (key ) => {
2804
+ if (typeof key !== 'string') {
2805
+ throw new Error('Input is not a string');
2806
+ }
2807
+ return key.charAt(0).toLowerCase() + key.substring(1).replace(/([A-Z])/g, '_$1').toLowerCase();
2808
+ };
2809
+
2810
+ //
2811
+
2812
+ const convertKeysFromCamelToUnderscore = (args ) => {
2813
+ if (!args || typeof args !== 'object' || Array.isArray(args)) {
2814
+ throw new Error('Input is not an object');
2815
+ }
2816
+
2817
+ return Object.keys(args).reduce((acc, key) => {
2818
+ acc[camelToUnderscore(key)] = typeof args[key] === 'object' && !Array.isArray(args[key])
2819
+ ? convertKeysFromCamelToUnderscore(args[key]) : args[key];
2820
+ return acc;
2821
+ }, {});
2822
+ };
2823
+
2730
2824
  /* */
2731
2825
 
2732
2826
  var confdMethods = (client , baseUrl ) => ({
@@ -2795,8 +2889,18 @@ var confdMethods = (client , baseUrl ) => ({
2795
2889
  getMyMeetings: () =>
2796
2890
  client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
2797
2891
 
2798
- createMyMeeting: (name , persistent ) =>
2799
- client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
2892
+ createMyMeeting: (args ) =>
2893
+ client
2894
+ .post(`${baseUrl}/users/me/meetings`, convertKeysFromCamelToUnderscore(args))
2895
+ .then(Meeting.parse),
2896
+
2897
+ updateMyMeeting: (meetingUuid , data ) =>
2898
+ client.put(
2899
+ `${baseUrl}/users/me/meetings/${meetingUuid}`,
2900
+ convertKeysFromCamelToUnderscore(data),
2901
+ null,
2902
+ ApiRequester.successResponseParser,
2903
+ ),
2800
2904
 
2801
2905
  deleteMyMeeting: (meetingUuid ) =>
2802
2906
  client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
@@ -2804,8 +2908,36 @@ var confdMethods = (client , baseUrl ) => ({
2804
2908
  getMeeting: (meetingUuid ) =>
2805
2909
  client.get(`${baseUrl}/meetings/${meetingUuid}`, null).then(Meeting.parse),
2806
2910
 
2911
+ meetingAuthorizations: (meetingUuid ) =>
2912
+ client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/authorizations`, null).then(MeetingAuthorization.parseMany),
2913
+
2914
+ meetingAuthorizationReject: (meetingUuid , authorizationUuid ) =>
2915
+ client.put(
2916
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/reject`,
2917
+ {},
2918
+ null,
2919
+ ApiRequester.successResponseParser,
2920
+ ),
2921
+
2922
+ meetingAuthorizationAccept: (meetingUuid , authorizationUuid ) =>
2923
+ client.put(
2924
+ `${baseUrl}/users/me/meetings/${meetingUuid}/authorizations/${authorizationUuid}/accept`,
2925
+ {},
2926
+ null,
2927
+ ApiRequester.successResponseParser,
2928
+ ),
2929
+
2807
2930
  guestGetMeeting: (meetingUuid ) =>
2808
2931
  client.get(`${baseUrl}/guests/me/meetings/${meetingUuid}`, null).then(Meeting.parse),
2932
+
2933
+ guestAuthorizationRequest: (userUuid , meetingUuid , username ) =>
2934
+ client
2935
+ .post(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations`, { guest_name: username })
2936
+ .then(MeetingAuthorization.parse),
2937
+
2938
+ guestAuthorizationCheck: (userUuid , meetingUuid , authorizationUuid ) =>
2939
+ client.get(`${baseUrl}/guests/${userUuid}/meetings/${meetingUuid}/authorizations/${authorizationUuid}`, null),
2940
+
2809
2941
  });
2810
2942
 
2811
2943
  //
@@ -5056,6 +5188,14 @@ var calldMethods = (client , baseUrl ) => ({
5056
5188
  getMeetingParticipantsAsUser: async (meetingUuid ) =>
5057
5189
  client.get(`${baseUrl}/users/me/meetings/${meetingUuid}/participants`),
5058
5190
 
5191
+ banMeetingParticipant: (meetingUuid , participantUuid ) =>
5192
+ client.delete(
5193
+ `${baseUrl}/users/me/meetings/${meetingUuid}/participants/${participantUuid}`,
5194
+ null,
5195
+ null,
5196
+ ApiRequester.successResponseParser,
5197
+ ),
5198
+
5059
5199
  listTrunks: () => client.get(`${baseUrl}/trunks`),
5060
5200
 
5061
5201
  mute: (callId ) =>
@@ -7814,7 +7954,7 @@ class WebRTCClient extends Emitter {
7814
7954
  });
7815
7955
  }
7816
7956
 
7817
- changeAudioInputDevice(id , session , force ) {
7957
+ async changeAudioInputDevice(id , session , force ) {
7818
7958
  const currentId = this.getAudioDeviceId();
7819
7959
  logger$8.info('setting audio input device', { id, currentId, session: !!session });
7820
7960
 
@@ -7822,33 +7962,50 @@ class WebRTCClient extends Emitter {
7822
7962
  return null;
7823
7963
  }
7824
7964
 
7965
+ // in order to handle an audio track change for default devices
7966
+ // we need the actual id of the device (not 'default')
7967
+ let deviceId = id;
7968
+ if (id === 'default' && navigator.mediaDevices) {
7969
+ const devices = await navigator.mediaDevices.enumerateDevices();
7970
+ const defaultDevice = devices.find(device => device.deviceId === 'default');
7971
+ if (defaultDevice) {
7972
+ const deviceLabel = defaultDevice.label.replace('Default - ', '');
7973
+ const targetDevice = devices.find(device => device.label === deviceLabel);
7974
+ if (targetDevice) {
7975
+ deviceId = targetDevice.deviceId;
7976
+ if (!force && deviceId === currentId) {
7977
+ return null;
7978
+ }
7979
+ }
7980
+ }
7981
+ }
7982
+
7825
7983
  // let's update the local audio value
7826
7984
  if (this.audio) {
7827
7985
  this.audio = {
7828
7986
  deviceId: {
7829
- exact: id,
7987
+ exact: deviceId,
7830
7988
  },
7831
7989
  };
7832
7990
  }
7833
7991
 
7834
- if (session) {
7992
+ if (session && navigator.mediaDevices) {
7835
7993
  const sdh = session.sessionDescriptionHandler;
7836
7994
  const pc = sdh.peerConnection;
7837
7995
 
7838
- // $FlowFixMe
7839
- return navigator.mediaDevices.getUserMedia({ audio: { deviceId: { exact: id } } }).then(async stream => {
7840
- const audioTrack = stream.getAudioTracks()[0];
7841
- const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
7996
+ const constraints = { audio: { deviceId: { exact: deviceId } } };
7997
+ const stream = await navigator.mediaDevices.getUserMedia(constraints);
7998
+ const audioTrack = stream.getAudioTracks()[0];
7999
+ const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
7842
8000
 
7843
- if (sender) {
7844
- if (sender.track) {
7845
- audioTrack.enabled = sender.track.enabled;
7846
- }
7847
- sender.replaceTrack(audioTrack);
8001
+ if (sender) {
8002
+ if (sender.track) {
8003
+ audioTrack.enabled = sender.track.enabled;
7848
8004
  }
8005
+ sender.replaceTrack(audioTrack);
8006
+ }
7849
8007
 
7850
- return stream;
7851
- });
8008
+ return stream;
7852
8009
  }
7853
8010
  }
7854
8011
 
@@ -7868,14 +8025,14 @@ class WebRTCClient extends Emitter {
7868
8025
  return null;
7869
8026
  }
7870
8027
 
7871
- // let's update the local video value
7872
- if (this.video) {
7873
- this.video = {
7874
- deviceId: {
7875
- exact: id,
7876
- },
7877
- };
7878
- }
8028
+ // let's make sure we don't lose other video constraints settings -- width, height, frameRate...
8029
+ const videoObject = typeof this.video === 'object' ? this.video : {};
8030
+ this.video = {
8031
+ ...videoObject,
8032
+ deviceId: {
8033
+ exact: id,
8034
+ },
8035
+ };
7879
8036
  }
7880
8037
 
7881
8038
  changeSessionVideoInputDevice(id , session ) {
@@ -11270,6 +11427,7 @@ const AGENT_UNPAUSED = 'agent_unpaused';
11270
11427
  const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
11271
11428
  const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
11272
11429
  const MEETING_USER_PROGRESS = 'meeting_user_progress';
11430
+ const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
11273
11431
 
11274
11432
  const BLACKLIST_EVENTS = [
11275
11433
  CHAT_MESSAGE_SENT,
@@ -11621,6 +11779,7 @@ WebSocketClient.eventLists = [
11621
11779
  CONFERENCE_ADHOC_PARTICIPANT_LEFT,
11622
11780
  CONFERENCE_ADHOC_DELETED,
11623
11781
  MEETING_USER_PROGRESS,
11782
+ MEETING_USER_GUEST_AUTHORIZATION_CREATED,
11624
11783
  ];
11625
11784
 
11626
11785
  var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
@@ -11692,6 +11851,7 @@ var WebSocketClient$1 = /*#__PURE__*/Object.freeze({
11692
11851
  CONFERENCE_ADHOC_PARTICIPANT_LEFT: CONFERENCE_ADHOC_PARTICIPANT_LEFT,
11693
11852
  CONFERENCE_ADHOC_DELETED: CONFERENCE_ADHOC_DELETED,
11694
11853
  MEETING_USER_PROGRESS: MEETING_USER_PROGRESS,
11854
+ MEETING_USER_GUEST_AUTHORIZATION_CREATED: MEETING_USER_GUEST_AUTHORIZATION_CREATED,
11695
11855
  HEARTBEAT_ENGINE_VERSION: HEARTBEAT_ENGINE_VERSION,
11696
11856
  'default': WebSocketClient
11697
11857
  });
@@ -11796,6 +11956,7 @@ class Participant extends Emitter {
11796
11956
 
11797
11957
 
11798
11958
 
11959
+
11799
11960
 
11800
11961
 
11801
11962
 
@@ -11813,6 +11974,7 @@ class Participant extends Emitter {
11813
11974
 
11814
11975
 
11815
11976
 
11977
+
11816
11978
 
11817
11979
  /**
11818
11980
  * @param room Room The room where the participant is
@@ -11836,6 +11998,7 @@ class Participant extends Emitter {
11836
11998
  this.screensharing = false;
11837
11999
  this.isOnHold = false;
11838
12000
  this.extra = extra;
12001
+ this.banned = false;
11839
12002
 
11840
12003
  this.ON_UPDATED = 'participant/ON_UPDATED';
11841
12004
  this.ON_START_TALKING = 'participant/ON_START_TALKING';
@@ -11852,6 +12015,7 @@ class Participant extends Emitter {
11852
12015
  this.ON_EXTRA_CHANGE = 'participant/ON_EXTRA_CHANGE';
11853
12016
  this.ON_HOLD = 'participant/ON_HOLD';
11854
12017
  this.ON_RESUME = 'participant/ON_RESUME';
12018
+ this.ON_BAN = 'participant/ON_BAN';
11855
12019
  }
11856
12020
 
11857
12021
  triggerEvent(name , ...args ) {
@@ -11892,6 +12056,10 @@ class Participant extends Emitter {
11892
12056
  status.extra = this.extra;
11893
12057
  break;
11894
12058
  }
12059
+ case this.ON_BAN: {
12060
+ status.banned = true;
12061
+ break;
12062
+ }
11895
12063
  }
11896
12064
 
11897
12065
  if (broadcast) {
@@ -11994,6 +12162,11 @@ class Participant extends Emitter {
11994
12162
  this.triggerUpdate(this.ON_RESUME, broadcast);
11995
12163
  }
11996
12164
 
12165
+ onBan(broadcast = true) {
12166
+ this.banned = true;
12167
+ this.triggerUpdate(this.ON_BAN, broadcast);
12168
+ }
12169
+
11997
12170
  getStatus() {
11998
12171
  return {
11999
12172
  callId: this.callId,
@@ -12040,6 +12213,10 @@ class Participant extends Emitter {
12040
12213
  }
12041
12214
  }
12042
12215
 
12216
+ if (status.banned) {
12217
+ this.onBan(false);
12218
+ }
12219
+
12043
12220
  // Poor man's object comparison
12044
12221
  if (typeof status.extra !== 'undefined' && JSON.stringify(this.extra) !== JSON.stringify(status.extra)) {
12045
12222
  this.extra = { ...this.extra, ...status.extra };
@@ -12067,6 +12244,28 @@ class Participant extends Emitter {
12067
12244
  this.streams = streams;
12068
12245
  this.videoStreams = streams;
12069
12246
  }
12247
+
12248
+ async ban(apiRequestDelay = null) {
12249
+ const { meetingUuid } = this.room;
12250
+ if (!meetingUuid) {
12251
+ throw new Error('Attempting to ban a participant without a `meetingUuid`');
12252
+ }
12253
+
12254
+ // this notifies all that someone is being banned
12255
+ this.onBan(true);
12256
+
12257
+ // this allows to delay the actual ban, in order for the banned participant as well as others to react to the situation
12258
+ if (apiRequestDelay) {
12259
+ await this.delay(apiRequestDelay);
12260
+ }
12261
+
12262
+ // proceed with the actual kick
12263
+ return getApiClient().calld.banMeetingParticipant(meetingUuid, this.callId);
12264
+ }
12265
+
12266
+ async delay(ms ) {
12267
+ return new Promise(resolve => setTimeout(resolve, ms));
12268
+ }
12070
12269
  }
12071
12270
 
12072
12271
  //
@@ -12219,7 +12418,7 @@ class Room$1 extends Emitter {
12219
12418
  logger$2.info('connecting to room', { extension, audioOnly, room: !!room });
12220
12419
 
12221
12420
  if (!room) {
12222
- await Wazo.Phone.connect();
12421
+ await Wazo.Phone.connect({ media: constraints });
12223
12422
 
12224
12423
  const withCamera = constraints && !!constraints.video;
12225
12424
 
@@ -12664,7 +12863,7 @@ class Room$1 extends Emitter {
12664
12863
  const participant = this._getParticipantFromCallId(status.callId);
12665
12864
 
12666
12865
  if (participant) {
12667
- // we're received, so no need to broadcast, hence the input false arg
12866
+ // we're receiving, so no need to broadcast
12668
12867
  participant.updateStatus(status, false);
12669
12868
  }
12670
12869
  break;
@@ -12931,7 +13130,7 @@ class SipRoom extends Room$1 {
12931
13130
  logger$1.info('connecting to sip room', { extension, audioOnly, room: !!room });
12932
13131
 
12933
13132
  if (!room) {
12934
- await Wazo.Phone.connect();
13133
+ await Wazo.Phone.connect({ media: constraints });
12935
13134
 
12936
13135
  const withCamera = constraints && !!constraints.video;
12937
13136