@wazo/sdk 0.37.20 → 0.37.21
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/dist/wazo-sdk.js +5 -5
- package/esm/__tests__/api-client.test.js +44 -5
- package/esm/__tests__/web-rtc-client.test.js +70 -15
- package/esm/api/agentd.js +25 -2
- package/esm/api/amid.js +25 -2
- package/esm/api/application.js +25 -2
- package/esm/api/auth.js +25 -2
- package/esm/api/call-logd.js +25 -2
- package/esm/api/calld.js +25 -2
- package/esm/api/chatd.js +25 -2
- package/esm/api/confd.js +44 -5
- package/esm/api/ctid-ng.js +25 -2
- package/esm/api/dird.js +25 -2
- package/esm/api/webhookd.js +25 -2
- package/esm/api-client.js +44 -5
- package/esm/checker/Checker.js +72 -15
- package/esm/checker/checks/aor.js +44 -5
- package/esm/checker/checks/api.js +44 -5
- package/esm/checker/checks/index.js +72 -15
- package/esm/checker/checks/wazo-websocket.js +27 -2
- package/esm/checker/checks/webrtc-transport.js +70 -15
- package/esm/checker/checks/webrtc.js +70 -15
- package/esm/domain/AdHocAPIConference.js +44 -5
- package/esm/domain/Features.js +44 -5
- package/esm/domain/Meeting.js +14 -1
- package/esm/domain/Phone/CTIPhone.js +44 -5
- package/esm/domain/Phone/WebRTCPhone.js +32 -3
- package/esm/index.js +85 -16
- package/esm/lib/WazoSessionDescriptionHandler.js +25 -2
- package/esm/service/CallApi.js +44 -5
- package/esm/service/IssueReporter.js +25 -2
- package/esm/service/__tests__/IssueReporter.test.js +25 -2
- package/esm/service/getApiClient.js +44 -5
- package/esm/simple/Auth.js +85 -16
- package/esm/simple/Configuration.js +85 -16
- package/esm/simple/Directory.js +44 -5
- package/esm/simple/Phone.js +85 -16
- package/esm/simple/Websocket.js +28 -2
- package/esm/simple/index.js +85 -16
- package/esm/simple/room/LocalParticipant.js +85 -16
- package/esm/simple/room/Participant.js +85 -16
- package/esm/simple/room/RemoteParticipant.js +85 -16
- package/esm/simple/room/Room.js +85 -16
- package/esm/simple/room/SipRoom.js +85 -16
- package/esm/simple/room/Stream.js +85 -16
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +85 -16
- package/esm/simple/utils.js +85 -16
- package/esm/utils/__tests__/api-requester.test.js +25 -2
- package/esm/utils/api-requester.js +25 -2
- package/esm/web-rtc-client.js +70 -15
- package/esm/websocket-client.js +28 -3
- package/lib/__tests__/api-client.test.js +44 -5
- package/lib/__tests__/web-rtc-client.test.js +70 -15
- package/lib/api/agentd.js +25 -2
- package/lib/api/amid.js +25 -2
- package/lib/api/application.js +25 -2
- package/lib/api/auth.js +25 -2
- package/lib/api/call-logd.js +25 -2
- package/lib/api/calld.js +25 -2
- package/lib/api/chatd.js +25 -2
- package/lib/api/confd.js +44 -5
- package/lib/api/ctid-ng.js +25 -2
- package/lib/api/dird.js +25 -2
- package/lib/api/webhookd.js +25 -2
- package/lib/api-client.js +44 -5
- package/lib/checker/Checker.js +72 -15
- package/lib/checker/checks/aor.js +44 -5
- package/lib/checker/checks/api.js +44 -5
- package/lib/checker/checks/index.js +72 -15
- package/lib/checker/checks/wazo-websocket.js +27 -2
- package/lib/checker/checks/webrtc-transport.js +70 -15
- package/lib/checker/checks/webrtc.js +70 -15
- package/lib/domain/AdHocAPIConference.js +44 -5
- package/lib/domain/Features.js +44 -5
- package/lib/domain/Meeting.js +14 -1
- package/lib/domain/Phone/CTIPhone.js +44 -5
- package/lib/domain/Phone/WebRTCPhone.js +32 -3
- package/lib/index.js +85 -16
- package/lib/lib/WazoSessionDescriptionHandler.js +25 -2
- package/lib/service/CallApi.js +44 -5
- package/lib/service/IssueReporter.js +25 -2
- package/lib/service/__tests__/IssueReporter.test.js +25 -2
- package/lib/service/getApiClient.js +44 -5
- package/lib/simple/Auth.js +85 -16
- package/lib/simple/Configuration.js +85 -16
- package/lib/simple/Directory.js +44 -5
- package/lib/simple/Phone.js +85 -16
- package/lib/simple/Websocket.js +28 -2
- package/lib/simple/index.js +85 -16
- package/lib/simple/room/LocalParticipant.js +85 -16
- package/lib/simple/room/Participant.js +85 -16
- package/lib/simple/room/RemoteParticipant.js +85 -16
- package/lib/simple/room/Room.js +85 -16
- package/lib/simple/room/SipRoom.js +85 -16
- package/lib/simple/room/Stream.js +85 -16
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +85 -16
- package/lib/simple/utils.js +85 -16
- package/lib/utils/__tests__/api-requester.test.js +25 -2
- package/lib/utils/api-requester.js +25 -2
- package/lib/web-rtc-client.js +70 -15
- package/lib/websocket-client.js +28 -2
- package/package.json +1 -1
- package/src/api/confd.js +5 -2
- package/src/domain/Meeting.js +14 -1
- package/src/domain/Phone/WebRTCPhone.js +7 -1
- package/src/service/IssueReporter.js +25 -2
- package/src/simple/Phone.js +5 -0
- package/src/types/WebSocketMessage.js +5 -1
- package/src/web-rtc-client.js +26 -10
- package/src/websocket-client.js +2 -0
|
@@ -129,6 +129,7 @@ class IssueReporter {
|
|
|
129
129
|
|
|
130
130
|
|
|
131
131
|
|
|
132
|
+
|
|
132
133
|
|
|
133
134
|
constructor() {
|
|
134
135
|
addLevelsTo(this);
|
|
@@ -140,12 +141,17 @@ class IssueReporter {
|
|
|
140
141
|
this.bufferTimeout = null;
|
|
141
142
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
142
143
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
144
|
+
this._callback = null;
|
|
143
145
|
}
|
|
144
146
|
|
|
145
147
|
init() {
|
|
146
148
|
this._catchConsole();
|
|
147
149
|
}
|
|
148
150
|
|
|
151
|
+
setCallback(cb ) {
|
|
152
|
+
this._callback = cb;
|
|
153
|
+
}
|
|
154
|
+
|
|
149
155
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
150
156
|
this.remoteClientConfiguration = configuration;
|
|
151
157
|
}
|
|
@@ -181,6 +187,7 @@ class IssueReporter {
|
|
|
181
187
|
|
|
182
188
|
// Handle category label
|
|
183
189
|
let category = null;
|
|
190
|
+
let skipSendToRemote = false;
|
|
184
191
|
let extra = {};
|
|
185
192
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
186
193
|
category = args[0].split('=')[1];
|
|
@@ -196,6 +203,7 @@ class IssueReporter {
|
|
|
196
203
|
errorMessage: lastArg.message,
|
|
197
204
|
errorStack: lastArg.stack,
|
|
198
205
|
errorType: lastArg.constructor.name,
|
|
206
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
199
207
|
};
|
|
200
208
|
} else {
|
|
201
209
|
extra = lastArg;
|
|
@@ -204,6 +212,11 @@ class IssueReporter {
|
|
|
204
212
|
args.splice(1, 1);
|
|
205
213
|
}
|
|
206
214
|
|
|
215
|
+
if (extra.skipSendToRemote) {
|
|
216
|
+
skipSendToRemote = true;
|
|
217
|
+
delete extra.skipSendToRemote;
|
|
218
|
+
}
|
|
219
|
+
|
|
207
220
|
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
208
221
|
const message = args.join(', ');
|
|
209
222
|
let consoleMessage = message;
|
|
@@ -224,7 +237,13 @@ class IssueReporter {
|
|
|
224
237
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
225
238
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
226
239
|
|
|
227
|
-
this.
|
|
240
|
+
if (this._callback) {
|
|
241
|
+
this._callback(level, consoleMessage);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (!skipSendToRemote) {
|
|
245
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
246
|
+
}
|
|
228
247
|
}
|
|
229
248
|
|
|
230
249
|
logRequest(url , options , response , start ) {
|
|
@@ -369,7 +388,11 @@ class IssueReporter {
|
|
|
369
388
|
},
|
|
370
389
|
// $FlowFixMe
|
|
371
390
|
body,
|
|
372
|
-
}).catch(() => {
|
|
391
|
+
}).catch((e ) => {
|
|
392
|
+
// $FlowFixMe
|
|
393
|
+
e.skipSendToRemote = true;
|
|
394
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
395
|
+
|
|
373
396
|
setTimeout(() => {
|
|
374
397
|
if (isArray) {
|
|
375
398
|
payload = payload.map(message => {
|
|
@@ -586,6 +609,7 @@ const AGENT_PAUSED = 'agent_paused';
|
|
|
586
609
|
const AGENT_UNPAUSED = 'agent_unpaused';
|
|
587
610
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
588
611
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
612
|
+
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
589
613
|
|
|
590
614
|
const BLACKLIST_EVENTS = [
|
|
591
615
|
CHAT_MESSAGE_SENT,
|
|
@@ -936,6 +960,7 @@ WebSocketClient.eventLists = [
|
|
|
936
960
|
AGENT_UNPAUSED,
|
|
937
961
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
938
962
|
CONFERENCE_ADHOC_DELETED,
|
|
963
|
+
MEETING_USER_PROGRESS,
|
|
939
964
|
];
|
|
940
965
|
|
|
941
966
|
var wazoWebsocket = {
|
|
@@ -421,6 +421,7 @@ class IssueReporter {
|
|
|
421
421
|
|
|
422
422
|
|
|
423
423
|
|
|
424
|
+
|
|
424
425
|
|
|
425
426
|
constructor() {
|
|
426
427
|
addLevelsTo(this);
|
|
@@ -432,12 +433,17 @@ class IssueReporter {
|
|
|
432
433
|
this.bufferTimeout = null;
|
|
433
434
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
434
435
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
436
|
+
this._callback = null;
|
|
435
437
|
}
|
|
436
438
|
|
|
437
439
|
init() {
|
|
438
440
|
this._catchConsole();
|
|
439
441
|
}
|
|
440
442
|
|
|
443
|
+
setCallback(cb ) {
|
|
444
|
+
this._callback = cb;
|
|
445
|
+
}
|
|
446
|
+
|
|
441
447
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
442
448
|
this.remoteClientConfiguration = configuration;
|
|
443
449
|
}
|
|
@@ -473,6 +479,7 @@ class IssueReporter {
|
|
|
473
479
|
|
|
474
480
|
// Handle category label
|
|
475
481
|
let category = null;
|
|
482
|
+
let skipSendToRemote = false;
|
|
476
483
|
let extra = {};
|
|
477
484
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
478
485
|
category = args[0].split('=')[1];
|
|
@@ -488,6 +495,7 @@ class IssueReporter {
|
|
|
488
495
|
errorMessage: lastArg.message,
|
|
489
496
|
errorStack: lastArg.stack,
|
|
490
497
|
errorType: lastArg.constructor.name,
|
|
498
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
491
499
|
};
|
|
492
500
|
} else {
|
|
493
501
|
extra = lastArg;
|
|
@@ -496,6 +504,11 @@ class IssueReporter {
|
|
|
496
504
|
args.splice(1, 1);
|
|
497
505
|
}
|
|
498
506
|
|
|
507
|
+
if (extra.skipSendToRemote) {
|
|
508
|
+
skipSendToRemote = true;
|
|
509
|
+
delete extra.skipSendToRemote;
|
|
510
|
+
}
|
|
511
|
+
|
|
499
512
|
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
500
513
|
const message = args.join(', ');
|
|
501
514
|
let consoleMessage = message;
|
|
@@ -516,7 +529,13 @@ class IssueReporter {
|
|
|
516
529
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
517
530
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
518
531
|
|
|
519
|
-
this.
|
|
532
|
+
if (this._callback) {
|
|
533
|
+
this._callback(level, consoleMessage);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
if (!skipSendToRemote) {
|
|
537
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
538
|
+
}
|
|
520
539
|
}
|
|
521
540
|
|
|
522
541
|
logRequest(url , options , response , start ) {
|
|
@@ -661,7 +680,11 @@ class IssueReporter {
|
|
|
661
680
|
},
|
|
662
681
|
// $FlowFixMe
|
|
663
682
|
body,
|
|
664
|
-
}).catch(() => {
|
|
683
|
+
}).catch((e ) => {
|
|
684
|
+
// $FlowFixMe
|
|
685
|
+
e.skipSendToRemote = true;
|
|
686
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
687
|
+
|
|
665
688
|
setTimeout(() => {
|
|
666
689
|
if (isArray) {
|
|
667
690
|
payload = payload.map(message => {
|
|
@@ -3204,11 +3227,24 @@ class Meeting {
|
|
|
3204
3227
|
});
|
|
3205
3228
|
}
|
|
3206
3229
|
|
|
3230
|
+
static parseMany(items ) {
|
|
3231
|
+
return items.map(plain => Meeting.parse(plain));
|
|
3232
|
+
}
|
|
3233
|
+
|
|
3207
3234
|
static newFrom(meeting ) {
|
|
3208
3235
|
return newFrom(meeting, Meeting);
|
|
3209
3236
|
}
|
|
3210
3237
|
|
|
3211
|
-
constructor({
|
|
3238
|
+
constructor({
|
|
3239
|
+
uuid,
|
|
3240
|
+
name,
|
|
3241
|
+
guestSipAuthorization,
|
|
3242
|
+
ownerUuids,
|
|
3243
|
+
port,
|
|
3244
|
+
uri,
|
|
3245
|
+
number,
|
|
3246
|
+
persistent,
|
|
3247
|
+
} = {}) {
|
|
3212
3248
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
3213
3249
|
this.uri = uri;
|
|
3214
3250
|
this.name = name;
|
|
@@ -3294,8 +3330,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3294
3330
|
}
|
|
3295
3331
|
},
|
|
3296
3332
|
|
|
3297
|
-
|
|
3298
|
-
client.
|
|
3333
|
+
getMyMeetings: () =>
|
|
3334
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
3335
|
+
|
|
3336
|
+
createMyMeeting: (name , persistent ) =>
|
|
3337
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
3299
3338
|
|
|
3300
3339
|
deleteMyMeeting: (meetingUuid ) =>
|
|
3301
3340
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -5707,7 +5746,9 @@ class WebRTCClient extends Emitter {
|
|
|
5707
5746
|
const inviteOptions = {
|
|
5708
5747
|
requestDelegate: {
|
|
5709
5748
|
onAccept: (response ) => {
|
|
5710
|
-
session.sessionDescriptionHandler.peerConnection
|
|
5749
|
+
if (session.sessionDescriptionHandler.peerConnection) {
|
|
5750
|
+
session.sessionDescriptionHandler.peerConnection.sfu = conference;
|
|
5751
|
+
}
|
|
5711
5752
|
this._onAccepted(session, response.session, true);
|
|
5712
5753
|
},
|
|
5713
5754
|
onReject: (response ) => {
|
|
@@ -6579,6 +6620,16 @@ class WebRTCClient extends Emitter {
|
|
|
6579
6620
|
return this.hasRemoteVideo(sessionId) ? this.getRemoteStream(sessionId) : null;
|
|
6580
6621
|
}
|
|
6581
6622
|
|
|
6623
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
6624
|
+
getRemoteVideoStreamFromPc(sessionId ) {
|
|
6625
|
+
const pc = this.getPeerConnection(sessionId);
|
|
6626
|
+
if (!pc) {
|
|
6627
|
+
return null;
|
|
6628
|
+
}
|
|
6629
|
+
|
|
6630
|
+
return pc.getRemoteStreams().find(stream => !!stream.getVideoTracks().length);
|
|
6631
|
+
}
|
|
6632
|
+
|
|
6582
6633
|
hasVideo(sessionId ) {
|
|
6583
6634
|
return this.hasLocalVideo(sessionId) || this.hasRemoteVideo(sessionId);
|
|
6584
6635
|
}
|
|
@@ -7357,18 +7408,22 @@ class WebRTCClient extends Emitter {
|
|
|
7357
7408
|
});
|
|
7358
7409
|
|
|
7359
7410
|
networkStats.packetsLost = packetsLost;
|
|
7360
|
-
networkStats.
|
|
7411
|
+
networkStats.totalAudioBytesSent = audioBytesSent;
|
|
7412
|
+
networkStats.audioBytesSent = audioBytesSent - lastAudioSent;
|
|
7413
|
+
networkStats.totalAudioBytesReceived = audioBytesReceived - lastAudioReceived;
|
|
7361
7414
|
networkStats.audioBytesReceived = audioBytesReceived;
|
|
7362
|
-
networkStats.
|
|
7363
|
-
networkStats.
|
|
7415
|
+
networkStats.totalVideoBytesSent = videoBytesSent;
|
|
7416
|
+
networkStats.videoBytesSent = videoBytesSent - lastVideoSent;
|
|
7417
|
+
networkStats.totalVideoBytesReceived = videoBytesReceived;
|
|
7418
|
+
networkStats.videoBytesReceived = videoBytesReceived - lastVideoReceived;
|
|
7419
|
+
networkStats.totalTransportSent = transportSent - lastTransportSent;
|
|
7364
7420
|
networkStats.transportSent = transportSent;
|
|
7365
|
-
networkStats.
|
|
7366
|
-
|
|
7367
|
-
const bandwidth = (networkStats.audioBytesSent - lastAudioSent) + (networkStats.videoBytesSent - lastVideoSent)
|
|
7368
|
-
+ (networkStats.audioBytesReceived - lastAudioReceived) + (networkStats.videoBytesReceived - lastVideoReceived)
|
|
7369
|
-
+ (networkStats.transportReceived - lastTransportReceived) + (networkStats.transportSent - lastTransportSent);
|
|
7421
|
+
networkStats.totalTransportReceived = transportReceived;
|
|
7422
|
+
networkStats.transportReceived = transportReceived - lastTransportReceived;
|
|
7370
7423
|
|
|
7371
|
-
networkStats.bandwidth =
|
|
7424
|
+
networkStats.bandwidth = networkStats.audioBytesSent + networkStats.audioBytesReceived
|
|
7425
|
+
+ networkStats.videoBytesSent + networkStats.videoBytesReceived + networkStats.transportReceived
|
|
7426
|
+
+ networkStats.transportSent;
|
|
7372
7427
|
|
|
7373
7428
|
this.eventEmitter.emit(ON_NETWORK_STATS, session, networkStats, this.sessionNetworkStats[sessionId]);
|
|
7374
7429
|
this.sessionNetworkStats[sessionId].push(networkStats);
|
|
@@ -421,6 +421,7 @@ class IssueReporter {
|
|
|
421
421
|
|
|
422
422
|
|
|
423
423
|
|
|
424
|
+
|
|
424
425
|
|
|
425
426
|
constructor() {
|
|
426
427
|
addLevelsTo(this);
|
|
@@ -432,12 +433,17 @@ class IssueReporter {
|
|
|
432
433
|
this.bufferTimeout = null;
|
|
433
434
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
434
435
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
436
|
+
this._callback = null;
|
|
435
437
|
}
|
|
436
438
|
|
|
437
439
|
init() {
|
|
438
440
|
this._catchConsole();
|
|
439
441
|
}
|
|
440
442
|
|
|
443
|
+
setCallback(cb ) {
|
|
444
|
+
this._callback = cb;
|
|
445
|
+
}
|
|
446
|
+
|
|
441
447
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
442
448
|
this.remoteClientConfiguration = configuration;
|
|
443
449
|
}
|
|
@@ -473,6 +479,7 @@ class IssueReporter {
|
|
|
473
479
|
|
|
474
480
|
// Handle category label
|
|
475
481
|
let category = null;
|
|
482
|
+
let skipSendToRemote = false;
|
|
476
483
|
let extra = {};
|
|
477
484
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
478
485
|
category = args[0].split('=')[1];
|
|
@@ -488,6 +495,7 @@ class IssueReporter {
|
|
|
488
495
|
errorMessage: lastArg.message,
|
|
489
496
|
errorStack: lastArg.stack,
|
|
490
497
|
errorType: lastArg.constructor.name,
|
|
498
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
491
499
|
};
|
|
492
500
|
} else {
|
|
493
501
|
extra = lastArg;
|
|
@@ -496,6 +504,11 @@ class IssueReporter {
|
|
|
496
504
|
args.splice(1, 1);
|
|
497
505
|
}
|
|
498
506
|
|
|
507
|
+
if (extra.skipSendToRemote) {
|
|
508
|
+
skipSendToRemote = true;
|
|
509
|
+
delete extra.skipSendToRemote;
|
|
510
|
+
}
|
|
511
|
+
|
|
499
512
|
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
500
513
|
const message = args.join(', ');
|
|
501
514
|
let consoleMessage = message;
|
|
@@ -516,7 +529,13 @@ class IssueReporter {
|
|
|
516
529
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
517
530
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
518
531
|
|
|
519
|
-
this.
|
|
532
|
+
if (this._callback) {
|
|
533
|
+
this._callback(level, consoleMessage);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
if (!skipSendToRemote) {
|
|
537
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
538
|
+
}
|
|
520
539
|
}
|
|
521
540
|
|
|
522
541
|
logRequest(url , options , response , start ) {
|
|
@@ -661,7 +680,11 @@ class IssueReporter {
|
|
|
661
680
|
},
|
|
662
681
|
// $FlowFixMe
|
|
663
682
|
body,
|
|
664
|
-
}).catch(() => {
|
|
683
|
+
}).catch((e ) => {
|
|
684
|
+
// $FlowFixMe
|
|
685
|
+
e.skipSendToRemote = true;
|
|
686
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
687
|
+
|
|
665
688
|
setTimeout(() => {
|
|
666
689
|
if (isArray) {
|
|
667
690
|
payload = payload.map(message => {
|
|
@@ -3204,11 +3227,24 @@ class Meeting {
|
|
|
3204
3227
|
});
|
|
3205
3228
|
}
|
|
3206
3229
|
|
|
3230
|
+
static parseMany(items ) {
|
|
3231
|
+
return items.map(plain => Meeting.parse(plain));
|
|
3232
|
+
}
|
|
3233
|
+
|
|
3207
3234
|
static newFrom(meeting ) {
|
|
3208
3235
|
return newFrom(meeting, Meeting);
|
|
3209
3236
|
}
|
|
3210
3237
|
|
|
3211
|
-
constructor({
|
|
3238
|
+
constructor({
|
|
3239
|
+
uuid,
|
|
3240
|
+
name,
|
|
3241
|
+
guestSipAuthorization,
|
|
3242
|
+
ownerUuids,
|
|
3243
|
+
port,
|
|
3244
|
+
uri,
|
|
3245
|
+
number,
|
|
3246
|
+
persistent,
|
|
3247
|
+
} = {}) {
|
|
3212
3248
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
3213
3249
|
this.uri = uri;
|
|
3214
3250
|
this.name = name;
|
|
@@ -3294,8 +3330,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
3294
3330
|
}
|
|
3295
3331
|
},
|
|
3296
3332
|
|
|
3297
|
-
|
|
3298
|
-
client.
|
|
3333
|
+
getMyMeetings: () =>
|
|
3334
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
3335
|
+
|
|
3336
|
+
createMyMeeting: (name , persistent ) =>
|
|
3337
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
3299
3338
|
|
|
3300
3339
|
deleteMyMeeting: (meetingUuid ) =>
|
|
3301
3340
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -5707,7 +5746,9 @@ class WebRTCClient extends Emitter {
|
|
|
5707
5746
|
const inviteOptions = {
|
|
5708
5747
|
requestDelegate: {
|
|
5709
5748
|
onAccept: (response ) => {
|
|
5710
|
-
session.sessionDescriptionHandler.peerConnection
|
|
5749
|
+
if (session.sessionDescriptionHandler.peerConnection) {
|
|
5750
|
+
session.sessionDescriptionHandler.peerConnection.sfu = conference;
|
|
5751
|
+
}
|
|
5711
5752
|
this._onAccepted(session, response.session, true);
|
|
5712
5753
|
},
|
|
5713
5754
|
onReject: (response ) => {
|
|
@@ -6579,6 +6620,16 @@ class WebRTCClient extends Emitter {
|
|
|
6579
6620
|
return this.hasRemoteVideo(sessionId) ? this.getRemoteStream(sessionId) : null;
|
|
6580
6621
|
}
|
|
6581
6622
|
|
|
6623
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
6624
|
+
getRemoteVideoStreamFromPc(sessionId ) {
|
|
6625
|
+
const pc = this.getPeerConnection(sessionId);
|
|
6626
|
+
if (!pc) {
|
|
6627
|
+
return null;
|
|
6628
|
+
}
|
|
6629
|
+
|
|
6630
|
+
return pc.getRemoteStreams().find(stream => !!stream.getVideoTracks().length);
|
|
6631
|
+
}
|
|
6632
|
+
|
|
6582
6633
|
hasVideo(sessionId ) {
|
|
6583
6634
|
return this.hasLocalVideo(sessionId) || this.hasRemoteVideo(sessionId);
|
|
6584
6635
|
}
|
|
@@ -7357,18 +7408,22 @@ class WebRTCClient extends Emitter {
|
|
|
7357
7408
|
});
|
|
7358
7409
|
|
|
7359
7410
|
networkStats.packetsLost = packetsLost;
|
|
7360
|
-
networkStats.
|
|
7411
|
+
networkStats.totalAudioBytesSent = audioBytesSent;
|
|
7412
|
+
networkStats.audioBytesSent = audioBytesSent - lastAudioSent;
|
|
7413
|
+
networkStats.totalAudioBytesReceived = audioBytesReceived - lastAudioReceived;
|
|
7361
7414
|
networkStats.audioBytesReceived = audioBytesReceived;
|
|
7362
|
-
networkStats.
|
|
7363
|
-
networkStats.
|
|
7415
|
+
networkStats.totalVideoBytesSent = videoBytesSent;
|
|
7416
|
+
networkStats.videoBytesSent = videoBytesSent - lastVideoSent;
|
|
7417
|
+
networkStats.totalVideoBytesReceived = videoBytesReceived;
|
|
7418
|
+
networkStats.videoBytesReceived = videoBytesReceived - lastVideoReceived;
|
|
7419
|
+
networkStats.totalTransportSent = transportSent - lastTransportSent;
|
|
7364
7420
|
networkStats.transportSent = transportSent;
|
|
7365
|
-
networkStats.
|
|
7366
|
-
|
|
7367
|
-
const bandwidth = (networkStats.audioBytesSent - lastAudioSent) + (networkStats.videoBytesSent - lastVideoSent)
|
|
7368
|
-
+ (networkStats.audioBytesReceived - lastAudioReceived) + (networkStats.videoBytesReceived - lastVideoReceived)
|
|
7369
|
-
+ (networkStats.transportReceived - lastTransportReceived) + (networkStats.transportSent - lastTransportSent);
|
|
7421
|
+
networkStats.totalTransportReceived = transportReceived;
|
|
7422
|
+
networkStats.transportReceived = transportReceived - lastTransportReceived;
|
|
7370
7423
|
|
|
7371
|
-
networkStats.bandwidth =
|
|
7424
|
+
networkStats.bandwidth = networkStats.audioBytesSent + networkStats.audioBytesReceived
|
|
7425
|
+
+ networkStats.videoBytesSent + networkStats.videoBytesReceived + networkStats.transportReceived
|
|
7426
|
+
+ networkStats.transportSent;
|
|
7372
7427
|
|
|
7373
7428
|
this.eventEmitter.emit(ON_NETWORK_STATS, session, networkStats, this.sessionNetworkStats[sessionId]);
|
|
7374
7429
|
this.sessionNetworkStats[sessionId].push(networkStats);
|
|
@@ -353,6 +353,7 @@ class IssueReporter {
|
|
|
353
353
|
|
|
354
354
|
|
|
355
355
|
|
|
356
|
+
|
|
356
357
|
|
|
357
358
|
constructor() {
|
|
358
359
|
addLevelsTo(this);
|
|
@@ -364,12 +365,17 @@ class IssueReporter {
|
|
|
364
365
|
this.bufferTimeout = null;
|
|
365
366
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
366
367
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
368
|
+
this._callback = null;
|
|
367
369
|
}
|
|
368
370
|
|
|
369
371
|
init() {
|
|
370
372
|
this._catchConsole();
|
|
371
373
|
}
|
|
372
374
|
|
|
375
|
+
setCallback(cb ) {
|
|
376
|
+
this._callback = cb;
|
|
377
|
+
}
|
|
378
|
+
|
|
373
379
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
374
380
|
this.remoteClientConfiguration = configuration;
|
|
375
381
|
}
|
|
@@ -405,6 +411,7 @@ class IssueReporter {
|
|
|
405
411
|
|
|
406
412
|
// Handle category label
|
|
407
413
|
let category = null;
|
|
414
|
+
let skipSendToRemote = false;
|
|
408
415
|
let extra = {};
|
|
409
416
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
410
417
|
category = args[0].split('=')[1];
|
|
@@ -420,6 +427,7 @@ class IssueReporter {
|
|
|
420
427
|
errorMessage: lastArg.message,
|
|
421
428
|
errorStack: lastArg.stack,
|
|
422
429
|
errorType: lastArg.constructor.name,
|
|
430
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
423
431
|
};
|
|
424
432
|
} else {
|
|
425
433
|
extra = lastArg;
|
|
@@ -428,6 +436,11 @@ class IssueReporter {
|
|
|
428
436
|
args.splice(1, 1);
|
|
429
437
|
}
|
|
430
438
|
|
|
439
|
+
if (extra.skipSendToRemote) {
|
|
440
|
+
skipSendToRemote = true;
|
|
441
|
+
delete extra.skipSendToRemote;
|
|
442
|
+
}
|
|
443
|
+
|
|
431
444
|
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
432
445
|
const message = args.join(', ');
|
|
433
446
|
let consoleMessage = message;
|
|
@@ -448,7 +461,13 @@ class IssueReporter {
|
|
|
448
461
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
449
462
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
450
463
|
|
|
451
|
-
this.
|
|
464
|
+
if (this._callback) {
|
|
465
|
+
this._callback(level, consoleMessage);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
if (!skipSendToRemote) {
|
|
469
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
470
|
+
}
|
|
452
471
|
}
|
|
453
472
|
|
|
454
473
|
logRequest(url , options , response , start ) {
|
|
@@ -593,7 +612,11 @@ class IssueReporter {
|
|
|
593
612
|
},
|
|
594
613
|
// $FlowFixMe
|
|
595
614
|
body,
|
|
596
|
-
}).catch(() => {
|
|
615
|
+
}).catch((e ) => {
|
|
616
|
+
// $FlowFixMe
|
|
617
|
+
e.skipSendToRemote = true;
|
|
618
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
619
|
+
|
|
597
620
|
setTimeout(() => {
|
|
598
621
|
if (isArray) {
|
|
599
622
|
payload = payload.map(message => {
|
|
@@ -2826,11 +2849,24 @@ class Meeting {
|
|
|
2826
2849
|
});
|
|
2827
2850
|
}
|
|
2828
2851
|
|
|
2852
|
+
static parseMany(items ) {
|
|
2853
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2854
|
+
}
|
|
2855
|
+
|
|
2829
2856
|
static newFrom(meeting ) {
|
|
2830
2857
|
return newFrom(meeting, Meeting);
|
|
2831
2858
|
}
|
|
2832
2859
|
|
|
2833
|
-
constructor({
|
|
2860
|
+
constructor({
|
|
2861
|
+
uuid,
|
|
2862
|
+
name,
|
|
2863
|
+
guestSipAuthorization,
|
|
2864
|
+
ownerUuids,
|
|
2865
|
+
port,
|
|
2866
|
+
uri,
|
|
2867
|
+
number,
|
|
2868
|
+
persistent,
|
|
2869
|
+
} = {}) {
|
|
2834
2870
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2835
2871
|
this.uri = uri;
|
|
2836
2872
|
this.name = name;
|
|
@@ -2916,8 +2952,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2916
2952
|
}
|
|
2917
2953
|
},
|
|
2918
2954
|
|
|
2919
|
-
|
|
2920
|
-
client.
|
|
2955
|
+
getMyMeetings: () =>
|
|
2956
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2957
|
+
|
|
2958
|
+
createMyMeeting: (name , persistent ) =>
|
|
2959
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2921
2960
|
|
|
2922
2961
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2923
2962
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
package/lib/domain/Features.js
CHANGED
|
@@ -138,6 +138,7 @@ class IssueReporter {
|
|
|
138
138
|
|
|
139
139
|
|
|
140
140
|
|
|
141
|
+
|
|
141
142
|
|
|
142
143
|
constructor() {
|
|
143
144
|
addLevelsTo(this);
|
|
@@ -149,12 +150,17 @@ class IssueReporter {
|
|
|
149
150
|
this.bufferTimeout = null;
|
|
150
151
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
151
152
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
153
|
+
this._callback = null;
|
|
152
154
|
}
|
|
153
155
|
|
|
154
156
|
init() {
|
|
155
157
|
this._catchConsole();
|
|
156
158
|
}
|
|
157
159
|
|
|
160
|
+
setCallback(cb ) {
|
|
161
|
+
this._callback = cb;
|
|
162
|
+
}
|
|
163
|
+
|
|
158
164
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
159
165
|
this.remoteClientConfiguration = configuration;
|
|
160
166
|
}
|
|
@@ -190,6 +196,7 @@ class IssueReporter {
|
|
|
190
196
|
|
|
191
197
|
// Handle category label
|
|
192
198
|
let category = null;
|
|
199
|
+
let skipSendToRemote = false;
|
|
193
200
|
let extra = {};
|
|
194
201
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
195
202
|
category = args[0].split('=')[1];
|
|
@@ -205,6 +212,7 @@ class IssueReporter {
|
|
|
205
212
|
errorMessage: lastArg.message,
|
|
206
213
|
errorStack: lastArg.stack,
|
|
207
214
|
errorType: lastArg.constructor.name,
|
|
215
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
208
216
|
};
|
|
209
217
|
} else {
|
|
210
218
|
extra = lastArg;
|
|
@@ -213,6 +221,11 @@ class IssueReporter {
|
|
|
213
221
|
args.splice(1, 1);
|
|
214
222
|
}
|
|
215
223
|
|
|
224
|
+
if (extra.skipSendToRemote) {
|
|
225
|
+
skipSendToRemote = true;
|
|
226
|
+
delete extra.skipSendToRemote;
|
|
227
|
+
}
|
|
228
|
+
|
|
216
229
|
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
217
230
|
const message = args.join(', ');
|
|
218
231
|
let consoleMessage = message;
|
|
@@ -233,7 +246,13 @@ class IssueReporter {
|
|
|
233
246
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
234
247
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
235
248
|
|
|
236
|
-
this.
|
|
249
|
+
if (this._callback) {
|
|
250
|
+
this._callback(level, consoleMessage);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (!skipSendToRemote) {
|
|
254
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
255
|
+
}
|
|
237
256
|
}
|
|
238
257
|
|
|
239
258
|
logRequest(url , options , response , start ) {
|
|
@@ -378,7 +397,11 @@ class IssueReporter {
|
|
|
378
397
|
},
|
|
379
398
|
// $FlowFixMe
|
|
380
399
|
body,
|
|
381
|
-
}).catch(() => {
|
|
400
|
+
}).catch((e ) => {
|
|
401
|
+
// $FlowFixMe
|
|
402
|
+
e.skipSendToRemote = true;
|
|
403
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
404
|
+
|
|
382
405
|
setTimeout(() => {
|
|
383
406
|
if (isArray) {
|
|
384
407
|
payload = payload.map(message => {
|
|
@@ -2622,11 +2645,24 @@ class Meeting {
|
|
|
2622
2645
|
});
|
|
2623
2646
|
}
|
|
2624
2647
|
|
|
2648
|
+
static parseMany(items ) {
|
|
2649
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2650
|
+
}
|
|
2651
|
+
|
|
2625
2652
|
static newFrom(meeting ) {
|
|
2626
2653
|
return newFrom(meeting, Meeting);
|
|
2627
2654
|
}
|
|
2628
2655
|
|
|
2629
|
-
constructor({
|
|
2656
|
+
constructor({
|
|
2657
|
+
uuid,
|
|
2658
|
+
name,
|
|
2659
|
+
guestSipAuthorization,
|
|
2660
|
+
ownerUuids,
|
|
2661
|
+
port,
|
|
2662
|
+
uri,
|
|
2663
|
+
number,
|
|
2664
|
+
persistent,
|
|
2665
|
+
} = {}) {
|
|
2630
2666
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2631
2667
|
this.uri = uri;
|
|
2632
2668
|
this.name = name;
|
|
@@ -2712,8 +2748,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2712
2748
|
}
|
|
2713
2749
|
},
|
|
2714
2750
|
|
|
2715
|
-
|
|
2716
|
-
client.
|
|
2751
|
+
getMyMeetings: () =>
|
|
2752
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2753
|
+
|
|
2754
|
+
createMyMeeting: (name , persistent ) =>
|
|
2755
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2717
2756
|
|
|
2718
2757
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2719
2758
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|