@wazo/sdk 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (158) hide show
  1. package/README.md +16 -7
  2. package/dist/wazo-sdk.js +2 -2
  3. package/esm/__tests__/__voice__/call.test.js +52 -3
  4. package/esm/api/auth.js +3 -0
  5. package/esm/checker/checks/webrtc.js +2 -2
  6. package/esm/domain/CallLog.js +2 -3
  7. package/esm/domain/Phone/CTIPhone.js +2 -2
  8. package/esm/domain/Phone/WebRTCPhone.js +59 -57
  9. package/esm/index.js +3 -1
  10. package/esm/service/CallApi.js +4 -4
  11. package/esm/simple/Auth.js +13 -3
  12. package/esm/simple/Phone.js +5 -5
  13. package/esm/simple/index.js +2 -1
  14. package/esm/simple/room/Room.js +2 -2
  15. package/esm/simple/room/SipRoom.js +2 -2
  16. package/esm/state-machine/call-state-machine.js +34 -19
  17. package/esm/state-machine/softphone-state-machine.js +1 -2
  18. package/esm/state-machine/utils.js +10 -4
  19. package/esm/types/api/auth.d.ts +3 -0
  20. package/esm/types/api/auth.d.ts.map +1 -1
  21. package/esm/types/checker/checks/index.d.ts +1 -1
  22. package/esm/types/checker/checks/webrtc-transport.d.ts +2 -2
  23. package/esm/types/checker/checks/webrtc-transport.d.ts.map +1 -1
  24. package/esm/types/domain/CallLog.d.ts.map +1 -1
  25. package/esm/types/domain/CallSession.d.ts +3 -3
  26. package/esm/types/domain/CallSession.d.ts.map +1 -1
  27. package/esm/types/domain/Phone/CTIPhone.d.ts.map +1 -1
  28. package/esm/types/domain/Phone/WebRTCPhone.d.ts +22 -22
  29. package/esm/types/domain/Phone/WebRTCPhone.d.ts.map +1 -1
  30. package/esm/types/domain/types.d.ts +0 -4
  31. package/esm/types/domain/types.d.ts.map +1 -1
  32. package/esm/types/index.d.ts +3 -1
  33. package/esm/types/index.d.ts.map +1 -1
  34. package/esm/types/lib/WazoSessionDescriptionHandler.d.ts +3 -3
  35. package/esm/types/lib/WazoSessionDescriptionHandler.d.ts.map +1 -1
  36. package/esm/types/service/CallApi.d.ts +5 -5
  37. package/esm/types/service/CallApi.d.ts.map +1 -1
  38. package/esm/types/simple/Auth.d.ts +6 -1
  39. package/esm/types/simple/Auth.d.ts.map +1 -1
  40. package/esm/types/simple/Phone.d.ts +8 -8
  41. package/esm/types/simple/Phone.d.ts.map +1 -1
  42. package/esm/types/simple/index.d.ts +3 -1
  43. package/esm/types/simple/index.d.ts.map +1 -1
  44. package/esm/types/state-machine/call-state-machine.d.ts +12 -1
  45. package/esm/types/state-machine/call-state-machine.d.ts.map +1 -1
  46. package/esm/types/state-machine/softphone-state-machine.d.ts +1 -2
  47. package/esm/types/state-machine/softphone-state-machine.d.ts.map +1 -1
  48. package/esm/types/state-machine/utils.d.ts +1 -1
  49. package/esm/types/state-machine/utils.d.ts.map +1 -1
  50. package/esm/types/utils/sdp.d.ts +1 -2
  51. package/esm/types/utils/sdp.d.ts.map +1 -1
  52. package/esm/types/utils/update-from.d.ts +1 -1
  53. package/esm/types/utils/update-from.d.ts.map +1 -1
  54. package/esm/types/utils/webrtc.d.ts.map +1 -1
  55. package/esm/types/voice/call.d.ts +15 -3
  56. package/esm/types/voice/call.d.ts.map +1 -1
  57. package/esm/types/voice/softphone.d.ts +7 -0
  58. package/esm/types/voice/softphone.d.ts.map +1 -1
  59. package/esm/types/web-rtc-client.d.ts +39 -38
  60. package/esm/types/web-rtc-client.d.ts.map +1 -1
  61. package/esm/utils/sdp.js +16 -9
  62. package/esm/utils/update-from.js +2 -2
  63. package/esm/utils/webrtc.js +10 -4
  64. package/esm/voice/call.js +86 -28
  65. package/esm/voice/softphone.js +58 -17
  66. package/esm/web-rtc-client.js +67 -58
  67. package/lib/__tests__/__voice__/call.test.js +51 -2
  68. package/lib/api/auth.js +3 -0
  69. package/lib/checker/checks/webrtc.js +1 -1
  70. package/lib/domain/CallLog.js +2 -3
  71. package/lib/domain/Phone/CTIPhone.js +2 -2
  72. package/lib/domain/Phone/WebRTCPhone.js +58 -56
  73. package/lib/index.js +7 -3
  74. package/lib/service/CallApi.js +2 -2
  75. package/lib/simple/Auth.js +15 -3
  76. package/lib/simple/Phone.js +2 -2
  77. package/lib/simple/index.js +2 -1
  78. package/lib/simple/room/Room.js +1 -1
  79. package/lib/simple/room/SipRoom.js +1 -1
  80. package/lib/state-machine/call-state-machine.js +35 -20
  81. package/lib/state-machine/softphone-state-machine.js +1 -2
  82. package/lib/state-machine/utils.js +10 -4
  83. package/lib/types/api/auth.d.ts +3 -0
  84. package/lib/types/api/auth.d.ts.map +1 -1
  85. package/lib/types/checker/checks/index.d.ts +1 -1
  86. package/lib/types/checker/checks/webrtc-transport.d.ts +2 -2
  87. package/lib/types/checker/checks/webrtc-transport.d.ts.map +1 -1
  88. package/lib/types/domain/CallLog.d.ts.map +1 -1
  89. package/lib/types/domain/CallSession.d.ts +3 -3
  90. package/lib/types/domain/CallSession.d.ts.map +1 -1
  91. package/lib/types/domain/Phone/CTIPhone.d.ts.map +1 -1
  92. package/lib/types/domain/Phone/WebRTCPhone.d.ts +22 -22
  93. package/lib/types/domain/Phone/WebRTCPhone.d.ts.map +1 -1
  94. package/lib/types/domain/types.d.ts +0 -4
  95. package/lib/types/domain/types.d.ts.map +1 -1
  96. package/lib/types/index.d.ts +3 -1
  97. package/lib/types/index.d.ts.map +1 -1
  98. package/lib/types/lib/WazoSessionDescriptionHandler.d.ts +3 -3
  99. package/lib/types/lib/WazoSessionDescriptionHandler.d.ts.map +1 -1
  100. package/lib/types/service/CallApi.d.ts +5 -5
  101. package/lib/types/service/CallApi.d.ts.map +1 -1
  102. package/lib/types/simple/Auth.d.ts +6 -1
  103. package/lib/types/simple/Auth.d.ts.map +1 -1
  104. package/lib/types/simple/Phone.d.ts +8 -8
  105. package/lib/types/simple/Phone.d.ts.map +1 -1
  106. package/lib/types/simple/index.d.ts +3 -1
  107. package/lib/types/simple/index.d.ts.map +1 -1
  108. package/lib/types/state-machine/call-state-machine.d.ts +12 -1
  109. package/lib/types/state-machine/call-state-machine.d.ts.map +1 -1
  110. package/lib/types/state-machine/softphone-state-machine.d.ts +1 -2
  111. package/lib/types/state-machine/softphone-state-machine.d.ts.map +1 -1
  112. package/lib/types/state-machine/utils.d.ts +1 -1
  113. package/lib/types/state-machine/utils.d.ts.map +1 -1
  114. package/lib/types/utils/sdp.d.ts +1 -2
  115. package/lib/types/utils/sdp.d.ts.map +1 -1
  116. package/lib/types/utils/update-from.d.ts +1 -1
  117. package/lib/types/utils/update-from.d.ts.map +1 -1
  118. package/lib/types/utils/webrtc.d.ts.map +1 -1
  119. package/lib/types/voice/call.d.ts +15 -3
  120. package/lib/types/voice/call.d.ts.map +1 -1
  121. package/lib/types/voice/softphone.d.ts +7 -0
  122. package/lib/types/voice/softphone.d.ts.map +1 -1
  123. package/lib/types/web-rtc-client.d.ts +39 -38
  124. package/lib/types/web-rtc-client.d.ts.map +1 -1
  125. package/lib/utils/sdp.js +17 -10
  126. package/lib/utils/update-from.js +2 -2
  127. package/lib/utils/webrtc.js +11 -4
  128. package/lib/voice/call.js +89 -27
  129. package/lib/voice/softphone.js +62 -17
  130. package/lib/web-rtc-client.js +66 -57
  131. package/package.json +1 -1
  132. package/src/__tests__/__voice__/call.test.ts +61 -3
  133. package/src/api/auth.ts +5 -0
  134. package/src/checker/checks/webrtc-transport.ts +2 -2
  135. package/src/checker/checks/webrtc.ts +2 -2
  136. package/src/domain/CallLog.ts +2 -3
  137. package/src/domain/CallSession.ts +3 -3
  138. package/src/domain/Phone/CTIPhone.ts +3 -2
  139. package/src/domain/Phone/WebRTCPhone.ts +87 -85
  140. package/src/domain/__tests__/CallSession.test.ts +4 -0
  141. package/src/domain/types.ts +0 -5
  142. package/src/index.ts +4 -1
  143. package/src/lib/WazoSessionDescriptionHandler.ts +3 -3
  144. package/src/service/CallApi.ts +7 -7
  145. package/src/simple/Auth.ts +15 -3
  146. package/src/simple/Phone.ts +11 -11
  147. package/src/simple/index.ts +2 -1
  148. package/src/simple/room/Room.ts +3 -3
  149. package/src/simple/room/SipRoom.ts +3 -3
  150. package/src/state-machine/call-state-machine.ts +38 -19
  151. package/src/state-machine/softphone-state-machine.ts +1 -2
  152. package/src/state-machine/utils.ts +12 -4
  153. package/src/utils/sdp.ts +18 -11
  154. package/src/utils/update-from.ts +2 -2
  155. package/src/utils/webrtc.ts +11 -4
  156. package/src/voice/call.ts +109 -36
  157. package/src/voice/softphone.ts +75 -18
  158. package/src/web-rtc-client.ts +112 -98
