@wazo/sdk 0.37.34 → 0.37.37

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 (99) hide show
  1. package/README.md +8 -2
  2. package/dist/wazo-sdk.js +2 -2
  3. package/esm/__tests__/api-client.test.js +17 -0
  4. package/esm/__tests__/web-rtc-client.test.js +17 -0
  5. package/esm/api/auth.js +7 -1
  6. package/esm/api/call-logd.js +6 -0
  7. package/esm/api/chatd.js +6 -0
  8. package/esm/api/confd.js +6 -0
  9. package/esm/api-client.js +17 -0
  10. package/esm/checker/Checker.js +17 -0
  11. package/esm/checker/checks/aor.js +17 -0
  12. package/esm/checker/checks/api.js +17 -0
  13. package/esm/checker/checks/index.js +17 -0
  14. package/esm/checker/checks/webrtc-transport.js +17 -0
  15. package/esm/checker/checks/webrtc.js +17 -0
  16. package/esm/domain/AdHocAPIConference.js +21 -0
  17. package/esm/domain/CallLog.js +6 -0
  18. package/esm/domain/CallSession.js +14 -0
  19. package/esm/domain/Features.js +17 -0
  20. package/esm/domain/Phone/CTIPhone.js +31 -0
  21. package/esm/domain/Phone/WebRTCPhone.js +42 -11
  22. package/esm/domain/Profile.js +6 -0
  23. package/esm/domain/__tests__/CallLog.test.js +10 -0
  24. package/esm/domain/__tests__/CallSession.test.js +14 -0
  25. package/esm/domain/__tests__/IndirectTransfer.test.js +14 -0
  26. package/esm/domain/__tests__/Profile.test.js +6 -0
  27. package/esm/domain/__tests__/Room.test.js +14 -0
  28. package/esm/domain/__tests__/Session.test.js +6 -0
  29. package/esm/index.js +83 -18
  30. package/esm/service/CallApi.js +17 -0
  31. package/esm/service/getApiClient.js +17 -0
  32. package/esm/simple/Auth.js +84 -19
  33. package/esm/simple/Configuration.js +83 -18
  34. package/esm/simple/Directory.js +17 -0
  35. package/esm/simple/Phone.js +83 -18
  36. package/esm/simple/index.js +83 -18
  37. package/esm/simple/room/LocalParticipant.js +83 -18
  38. package/esm/simple/room/Participant.js +83 -18
  39. package/esm/simple/room/RemoteParticipant.js +83 -18
  40. package/esm/simple/room/Room.js +83 -18
  41. package/esm/simple/room/SipRoom.js +83 -18
  42. package/esm/simple/room/Stream.js +83 -18
  43. package/esm/simple/room/__tests__/RemoteParticipant.test.js +83 -18
  44. package/esm/simple/utils.js +83 -18
  45. package/esm/web-rtc-client.js +17 -0
  46. package/lib/__tests__/api-client.test.js +17 -0
  47. package/lib/__tests__/web-rtc-client.test.js +17 -0
  48. package/lib/api/auth.js +8 -0
  49. package/lib/api/call-logd.js +6 -0
  50. package/lib/api/chatd.js +6 -0
  51. package/lib/api/confd.js +6 -0
  52. package/lib/api-client.js +17 -0
  53. package/lib/checker/Checker.js +17 -0
  54. package/lib/checker/checks/aor.js +17 -0
  55. package/lib/checker/checks/api.js +17 -0
  56. package/lib/checker/checks/index.js +17 -0
  57. package/lib/checker/checks/webrtc-transport.js +17 -0
  58. package/lib/checker/checks/webrtc.js +17 -0
  59. package/lib/domain/AdHocAPIConference.js +21 -0
  60. package/lib/domain/CallLog.js +6 -0
  61. package/lib/domain/CallSession.js +14 -0
  62. package/lib/domain/Features.js +17 -0
  63. package/lib/domain/Phone/CTIPhone.js +31 -0
  64. package/lib/domain/Phone/WebRTCPhone.js +42 -11
  65. package/lib/domain/Profile.js +6 -0
  66. package/lib/domain/__tests__/CallLog.test.js +10 -0
  67. package/lib/domain/__tests__/CallSession.test.js +14 -0
  68. package/lib/domain/__tests__/IndirectTransfer.test.js +14 -0
  69. package/lib/domain/__tests__/Profile.test.js +6 -0
  70. package/lib/domain/__tests__/Room.test.js +14 -0
  71. package/lib/domain/__tests__/Session.test.js +6 -0
  72. package/lib/index.js +83 -18
  73. package/lib/service/CallApi.js +17 -0
  74. package/lib/service/getApiClient.js +17 -0
  75. package/lib/simple/Auth.js +84 -18
  76. package/lib/simple/Configuration.js +83 -18
  77. package/lib/simple/Directory.js +17 -0
  78. package/lib/simple/Phone.js +83 -18
  79. package/lib/simple/index.js +83 -18
  80. package/lib/simple/room/LocalParticipant.js +83 -18
  81. package/lib/simple/room/Participant.js +83 -18
  82. package/lib/simple/room/RemoteParticipant.js +83 -18
  83. package/lib/simple/room/Room.js +83 -18
  84. package/lib/simple/room/SipRoom.js +83 -18
  85. package/lib/simple/room/Stream.js +83 -18
  86. package/lib/simple/room/__tests__/RemoteParticipant.test.js +83 -18
  87. package/lib/simple/utils.js +83 -18
  88. package/lib/web-rtc-client.js +17 -0
  89. package/package.json +1 -1
  90. package/src/api/auth.js +7 -1
  91. package/src/domain/AdHocAPIConference.js +4 -0
  92. package/src/domain/CallLog.js +6 -0
  93. package/src/domain/CallSession.js +14 -0
  94. package/src/domain/Phone/WebRTCPhone.js +28 -11
  95. package/src/domain/Profile.js +6 -0
  96. package/src/domain/__tests__/CallLog.test.js +4 -0
  97. package/src/simple/Auth.js +13 -2
  98. package/src/simple/Phone.js +6 -6
  99. package/src/simple/index.js +2 -1
