@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.
- package/README.md +16 -7
- package/dist/wazo-sdk.js +2 -2
- package/esm/api/auth.js +3 -0
- package/esm/domain/CallLog.js +2 -3
- package/esm/domain/Phone/WebRTCPhone.js +29 -27
- package/esm/simple/Auth.js +13 -3
- package/esm/simple/Phone.js +2 -2
- package/esm/state-machine/softphone-state-machine.js +1 -2
- package/esm/types/api/auth.d.ts +3 -0
- package/esm/types/api/auth.d.ts.map +1 -1
- package/esm/types/domain/CallLog.d.ts.map +1 -1
- package/esm/types/domain/Phone/WebRTCPhone.d.ts +3 -3
- package/esm/types/domain/Phone/WebRTCPhone.d.ts.map +1 -1
- package/esm/types/simple/Auth.d.ts +6 -1
- package/esm/types/simple/Auth.d.ts.map +1 -1
- package/esm/types/simple/Phone.d.ts +2 -2
- package/esm/types/simple/Phone.d.ts.map +1 -1
- package/esm/types/state-machine/softphone-state-machine.d.ts +0 -1
- package/esm/types/state-machine/softphone-state-machine.d.ts.map +1 -1
- package/esm/types/utils/sdp.d.ts.map +1 -1
- package/esm/types/voice/call.d.ts.map +1 -1
- package/esm/types/voice/softphone.d.ts.map +1 -1
- package/esm/types/web-rtc-client.d.ts +2 -1
- package/esm/types/web-rtc-client.d.ts.map +1 -1
- package/esm/utils/sdp.js +8 -7
- package/esm/voice/call.js +3 -2
- package/esm/voice/softphone.js +23 -6
- package/esm/web-rtc-client.js +31 -30
- package/lib/api/auth.js +3 -0
- package/lib/domain/CallLog.js +2 -3
- package/lib/domain/Phone/WebRTCPhone.js +29 -27
- package/lib/simple/Auth.js +15 -3
- package/lib/state-machine/softphone-state-machine.js +1 -2
- package/lib/types/api/auth.d.ts +3 -0
- package/lib/types/api/auth.d.ts.map +1 -1
- package/lib/types/domain/CallLog.d.ts.map +1 -1
- package/lib/types/domain/Phone/WebRTCPhone.d.ts +3 -3
- package/lib/types/domain/Phone/WebRTCPhone.d.ts.map +1 -1
- package/lib/types/simple/Auth.d.ts +6 -1
- package/lib/types/simple/Auth.d.ts.map +1 -1
- package/lib/types/simple/Phone.d.ts +2 -2
- package/lib/types/simple/Phone.d.ts.map +1 -1
- package/lib/types/state-machine/softphone-state-machine.d.ts +0 -1
- package/lib/types/state-machine/softphone-state-machine.d.ts.map +1 -1
- package/lib/types/utils/sdp.d.ts.map +1 -1
- package/lib/types/voice/call.d.ts.map +1 -1
- package/lib/types/voice/softphone.d.ts.map +1 -1
- package/lib/types/web-rtc-client.d.ts +2 -1
- package/lib/types/web-rtc-client.d.ts.map +1 -1
- package/lib/utils/sdp.js +7 -6
- package/lib/voice/call.js +3 -2
- package/lib/voice/softphone.js +24 -6
- package/lib/web-rtc-client.js +29 -29
- package/package.json +1 -1
- package/src/api/auth.ts +5 -0
- package/src/domain/CallLog.ts +2 -3
- package/src/domain/Phone/WebRTCPhone.ts +33 -31
- package/src/simple/Auth.ts +15 -3
- package/src/simple/Phone.ts +3 -3
- package/src/state-machine/softphone-state-machine.ts +1 -2
- package/src/utils/sdp.ts +9 -8
- package/src/voice/call.ts +4 -3
- package/src/voice/softphone.ts +30 -7
- package/src/web-rtc-client.ts +34 -29
package/src/web-rtc-client.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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)
|
|
1772
|
+
const sessionId = getSipCallId(session);
|
|
1773
|
+
|
|
1767
1774
|
updateRemoteStream(session);
|
|
1768
|
-
|
|
1769
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|