@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
@@ -1071,6 +1071,7 @@ const LINE_STATE = {
1071
1071
 
1072
1072
 
1073
1073
 
1074
+
1074
1075
 
1075
1076
 
1076
1077
 
@@ -1107,6 +1108,7 @@ const LINE_STATE = {
1107
1108
 
1108
1109
 
1109
1110
 
1111
+
1110
1112
 
1111
1113
 
1112
1114
 
@@ -1138,6 +1140,7 @@ class Profile {
1138
1140
 
1139
1141
 
1140
1142
 
1143
+
1141
1144
 
1142
1145
 
1143
1146
 
@@ -1154,6 +1157,7 @@ class Profile {
1154
1157
  lines: plain.lines.map(line => Line.parse(line)),
1155
1158
  username: plain.username,
1156
1159
  mobileNumber: plain.mobile_phone_number || '',
1160
+ ringSeconds: plain.ring_seconds,
1157
1161
  forwards: [
1158
1162
  ForwardOption.parse(plain.forwards.unconditional, FORWARD_KEYS.UNCONDITIONAL),
1159
1163
  ForwardOption.parse(plain.forwards.noanswer, FORWARD_KEYS.NO_ANSWER),
@@ -1190,6 +1194,7 @@ class Profile {
1190
1194
  switchboards,
1191
1195
  agent,
1192
1196
  status,
1197
+ ringSeconds,
1193
1198
  sipLines,
1194
1199
  callPickupTargetUsers,
1195
1200
  onlineCallRecordEnabled,
@@ -1211,6 +1216,7 @@ class Profile {
1211
1216
  this.status = status;
1212
1217
  this.callPickupTargetUsers = callPickupTargetUsers;
1213
1218
  this.onlineCallRecordEnabled = onlineCallRecordEnabled;
1219
+ this.ringSeconds = ringSeconds;
1214
1220
 
1215
1221
  this.sipLines = sipLines || [];
1216
1222
  }
@@ -2202,6 +2208,7 @@ class Session {
2202
2208
  /* */
2203
2209
 
2204
2210
  const DEFAULT_BACKEND_USER = 'wazo_user';
2211
+ const BACKEND_LDAP_USER = 'ldap_user';
2205
2212
  const DETAULT_EXPIRATION = 3600;
2206
2213
 
2207
2214
  var authMethods = (client , baseUrl ) => ({
@@ -2216,6 +2223,7 @@ var authMethods = (client , baseUrl ) => ({
2216
2223
 
2217
2224
 
2218
2225
 
2226
+
2219
2227
  ) {
2220
2228
  const body = {
2221
2229
  backend: params.backend || DEFAULT_BACKEND_USER,
@@ -2235,6 +2243,10 @@ var authMethods = (client , baseUrl ) => ({
2235
2243
  headers['Wazo-Session-Type'] = 'mobile';
2236
2244
  }
2237
2245
 
2246
+ if (params.tenantId) {
2247
+ body.tenant_id = params.tenantId;
2248
+ }
2249
+
2238
2250
  return client.post(`${baseUrl}/token`, body, headers).then(response => Session.parse(response));
2239
2251
  },
2240
2252
 
@@ -3275,6 +3287,7 @@ var updateFrom = (instance , from ) => {
3275
3287
 
3276
3288
 
3277
3289
 
3290
+
3278
3291
 
3279
3292
 
3280
3293
  class CallSession {
@@ -3337,6 +3350,8 @@ class CallSession {
3337
3350
 
3338
3351
 
3339
3352
 
3353
+
3354
+
3340
3355
 
3341
3356
 
3342
3357
 
@@ -3368,6 +3383,7 @@ class CallSession {
3368
3383
  videoRemotelyDowngraded,
3369
3384
  sipSession,
3370
3385
  answerTime,
3386
+ conference,
3371
3387
  } ) {
3372
3388
  this.callId = callId;
3373
3389
  this.sipCallId = sipCallId;
@@ -3396,6 +3412,7 @@ class CallSession {
3396
3412
  this.videoRemotelyDowngraded = videoRemotelyDowngraded;
3397
3413
  this.sipSession = sipSession;
3398
3414
  this.answerTime = answerTime || this.answerTime;
3415
+ this.conference = conference;
3399
3416
 
3400
3417
  // Useful to compare instead of instanceof with minified code
3401
3418
  this.type = 'CallSession';
@@ -3453,6 +3470,10 @@ class CallSession {
3453
3470
  this.screensharing = false;
3454
3471
  }
3455
3472
 
3473
+ setIsConference(conference ) {
3474
+ this.conference = conference;
3475
+ }
3476
+
3456
3477
  isIncoming() {
3457
3478
  return !this.isCaller && !this.answered;
3458
3479
  }
@@ -3529,6 +3550,10 @@ class CallSession {
3529
3550
  return this.sipStatus === SessionState.Terminated;
3530
3551
  }
3531
3552
 
3553
+ isConference() {
3554
+ return this.conference;
3555
+ }
3556
+
3532
3557
  getElapsedTimeInSeconds() {
3533
3558
  if (!this.startTime) {
3534
3559
  return 0;
@@ -3620,6 +3645,7 @@ class CallSession {
3620
3645
  cameraEnabled: false,
3621
3646
  dialedExtension: call.dialedExtension,
3622
3647
  call,
3648
+ conference: false, // @FIXME?
3623
3649
  });
3624
3650
  }
3625
3651
  }
@@ -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 ) {
@@ -13055,6 +13119,7 @@ const Wazo = {
13055
13119
  InvalidAuthorization,
13056
13120
  CanceledCallError,
13057
13121
  SFUNotAvailableError,
13122
+ NoTenantIdError,
13058
13123
  };
13059
13124
 
13060
13125
  if (window) {