@@ -1097,6 +1097,7 @@ const LINE_STATE = {
1097
1097
 
1098
1098
 
1099
1099
 
1100
+
1100
1101
 
1101
1102
 
1102
1103
 
@@ -1133,6 +1134,7 @@ const LINE_STATE = {
1133
1134
 
1134
1135
 
1135
1136
 
1137
+
1136
1138
 
1137
1139
 
1138
1140
 
@@ -1164,6 +1166,7 @@ class Profile {
1164
1166
 
1165
1167
 
1166
1168
 
1169
+
1167
1170
 
1168
1171
 
1169
1172
 
@@ -1180,6 +1183,7 @@ class Profile {
1180
1183
  lines: plain.lines.map(line => Line.parse(line)),
1181
1184
  username: plain.username,
1182
1185
  mobileNumber: plain.mobile_phone_number || '',
1186
+ ringSeconds: plain.ring_seconds,
1183
1187
  forwards: [
1184
1188
  ForwardOption.parse(plain.forwards.unconditional, FORWARD_KEYS.UNCONDITIONAL),
1185
1189
  ForwardOption.parse(plain.forwards.noanswer, FORWARD_KEYS.NO_ANSWER),
@@ -1216,6 +1220,7 @@ class Profile {
1216
1220
  switchboards,
1217
1221
  agent,
1218
1222
  status,
1223
+ ringSeconds,
1219
1224
  sipLines,
1220
1225
  callPickupTargetUsers,
1221
1226
  onlineCallRecordEnabled,
@@ -1237,6 +1242,7 @@ class Profile {
1237
1242
  this.status = status;
1238
1243
  this.callPickupTargetUsers = callPickupTargetUsers;
1239
1244
  this.onlineCallRecordEnabled = onlineCallRecordEnabled;
1245
+ this.ringSeconds = ringSeconds;
1240
1246
 
1241
1247
  this.sipLines = sipLines || [];
1242
1248
  }
@@ -2228,6 +2234,7 @@ class Session {
2228
2234
  /* */
2229
2235
 
2230
2236
  const DEFAULT_BACKEND_USER = 'wazo_user';
2237
+ const BACKEND_LDAP_USER = 'ldap_user';
2231
2238
  const DETAULT_EXPIRATION = 3600;
2232
2239
 
2233
2240
  var authMethods = (client , baseUrl ) => ({
@@ -2242,6 +2249,7 @@ var authMethods = (client , baseUrl ) => ({
2242
2249
 
2243
2250
 
2244
2251
 
2252
+
2245
2253
  ) {
2246
2254
  const body = {
2247
2255
  backend: params.backend || DEFAULT_BACKEND_USER,
@@ -2261,6 +2269,10 @@ var authMethods = (client , baseUrl ) => ({
2261
2269
  headers['Wazo-Session-Type'] = 'mobile';
2262
2270
  }
2263
2271
 
2272
+ if (params.tenantId) {
2273
+ body.tenant_id = params.tenantId;
2274
+ }
2275
+
2264
2276
  return client.post(`${baseUrl}/token`, body, headers).then(response => Session.parse(response));
2265
2277
  },
2266
2278
 
@@ -3301,6 +3313,7 @@ var updateFrom = (instance , from ) => {
3301
3313
 
3302
3314
 
3303
3315
 
3316
+
3304
3317
 
3305
3318
 
3306
3319
  class CallSession {
@@ -3363,6 +3376,8 @@ class CallSession {
3363
3376
 
3364
3377
 
3365
3378
 
3379
+
3380
+
3366
3381
 
3367
3382
 
3368
3383
 
@@ -3394,6 +3409,7 @@ class CallSession {
3394
3409
  videoRemotelyDowngraded,
3395
3410
  sipSession,
3396
3411
  answerTime,
3412
+ conference,
3397
3413
  } ) {
3398
3414
  this.callId = callId;
3399
3415
  this.sipCallId = sipCallId;
@@ -3422,6 +3438,7 @@ class CallSession {
3422
3438
  this.videoRemotelyDowngraded = videoRemotelyDowngraded;
3423
3439
  this.sipSession = sipSession;
3424
3440
  this.answerTime = answerTime || this.answerTime;
3441
+ this.conference = conference;
3425
3442
 
3426
3443
  // Useful to compare instead of instanceof with minified code
3427
3444
  this.type = 'CallSession';
@@ -3479,6 +3496,10 @@ class CallSession {
3479
3496
  this.screensharing = false;
3480
3497
  }
3481
3498
 
3499
+ setIsConference(conference ) {
3500
+ this.conference = conference;
3501
+ }
3502
+
3482
3503
  isIncoming() {
3483
3504
  return !this.isCaller && !this.answered;
3484
3505
  }
@@ -3555,6 +3576,10 @@ class CallSession {
3555
3576
  return this.sipStatus === SessionState.Terminated;
3556
3577
  }
3557
3578
 
3579
+ isConference() {
3580
+ return this.conference;
3581
+ }
3582
+
3558
3583
  getElapsedTimeInSeconds() {
3559
3584
  if (!this.startTime) {
3560
3585
  return 0;
@@ -3646,6 +3671,7 @@ class CallSession {
3646
3671
  cameraEnabled: false,
3647
3672
  dialedExtension: call.dialedExtension,
3648
3673
  call,
3674
+ conference: false, // @FIXME?
3649
3675
  });
3650
3676
  }
3651
3677
  }
@@ -3709,11 +3735,13 @@ class Recording {
3709
3735
 
3710
3736
 
3711
3737
 
3738
+
3712
3739
 
3713
3740
 
3714
3741
 
3715
3742
 
3716
3743
 
3744
+
3717
3745
 
3718
3746
 
3719
3747
 
@@ -3734,10 +3762,12 @@ class Recording {
3734
3762
 
3735
3763
 
3736
3764
 
3765
+
3737
3766
 
3738
3767
 
3739
3768
 
3740
3769
 
3770
+
3741
3771
 
3742
3772
 
3743
3773
 
@@ -3799,10 +3829,12 @@ class CallLog {
3799
3829
  || plain.destination_extension
3800
3830
  || `meeting-${plain.requested_name || plain.destination_name || ''}`,
3801
3831
  name: plain.requested_name || plain.destination_name || '',
3832
+ uuid: plain.destination_user_uuid,
3802
3833
  },
3803
3834
  source: {
3804
3835
  extension: plain.source_extension,
3805
3836
  name: plain.source_name,
3837
+ uuid: plain.source_user_uuid,
3806
3838
  },
3807
3839
  id: plain.id,
3808
3840
  duration: (plain.duration || 0) * 1000, // duration is in seconds
@@ -5578,6 +5610,7 @@ var getApiClient = (forServer ) => {
5578
5610
 
5579
5611
  class InvalidSubscription extends Error {}
5580
5612
  class InvalidAuthorization extends Error {}
5613
+ class NoTenantIdError extends Error {}
5581
5614
 
5582
5615
  const logger$9 = IssueReporter$1.loggerFor('simple-auth');
5583
5616
 
@@ -5591,11 +5624,15 @@ class Auth {
5591
5624
 
5592
5625
 
5593
5626
 
5627
+
5628
+
5594
5629
 
5595
5630
  constructor() {
5596
5631
  this.expiration = DETAULT_EXPIRATION;
5597
5632
  this.authenticated = false;
5598
5633
  this.minSubscriptionType = null;
5634
+ this.BACKEND_WAZO = DEFAULT_BACKEND_USER;
5635
+ this.BACKEND_LDAP = BACKEND_LDAP_USER;
5599
5636
  }
5600
5637
 
5601
5638
  init(clientId ,
@@ -5628,12 +5665,18 @@ class Auth {
5628
5665
  setFetchOptions(options);
5629
5666
  }
5630
5667
 
5631
- async logIn(username , password ) {
5668
+ async logIn(username , password , backend , tenantId ) {
5669
+ if (backend && backend !== this.BACKEND_WAZO && !tenantId) {
5670
+ throw new NoTenantIdError('No tenant id');
5671
+ }
5672
+
5632
5673
  this.authenticated = false;
5633
5674
  this.session = null;
5634
5675
  const rawSession = await getApiClient().auth.logIn({
5635
5676
  username,
5636
5677
  password,
5678
+ backend,
5679
+ tenantId,
5637
5680
  expiration: this.expiration,
5638
5681
  mobile: this.mobile,
5639
5682
  });
@@ -5909,6 +5952,10 @@ class AdHocAPIConference {
5909
5952
  this.conferenceId = conferenceId || '';
5910
5953
  this.muted = muted || false;
5911
5954
  this.paused = paused || false;
5955
+
5956
+ if (this.host) {
5957
+ this.host.setIsConference(true);
5958
+ }
5912
5959
  }
5913
5960
 
5914
5961
  async start() {
@@ -9618,7 +9665,11 @@ class WebRTCPhone extends Emitter {
9618
9665
  accept(callSession , cameraEnabled ) {
9619
9666
  logger$7.info('WebRTC phone - accept call', { id: callSession ? callSession.getId() : 'n/a', cameraEnabled });
9620
9667
  if (this.currentSipSession) {
9621
- this.holdSipSession(this.currentSipSession, this.currentCallSession, true);
9668
+ this.holdSipSession(
9669
+ this.currentSipSession,
9670
+ this.currentCallSession,
9671
+ true,
9672
+ );
9622
9673
  }
9623
9674
 
9624
9675
  if (!callSession) {
@@ -9711,22 +9762,22 @@ class WebRTCPhone extends Emitter {
9711
9762
  }
9712
9763
  }
9713
9764
 
9714
- hold(callSession , withEvent = true, isConference = false) {
9765
+ hold(callSession , withEvent = true) {
9715
9766
  logger$7.info('WebRTC hold', { id: callSession.getId() });
9716
9767
 
9717
9768
  const sipSession = this.findSipSession(callSession);
9718
9769
 
9719
- return sipSession ? this.holdSipSession(sipSession, callSession, withEvent, isConference) : null;
9770
+ return sipSession ? this.holdSipSession(sipSession, callSession, withEvent) : null;
9720
9771
  }
9721
9772
 
9722
9773
  // @Deprecated
9723
- unhold(callSession , withEvent = true, isConference = false) {
9774
+ unhold(callSession , withEvent = true) {
9724
9775
  console.warn('Please note that `phone.unhold()` is being deprecated; `phone.resume()` is the preferred method');
9725
9776
 
9726
- return this.resume(callSession, isConference, withEvent);
9777
+ return this.resume(callSession, withEvent);
9727
9778
  }
9728
9779
 
9729
- resume(callSession , isConference = false, withEvent = true) {
9780
+ resume(callSession , withEvent = true) {
9730
9781
  logger$7.info('WebRTC resume called', { id: callSession ? callSession.getId() : null });
9731
9782
 
9732
9783
  const sipSession = this.findSipSession(callSession);
@@ -9739,10 +9790,14 @@ class WebRTCPhone extends Emitter {
9739
9790
  // Hold current session if different from the current one (we don't want 2 sessions active at the same time).
9740
9791
  if (this.currentSipSession && this.currentSipSession.id !== sipSession.id) {
9741
9792
  logger$7.info('WebRTC hold call after resume', { id: this.currentSipSession.id });
9742
- this.holdSipSession(this.currentSipSession, this.currentCallSession);
9793
+ this.holdSipSession(
9794
+ this.currentSipSession,
9795
+ this.currentCallSession,
9796
+ withEvent,
9797
+ );
9743
9798
  }
9744
9799
 
9745
- const promise = this.unholdSipSession(sipSession, callSession, withEvent, isConference);
9800
+ const promise = this.unholdSipSession(sipSession, callSession, withEvent);
9746
9801
  this.currentSipSession = sipSession;
9747
9802
  if (callSession) {
9748
9803
  this.currentCallSession = callSession;
@@ -9755,7 +9810,6 @@ class WebRTCPhone extends Emitter {
9755
9810
  sipSession ,
9756
9811
  callSession ,
9757
9812
  withEvent = true,
9758
- isConference = false,
9759
9813
  ) {
9760
9814
  if (!sipSession) {
9761
9815
  return new Promise((resolve, reject) => reject(new Error('No session to hold')));
@@ -9776,6 +9830,8 @@ class WebRTCPhone extends Emitter {
9776
9830
  await this.client.downgradeToAudio(sipSession);
9777
9831
  }
9778
9832
 
9833
+ const isConference = !!callSession && callSession.isConference();
9834
+
9779
9835
  const promise = this.client.hold(sipSession, isConference, hasVideo);
9780
9836
  if (withEvent) {
9781
9837
  this.eventEmitter.emit(ON_CALL_HELD, this._createCallSession(sipSession, callSession));
@@ -9788,11 +9844,13 @@ class WebRTCPhone extends Emitter {
9788
9844
  sipSession ,
9789
9845
  callSession ,
9790
9846
  withEvent = true,
9791
- isConference = false,
9792
9847
  ) {
9793
9848
  if (!sipSession) {
9794
9849
  return new Promise((resolve, reject) => reject(new Error('No session to unhold')));
9795
9850
  }
9851
+
9852
+ const isConference = !!callSession && callSession.isConference();
9853
+
9796
9854
  const sessionId = this.getSipSessionId(sipSession);
9797
9855
  logger$7.info('WebRTC unhold sip session', { sessionId, isConference });
9798
9856
 
@@ -9934,7 +9992,11 @@ class WebRTCPhone extends Emitter {
9934
9992
  await this.client.register();
9935
9993
  }
9936
9994
  if (this.currentSipSession) {
9937
- this.holdSipSession(this.currentSipSession, this.currentCallSession, true).catch(e => {
9995
+ this.holdSipSession(
9996
+ this.currentSipSession,
9997
+ this.currentCallSession,
9998
+ true,
9999
+ ).catch(e => {
9938
10000
  logger$7.warn('Unable to hold current session when making another call', e);
9939
10001
  });
9940
10002
  }
@@ -9949,6 +10011,7 @@ class WebRTCPhone extends Emitter {
9949
10011
  return Promise.resolve(null);
9950
10012
  }
9951
10013
  const callSession = this._createOutgoingCallSession(sipSession, cameraEnabled || false);
10014
+ callSession.setIsConference(conference);
9952
10015
  callSession.creationTime = new Date();
9953
10016
  this._updateCallSession(callSession);
9954
10017
 
@@ -10527,6 +10590,7 @@ class WebRTCPhone extends Emitter {
10527
10590
  recording: fromSession ? fromSession.isRecording() : false,
10528
10591
  recordingPaused: false, // @TODO
10529
10592
  sipSession,
10593
+ conference: !!fromSession && fromSession.isConference(),
10530
10594
  ...extra,
10531
10595
  });
10532
10596
 
@@ -10783,16 +10847,16 @@ class Phone extends Emitter {
10783
10847
  }
10784
10848
  }
10785
10849
 
10786
- hold(callSession , isConference = false) {
10787
- return this.phone && this.phone.hold(callSession, true, isConference);
10850
+ hold(callSession ) {
10851
+ return this.phone && this.phone.hold(callSession, true);
10788
10852
  }
10789
10853
 
10790
- unhold(callSession , isConference = false) {
10791
- return this.phone && this.phone.unhold(callSession, true, isConference);
10854
+ unhold(callSession ) {
10855
+ return this.phone && this.phone.unhold(callSession, true);
10792
10856
  }
10793
10857
 
10794
- resume(callSession , isConference = false) {
10795
- return this.phone && this.phone.resume(callSession, isConference);
10858
+ resume(callSession ) {
10859
+ return this.phone && this.phone.resume(callSession);
10796
10860
  }
10797
10861
 
10798
10862
  reject(callSession ) {
@@ -12760,6 +12824,7 @@ const Wazo = {
12760
12824
  InvalidAuthorization,
12761
12825
  CanceledCallError,
12762
12826
  SFUNotAvailableError,
12827
+ NoTenantIdError,
12763
12828
  };
12764
12829
 
12765
12830
  if (window) {