@@ -10,7 +10,7 @@ import { OutgoingByeRequest, OutgoingInviteRequest, OutgoingRequest } from 'sip.
10
10
  import { Inviter, Invitation, Registerer } from 'sip.js/lib/api';
11
11
  import Emitter from './utils/Emitter';
12
12
  import Heartbeat from './utils/Heartbeat';
13
- import type { MediaConfig, UserAgentConfigOverrides, WebRtcConfig, WazoSession } from './domain/types';
13
+ import type { MediaConfig, UserAgentConfigOverrides, WebRtcConfig, SipCall } from './domain/types';
14
14
  export declare const events: string[];
15
15
  export declare const transportEvents: string[];
16
16
  export declare class CanceledCallError extends Error {
@@ -35,7 +35,7 @@ export default class WebRTCClient extends Emitter {
35
35
  heartbeatTimeoutCb: ((...args: Array<any>) => any) | null | undefined;
36
36
  heartbeatCb: ((...args: Array<any>) => any) | null | undefined;
37
37
  statsIntervals: Record<string, any>;
38
- sipSessions: Record<string, WazoSession>;
38
+ sipSessions: Record<string, SipCall>;
39
39
  conferences: Record<string, boolean>;
40
40
  skipRegister: boolean;
41
41
  networkMonitoringInterval: Record<string, any>;
@@ -43,6 +43,7 @@ export default class WebRTCClient extends Emitter {
43
43
  forceClosed: boolean;
44
44
  ON_USER_AGENT: string;
45
45
  REGISTERED: string;
46
+ REGISTERING: string;
46
47
  UNREGISTERED: string;
47
48
  REGISTRATION_FAILED: string;
48
49
  INVITE: string;
@@ -60,7 +61,7 @@ export default class WebRTCClient extends Emitter {
60
61
  ON_EARLY_MEDIA: string;
61
62
  ON_PROGRESS: string;
62
63
  ON_DISCONNECTED: string;
63
- constructor(config: WebRtcConfig, session?: WazoSession, uaConfigOverrides?: UserAgentConfigOverrides);
64
+ constructor(config: WebRtcConfig, session?: SipCall, uaConfigOverrides?: UserAgentConfigOverrides);
64
65
  configureMedia(media: MediaConfig): void;
65
66
  setMediaConstraints(media: MediaStreamConstraints): void;
66
67
  createUserAgent(uaConfigOverrides?: UserAgentConfigOverrides): UserAgent;
@@ -73,40 +74,40 @@ export default class WebRTCClient extends Emitter {
73
74
  _monkeyPatchRegisterer(registerer: Registerer | null | undefined): void;
74
75
  unregister(): Promise<void>;
75
76
  stop(): Promise<void>;
76
- call(number: string, enableVideo?: boolean, audioOnly?: boolean, conference?: boolean, options?: {}): WazoSession | null;
77
+ call(number: string, enableVideo?: boolean, audioOnly?: boolean, conference?: boolean, options?: {}): SipCall | null;
77
78
  answer(session: Invitation, enableVideo?: boolean): Promise<void>;
78
- hangup(session: WazoSession): Promise<OutgoingByeRequest | null>;
79
- startNetworkMonitoring(session: WazoSession, interval?: number): void;
80
- stopNetworkMonitoring(session: WazoSession): void;
81
- reject(session: WazoSession): Promise<void>;
79
+ hangup(session: SipCall): Promise<OutgoingByeRequest | null>;
80
+ startNetworkMonitoring(session: SipCall, interval?: number): void;
81
+ stopNetworkMonitoring(session: SipCall): void;
82
+ reject(session: SipCall): Promise<void>;
82
83
  close(force?: boolean): Promise<void>;
83
- mute(session: WazoSession): void;
84
- unmute(session: WazoSession): void;
85
- isAudioMuted(session: WazoSession): boolean;
86
- toggleCameraOn(session: WazoSession): void;
87
- toggleCameraOff(session: WazoSession): void;
88
- hold(session: WazoSession, isConference?: boolean, hadVideo?: boolean): Promise<OutgoingInviteRequest | void>;
89
- unhold(session: WazoSession, isConference?: boolean): Promise<OutgoingInviteRequest | void>;
84
+ mute(session: SipCall): void;
85
+ unmute(session: SipCall): void;
86
+ isAudioMuted(session: SipCall): boolean;
87
+ toggleCameraOn(session: SipCall): void;
88
+ toggleCameraOff(session: SipCall): void;
89
+ hold(session: SipCall, isConference?: boolean, hadVideo?: boolean): Promise<OutgoingInviteRequest | void>;
90
+ unhold(session: SipCall, isConference?: boolean): Promise<OutgoingInviteRequest | void>;
90
91
  getHeldSession(sessionId: string): any;
91
- isCallHeld(session: WazoSession): boolean;
92
+ isCallHeld(session: SipCall): boolean;
92
93
  isVideoRemotelyHeld(sessionId: string): boolean;
93
- sendDTMF(session: WazoSession, tone: string): boolean;
94
+ sendDTMF(session: SipCall, tone: string): boolean;
94
95
  message(destination: string, message: string): void;
95
- transfer(session: WazoSession, target: string): void;
96
- atxfer(session: WazoSession): Record<string, any>;
97
- sendMessage(sipSession: WazoSession | null | undefined, body: string, contentType?: string): void;
96
+ transfer(session: SipCall, target: string): void;
97
+ atxfer(session: SipCall): Record<string, any>;
98
+ sendMessage(sipSession: SipCall | null | undefined, body: string, contentType?: string): void;
98
99
  pingServer(): OutgoingRequest | void;
99
100
  getState(): UserAgentState;
100
101
  getContactIdentifier(): string | null;
101
102
  changeAudioOutputVolume(volume: number): void;
102
103
  changeAudioOutputDevice(id: string): Promise<void>;
103
- changeAudioInputDevice(id: string, session: WazoSession | null | undefined, force?: boolean): Promise<MediaStream | null>;
104
- changeVideoInputDevice(id: string, session?: WazoSession): Promise<MediaStream | void>;
104
+ changeAudioInputDevice(id: string, session: SipCall | null | undefined, force?: boolean): Promise<MediaStream | null>;
105
+ changeVideoInputDevice(id: string, session?: SipCall): Promise<MediaStream | void>;
105
106
  setVideoInputDevice(id: string): null | undefined;
106
- changeSessionVideoInputDevice(id: string | null | undefined, session: WazoSession): Promise<MediaStream | void>;
107
+ changeSessionVideoInputDevice(id: string | null | undefined, session: SipCall): Promise<MediaStream | void>;
107
108
  getAudioDeviceId(): string | null | undefined;
108
109
  getVideoDeviceId(): string | null;
109
- reinvite(sipSession: WazoSession, newConstraints?: Record<string, any> | null | undefined, conference?: boolean, audioOnly?: boolean, iceRestart?: boolean): Promise<OutgoingInviteRequest | void>;
110
+ reinvite(sipSession: SipCall, newConstraints?: Record<string, any> | null | undefined, conference?: boolean, audioOnly?: boolean, iceRestart?: boolean): Promise<OutgoingInviteRequest | void>;
110
111
  getUserMedia(constraints: Record<string, any>): Promise<MediaStream>;
111
112
  getPeerConnection(sessionId: string): RTCPeerConnection | null | undefined;
112
113
  getLocalStream(sessionId: string): MediaStream | null;
@@ -128,15 +129,15 @@ export default class WebRTCClient extends Emitter {
128
129
  stopHeartbeat(): void;
129
130
  setOnHeartbeatTimeout(cb: (...args: Array<any>) => any): void;
130
131
  setOnHeartbeatCallback(cb: (...args: Array<any>) => any): void;
131
- onCallEnded(session: WazoSession): void;
132
+ onCallEnded(session: SipCall): void;
132
133
  attemptReconnection(): void;
133
- storeSipSession(session: WazoSession): void;
134
- getSipSession(id: string): WazoSession | null | undefined;
135
- getSipSessionIds(): string[];
134
+ storeSipSession(session: SipCall): void;
135
+ getSipSession(id: string): SipCall | null | undefined;
136
+ getSipCallIds(): string[];
136
137
  updateLocalStream(sipSessionId: string, newStream: MediaStream): Promise<void>;
137
138
  isConference(sessionId: string): boolean;
138
139
  createAudioElementFor(sessionId: string): Promise<HTMLAudioElement>;
139
- _onTransportError(): void;
140
+ _onTransportError(reason?: string): void;
140
141
  enableLogger(logConnector: (level: any, className: string, label: any, content: string) => void): void;
141
142
  _onHeartbeat(message: string | Record<string, any>): void;
142
143
  _onHeartbeatTimeout(): Promise<void>;
@@ -144,20 +145,20 @@ export default class WebRTCClient extends Emitter {
144
145
  _getAudioConstraints(): MediaTrackConstraints | boolean;
145
146
  _getVideoConstraints(video?: boolean): MediaTrackConstraints | boolean;
146
147
  _connectIfNeeded(): Promise<any>;
147
- _buildConfig(config: WebRtcConfig, session: WazoSession | null | undefined): Promise<WebRtcConfig>;
148
- _setupSession(session: WazoSession): void;
149
- _onProgress(session: WazoSession, early?: boolean): Promise<void>;
150
- _onAccepted(session: WazoSession, sessionDialog?: SessionDialog, withEvent?: boolean, initAllTracks?: boolean): Promise<void>;
151
- _setupMedias(session: WazoSession, newStream?: MediaStream | null | undefined): Promise<void>;
152
- _cleanupMedia(session?: WazoSession): void;
148
+ _buildConfig(config: WebRtcConfig, session: SipCall | null | undefined): Promise<WebRtcConfig>;
149
+ _setupSession(session: SipCall): void;
150
+ _onProgress(session: SipCall, early?: boolean): Promise<void>;
151
+ _onAccepted(session: SipCall, sessionDialog?: SessionDialog, withEvent?: boolean, initAllTracks?: boolean): Promise<void>;
152
+ _setupMedias(session: SipCall, newStream?: MediaStream | null | undefined): Promise<void>;
153
+ _cleanupMedia(session?: SipCall): void;
153
154
  _cleanupRegister(): void;
154
- _startSendingStats(session: WazoSession): void;
155
- _stopSendingStats(session: WazoSession): void;
155
+ _startSendingStats(session: SipCall): void;
156
+ _stopSendingStats(session: SipCall): void;
156
157
  _disconnectTransport(force?: boolean): Promise<void>;
157
158
  _fetchNetworkStats(sessionId: string): Promise<Record<string, any> | null | undefined>;
158
159
  _accept(session: Invitation, options?: InvitationAcceptOptions): Promise<void>;
159
160
  _reject(session: Invitation, options?: InvitationRejectOptions): Promise<void>;
160
161
  _cancel(session: Inviter, options?: InviterCancelOptions): Promise<void>;
161
- _bye(session: WazoSession, options?: SessionByeOptions): Promise<OutgoingByeRequest | null>;
162
+ _bye(session: SipCall, options?: SessionByeOptions): Promise<OutgoingByeRequest | null>;
162
163
  }
163
164
  //# sourceMappingURL=web-rtc-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-rtc-client.d.ts","sourceRoot":"","sources":["../../src/web-rtc-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-rtc-client.d.ts","sourceRoot":"","sources":["../../src/web-rtc-client.ts"],"names":[],"mappings":"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"}
package/esm/utils/sdp.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable no-underscore-dangle */
2
2
  import sdpParser from 'sdp-transform';
3
3
  import { UserAgent } from 'sip.js/lib/api/user-agent';
4
- import { Inviter } from 'sip.js/lib/api';
5
- export const SIP_ID_LENGTH = 36;
4
+ import { Inviter, Invitation } from 'sip.js/lib/api';
5
+ import { SessionDialog } from 'sip.js/lib/core/dialogs/session-dialog';
6
6
  export const getCandidates = (rawSdp) => {
7
7
  if (!rawSdp) {
8
8
  return [];
@@ -106,22 +106,29 @@ export const addIcesInAllBundles = (sdp) => {
106
106
  }));
107
107
  return sdpParser.write(parsedSdp);
108
108
  };
109
- export const getSipSessionId = (sipSession) => {
109
+ export const getSipCallId = (sipSession) => {
110
110
  if (!sipSession) {
111
111
  return '';
112
112
  }
113
- const message = sipSession.message;
114
- if (message?.callId) {
115
- return message.callId.substring(0, SIP_ID_LENGTH);
116
- }
117
113
  // For Inviter
118
114
  // @ts-ignore: private
119
115
  if (sipSession instanceof Inviter && sipSession.outgoingRequestMessage) {
120
116
  // @ts-ignore: private
121
- return sipSession.outgoingRequestMessage.callId.substring(0, SIP_ID_LENGTH);
117
+ return sipSession.outgoingRequestMessage.callId;
122
118
  }
123
119
  // For Invitation
124
- return (sipSession.id || '').substring(0, SIP_ID_LENGTH);
120
+ // @ts-ignore: private
121
+ if (sipSession instanceof Invitation && sipSession.incomingInviteRequest.message) {
122
+ // @ts-ignore: private
123
+ return sipSession.incomingInviteRequest.message.callId;
124
+ }
125
+ // For EarlyMedia
126
+ // @ts-ignore: private
127
+ if (sipSession instanceof SessionDialog) {
128
+ // @ts-ignore: private
129
+ return sipSession.dialogState.callId;
130
+ }
131
+ return sipSession.id;
125
132
  };
126
133
  // We need to replace 0.0.0.0 to 127.0.0.1 in the sdp to avoid MOH during a createOffer.
127
134
  export const replaceLocalIpModifier = (description) => Promise.resolve({
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable no-param-reassign */
2
- export default ((instance, from) => {
3
- Object.keys(from)
2
+ export default ((instance, from, attributes = null) => {
3
+ (attributes || Object.keys(from))
4
4
  .forEach(key => {
5
5
  if ((!instance[key] && from[key])
6
6
  || (typeof instance[key] !== 'undefined' && typeof from[key] !== 'undefined' && instance[key] !== from[key])) {
@@ -1,7 +1,7 @@
1
1
  import { defaultPeerConnectionConfiguration } from 'sip.js/lib/platform/web/session-description-handler/peer-connection-configuration-default';
2
2
  import { stripVideo } from 'sip.js/lib/platform/web';
3
3
  import WazoSessionDescriptionHandler, { wazoMediaStreamFactory } from '../lib/WazoSessionDescriptionHandler';
4
- import { getVideoDirection, hasAnActiveVideo, makeURI, replaceLocalIpModifier } from './sdp';
4
+ import { getSipCallId, getVideoDirection, hasAnActiveVideo, makeURI, replaceLocalIpModifier } from './sdp';
5
5
  import IssueReporter from '../service/IssueReporter';
6
6
  import { lastIndexOf } from './array';
7
7
  const logger = IssueReporter.loggerFor('webrtc');
@@ -121,6 +121,9 @@ export const sessionWantsToDoVideo = (sipCall) => {
121
121
  const { body, } = sipCall.request || sipCall;
122
122
  // Sometimes with InviteClientContext the body is in the body attribute ...
123
123
  const sdp = typeof body === 'object' && body ? body.body : body;
124
+ if (!sdp) {
125
+ return sipCall.sessionDescriptionHandler?.localMediaStreamConstraints?.video;
126
+ }
124
127
  return hasAnActiveVideo(sdp);
125
128
  };
126
129
  export const getWebRtcStats = async (sipCall) => {
@@ -176,6 +179,9 @@ export const toggleVideo = (sipCall, muteCamera) => {
176
179
  export const isVideoMuted = (sipCall) => {
177
180
  const sdh = sipCall.sessionDescriptionHandler;
178
181
  const pc = sdh?.peerConnection;
182
+ if (!pc) {
183
+ return true;
184
+ }
179
185
  if (pc?.getSenders) {
180
186
  for (const sender of pc.getSenders()) {
181
187
  if (sender && sender.track && sender.track.kind === 'video') {
@@ -198,7 +204,7 @@ export const cleanupStream = (stream) => {
198
204
  };
199
205
  export const setLocalMediaStream = (sipCall, newStream) => {
200
206
  logger.info('setting local media stream', {
201
- id: sipCall.id,
207
+ id: getSipCallId(sipCall),
202
208
  tracks: newStream ? newStream.getTracks() : null,
203
209
  });
204
210
  if (sipCall.sessionDescriptionHandler) {
@@ -211,7 +217,7 @@ export const updateRemoteStream = (sipCall, allTracks = true) => {
211
217
  const remoteStream = getRemoteStream(sipCall);
212
218
  const pc = getPeerConnection(sipCall);
213
219
  logger.info('Updating remote stream', {
214
- id: sipCall.id,
220
+ id: getSipCallId(sipCall),
215
221
  tracks: remoteStream ? remoteStream.getTracks() : null,
216
222
  receiverTracks: pc && pc.getReceivers ? pc.getReceivers().map((receiver) => receiver.track) : null,
217
223
  });
@@ -241,7 +247,7 @@ export const getVideoConstraints = (video = false) => {
241
247
  return false;
242
248
  }
243
249
  // @ts-ignore: media constraints
244
- return this.video?.deviceId?.exact ? this.video : true;
250
+ return video?.deviceId?.exact ? video : true;
245
251
  };
246
252
  // eslint-disable-next-line no-unused-vars
247
253
  const getRtcOptions = () => {
package/esm/voice/call.js CHANGED
@@ -1,17 +1,21 @@
1
1
  /* eslint-disable no-underscore-dangle */
2
2
  import { EventEmitter } from 'events';
3
3
  import { createActor } from 'xstate';
4
+ import { Inviter } from 'sip.js/lib/api/inviter';
4
5
  import { Invitation } from 'sip.js/lib/api/invitation';
5
6
  import { SessionState } from 'sip.js/lib/api/session-state';
6
7
  import callStateMachine, { Actions, EstablishedActions, States, EstablishedStates } from '../state-machine/call-state-machine';
8
+ import newFrom from '../utils/new-from';
9
+ import updateFrom from '../utils/update-from';
7
10
  import IssueReporter from '../service/IssueReporter';
8
- import softphone, { EVENT_TERMINATE_SOUND } from './softphone';
9
- import { getCallDisplayName, getCallNumber, getSipSessionId } from '../utils/sdp';
11
+ import softphone from './softphone';
12
+ import { getCallDisplayName, getCallNumber, getSipCallId } from '../utils/sdp';
10
13
  import { assertCan, assertState, getState } from '../state-machine/utils';
11
- import { downgradeToAudio, getLocalStream, getLocalVideoStream, getPeerConnection, getRemoteStream, getRemoteVideoStream, getStreamFromConstraints, getWebRtcStats, hasALocalVideoTrack, hasLocalVideo, hasRemoteVideo, isVideoMuted, isVideoRemotelyHeld, setLocalMediaStream, toggleVideo, upgradeToVideo } from '../utils/webrtc';
14
+ import { downgradeToAudio, getLocalStream, getLocalVideoStream, getPeerConnection, getRemoteStream, getRemoteVideoStream, getStreamFromConstraints, getWebRtcStats, hasALocalVideoTrack, hasLocalVideo, hasRemoteVideo, isVideoMuted, isVideoRemotelyHeld, sessionWantsToDoVideo, setLocalMediaStream, toggleVideo, upgradeToVideo } from '../utils/webrtc';
12
15
  const logger = IssueReporter.loggerFor('call');
13
16
  // Events
14
- export const EVENT_CALL_ACCEPTED = 'accepted';
17
+ export const EVENT_CALL_REMOTLY_ACCEPTED = 'remotelyAccepted';
18
+ export const EVENT_CALL_LOCALLY_ACCEPTED = 'locallyAccepted';
15
19
  export const EVENT_CALL_CANCELED = 'canceled';
16
20
  export const EVENT_PROGRESS = 'progress';
17
21
  export const EVENT_EARLY_MEDIA = 'earlyMedia';
@@ -37,6 +41,7 @@ export const EVENT_CAMERA_DISABLED = 'onCameraDisabled';
37
41
  export const MESSAGE_TYPE_CHAT = 'message/TYPE_CHAT';
38
42
  export const MESSAGE_TYPE_SIGNAL = 'message/TYPE_SIGNAL';
39
43
  export const MESSAGE_TRACK_UPDATED = 'onTrackUpdated';
44
+ const attributesToUpdate = ['apiId', 'talkingToIds', 'creationTime', 'answerTime', 'endTime', 'recording', 'recordingPaused', 'displayName', 'number'];
40
45
  class Call extends EventEmitter {
41
46
  callActor;
42
47
  // Wazo call id, used in Wazo Websocket and API
@@ -49,9 +54,13 @@ class Call extends EventEmitter {
49
54
  phone;
50
55
  shouldSendReinvite = false;
51
56
  recording = false;
57
+ recordingPaused = false;
52
58
  displayName;
53
59
  number;
54
60
  currentScreenShare;
61
+ static newFrom(call) {
62
+ return newFrom(call, Call);
63
+ }
55
64
  static parseCall(apiCall) {
56
65
  const sipCall = {
57
66
  id: apiCall.sipCallId,
@@ -61,28 +70,40 @@ class Call extends EventEmitter {
61
70
  remoteIdentity: {
62
71
  uri: {
63
72
  _normal: {
64
- user: apiCall.calleeNumber,
73
+ user: apiCall.calleeName || apiCall.calleeNumber,
65
74
  },
66
75
  },
67
76
  },
68
77
  // Mock sdk so `hasLocalVideo` will return true.
69
78
  sessionDescriptionHandler: {
70
79
  localMediaStream: {
71
- getTracks: () => (apiCall.isVideo ? [{ kind: 'video', readyState: 'live' }] : []),
80
+ getTracks: () => (apiCall.isVideo ? [{ id: 'mocked', kind: 'video', readyState: 'live' }] : []),
72
81
  },
73
82
  },
74
83
  };
75
84
  const call = new Call(sipCall, softphone);
76
- // call._sendAction(Actions.ES);
77
85
  call.apiId = apiCall.id;
78
- call.answerTime = new Date(+apiCall.startingTime);
86
+ call.creationTime = new Date(+apiCall.startingTime);
87
+ call.recording = apiCall.isRecording();
79
88
  // Update call state
80
89
  const snapshot = call.callActor.getSnapshot();
81
90
  if (apiCall.isUp()) {
82
- snapshot.value = { [States.ESTABLISHED]: EstablishedStates.ONGOING };
91
+ snapshot.value = {
92
+ [States.ESTABLISHED]: {
93
+ [EstablishedStates.ONGOING]: {},
94
+ muteState: EstablishedStates.UN_MUTED,
95
+ holdState: EstablishedStates.UN_HELD,
96
+ },
97
+ };
83
98
  }
84
99
  if (apiCall.muted) {
85
- snapshot.value = { [States.ESTABLISHED]: EstablishedStates.MUTED };
100
+ snapshot.value = {
101
+ [States.ESTABLISHED]: {
102
+ [EstablishedStates.ONGOING]: {},
103
+ muteState: EstablishedStates.MUTED,
104
+ holdState: EstablishedStates.UN_HELD,
105
+ },
106
+ };
86
107
  }
87
108
  if (apiCall.isRinging()) {
88
109
  snapshot.value = States.RINGING;
@@ -103,7 +124,6 @@ class Call extends EventEmitter {
103
124
  this.sipCall = sipCall;
104
125
  this.number = getCallNumber(sipCall);
105
126
  this.displayName = getCallDisplayName(sipCall);
106
- this._bindEvents();
107
127
  }
108
128
  async accept(options = {}) {
109
129
  assertCan(this.callActor, Actions.ACCEPT);
@@ -114,6 +134,7 @@ class Call extends EventEmitter {
114
134
  this.answerTime = new Date();
115
135
  return this.phone.client.answer(this.sipCall, options.withCamera).then(() => {
116
136
  logger.info('call - accepted', { id: this.id, ...options });
137
+ this.emit(EVENT_CALL_LOCALLY_ACCEPTED, this);
117
138
  return this.id;
118
139
  }).catch(e => {
119
140
  logger.error(e);
@@ -124,14 +145,16 @@ class Call extends EventEmitter {
124
145
  async reject() {
125
146
  assertCan(this.callActor, Actions.REJECT);
126
147
  logger.info('call - reject', { id: this.id });
127
- this.phone.emit(EVENT_TERMINATE_SOUND, 'call rejected locally');
128
- this.shouldSendReinvite = false;
129
- return this.hangup();
148
+ return this._terminate();
130
149
  }
131
150
  async hangup() {
132
151
  assertCan(this.callActor, Actions.HANGUP);
133
152
  logger.info('call - hangup', { id: this.id });
153
+ return this._terminate();
154
+ }
155
+ async _terminate() {
134
156
  await this.phone.client.hangup(this.sipCall);
157
+ this.shouldSendReinvite = false;
135
158
  // Remove this call from softphone's calls
136
159
  this.phone.onCallTerminated(this);
137
160
  return true;
@@ -225,26 +248,38 @@ class Call extends EventEmitter {
225
248
  turnCameraOn() {
226
249
  assertState(this.callActor, States.ESTABLISHED);
227
250
  logger.info('call - turn camera on', { id: this.id });
228
- toggleVideo(this.sipCall, true);
251
+ toggleVideo(this.sipCall, false);
229
252
  this.emit(EVENT_CAMERA_RESUMED);
230
253
  }
231
254
  turnCameraOff() {
232
255
  assertState(this.callActor, States.ESTABLISHED);
233
256
  logger.info('call - turn camera off', { id: this.id });
234
- toggleVideo(this.sipCall, false);
257
+ toggleVideo(this.sipCall, true);
235
258
  this.emit(EVENT_CAMERA_DISABLED);
236
259
  }
237
260
  isMuted() {
238
- return this._hasEstablishedState(EstablishedStates.MUTED);
261
+ return this._hasEstablishedState('muteState', EstablishedStates.MUTED);
239
262
  }
240
263
  isCameraMuted() {
241
264
  return isVideoMuted(this.sipCall);
242
265
  }
243
266
  isHeld() {
244
- return this._hasEstablishedState(EstablishedStates.HELD);
267
+ return this._hasEstablishedState('holdState', EstablishedStates.HELD);
268
+ }
269
+ isEstablishing() {
270
+ return this.sipCall.state === SessionState.Establishing;
245
271
  }
246
272
  isEstablished() {
247
- return States.ESTABLISHED in this.state;
273
+ return typeof this.state === 'object' && States.ESTABLISHED in this.state;
274
+ }
275
+ isRinging() {
276
+ return this.state === States.RINGING;
277
+ }
278
+ isOutgoing() {
279
+ return this.sipCall instanceof Inviter;
280
+ }
281
+ isIncoming() {
282
+ return !this.isOutgoing();
248
283
  }
249
284
  isConference() {
250
285
  return getPeerConnection(this.sipCall)?.sfu;
@@ -252,7 +287,7 @@ class Call extends EventEmitter {
252
287
  transfer(target) {
253
288
  assertState(this.callActor, States.ESTABLISHED);
254
289
  logger.info('call - transfer', { id: this.id, target });
255
- this.phone.client.transfer(this.sipCall, target);
290
+ return this.phone.client.transfer(this.sipCall, target);
256
291
  }
257
292
  atxfer() {
258
293
  assertState(this.callActor, States.ESTABLISHED);
@@ -381,9 +416,14 @@ class Call extends EventEmitter {
381
416
  logger.info('call - updrading directly in screensharing mode', { id: this.id, tracks: localStream?.getTracks() });
382
417
  this._onScreenSharing(localStream, false, desktop);
383
418
  }
419
+ onMakeCall() {
420
+ this._bindEvents();
421
+ this._sendAction(Actions.MAKE_CALL);
422
+ }
384
423
  onAccepted() {
424
+ this.answerTime = new Date();
385
425
  this._sendAction(Actions.REMOTLY_ACCEPTED);
386
- this.emit(EVENT_CALL_ACCEPTED);
426
+ this.emit(EVENT_CALL_REMOTLY_ACCEPTED);
387
427
  }
388
428
  onProgress() {
389
429
  this.emit(EVENT_PROGRESS);
@@ -399,6 +439,7 @@ class Call extends EventEmitter {
399
439
  }
400
440
  onCallIncoming() {
401
441
  this._sendAction(Actions.INCOMING_CALL);
442
+ this._bindEvents();
402
443
  }
403
444
  onRejected() {
404
445
  this.endTime = new Date();
@@ -420,6 +461,9 @@ class Call extends EventEmitter {
420
461
  hasLocalVideo() {
421
462
  return hasLocalVideo(this.sipCall);
422
463
  }
464
+ wantsToDoVideo() {
465
+ return sessionWantsToDoVideo(this.sipCall);
466
+ }
423
467
  getLocalStream() {
424
468
  return getLocalStream(this.sipCall);
425
469
  }
@@ -432,21 +476,33 @@ class Call extends EventEmitter {
432
476
  isVideoRemotelyHeld() {
433
477
  return isVideoRemotelyHeld(this.sipCall);
434
478
  }
435
- isRinging() {
436
- return this.state === States.RINGING;
437
- }
438
479
  onReinvite(request, updatedCalleeName, updatedNumber, hadRemoteVideo) {
439
480
  this.emit(EVENT_REINVITE, request, updatedCalleeName, updatedNumber, hadRemoteVideo);
440
481
  }
482
+ updateFrom(call) {
483
+ updateFrom(this, call, attributesToUpdate);
484
+ }
485
+ is(otherCall) {
486
+ return otherCall && this.id && this.id === otherCall.id;
487
+ }
488
+ shouldAutoAnswer() {
489
+ return !!this.sipCall.request?.getHeader('alert-info');
490
+ }
441
491
  get id() {
442
- return getSipSessionId(this.sipCall);
492
+ return getSipCallId(this.sipCall);
443
493
  }
444
494
  get state() {
445
495
  return getState(this.callActor);
446
496
  }
447
- _hasEstablishedState(establishedState) {
497
+ _hasEstablishedState(subState, establishedState) {
448
498
  const state = this.state;
449
- return States.ESTABLISHED in state && state[States.ESTABLISHED] === establishedState;
499
+ if (typeof state !== 'object') {
500
+ return false;
501
+ }
502
+ if (!(States.ESTABLISHED in state)) {
503
+ return false;
504
+ }
505
+ return state[States.ESTABLISHED][subState] === establishedState;
450
506
  }
451
507
  _bindEvents() {
452
508
  if (this.sipCall instanceof Invitation) {
@@ -459,7 +515,7 @@ class Call extends EventEmitter {
459
515
  this.emit(EVENT_CALL_CANCELED, elsewhere);
460
516
  };
461
517
  }
462
- this.sipCall.stateChange.addListener((newState) => {
518
+ this.sipCall?.stateChange?.addListener((newState) => {
463
519
  switch (newState) {
464
520
  case SessionState.Terminating:
465
521
  logger.info('call - terminating', { id: this.id });
@@ -581,7 +637,9 @@ class Call extends EventEmitter {
581
637
  this.emit(EVENT_SHARE_SCREEN_STARTED, screenStream);
582
638
  }
583
639
  _sendAction(action) {
640
+ const was = this.state;
584
641
  this.callActor.send({ type: action });
642
+ logger.trace('call - send action', { id: this.id, action, was, state: this.state });
585
643
  }
586
644
  }
587
645
  export default Call;