@wazo/sdk 1.0.0-alpha.7 → 1.0.0-alpha.9

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 (64) hide show
  1. package/README.md +16 -7
  2. package/dist/wazo-sdk.js +2 -2
  3. package/esm/api/auth.js +3 -0
  4. package/esm/domain/CallLog.js +2 -3
  5. package/esm/domain/Phone/WebRTCPhone.js +29 -27
  6. package/esm/simple/Auth.js +13 -3
  7. package/esm/simple/Phone.js +2 -2
  8. package/esm/state-machine/softphone-state-machine.js +1 -2
  9. package/esm/types/api/auth.d.ts +3 -0
  10. package/esm/types/api/auth.d.ts.map +1 -1
  11. package/esm/types/domain/CallLog.d.ts.map +1 -1
  12. package/esm/types/domain/Phone/WebRTCPhone.d.ts +3 -3
  13. package/esm/types/domain/Phone/WebRTCPhone.d.ts.map +1 -1
  14. package/esm/types/simple/Auth.d.ts +6 -1
  15. package/esm/types/simple/Auth.d.ts.map +1 -1
  16. package/esm/types/simple/Phone.d.ts +2 -2
  17. package/esm/types/simple/Phone.d.ts.map +1 -1
  18. package/esm/types/state-machine/softphone-state-machine.d.ts +0 -1
  19. package/esm/types/state-machine/softphone-state-machine.d.ts.map +1 -1
  20. package/esm/types/utils/sdp.d.ts.map +1 -1
  21. package/esm/types/voice/call.d.ts.map +1 -1
  22. package/esm/types/voice/softphone.d.ts.map +1 -1
  23. package/esm/types/web-rtc-client.d.ts +2 -1
  24. package/esm/types/web-rtc-client.d.ts.map +1 -1
  25. package/esm/utils/sdp.js +8 -7
  26. package/esm/voice/call.js +3 -2
  27. package/esm/voice/softphone.js +23 -6
  28. package/esm/web-rtc-client.js +31 -30
  29. package/lib/api/auth.js +3 -0
  30. package/lib/domain/CallLog.js +2 -3
  31. package/lib/domain/Phone/WebRTCPhone.js +29 -27
  32. package/lib/simple/Auth.js +15 -3
  33. package/lib/state-machine/softphone-state-machine.js +1 -2
  34. package/lib/types/api/auth.d.ts +3 -0
  35. package/lib/types/api/auth.d.ts.map +1 -1
  36. package/lib/types/domain/CallLog.d.ts.map +1 -1
  37. package/lib/types/domain/Phone/WebRTCPhone.d.ts +3 -3
  38. package/lib/types/domain/Phone/WebRTCPhone.d.ts.map +1 -1
  39. package/lib/types/simple/Auth.d.ts +6 -1
  40. package/lib/types/simple/Auth.d.ts.map +1 -1
  41. package/lib/types/simple/Phone.d.ts +2 -2
  42. package/lib/types/simple/Phone.d.ts.map +1 -1
  43. package/lib/types/state-machine/softphone-state-machine.d.ts +0 -1
  44. package/lib/types/state-machine/softphone-state-machine.d.ts.map +1 -1
  45. package/lib/types/utils/sdp.d.ts.map +1 -1
  46. package/lib/types/voice/call.d.ts.map +1 -1
  47. package/lib/types/voice/softphone.d.ts.map +1 -1
  48. package/lib/types/web-rtc-client.d.ts +2 -1
  49. package/lib/types/web-rtc-client.d.ts.map +1 -1
  50. package/lib/utils/sdp.js +7 -6
  51. package/lib/voice/call.js +3 -2
  52. package/lib/voice/softphone.js +24 -6
  53. package/lib/web-rtc-client.js +29 -29
  54. package/package.json +1 -1
  55. package/src/api/auth.ts +5 -0
  56. package/src/domain/CallLog.ts +2 -3
  57. package/src/domain/Phone/WebRTCPhone.ts +33 -31
  58. package/src/simple/Auth.ts +15 -3
  59. package/src/simple/Phone.ts +3 -3
  60. package/src/state-machine/softphone-state-machine.ts +1 -2
  61. package/src/utils/sdp.ts +9 -8
  62. package/src/voice/call.ts +4 -3
  63. package/src/voice/softphone.ts +30 -7
  64. package/src/web-rtc-client.ts +34 -29
