@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
@@ -39,6 +39,7 @@ const logger = IssueReporter ? IssueReporter.loggerFor('webrtc-client') : consol
39
39
  const statsLogger = IssueReporter ? IssueReporter.loggerFor('webrtc-stats') : console;
40
40
  // events
41
41
  const REGISTERED = 'registered';
42
+ const REGISTERING = 'registering';
42
43
  const UNREGISTERED = 'unregistered';
43
44
  const REGISTRATION_FAILED = 'registrationFailed';
44
45
  const INVITE = 'invite';
@@ -57,7 +58,7 @@ const ON_SCREEN_SHARING_REINVITE = 'onScreenSharingReinvite';
57
58
  const ON_NETWORK_STATS = 'onNetworkStats';
58
59
  const ON_DISCONNECTED = 'onDisconnected';
59
60
 
60
- export const events = [REGISTERED, UNREGISTERED, REGISTRATION_FAILED, INVITE];
61
+ export const events = [REGISTERED, REGISTERING, UNREGISTERED, REGISTRATION_FAILED, INVITE];
61
62
  export const transportEvents = [CONNECTED, DISCONNECTED, TRANSPORT_ERROR, MESSAGE];
62
63
  export class CanceledCallError extends Error {}
63
64
 
@@ -119,6 +120,8 @@ export default class WebRTCClient extends Emitter {
119
120
 
120
121
  REGISTERED: string;
121
122
 
123
+ REGISTERING: string;
124
+
122
125
  UNREGISTERED: string;
123
126
 
124
127
  REGISTRATION_FAILED: string;
@@ -196,6 +199,7 @@ export default class WebRTCClient extends Emitter {
196
199
  this.heartbeat.setOnHeartbeatTimeout(this._onHeartbeatTimeout.bind(this));
197
200
  // sugar
198
201
  this.REGISTERED = REGISTERED;
202
+ this.REGISTERING = REGISTERING;
199
203
  this.UNREGISTERED = UNREGISTERED;
200
204
  this.REGISTRATION_FAILED = REGISTRATION_FAILED;
201
205
  this.INVITE = INVITE;
@@ -241,7 +245,7 @@ export default class WebRTCClient extends Emitter {
241
245
  logger.info('sdk webrtc on invite', {
242
246
  method: 'delegate.onInvite',
243
247
  clientId: this.clientId,
244
- id: invitation.id,
248
+ id: getSipCallId(invitation),
245
249
  remoteURI: (invitation as any).remoteURI,
246
250
  });
247
251
 
@@ -343,6 +347,8 @@ export default class WebRTCClient extends Emitter {
343
347
 
344
348
  logger.info('sdk webrtc registering...', logInfo);
345
349
 
350
+ this.eventEmitter.emit(REGISTERING);
351
+
346
352
  if (!this.userAgent) {
347
353
  logger.info('sdk webrtc recreating User Agent');
348
354
  this.userAgent = this.createUserAgent(this.uaConfigOverrides);
@@ -577,7 +583,7 @@ export default class WebRTCClient extends Emitter {
577
583
  },
578
584
  onReject: (response: IncomingResponse) => {
579
585
  logger.info('on call rejected', {
580
- id: session?.id,
586
+ id: getSipCallId(session),
581
587
  // @ts-ignore: fromTag does not exist
582
588
  fromTag: session?.fromTag,
583
589
  });
@@ -614,7 +620,7 @@ export default class WebRTCClient extends Emitter {
614
620
  answer(session: Invitation, enableVideo?: boolean): Promise<void> {
615
621
  logger.info('sdk webrtc answer call', {
616
622
  clientId: this.clientId,
617
- id: session.id,
623
+ id: getSipCallId(session),
618
624
  enableVideo,
619
625
  });
620
626
 
@@ -632,7 +638,7 @@ export default class WebRTCClient extends Emitter {
632
638
  if (session.isCanceled) {
633
639
  const message = 'accepted a canceled session (or was canceled during the accept phase).';
634
640
  logger.error(message, {
635
- id: session.id,
641
+ id: getSipCallId(session),
636
642
  });
637
643
  this.onCallEnded(session);
638
644
  throw new CanceledCallError(message);
@@ -642,7 +648,7 @@ export default class WebRTCClient extends Emitter {
642
648
 
643
649
  this._onAccepted(session);
644
650
  }).catch(e => {
645
- logger.error(`answer call error for ${session ? session.id : 'n/a'}`, e);
651
+ logger.error(`answer call error for ${getSipCallId(session)}`, e);
646
652
  throw e;
647
653
  });
648
654
  }
@@ -710,7 +716,7 @@ export default class WebRTCClient extends Emitter {
710
716
  async reject(session: WazoSession): Promise<void> {
711
717
  logger.info('sdk webrtc reject call', {
712
718
  clientId: this.clientId,
713
- id: session.id,
719
+ id: getSipCallId(session),
714
720
  });
715
721
 
716
722
  try {
@@ -773,7 +779,7 @@ export default class WebRTCClient extends Emitter {
773
779
 
774
780
  mute(session: WazoSession): void {
775
781
  logger.info('sdk webrtc mute', {
776
- id: session.id,
782
+ id: getSipCallId(session),
777
783
  });
778
784
 
779
785
  toggleAudio(session, true);
@@ -781,7 +787,7 @@ export default class WebRTCClient extends Emitter {
781
787
 
782
788
  unmute(session: WazoSession): void {
783
789
  logger.info('sdk webrtc unmute', {
784
- id: session.id,
790
+ id: getSipCallId(session),
785
791
  });
786
792
 
787
793
  toggleAudio(session, false);
@@ -826,7 +832,7 @@ export default class WebRTCClient extends Emitter {
826
832
 
827
833
  toggleCameraOn(session: WazoSession): void {
828
834
  logger.info('sdk webrtc toggle camera on', {
829
- id: session.id,
835
+ id: getSipCallId(session),
830
836
  });
831
837
 
832
838
  toggleVideo(session, false);
@@ -834,7 +840,7 @@ export default class WebRTCClient extends Emitter {
834
840
 
835
841
  toggleCameraOff(session: WazoSession): void {
836
842
  logger.info('sdk webrtc toggle camera off', {
837
- id: session.id,
843
+ id: getSipCallId(session),
838
844
  });
839
845
 
840
846
  toggleVideo(session, true);
@@ -1035,7 +1041,7 @@ export default class WebRTCClient extends Emitter {
1035
1041
  }
1036
1042
 
1037
1043
  logger.info('send WebRTC message', {
1038
- sipId: sipSession.id,
1044
+ sipId: getSipCallId(sipSession),
1039
1045
  contentType,
1040
1046
  });
1041
1047
 
@@ -1492,7 +1498,7 @@ export default class WebRTCClient extends Emitter {
1492
1498
  }
1493
1499
 
1494
1500
  getSipSession(id: string): WazoSession | null | undefined {
1495
- return id in this.sipSessions ? this.sipSessions[id.substring(0, SIP_ID_MIN_LENGTH)] : null;
1501
+ return id in this.sipSessions ? this.sipSessions[id] : null;
1496
1502
  }
1497
1503
 
1498
1504
  getSipCallIds(): string[] {
@@ -1547,8 +1553,8 @@ export default class WebRTCClient extends Emitter {
1547
1553
  return audio;
1548
1554
  }
1549
1555
 
1550
- _onTransportError(): void {
1551
- logger.error('on transport error');
1556
+ _onTransportError(reason?: string): void {
1557
+ logger.warn('on transport error', { reason });
1552
1558
  this.eventEmitter.emit(TRANSPORT_ERROR);
1553
1559
  this.attemptReconnection();
1554
1560
  }
@@ -1610,7 +1616,7 @@ export default class WebRTCClient extends Emitter {
1610
1616
  }
1611
1617
 
1612
1618
  // We can invoke disconnect() with an error that can be catcher by `onDisconnect`, so we have to trigger it here.
1613
- this._onTransportError();
1619
+ this._onTransportError('heartbeat timeout');
1614
1620
  }
1615
1621
  }
1616
1622
 
@@ -1763,18 +1769,17 @@ export default class WebRTCClient extends Emitter {
1763
1769
  async _onProgress(session: WazoSession, early = false): Promise<void> {
1764
1770
  await this._setupMedias(session);
1765
1771
 
1766
- const sessionId = getSipCallId(session).substr(0, 20);
1772
+ const sessionId = getSipCallId(session);
1773
+
1767
1774
  updateRemoteStream(session);
1768
- logger.info('progress received', {
1769
- sessionId,
1770
- early,
1771
- });
1775
+
1776
+ logger.info('progress received', { sessionId, early });
1772
1777
  this.eventEmitter.emit(early ? ON_EARLY_MEDIA : ON_PROGRESS, session);
1773
1778
  }
1774
1779
 
1775
1780
  async _onAccepted(session: WazoSession, sessionDialog?: SessionDialog, withEvent = true, initAllTracks = true): Promise<void> {
1776
1781
  logger.info('on call accepted', {
1777
- id: session.id,
1782
+ id: getSipCallId(session),
1778
1783
  clientId: this.clientId,
1779
1784
  remoteTag: session.remoteTag,
1780
1785
  });
@@ -2012,20 +2017,20 @@ export default class WebRTCClient extends Emitter {
2012
2017
  async _accept(session: Invitation, options: InvitationAcceptOptions = {}) {
2013
2018
  if (session.state === SessionState.Terminated || session.state === SessionState.Terminating) {
2014
2019
  const error = 'Trying to accept a terminated sipSession.';
2015
- logger.warn(error, { state: session.state, sessionId: session.id });
2020
+ logger.warn(error, { state: session.state, sessionId: getSipCallId(session) });
2016
2021
  throw new Error(error);
2017
2022
  }
2018
2023
 
2019
2024
  if (session.state !== SessionState.Initial) {
2020
2025
  const error = 'Trying to accept a non Initial sipSession.';
2021
- logger.warn(error, { state: session.state, sessionId: session.id });
2026
+ logger.warn(error, { state: session.state, sessionId: getSipCallId(session) });
2022
2027
  throw new Error(error);
2023
2028
  }
2024
2029
 
2025
2030
  // @ts-ignore: private
2026
2031
  if (!session.incomingInviteRequest.acceptable) {
2027
2032
  const error = 'Trying to reject a non `acceptable` session';
2028
- logger.warn(error, { state: session.state, sessionId: session.id });
2033
+ logger.warn(error, { state: session.state, sessionId: getSipCallId(session) });
2029
2034
  throw new Error(error);
2030
2035
  }
2031
2036
 
@@ -2038,13 +2043,13 @@ export default class WebRTCClient extends Emitter {
2038
2043
 
2039
2044
  async _reject(session: Invitation, options: InvitationRejectOptions = {}) {
2040
2045
  if (session.state !== SessionState.Initial && session.state !== SessionState.Establishing) {
2041
- logger.warn('Trying to reject a session in a wrong state', { state: session.state, sessionId: session.id });
2046
+ logger.warn('Trying to reject a session in a wrong state', { state: session.state, sessionId: getSipCallId(session) });
2042
2047
  return;
2043
2048
  }
2044
2049
 
2045
2050
  // @ts-ignore: private
2046
2051
  if (!session.incomingInviteRequest.rejectable) {
2047
- logger.warn('Trying to reject a non `rejectable` session', { state: session.state, sessionId: session.id });
2052
+ logger.warn('Trying to reject a non `rejectable` session', { state: session.state, sessionId: getSipCallId(session) });
2048
2053
  return;
2049
2054
  }
2050
2055
 
@@ -2057,7 +2062,7 @@ export default class WebRTCClient extends Emitter {
2057
2062
 
2058
2063
  async _cancel(session: Inviter, options: InviterCancelOptions = {}) {
2059
2064
  if (session.state !== SessionState.Initial && session.state !== SessionState.Establishing) {
2060
- logger.warn('Trying to cancel a session in a wrong state', { state: session.state, sessionId: session.id });
2065
+ logger.warn('Trying to cancel a session in a wrong state', { state: session.state, sessionId: getSipCallId(session) });
2061
2066
  return;
2062
2067
  }
2063
2068
 
@@ -2070,7 +2075,7 @@ export default class WebRTCClient extends Emitter {
2070
2075
 
2071
2076
  async _bye(session: WazoSession, options: SessionByeOptions = {}) {
2072
2077
  if (session.state !== SessionState.Established) {
2073
- logger.warn('Trying to end a session in a wrong state', { state: session.state, sessionId: session.id });
2078
+ logger.warn('Trying to end a session in a wrong state', { state: session.state, sessionId: getSipCallId(session) });
2074
2079
  return null;
2075
2080
  }
2076
2081