@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/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
|
|
128
|
+
return sipSession.outgoingRequestMessage.callId;
|
|
133
129
|
}
|
|
134
130
|
// For Invitation
|
|
135
|
-
|
|
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;
|
package/lib/voice/softphone.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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));
|
package/lib/web-rtc-client.js
CHANGED
|
@@ -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
|
|
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:
|
|
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
|
|
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
|
|
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 ${
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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)
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
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,
|
package/src/domain/CallLog.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
`);
|