@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
package/esm/checker/Checker.js
CHANGED
|
@@ -148,6 +148,7 @@ class IssueReporter {
|
|
|
148
148
|
|
|
149
149
|
|
|
150
150
|
|
|
151
|
+
|
|
151
152
|
|
|
152
153
|
constructor() {
|
|
153
154
|
addLevelsTo(this);
|
|
@@ -159,12 +160,17 @@ class IssueReporter {
|
|
|
159
160
|
this.bufferTimeout = null;
|
|
160
161
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
161
162
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
163
|
+
this._callback = null;
|
|
162
164
|
}
|
|
163
165
|
|
|
164
166
|
init() {
|
|
165
167
|
this._catchConsole();
|
|
166
168
|
}
|
|
167
169
|
|
|
170
|
+
setCallback(cb ) {
|
|
171
|
+
this._callback = cb;
|
|
172
|
+
}
|
|
173
|
+
|
|
168
174
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
169
175
|
this.remoteClientConfiguration = configuration;
|
|
170
176
|
}
|
|
@@ -200,6 +206,7 @@ class IssueReporter {
|
|
|
200
206
|
|
|
201
207
|
// Handle category label
|
|
202
208
|
let category = null;
|
|
209
|
+
let skipSendToRemote = false;
|
|
203
210
|
let extra = {};
|
|
204
211
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
205
212
|
category = args[0].split('=')[1];
|
|
@@ -215,6 +222,7 @@ class IssueReporter {
|
|
|
215
222
|
errorMessage: lastArg.message,
|
|
216
223
|
errorStack: lastArg.stack,
|
|
217
224
|
errorType: lastArg.constructor.name,
|
|
225
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
218
226
|
};
|
|
219
227
|
} else {
|
|
220
228
|
extra = lastArg;
|
|
@@ -223,6 +231,11 @@ class IssueReporter {
|
|
|
223
231
|
args.splice(1, 1);
|
|
224
232
|
}
|
|
225
233
|
|
|
234
|
+
if (extra.skipSendToRemote) {
|
|
235
|
+
skipSendToRemote = true;
|
|
236
|
+
delete extra.skipSendToRemote;
|
|
237
|
+
}
|
|
238
|
+
|
|
226
239
|
const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
227
240
|
const message = args.join(', ');
|
|
228
241
|
let consoleMessage = message;
|
|
@@ -243,7 +256,13 @@ class IssueReporter {
|
|
|
243
256
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
244
257
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
245
258
|
|
|
246
|
-
this.
|
|
259
|
+
if (this._callback) {
|
|
260
|
+
this._callback(level, consoleMessage);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (!skipSendToRemote) {
|
|
264
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
265
|
+
}
|
|
247
266
|
}
|
|
248
267
|
|
|
249
268
|
logRequest(url , options , response , start ) {
|
|
@@ -388,7 +407,11 @@ class IssueReporter {
|
|
|
388
407
|
},
|
|
389
408
|
// $FlowFixMe
|
|
390
409
|
body,
|
|
391
|
-
}).catch(() => {
|
|
410
|
+
}).catch((e ) => {
|
|
411
|
+
// $FlowFixMe
|
|
412
|
+
e.skipSendToRemote = true;
|
|
413
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
414
|
+
|
|
392
415
|
setTimeout(() => {
|
|
393
416
|
if (isArray) {
|
|
394
417
|
payload = payload.map(message => {
|
|
@@ -2632,11 +2655,24 @@ class Meeting {
|
|
|
2632
2655
|
});
|
|
2633
2656
|
}
|
|
2634
2657
|
|
|
2658
|
+
static parseMany(items ) {
|
|
2659
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2660
|
+
}
|
|
2661
|
+
|
|
2635
2662
|
static newFrom(meeting ) {
|
|
2636
2663
|
return newFrom(meeting, Meeting);
|
|
2637
2664
|
}
|
|
2638
2665
|
|
|
2639
|
-
constructor({
|
|
2666
|
+
constructor({
|
|
2667
|
+
uuid,
|
|
2668
|
+
name,
|
|
2669
|
+
guestSipAuthorization,
|
|
2670
|
+
ownerUuids,
|
|
2671
|
+
port,
|
|
2672
|
+
uri,
|
|
2673
|
+
number,
|
|
2674
|
+
persistent,
|
|
2675
|
+
} = {}) {
|
|
2640
2676
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2641
2677
|
this.uri = uri;
|
|
2642
2678
|
this.name = name;
|
|
@@ -2722,8 +2758,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2722
2758
|
}
|
|
2723
2759
|
},
|
|
2724
2760
|
|
|
2725
|
-
|
|
2726
|
-
client.
|
|
2761
|
+
getMyMeetings: () =>
|
|
2762
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2763
|
+
|
|
2764
|
+
createMyMeeting: (name , persistent ) =>
|
|
2765
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2727
2766
|
|
|
2728
2767
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2729
2768
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -4903,6 +4942,7 @@ const AGENT_PAUSED = 'agent_paused';
|
|
|
4903
4942
|
const AGENT_UNPAUSED = 'agent_unpaused';
|
|
4904
4943
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
4905
4944
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
4945
|
+
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
4906
4946
|
|
|
4907
4947
|
const BLACKLIST_EVENTS = [
|
|
4908
4948
|
CHAT_MESSAGE_SENT,
|
|
@@ -5253,6 +5293,7 @@ WebSocketClient.eventLists = [
|
|
|
5253
5293
|
AGENT_UNPAUSED,
|
|
5254
5294
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
5255
5295
|
CONFERENCE_ADHOC_DELETED,
|
|
5296
|
+
MEETING_USER_PROGRESS,
|
|
5256
5297
|
];
|
|
5257
5298
|
|
|
5258
5299
|
var wazoWebsocket = {
|
|
@@ -6281,7 +6322,9 @@ class WebRTCClient extends Emitter {
|
|
|
6281
6322
|
const inviteOptions = {
|
|
6282
6323
|
requestDelegate: {
|
|
6283
6324
|
onAccept: (response ) => {
|
|
6284
|
-
session.sessionDescriptionHandler.peerConnection
|
|
6325
|
+
if (session.sessionDescriptionHandler.peerConnection) {
|
|
6326
|
+
session.sessionDescriptionHandler.peerConnection.sfu = conference;
|
|
6327
|
+
}
|
|
6285
6328
|
this._onAccepted(session, response.session, true);
|
|
6286
6329
|
},
|
|
6287
6330
|
onReject: (response ) => {
|
|
@@ -7153,6 +7196,16 @@ class WebRTCClient extends Emitter {
|
|
|
7153
7196
|
return this.hasRemoteVideo(sessionId) ? this.getRemoteStream(sessionId) : null;
|
|
7154
7197
|
}
|
|
7155
7198
|
|
|
7199
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
7200
|
+
getRemoteVideoStreamFromPc(sessionId ) {
|
|
7201
|
+
const pc = this.getPeerConnection(sessionId);
|
|
7202
|
+
if (!pc) {
|
|
7203
|
+
return null;
|
|
7204
|
+
}
|
|
7205
|
+
|
|
7206
|
+
return pc.getRemoteStreams().find(stream => !!stream.getVideoTracks().length);
|
|
7207
|
+
}
|
|
7208
|
+
|
|
7156
7209
|
hasVideo(sessionId ) {
|
|
7157
7210
|
return this.hasLocalVideo(sessionId) || this.hasRemoteVideo(sessionId);
|
|
7158
7211
|
}
|
|
@@ -7931,18 +7984,22 @@ class WebRTCClient extends Emitter {
|
|
|
7931
7984
|
});
|
|
7932
7985
|
|
|
7933
7986
|
networkStats.packetsLost = packetsLost;
|
|
7934
|
-
networkStats.
|
|
7987
|
+
networkStats.totalAudioBytesSent = audioBytesSent;
|
|
7988
|
+
networkStats.audioBytesSent = audioBytesSent - lastAudioSent;
|
|
7989
|
+
networkStats.totalAudioBytesReceived = audioBytesReceived - lastAudioReceived;
|
|
7935
7990
|
networkStats.audioBytesReceived = audioBytesReceived;
|
|
7936
|
-
networkStats.
|
|
7937
|
-
networkStats.
|
|
7991
|
+
networkStats.totalVideoBytesSent = videoBytesSent;
|
|
7992
|
+
networkStats.videoBytesSent = videoBytesSent - lastVideoSent;
|
|
7993
|
+
networkStats.totalVideoBytesReceived = videoBytesReceived;
|
|
7994
|
+
networkStats.videoBytesReceived = videoBytesReceived - lastVideoReceived;
|
|
7995
|
+
networkStats.totalTransportSent = transportSent - lastTransportSent;
|
|
7938
7996
|
networkStats.transportSent = transportSent;
|
|
7939
|
-
networkStats.
|
|
7940
|
-
|
|
7941
|
-
const bandwidth = (networkStats.audioBytesSent - lastAudioSent) + (networkStats.videoBytesSent - lastVideoSent)
|
|
7942
|
-
+ (networkStats.audioBytesReceived - lastAudioReceived) + (networkStats.videoBytesReceived - lastVideoReceived)
|
|
7943
|
-
+ (networkStats.transportReceived - lastTransportReceived) + (networkStats.transportSent - lastTransportSent);
|
|
7997
|
+
networkStats.totalTransportReceived = transportReceived;
|
|
7998
|
+
networkStats.transportReceived = transportReceived - lastTransportReceived;
|
|
7944
7999
|
|
|
7945
|
-
networkStats.bandwidth =
|
|
8000
|
+
networkStats.bandwidth = networkStats.audioBytesSent + networkStats.audioBytesReceived
|
|
8001
|
+
+ networkStats.videoBytesSent + networkStats.videoBytesReceived + networkStats.transportReceived
|
|
8002
|
+
+ networkStats.transportSent;
|
|
7946
8003
|
|
|
7947
8004
|
this.eventEmitter.emit(ON_NETWORK_STATS, session, networkStats, this.sessionNetworkStats[sessionId]);
|
|
7948
8005
|
this.sessionNetworkStats[sessionId].push(networkStats);
|
|
@@ -130,6 +130,7 @@ class IssueReporter {
|
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
|
|
133
|
+
|
|
133
134
|
|
|
134
135
|
constructor() {
|
|
135
136
|
addLevelsTo(this);
|
|
@@ -141,12 +142,17 @@ class IssueReporter {
|
|
|
141
142
|
this.bufferTimeout = null;
|
|
142
143
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
143
144
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
145
|
+
this._callback = null;
|
|
144
146
|
}
|
|
145
147
|
|
|
146
148
|
init() {
|
|
147
149
|
this._catchConsole();
|
|
148
150
|
}
|
|
149
151
|
|
|
152
|
+
setCallback(cb ) {
|
|
153
|
+
this._callback = cb;
|
|
154
|
+
}
|
|
155
|
+
|
|
150
156
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
151
157
|
this.remoteClientConfiguration = configuration;
|
|
152
158
|
}
|
|
@@ -182,6 +188,7 @@ class IssueReporter {
|
|
|
182
188
|
|
|
183
189
|
// Handle category label
|
|
184
190
|
let category = null;
|
|
191
|
+
let skipSendToRemote = false;
|
|
185
192
|
let extra = {};
|
|
186
193
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
187
194
|
category = args[0].split('=')[1];
|
|
@@ -197,6 +204,7 @@ class IssueReporter {
|
|
|
197
204
|
errorMessage: lastArg.message,
|
|
198
205
|
errorStack: lastArg.stack,
|
|
199
206
|
errorType: lastArg.constructor.name,
|
|
207
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
200
208
|
};
|
|
201
209
|
} else {
|
|
202
210
|
extra = lastArg;
|
|
@@ -205,6 +213,11 @@ class IssueReporter {
|
|
|
205
213
|
args.splice(1, 1);
|
|
206
214
|
}
|
|
207
215
|
|
|
216
|
+
if (extra.skipSendToRemote) {
|
|
217
|
+
skipSendToRemote = true;
|
|
218
|
+
delete extra.skipSendToRemote;
|
|
219
|
+
}
|
|
220
|
+
|
|
208
221
|
const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
209
222
|
const message = args.join(', ');
|
|
210
223
|
let consoleMessage = message;
|
|
@@ -225,7 +238,13 @@ class IssueReporter {
|
|
|
225
238
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
226
239
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
227
240
|
|
|
228
|
-
this.
|
|
241
|
+
if (this._callback) {
|
|
242
|
+
this._callback(level, consoleMessage);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if (!skipSendToRemote) {
|
|
246
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
247
|
+
}
|
|
229
248
|
}
|
|
230
249
|
|
|
231
250
|
logRequest(url , options , response , start ) {
|
|
@@ -370,7 +389,11 @@ class IssueReporter {
|
|
|
370
389
|
},
|
|
371
390
|
// $FlowFixMe
|
|
372
391
|
body,
|
|
373
|
-
}).catch(() => {
|
|
392
|
+
}).catch((e ) => {
|
|
393
|
+
// $FlowFixMe
|
|
394
|
+
e.skipSendToRemote = true;
|
|
395
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
396
|
+
|
|
374
397
|
setTimeout(() => {
|
|
375
398
|
if (isArray) {
|
|
376
399
|
payload = payload.map(message => {
|
|
@@ -2614,11 +2637,24 @@ class Meeting {
|
|
|
2614
2637
|
});
|
|
2615
2638
|
}
|
|
2616
2639
|
|
|
2640
|
+
static parseMany(items ) {
|
|
2641
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2642
|
+
}
|
|
2643
|
+
|
|
2617
2644
|
static newFrom(meeting ) {
|
|
2618
2645
|
return newFrom(meeting, Meeting);
|
|
2619
2646
|
}
|
|
2620
2647
|
|
|
2621
|
-
constructor({
|
|
2648
|
+
constructor({
|
|
2649
|
+
uuid,
|
|
2650
|
+
name,
|
|
2651
|
+
guestSipAuthorization,
|
|
2652
|
+
ownerUuids,
|
|
2653
|
+
port,
|
|
2654
|
+
uri,
|
|
2655
|
+
number,
|
|
2656
|
+
persistent,
|
|
2657
|
+
} = {}) {
|
|
2622
2658
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2623
2659
|
this.uri = uri;
|
|
2624
2660
|
this.name = name;
|
|
@@ -2704,8 +2740,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2704
2740
|
}
|
|
2705
2741
|
},
|
|
2706
2742
|
|
|
2707
|
-
|
|
2708
|
-
client.
|
|
2743
|
+
getMyMeetings: () =>
|
|
2744
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2745
|
+
|
|
2746
|
+
createMyMeeting: (name , persistent ) =>
|
|
2747
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2709
2748
|
|
|
2710
2749
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2711
2750
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -130,6 +130,7 @@ class IssueReporter {
|
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
|
|
133
|
+
|
|
133
134
|
|
|
134
135
|
constructor() {
|
|
135
136
|
addLevelsTo(this);
|
|
@@ -141,12 +142,17 @@ class IssueReporter {
|
|
|
141
142
|
this.bufferTimeout = null;
|
|
142
143
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
143
144
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
145
|
+
this._callback = null;
|
|
144
146
|
}
|
|
145
147
|
|
|
146
148
|
init() {
|
|
147
149
|
this._catchConsole();
|
|
148
150
|
}
|
|
149
151
|
|
|
152
|
+
setCallback(cb ) {
|
|
153
|
+
this._callback = cb;
|
|
154
|
+
}
|
|
155
|
+
|
|
150
156
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
151
157
|
this.remoteClientConfiguration = configuration;
|
|
152
158
|
}
|
|
@@ -182,6 +188,7 @@ class IssueReporter {
|
|
|
182
188
|
|
|
183
189
|
// Handle category label
|
|
184
190
|
let category = null;
|
|
191
|
+
let skipSendToRemote = false;
|
|
185
192
|
let extra = {};
|
|
186
193
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
187
194
|
category = args[0].split('=')[1];
|
|
@@ -197,6 +204,7 @@ class IssueReporter {
|
|
|
197
204
|
errorMessage: lastArg.message,
|
|
198
205
|
errorStack: lastArg.stack,
|
|
199
206
|
errorType: lastArg.constructor.name,
|
|
207
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
200
208
|
};
|
|
201
209
|
} else {
|
|
202
210
|
extra = lastArg;
|
|
@@ -205,6 +213,11 @@ class IssueReporter {
|
|
|
205
213
|
args.splice(1, 1);
|
|
206
214
|
}
|
|
207
215
|
|
|
216
|
+
if (extra.skipSendToRemote) {
|
|
217
|
+
skipSendToRemote = true;
|
|
218
|
+
delete extra.skipSendToRemote;
|
|
219
|
+
}
|
|
220
|
+
|
|
208
221
|
const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
209
222
|
const message = args.join(', ');
|
|
210
223
|
let consoleMessage = message;
|
|
@@ -225,7 +238,13 @@ class IssueReporter {
|
|
|
225
238
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
226
239
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
227
240
|
|
|
228
|
-
this.
|
|
241
|
+
if (this._callback) {
|
|
242
|
+
this._callback(level, consoleMessage);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if (!skipSendToRemote) {
|
|
246
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
247
|
+
}
|
|
229
248
|
}
|
|
230
249
|
|
|
231
250
|
logRequest(url , options , response , start ) {
|
|
@@ -370,7 +389,11 @@ class IssueReporter {
|
|
|
370
389
|
},
|
|
371
390
|
// $FlowFixMe
|
|
372
391
|
body,
|
|
373
|
-
}).catch(() => {
|
|
392
|
+
}).catch((e ) => {
|
|
393
|
+
// $FlowFixMe
|
|
394
|
+
e.skipSendToRemote = true;
|
|
395
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
396
|
+
|
|
374
397
|
setTimeout(() => {
|
|
375
398
|
if (isArray) {
|
|
376
399
|
payload = payload.map(message => {
|
|
@@ -2614,11 +2637,24 @@ class Meeting {
|
|
|
2614
2637
|
});
|
|
2615
2638
|
}
|
|
2616
2639
|
|
|
2640
|
+
static parseMany(items ) {
|
|
2641
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2642
|
+
}
|
|
2643
|
+
|
|
2617
2644
|
static newFrom(meeting ) {
|
|
2618
2645
|
return newFrom(meeting, Meeting);
|
|
2619
2646
|
}
|
|
2620
2647
|
|
|
2621
|
-
constructor({
|
|
2648
|
+
constructor({
|
|
2649
|
+
uuid,
|
|
2650
|
+
name,
|
|
2651
|
+
guestSipAuthorization,
|
|
2652
|
+
ownerUuids,
|
|
2653
|
+
port,
|
|
2654
|
+
uri,
|
|
2655
|
+
number,
|
|
2656
|
+
persistent,
|
|
2657
|
+
} = {}) {
|
|
2622
2658
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2623
2659
|
this.uri = uri;
|
|
2624
2660
|
this.name = name;
|
|
@@ -2704,8 +2740,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2704
2740
|
}
|
|
2705
2741
|
},
|
|
2706
2742
|
|
|
2707
|
-
|
|
2708
|
-
client.
|
|
2743
|
+
getMyMeetings: () =>
|
|
2744
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2745
|
+
|
|
2746
|
+
createMyMeeting: (name , persistent ) =>
|
|
2747
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2709
2748
|
|
|
2710
2749
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2711
2750
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -148,6 +148,7 @@ class IssueReporter {
|
|
|
148
148
|
|
|
149
149
|
|
|
150
150
|
|
|
151
|
+
|
|
151
152
|
|
|
152
153
|
constructor() {
|
|
153
154
|
addLevelsTo(this);
|
|
@@ -159,12 +160,17 @@ class IssueReporter {
|
|
|
159
160
|
this.bufferTimeout = null;
|
|
160
161
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
161
162
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
163
|
+
this._callback = null;
|
|
162
164
|
}
|
|
163
165
|
|
|
164
166
|
init() {
|
|
165
167
|
this._catchConsole();
|
|
166
168
|
}
|
|
167
169
|
|
|
170
|
+
setCallback(cb ) {
|
|
171
|
+
this._callback = cb;
|
|
172
|
+
}
|
|
173
|
+
|
|
168
174
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
169
175
|
this.remoteClientConfiguration = configuration;
|
|
170
176
|
}
|
|
@@ -200,6 +206,7 @@ class IssueReporter {
|
|
|
200
206
|
|
|
201
207
|
// Handle category label
|
|
202
208
|
let category = null;
|
|
209
|
+
let skipSendToRemote = false;
|
|
203
210
|
let extra = {};
|
|
204
211
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
205
212
|
category = args[0].split('=')[1];
|
|
@@ -215,6 +222,7 @@ class IssueReporter {
|
|
|
215
222
|
errorMessage: lastArg.message,
|
|
216
223
|
errorStack: lastArg.stack,
|
|
217
224
|
errorType: lastArg.constructor.name,
|
|
225
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
218
226
|
};
|
|
219
227
|
} else {
|
|
220
228
|
extra = lastArg;
|
|
@@ -223,6 +231,11 @@ class IssueReporter {
|
|
|
223
231
|
args.splice(1, 1);
|
|
224
232
|
}
|
|
225
233
|
|
|
234
|
+
if (extra.skipSendToRemote) {
|
|
235
|
+
skipSendToRemote = true;
|
|
236
|
+
delete extra.skipSendToRemote;
|
|
237
|
+
}
|
|
238
|
+
|
|
226
239
|
const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
227
240
|
const message = args.join(', ');
|
|
228
241
|
let consoleMessage = message;
|
|
@@ -243,7 +256,13 @@ class IssueReporter {
|
|
|
243
256
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
244
257
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
245
258
|
|
|
246
|
-
this.
|
|
259
|
+
if (this._callback) {
|
|
260
|
+
this._callback(level, consoleMessage);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (!skipSendToRemote) {
|
|
264
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
265
|
+
}
|
|
247
266
|
}
|
|
248
267
|
|
|
249
268
|
logRequest(url , options , response , start ) {
|
|
@@ -388,7 +407,11 @@ class IssueReporter {
|
|
|
388
407
|
},
|
|
389
408
|
// $FlowFixMe
|
|
390
409
|
body,
|
|
391
|
-
}).catch(() => {
|
|
410
|
+
}).catch((e ) => {
|
|
411
|
+
// $FlowFixMe
|
|
412
|
+
e.skipSendToRemote = true;
|
|
413
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
414
|
+
|
|
392
415
|
setTimeout(() => {
|
|
393
416
|
if (isArray) {
|
|
394
417
|
payload = payload.map(message => {
|
|
@@ -2632,11 +2655,24 @@ class Meeting {
|
|
|
2632
2655
|
});
|
|
2633
2656
|
}
|
|
2634
2657
|
|
|
2658
|
+
static parseMany(items ) {
|
|
2659
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2660
|
+
}
|
|
2661
|
+
|
|
2635
2662
|
static newFrom(meeting ) {
|
|
2636
2663
|
return newFrom(meeting, Meeting);
|
|
2637
2664
|
}
|
|
2638
2665
|
|
|
2639
|
-
constructor({
|
|
2666
|
+
constructor({
|
|
2667
|
+
uuid,
|
|
2668
|
+
name,
|
|
2669
|
+
guestSipAuthorization,
|
|
2670
|
+
ownerUuids,
|
|
2671
|
+
port,
|
|
2672
|
+
uri,
|
|
2673
|
+
number,
|
|
2674
|
+
persistent,
|
|
2675
|
+
} = {}) {
|
|
2640
2676
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2641
2677
|
this.uri = uri;
|
|
2642
2678
|
this.name = name;
|
|
@@ -2722,8 +2758,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2722
2758
|
}
|
|
2723
2759
|
},
|
|
2724
2760
|
|
|
2725
|
-
|
|
2726
|
-
client.
|
|
2761
|
+
getMyMeetings: () =>
|
|
2762
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2763
|
+
|
|
2764
|
+
createMyMeeting: (name , persistent ) =>
|
|
2765
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2727
2766
|
|
|
2728
2767
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2729
2768
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -4903,6 +4942,7 @@ const AGENT_PAUSED = 'agent_paused';
|
|
|
4903
4942
|
const AGENT_UNPAUSED = 'agent_unpaused';
|
|
4904
4943
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
4905
4944
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
4945
|
+
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
4906
4946
|
|
|
4907
4947
|
const BLACKLIST_EVENTS = [
|
|
4908
4948
|
CHAT_MESSAGE_SENT,
|
|
@@ -5253,6 +5293,7 @@ WebSocketClient.eventLists = [
|
|
|
5253
5293
|
AGENT_UNPAUSED,
|
|
5254
5294
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
5255
5295
|
CONFERENCE_ADHOC_DELETED,
|
|
5296
|
+
MEETING_USER_PROGRESS,
|
|
5256
5297
|
];
|
|
5257
5298
|
|
|
5258
5299
|
var wazoWebsocket = {
|
|
@@ -6281,7 +6322,9 @@ class WebRTCClient extends Emitter {
|
|
|
6281
6322
|
const inviteOptions = {
|
|
6282
6323
|
requestDelegate: {
|
|
6283
6324
|
onAccept: (response ) => {
|
|
6284
|
-
session.sessionDescriptionHandler.peerConnection
|
|
6325
|
+
if (session.sessionDescriptionHandler.peerConnection) {
|
|
6326
|
+
session.sessionDescriptionHandler.peerConnection.sfu = conference;
|
|
6327
|
+
}
|
|
6285
6328
|
this._onAccepted(session, response.session, true);
|
|
6286
6329
|
},
|
|
6287
6330
|
onReject: (response ) => {
|
|
@@ -7153,6 +7196,16 @@ class WebRTCClient extends Emitter {
|
|
|
7153
7196
|
return this.hasRemoteVideo(sessionId) ? this.getRemoteStream(sessionId) : null;
|
|
7154
7197
|
}
|
|
7155
7198
|
|
|
7199
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
7200
|
+
getRemoteVideoStreamFromPc(sessionId ) {
|
|
7201
|
+
const pc = this.getPeerConnection(sessionId);
|
|
7202
|
+
if (!pc) {
|
|
7203
|
+
return null;
|
|
7204
|
+
}
|
|
7205
|
+
|
|
7206
|
+
return pc.getRemoteStreams().find(stream => !!stream.getVideoTracks().length);
|
|
7207
|
+
}
|
|
7208
|
+
|
|
7156
7209
|
hasVideo(sessionId ) {
|
|
7157
7210
|
return this.hasLocalVideo(sessionId) || this.hasRemoteVideo(sessionId);
|
|
7158
7211
|
}
|
|
@@ -7931,18 +7984,22 @@ class WebRTCClient extends Emitter {
|
|
|
7931
7984
|
});
|
|
7932
7985
|
|
|
7933
7986
|
networkStats.packetsLost = packetsLost;
|
|
7934
|
-
networkStats.
|
|
7987
|
+
networkStats.totalAudioBytesSent = audioBytesSent;
|
|
7988
|
+
networkStats.audioBytesSent = audioBytesSent - lastAudioSent;
|
|
7989
|
+
networkStats.totalAudioBytesReceived = audioBytesReceived - lastAudioReceived;
|
|
7935
7990
|
networkStats.audioBytesReceived = audioBytesReceived;
|
|
7936
|
-
networkStats.
|
|
7937
|
-
networkStats.
|
|
7991
|
+
networkStats.totalVideoBytesSent = videoBytesSent;
|
|
7992
|
+
networkStats.videoBytesSent = videoBytesSent - lastVideoSent;
|
|
7993
|
+
networkStats.totalVideoBytesReceived = videoBytesReceived;
|
|
7994
|
+
networkStats.videoBytesReceived = videoBytesReceived - lastVideoReceived;
|
|
7995
|
+
networkStats.totalTransportSent = transportSent - lastTransportSent;
|
|
7938
7996
|
networkStats.transportSent = transportSent;
|
|
7939
|
-
networkStats.
|
|
7940
|
-
|
|
7941
|
-
const bandwidth = (networkStats.audioBytesSent - lastAudioSent) + (networkStats.videoBytesSent - lastVideoSent)
|
|
7942
|
-
+ (networkStats.audioBytesReceived - lastAudioReceived) + (networkStats.videoBytesReceived - lastVideoReceived)
|
|
7943
|
-
+ (networkStats.transportReceived - lastTransportReceived) + (networkStats.transportSent - lastTransportSent);
|
|
7997
|
+
networkStats.totalTransportReceived = transportReceived;
|
|
7998
|
+
networkStats.transportReceived = transportReceived - lastTransportReceived;
|
|
7944
7999
|
|
|
7945
|
-
networkStats.bandwidth =
|
|
8000
|
+
networkStats.bandwidth = networkStats.audioBytesSent + networkStats.audioBytesReceived
|
|
8001
|
+
+ networkStats.videoBytesSent + networkStats.videoBytesReceived + networkStats.transportReceived
|
|
8002
|
+
+ networkStats.transportSent;
|
|
7946
8003
|
|
|
7947
8004
|
this.eventEmitter.emit(ON_NETWORK_STATS, session, networkStats, this.sessionNetworkStats[sessionId]);
|
|
7948
8005
|
this.sessionNetworkStats[sessionId].push(networkStats);
|