package/lib/utils/sdp.js CHANGED
@@ -121,18 +121,19 @@ const getSipCallId = (sipSession) => {
121
121
  if (!sipSession) {
122
122
  return '';
123
123
  }
124
- const message = sipSession.message;
125
- if (message === null || message === void 0 ? void 0 : message.callId) {
126
- return message.callId.substring(0, exports.SIP_ID_MIN_LENGTH);
127
- }
128
124
  // For Inviter
129
125
  // @ts-ignore: private
130
126
  if (sipSession instanceof api_1.Inviter && sipSession.outgoingRequestMessage) {
131
127
  // @ts-ignore: private
132
- return sipSession.outgoingRequestMessage.callId.substring(0, exports.SIP_ID_MIN_LENGTH);
128
+ return sipSession.outgoingRequestMessage.callId;
133
129
  }
134
130
  // For Invitation
135
- return (sipSession.id || '').substring(0, exports.SIP_ID_MIN_LENGTH);
131
+ // @ts-ignore: private
132
+ if (sipSession instanceof api_1.Invitation && sipSession.incomingInviteRequest.message) {
133
+ // @ts-ignore: private
134
+ return sipSession.incomingInviteRequest.message.callId;
135
+ }
136
+ return sipSession.id;
136
137
  };
137
138
  exports.getSipCallId = getSipCallId;
138
139
  // We need to replace 0.0.0.0 to 127.0.0.1 in the sdp to avoid MOH during a createOffer.
package/lib/voice/call.js CHANGED
@@ -103,7 +103,6 @@ class Call extends events_1.EventEmitter {
103
103
  },
104
104
  };
105
105
  const call = new Call(sipCall, softphone_1.default);
106
- // call._sendAction(Actions.ES);
107
106
  call.apiId = apiCall.id;
108
107
  call.answerTime = new Date(+apiCall.startingTime);
109
108
  // Update call state
@@ -135,7 +134,6 @@ class Call extends events_1.EventEmitter {
135
134
  this.sipCall = sipCall;
136
135
  this.number = (0, sdp_1.getCallNumber)(sipCall);
137
136
  this.displayName = (0, sdp_1.getCallDisplayName)(sipCall);
138
- this._bindEvents();
139
137
  }
140
138
  accept() {
141
139
  return __awaiter(this, arguments, void 0, function* (options = {}) {
@@ -447,6 +445,7 @@ class Call extends events_1.EventEmitter {
447
445
  this._onScreenSharing(localStream, false, desktop);
448
446
  }
449
447
  onMakeCall() {
448
+ this._bindEvents();
450
449
  this._sendAction(call_state_machine_1.Actions.MAKE_CALL);
451
450
  }
452
451
  onAccepted() {
@@ -660,7 +659,9 @@ class Call extends events_1.EventEmitter {
660
659
  this.emit(exports.EVENT_SHARE_SCREEN_STARTED, screenStream);
661
660
  }
662
661
  _sendAction(action) {
662
+ const was = this.state;
663
663
  this.callActor.send({ type: action });
664
+ logger.trace('call - send action', { action, was, state: this.state });
664
665
  }
665
666
  }
666
667
  exports.default = Call;
@@ -81,6 +81,7 @@ class Softphone extends events_1.EventEmitter {
81
81
  this.audioRingVolume = 1;
82
82
  const server = __1.default.Auth.getHost();
83
83
  const session = __1.default.Auth.getSession();
84
+ logger.info('softphone - connect', { server, session: !!session });
84
85
  if (!server || !session) {
85
86
  throw new Error('Please connect to the server using `Wazo.Auth.logIn` or `Wazo.Auth.authenticate` before using Room.connect().');
86
87
  }
@@ -101,6 +102,7 @@ class Softphone extends events_1.EventEmitter {
101
102
  return __awaiter(this, void 0, void 0, function* () {
102
103
  (0, utils_1.assertCan)(this.softphoneActor, softphone_state_machine_1.Actions.UNREGISTER);
103
104
  if (!this.client) {
105
+ logger.info('softphone - disconnect, not client to disconnect, bailing');
104
106
  return null;
105
107
  }
106
108
  // Terminate all calls
@@ -115,7 +117,8 @@ class Softphone extends events_1.EventEmitter {
115
117
  connectWithCredentials(server_1, sipLine_1, displayName_1) {
116
118
  return __awaiter(this, arguments, void 0, function* (server, sipLine, displayName, rawOptions = {}) {
117
119
  (0, utils_1.assertCan)(this.softphoneActor, softphone_state_machine_1.Actions.REGISTER);
118
- this.softphoneActor.send({ type: softphone_state_machine_1.Actions.REGISTER });
120
+ logger.info('softphone - connect with credentials', { server, username: sipLine.username, displayName, options: rawOptions });
121
+ this._sendAction(softphone_state_machine_1.Actions.REGISTER);
119
122
  const [host, port = 443] = server.split(':');
120
123
  let options = Object.assign({}, rawOptions);
121
124
  options.media = options.media || {
@@ -232,7 +235,8 @@ class Softphone extends events_1.EventEmitter {
232
235
  this.calls.filter(call => !call.isHeld() && call.id === (exceptCall === null || exceptCall === void 0 ? void 0 : exceptCall.id)).forEach(call => call.hold());
233
236
  }
234
237
  startHeartbeat() {
235
- logger.info('softphone - start heartbeat', { client: !!this.client, hasHeartbeat: this.client.hasHeartbeat() });
238
+ var _a;
239
+ logger.info('softphone - start heartbeat', { client: !!this.client, hasHeartbeat: (_a = this.client) === null || _a === void 0 ? void 0 : _a.hasHeartbeat() });
236
240
  if (!this.client || this.client.hasHeartbeat()) {
237
241
  return;
238
242
  }
@@ -363,18 +367,26 @@ class Softphone extends events_1.EventEmitter {
363
367
  });
364
368
  this.client.on(this.client.UNREGISTERED, () => {
365
369
  logger.info('softphone - unregistered');
370
+ if (!(0, utils_1.can)(this.softphoneActor, softphone_state_machine_1.Actions.UNREGISTER)) {
371
+ logger.warn('softphone - cannot unregister', { state: this.state });
372
+ return;
373
+ }
374
+ this._sendAction(softphone_state_machine_1.Actions.UNREGISTER);
366
375
  this.emit(exports.EVENT_UNREGISTERED);
367
- this._sendAction(softphone_state_machine_1.Actions.UNREGISTERED);
368
376
  });
369
377
  this.client.on(this.client.ON_DISCONNECTED, () => {
370
378
  logger.info('softphone - disconnected');
371
- this.emit(exports.EVENT_DISCONNECTED);
379
+ if (!(0, utils_1.can)(this.softphoneActor, softphone_state_machine_1.Actions.TRANSPORT_CLOSED)) {
380
+ logger.warn('softphone - cannot disconnected', { state: this.state });
381
+ return;
382
+ }
372
383
  this._sendAction(softphone_state_machine_1.Actions.TRANSPORT_CLOSED);
384
+ this.emit(exports.EVENT_DISCONNECTED);
373
385
  });
374
386
  this.client.on(this.client.REGISTERED, () => {
375
387
  logger.info('softphone - registered', { state: (0, utils_1.getState)(this.softphoneActor) });
376
388
  if (!(0, utils_1.can)(this.softphoneActor, softphone_state_machine_1.Actions.REGISTER_DONE)) {
377
- logger.warn('softphone - registered but not in REGISTERING state', { state: (0, utils_1.getState)(this.softphoneActor) });
389
+ logger.warn('softphone - registered but not in REGISTERING state', { state: this.state });
378
390
  return;
379
391
  }
380
392
  this.stopHeartbeat();
@@ -390,9 +402,13 @@ class Softphone extends events_1.EventEmitter {
390
402
  }
391
403
  });
392
404
  this.client.on(this.client.CONNECTED, () => {
393
- logger.info('softphone - connected');
405
+ logger.info('softphone - connected', { state: this.state });
394
406
  this.stopHeartbeat();
395
407
  });
408
+ this.client.on(this.client.REGISTERING, () => {
409
+ logger.info('softphone - registering', { state: this.state });
410
+ this._sendAction(softphone_state_machine_1.Actions.REGISTER);
411
+ });
396
412
  this.client.on(this.client.DISCONNECTED, () => {
397
413
  logger.info('softphone - disconnected');
398
414
  this.emit(exports.EVENT_DISCONNECTED);
@@ -418,7 +434,9 @@ class Softphone extends events_1.EventEmitter {
418
434
  });
419
435
  }
420
436
  _sendAction(action) {
437
+ const was = this.state;
421
438
  this.softphoneActor.send({ type: action });
439
+ logger.trace('softphone - send action', { action, was, state: this.state });
422
440
  }
423
441
  _getCall(sipCall) {
424
442
  return this.calls.find(call => call.id === (0, sdp_1.getSipCallId)(sipCall));
@@ -51,6 +51,7 @@ const logger = IssueReporter_1.default ? IssueReporter_1.default.loggerFor('webr
51
51
  const statsLogger = IssueReporter_1.default ? IssueReporter_1.default.loggerFor('webrtc-stats') : console;
52
52
  // events
53
53
  const REGISTERED = 'registered';
54
+ const REGISTERING = 'registering';
54
55
  const UNREGISTERED = 'unregistered';
55
56
  const REGISTRATION_FAILED = 'registrationFailed';
56
57
  const INVITE = 'invite';
@@ -68,7 +69,7 @@ const ON_ERROR = 'onError';
68
69
  const ON_SCREEN_SHARING_REINVITE = 'onScreenSharingReinvite';
69
70
  const ON_NETWORK_STATS = 'onNetworkStats';
70
71
  const ON_DISCONNECTED = 'onDisconnected';
71
- exports.events = [REGISTERED, UNREGISTERED, REGISTRATION_FAILED, INVITE];
72
+ exports.events = [REGISTERED, REGISTERING, UNREGISTERED, REGISTRATION_FAILED, INVITE];
72
73
  exports.transportEvents = [CONNECTED, DISCONNECTED, TRANSPORT_ERROR, MESSAGE];
73
74
  class CanceledCallError extends Error {
74
75
  }
@@ -112,6 +113,7 @@ class WebRTCClient extends Emitter_1.default {
112
113
  this.heartbeat.setOnHeartbeatTimeout(this._onHeartbeatTimeout.bind(this));
113
114
  // sugar
114
115
  this.REGISTERED = REGISTERED;
116
+ this.REGISTERING = REGISTERING;
115
117
  this.UNREGISTERED = UNREGISTERED;
116
118
  this.REGISTRATION_FAILED = REGISTRATION_FAILED;
117
119
  this.INVITE = INVITE;
@@ -153,7 +155,7 @@ class WebRTCClient extends Emitter_1.default {
153
155
  logger.info('sdk webrtc on invite', {
154
156
  method: 'delegate.onInvite',
155
157
  clientId: this.clientId,
156
- id: invitation.id,
158
+ id: (0, sdp_1.getSipCallId)(invitation),
157
159
  remoteURI: invitation.remoteURI,
158
160
  });
159
161
  this._setupSession(invitation);
@@ -244,6 +246,7 @@ class WebRTCClient extends Emitter_1.default {
244
246
  return Promise.resolve();
245
247
  }
246
248
  logger.info('sdk webrtc registering...', logInfo);
249
+ this.eventEmitter.emit(REGISTERING);
247
250
  if (!this.userAgent) {
248
251
  logger.info('sdk webrtc recreating User Agent');
249
252
  this.userAgent = this.createUserAgent(this.uaConfigOverrides);
@@ -443,7 +446,7 @@ class WebRTCClient extends Emitter_1.default {
443
446
  },
444
447
  onReject: (response) => {
445
448
  logger.info('on call rejected', {
446
- id: session === null || session === void 0 ? void 0 : session.id,
449
+ id: (0, sdp_1.getSipCallId)(session),
447
450
  // @ts-ignore: fromTag does not exist
448
451
  fromTag: session === null || session === void 0 ? void 0 : session.fromTag,
449
452
  });
@@ -473,7 +476,7 @@ class WebRTCClient extends Emitter_1.default {
473
476
  answer(session, enableVideo) {
474
477
  logger.info('sdk webrtc answer call', {
475
478
  clientId: this.clientId,
476
- id: session.id,
479
+ id: (0, sdp_1.getSipCallId)(session),
477
480
  enableVideo,
478
481
  });
479
482
  if (!session || !session.accept) {
@@ -489,7 +492,7 @@ class WebRTCClient extends Emitter_1.default {
489
492
  if (session.isCanceled) {
490
493
  const message = 'accepted a canceled session (or was canceled during the accept phase).';
491
494
  logger.error(message, {
492
- id: session.id,
495
+ id: (0, sdp_1.getSipCallId)(session),
493
496
  });
494
497
  this.onCallEnded(session);
495
498
  throw new CanceledCallError(message);
@@ -497,7 +500,7 @@ class WebRTCClient extends Emitter_1.default {
497
500
  logger.info('sdk webrtc answer, accepted.');
498
501
  this._onAccepted(session);
499
502
  }).catch(e => {
500
- logger.error(`answer call error for ${session ? session.id : 'n/a'}`, e);
503
+ logger.error(`answer call error for ${(0, sdp_1.getSipCallId)(session)}`, e);
501
504
  throw e;
502
505
  });
503
506
  }
@@ -557,7 +560,7 @@ class WebRTCClient extends Emitter_1.default {
557
560
  return __awaiter(this, void 0, void 0, function* () {
558
561
  logger.info('sdk webrtc reject call', {
559
562
  clientId: this.clientId,
560
- id: session.id,
563
+ id: (0, sdp_1.getSipCallId)(session),
561
564
  });
562
565
  try {
563
566
  if (session instanceof api_1.Invitation) {
@@ -614,13 +617,13 @@ class WebRTCClient extends Emitter_1.default {
614
617
  }
615
618
  mute(session) {
616
619
  logger.info('sdk webrtc mute', {
617
- id: session.id,
620
+ id: (0, sdp_1.getSipCallId)(session),
618
621
  });
619
622
  (0, webrtc_1.toggleAudio)(session, true);
620
623
  }
621
624
  unmute(session) {
622
625
  logger.info('sdk webrtc unmute', {
623
- id: session.id,
626
+ id: (0, sdp_1.getSipCallId)(session),
624
627
  });
625
628
  (0, webrtc_1.toggleAudio)(session, false);
626
629
  }
@@ -657,13 +660,13 @@ class WebRTCClient extends Emitter_1.default {
657
660
  }
658
661
  toggleCameraOn(session) {
659
662
  logger.info('sdk webrtc toggle camera on', {
660
- id: session.id,
663
+ id: (0, sdp_1.getSipCallId)(session),
661
664
  });
662
665
  (0, webrtc_1.toggleVideo)(session, false);
663
666
  }
664
667
  toggleCameraOff(session) {
665
668
  logger.info('sdk webrtc toggle camera off', {
666
- id: session.id,
669
+ id: (0, sdp_1.getSipCallId)(session),
667
670
  });
668
671
  (0, webrtc_1.toggleVideo)(session, true);
669
672
  }
@@ -837,7 +840,7 @@ class WebRTCClient extends Emitter_1.default {
837
840
  return;
838
841
  }
839
842
  logger.info('send WebRTC message', {
840
- sipId: sipSession.id,
843
+ sipId: (0, sdp_1.getSipCallId)(sipSession),
841
844
  contentType,
842
845
  });
843
846
  try {
@@ -1220,7 +1223,7 @@ class WebRTCClient extends Emitter_1.default {
1220
1223
  this.sipSessions[id] = session;
1221
1224
  }
1222
1225
  getSipSession(id) {
1223
- return id in this.sipSessions ? this.sipSessions[id.substring(0, sdp_1.SIP_ID_MIN_LENGTH)] : null;
1226
+ return id in this.sipSessions ? this.sipSessions[id] : null;
1224
1227
  }
1225
1228
  getSipCallIds() {
1226
1229
  return Object.keys(this.sipSessions);
@@ -1265,8 +1268,8 @@ class WebRTCClient extends Emitter_1.default {
1265
1268
  return audio;
1266
1269
  });
1267
1270
  }
1268
- _onTransportError() {
1269
- logger.error('on transport error');
1271
+ _onTransportError(reason) {
1272
+ logger.warn('on transport error', { reason });
1270
1273
  this.eventEmitter.emit(TRANSPORT_ERROR);
1271
1274
  this.attemptReconnection();
1272
1275
  }
@@ -1321,7 +1324,7 @@ class WebRTCClient extends Emitter_1.default {
1321
1324
  }
1322
1325
  }
1323
1326
  // We can invoke disconnect() with an error that can be catcher by `onDisconnect`, so we have to trigger it here.
1324
- this._onTransportError();
1327
+ this._onTransportError('heartbeat timeout');
1325
1328
  }
1326
1329
  });
1327
1330
  }
@@ -1443,19 +1446,16 @@ class WebRTCClient extends Emitter_1.default {
1443
1446
  _onProgress(session_1) {
1444
1447
  return __awaiter(this, arguments, void 0, function* (session, early = false) {
1445
1448
  yield this._setupMedias(session);
1446
- const sessionId = (0, sdp_1.getSipCallId)(session).substr(0, 20);
1449
+ const sessionId = (0, sdp_1.getSipCallId)(session);
1447
1450
  (0, webrtc_1.updateRemoteStream)(session);
1448
- logger.info('progress received', {
1449
- sessionId,
1450
- early,
1451
- });
1451
+ logger.info('progress received', { sessionId, early });
1452
1452
  this.eventEmitter.emit(early ? ON_EARLY_MEDIA : ON_PROGRESS, session);
1453
1453
  });
1454
1454
  }
1455
1455
  _onAccepted(session_1, sessionDialog_1) {
1456
1456
  return __awaiter(this, arguments, void 0, function* (session, sessionDialog, withEvent = true, initAllTracks = true) {
1457
1457
  logger.info('on call accepted', {
1458
- id: session.id,
1458
+ id: (0, sdp_1.getSipCallId)(session),
1459
1459
  clientId: this.clientId,
1460
1460
  remoteTag: session.remoteTag,
1461
1461
  });
@@ -1651,18 +1651,18 @@ class WebRTCClient extends Emitter_1.default {
1651
1651
  return __awaiter(this, arguments, void 0, function* (session, options = {}) {
1652
1652
  if (session.state === session_state_1.SessionState.Terminated || session.state === session_state_1.SessionState.Terminating) {
1653
1653
  const error = 'Trying to accept a terminated sipSession.';
1654
- logger.warn(error, { state: session.state, sessionId: session.id });
1654
+ logger.warn(error, { state: session.state, sessionId: (0, sdp_1.getSipCallId)(session) });
1655
1655
  throw new Error(error);
1656
1656
  }
1657
1657
  if (session.state !== session_state_1.SessionState.Initial) {
1658
1658
  const error = 'Trying to accept a non Initial sipSession.';
1659
- logger.warn(error, { state: session.state, sessionId: session.id });
1659
+ logger.warn(error, { state: session.state, sessionId: (0, sdp_1.getSipCallId)(session) });
1660
1660
  throw new Error(error);
1661
1661
  }
1662
1662
  // @ts-ignore: private
1663
1663
  if (!session.incomingInviteRequest.acceptable) {
1664
1664
  const error = 'Trying to reject a non `acceptable` session';
1665
- logger.warn(error, { state: session.state, sessionId: session.id });
1665
+ logger.warn(error, { state: session.state, sessionId: (0, sdp_1.getSipCallId)(session) });
1666
1666
  throw new Error(error);
1667
1667
  }
1668
1668
  try {
@@ -1676,12 +1676,12 @@ class WebRTCClient extends Emitter_1.default {
1676
1676
  _reject(session_1) {
1677
1677
  return __awaiter(this, arguments, void 0, function* (session, options = {}) {
1678
1678
  if (session.state !== session_state_1.SessionState.Initial && session.state !== session_state_1.SessionState.Establishing) {
1679
- logger.warn('Trying to reject a session in a wrong state', { state: session.state, sessionId: session.id });
1679
+ logger.warn('Trying to reject a session in a wrong state', { state: session.state, sessionId: (0, sdp_1.getSipCallId)(session) });
1680
1680
  return;
1681
1681
  }
1682
1682
  // @ts-ignore: private
1683
1683
  if (!session.incomingInviteRequest.rejectable) {
1684
- logger.warn('Trying to reject a non `rejectable` session', { state: session.state, sessionId: session.id });
1684
+ logger.warn('Trying to reject a non `rejectable` session', { state: session.state, sessionId: (0, sdp_1.getSipCallId)(session) });
1685
1685
  return;
1686
1686
  }
1687
1687
  try {
@@ -1695,7 +1695,7 @@ class WebRTCClient extends Emitter_1.default {
1695
1695
  _cancel(session_1) {
1696
1696
  return __awaiter(this, arguments, void 0, function* (session, options = {}) {
1697
1697
  if (session.state !== session_state_1.SessionState.Initial && session.state !== session_state_1.SessionState.Establishing) {
1698
- logger.warn('Trying to cancel a session in a wrong state', { state: session.state, sessionId: session.id });
1698
+ logger.warn('Trying to cancel a session in a wrong state', { state: session.state, sessionId: (0, sdp_1.getSipCallId)(session) });
1699
1699
  return;
1700
1700
  }
1701
1701
  try {
@@ -1709,7 +1709,7 @@ class WebRTCClient extends Emitter_1.default {
1709
1709
  _bye(session_1) {
1710
1710
  return __awaiter(this, arguments, void 0, function* (session, options = {}) {
1711
1711
  if (session.state !== session_state_1.SessionState.Established) {
1712
- logger.warn('Trying to end a session in a wrong state', { state: session.state, sessionId: session.id });
1712
+ logger.warn('Trying to end a session in a wrong state', { state: session.state, sessionId: (0, sdp_1.getSipCallId)(session) });
1713
1713
  return null;
1714
1714
  }
1715
1715
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wazo/sdk",
3
- "version": "1.0.0-alpha.7",
3
+ "version": "1.0.0-alpha.9",
4
4
  "description": "Wazo's JavaScript Software Development Kit.",
5
5
  "main": "index.js",
6
6
  "types": "lib/types/index.d.ts",
package/src/api/auth.ts CHANGED
@@ -33,6 +33,7 @@ export interface AuthD {
33
33
  logIn(params: LoginParams): Promise<Session | null | undefined> ;
34
34
  logOut: (token: Token) => Promise<LogoutResponse>;
35
35
  samlLogIn: (samlSessionId: string) => Promise<Session | null | undefined>;
36
+ samlLogOut: () => Promise<void | { location:string }>;
36
37
  initiateIdpAuthentication(domain: string, redirectUrl: string): Promise<any>;
37
38
  refreshToken: (refreshToken: string, backend: string, expiration: number, isMobile?: boolean, tenantId?: string, domainName?: string) => Promise<Session | null | undefined>;
38
39
  deleteRefreshToken: (clientId: string) => Promise<boolean>;
@@ -139,6 +140,10 @@ export default ((client: ApiRequester, baseUrl: string): AuthD => ({
139
140
  return client.post(`${baseUrl}/token`, body, headers).then(Session.parse);
140
141
  },
141
142
 
143
+ samlLogOut() {
144
+ return client.get(`${baseUrl}/saml/logout`, null, null);
145
+ },
146
+
142
147
  initiateIdpAuthentication: async (domain: string, redirectUrl: string) => {
143
148
  const body = {
144
149
  domain,
@@ -118,8 +118,7 @@ export default class CallLog {
118
118
 
119
119
  static parseNew(plain: CallLogResponse, session: Session): CallLog {
120
120
  const callLog: CallLog = CallLog.parse(plain);
121
- // @TODO: FIXME add verification declined vs missed call
122
- callLog.newMissedCall = session && session.hasExtension((plain.requested_extension || plain.destination_extension) as string) && !plain.answered;
121
+ callLog.newMissedCall = session && plain.destination_user_uuid === session.uuid && !plain.answered;
123
122
  return callLog;
124
123
  }
125
124
 
@@ -203,7 +202,7 @@ export default class CallLog {
203
202
  }
204
203
 
205
204
  isAnOutgoingCall(session: Session): boolean {
206
- console.warn(`@wazo/sdk
205
+ console.warn(`@wazo/sdk
207
206
  CallLog.isAnOutgoingcall(session) method is obsolete.
208
207
  Please use CallLog.isOutgoing(session).
209
208
  `);