@wazo/sdk 0.37.19 → 0.37.23
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 +70 -5
- package/esm/__tests__/web-rtc-client.test.js +111 -67
- 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 +32 -2
- package/esm/api/calld.js +35 -2
- package/esm/api/chatd.js +32 -2
- package/esm/api/confd.js +47 -5
- package/esm/api/ctid-ng.js +35 -2
- package/esm/api/dird.js +28 -2
- package/esm/api/webhookd.js +25 -2
- package/esm/api-client.js +70 -5
- package/esm/checker/Checker.js +113 -67
- package/esm/checker/checks/aor.js +70 -5
- package/esm/checker/checks/api.js +70 -5
- package/esm/checker/checks/index.js +113 -67
- package/esm/checker/checks/wazo-websocket.js +27 -2
- package/esm/checker/checks/webrtc-transport.js +111 -67
- package/esm/checker/checks/webrtc.js +111 -67
- package/esm/domain/AdHocAPIConference.js +70 -5
- package/esm/domain/Call.js +3 -0
- package/esm/domain/CallLog.js +7 -0
- package/esm/domain/ChatMessage.js +4 -0
- package/esm/domain/ChatRoom.js +3 -0
- package/esm/domain/Contact.js +3 -0
- package/esm/domain/Features.js +70 -5
- package/esm/domain/Meeting.js +17 -1
- package/esm/domain/Phone/CTIPhone.js +74 -5
- package/esm/domain/Phone/WebRTCPhone.js +50 -16
- package/esm/domain/Recording.js +3 -0
- package/esm/domain/Voicemail.js +3 -0
- package/esm/domain/__tests__/Call.test.js +3 -0
- package/esm/domain/__tests__/CallLog.test.js +7 -0
- package/esm/domain/__tests__/Contact.test.js +3 -0
- package/esm/domain/__tests__/Voicemail.test.js +3 -0
- package/esm/index.js +147 -80
- package/esm/lib/WazoSessionDescriptionHandler.js +25 -40
- package/esm/service/CallApi.js +70 -5
- package/esm/service/IssueReporter.js +25 -2
- package/esm/service/__tests__/IssueReporter.test.js +25 -2
- package/esm/service/getApiClient.js +70 -5
- package/esm/simple/Auth.js +147 -80
- package/esm/simple/Configuration.js +147 -80
- package/esm/simple/Directory.js +70 -5
- package/esm/simple/Phone.js +147 -80
- package/esm/simple/Websocket.js +28 -2
- package/esm/simple/index.js +147 -80
- package/esm/simple/room/LocalParticipant.js +147 -80
- package/esm/simple/room/Participant.js +147 -80
- package/esm/simple/room/RemoteParticipant.js +147 -80
- package/esm/simple/room/Room.js +147 -80
- package/esm/simple/room/SipRoom.js +147 -80
- package/esm/simple/room/Stream.js +147 -80
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +147 -80
- package/esm/simple/utils.js +147 -80
- package/esm/utils/__tests__/api-requester.test.js +25 -2
- package/esm/utils/api-requester.js +25 -2
- package/esm/web-rtc-client.js +111 -67
- package/esm/websocket-client.js +28 -3
- package/lib/__tests__/api-client.test.js +70 -5
- package/lib/__tests__/web-rtc-client.test.js +111 -67
- 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 +32 -2
- package/lib/api/calld.js +35 -2
- package/lib/api/chatd.js +32 -2
- package/lib/api/confd.js +47 -5
- package/lib/api/ctid-ng.js +35 -2
- package/lib/api/dird.js +28 -2
- package/lib/api/webhookd.js +25 -2
- package/lib/api-client.js +70 -5
- package/lib/checker/Checker.js +113 -67
- package/lib/checker/checks/aor.js +70 -5
- package/lib/checker/checks/api.js +70 -5
- package/lib/checker/checks/index.js +113 -67
- package/lib/checker/checks/wazo-websocket.js +27 -2
- package/lib/checker/checks/webrtc-transport.js +111 -67
- package/lib/checker/checks/webrtc.js +111 -67
- package/lib/domain/AdHocAPIConference.js +70 -5
- package/lib/domain/Call.js +3 -0
- package/lib/domain/CallLog.js +7 -0
- package/lib/domain/ChatMessage.js +4 -0
- package/lib/domain/ChatRoom.js +3 -0
- package/lib/domain/Contact.js +3 -0
- package/lib/domain/Features.js +70 -5
- package/lib/domain/Meeting.js +17 -1
- package/lib/domain/Phone/CTIPhone.js +74 -5
- package/lib/domain/Phone/WebRTCPhone.js +50 -16
- package/lib/domain/Recording.js +3 -0
- package/lib/domain/Voicemail.js +3 -0
- package/lib/domain/__tests__/Call.test.js +3 -0
- package/lib/domain/__tests__/CallLog.test.js +7 -0
- package/lib/domain/__tests__/Contact.test.js +3 -0
- package/lib/domain/__tests__/Voicemail.test.js +3 -0
- package/lib/index.js +147 -80
- package/lib/lib/WazoSessionDescriptionHandler.js +25 -40
- package/lib/service/CallApi.js +70 -5
- package/lib/service/IssueReporter.js +25 -2
- package/lib/service/__tests__/IssueReporter.test.js +25 -2
- package/lib/service/getApiClient.js +70 -5
- package/lib/simple/Auth.js +147 -80
- package/lib/simple/Configuration.js +147 -80
- package/lib/simple/Directory.js +70 -5
- package/lib/simple/Phone.js +147 -80
- package/lib/simple/Websocket.js +28 -2
- package/lib/simple/index.js +147 -80
- package/lib/simple/room/LocalParticipant.js +147 -80
- package/lib/simple/room/Participant.js +147 -80
- package/lib/simple/room/RemoteParticipant.js +147 -80
- package/lib/simple/room/Room.js +147 -80
- package/lib/simple/room/SipRoom.js +147 -80
- package/lib/simple/room/Stream.js +147 -80
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +147 -80
- package/lib/simple/utils.js +147 -80
- package/lib/utils/__tests__/api-requester.test.js +25 -2
- package/lib/utils/api-requester.js +25 -2
- package/lib/web-rtc-client.js +111 -67
- package/lib/websocket-client.js +28 -2
- package/package.json +2 -2
- package/src/api/confd.js +5 -2
- package/src/domain/Call.js +3 -0
- package/src/domain/CallLog.js +4 -0
- package/src/domain/ChatMessage.js +4 -0
- package/src/domain/ChatRoom.js +3 -0
- package/src/domain/Contact.js +3 -0
- package/src/domain/Meeting.js +17 -1
- package/src/domain/Phone/CTIPhone.js +4 -0
- package/src/domain/Phone/Phone.js +2 -0
- package/src/domain/Phone/WebRTCPhone.js +25 -14
- package/src/domain/Recording.js +3 -0
- package/src/domain/Voicemail.js +3 -0
- package/src/lib/WazoSessionDescriptionHandler.js +1 -35
- 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 +41 -24
- package/src/websocket-client.js +2 -0
package/lib/api/webhookd.js
CHANGED
|
@@ -71,6 +71,7 @@ class IssueReporter {
|
|
|
71
71
|
|
|
72
72
|
|
|
73
73
|
|
|
74
|
+
|
|
74
75
|
|
|
75
76
|
constructor() {
|
|
76
77
|
addLevelsTo(this);
|
|
@@ -82,12 +83,17 @@ class IssueReporter {
|
|
|
82
83
|
this.bufferTimeout = null;
|
|
83
84
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
84
85
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
86
|
+
this._callback = null;
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
init() {
|
|
88
90
|
this._catchConsole();
|
|
89
91
|
}
|
|
90
92
|
|
|
93
|
+
setCallback(cb ) {
|
|
94
|
+
this._callback = cb;
|
|
95
|
+
}
|
|
96
|
+
|
|
91
97
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
92
98
|
this.remoteClientConfiguration = configuration;
|
|
93
99
|
}
|
|
@@ -123,6 +129,7 @@ class IssueReporter {
|
|
|
123
129
|
|
|
124
130
|
// Handle category label
|
|
125
131
|
let category = null;
|
|
132
|
+
let skipSendToRemote = false;
|
|
126
133
|
let extra = {};
|
|
127
134
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
128
135
|
category = args[0].split('=')[1];
|
|
@@ -138,6 +145,7 @@ class IssueReporter {
|
|
|
138
145
|
errorMessage: lastArg.message,
|
|
139
146
|
errorStack: lastArg.stack,
|
|
140
147
|
errorType: lastArg.constructor.name,
|
|
148
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
141
149
|
};
|
|
142
150
|
} else {
|
|
143
151
|
extra = lastArg;
|
|
@@ -146,6 +154,11 @@ class IssueReporter {
|
|
|
146
154
|
args.splice(1, 1);
|
|
147
155
|
}
|
|
148
156
|
|
|
157
|
+
if (extra.skipSendToRemote) {
|
|
158
|
+
skipSendToRemote = true;
|
|
159
|
+
delete extra.skipSendToRemote;
|
|
160
|
+
}
|
|
161
|
+
|
|
149
162
|
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
150
163
|
const message = args.join(', ');
|
|
151
164
|
let consoleMessage = message;
|
|
@@ -166,7 +179,13 @@ class IssueReporter {
|
|
|
166
179
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
167
180
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
168
181
|
|
|
169
|
-
this.
|
|
182
|
+
if (this._callback) {
|
|
183
|
+
this._callback(level, consoleMessage);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (!skipSendToRemote) {
|
|
187
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
188
|
+
}
|
|
170
189
|
}
|
|
171
190
|
|
|
172
191
|
logRequest(url , options , response , start ) {
|
|
@@ -311,7 +330,11 @@ class IssueReporter {
|
|
|
311
330
|
},
|
|
312
331
|
// $FlowFixMe
|
|
313
332
|
body,
|
|
314
|
-
}).catch(() => {
|
|
333
|
+
}).catch((e ) => {
|
|
334
|
+
// $FlowFixMe
|
|
335
|
+
e.skipSendToRemote = true;
|
|
336
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
337
|
+
|
|
315
338
|
setTimeout(() => {
|
|
316
339
|
if (isArray) {
|
|
317
340
|
payload = payload.map(message => {
|
package/lib/api-client.js
CHANGED
|
@@ -136,6 +136,7 @@ class IssueReporter {
|
|
|
136
136
|
|
|
137
137
|
|
|
138
138
|
|
|
139
|
+
|
|
139
140
|
|
|
140
141
|
constructor() {
|
|
141
142
|
addLevelsTo(this);
|
|
@@ -147,12 +148,17 @@ class IssueReporter {
|
|
|
147
148
|
this.bufferTimeout = null;
|
|
148
149
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
149
150
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
151
|
+
this._callback = null;
|
|
150
152
|
}
|
|
151
153
|
|
|
152
154
|
init() {
|
|
153
155
|
this._catchConsole();
|
|
154
156
|
}
|
|
155
157
|
|
|
158
|
+
setCallback(cb ) {
|
|
159
|
+
this._callback = cb;
|
|
160
|
+
}
|
|
161
|
+
|
|
156
162
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
157
163
|
this.remoteClientConfiguration = configuration;
|
|
158
164
|
}
|
|
@@ -188,6 +194,7 @@ class IssueReporter {
|
|
|
188
194
|
|
|
189
195
|
// Handle category label
|
|
190
196
|
let category = null;
|
|
197
|
+
let skipSendToRemote = false;
|
|
191
198
|
let extra = {};
|
|
192
199
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
193
200
|
category = args[0].split('=')[1];
|
|
@@ -203,6 +210,7 @@ class IssueReporter {
|
|
|
203
210
|
errorMessage: lastArg.message,
|
|
204
211
|
errorStack: lastArg.stack,
|
|
205
212
|
errorType: lastArg.constructor.name,
|
|
213
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
206
214
|
};
|
|
207
215
|
} else {
|
|
208
216
|
extra = lastArg;
|
|
@@ -211,6 +219,11 @@ class IssueReporter {
|
|
|
211
219
|
args.splice(1, 1);
|
|
212
220
|
}
|
|
213
221
|
|
|
222
|
+
if (extra.skipSendToRemote) {
|
|
223
|
+
skipSendToRemote = true;
|
|
224
|
+
delete extra.skipSendToRemote;
|
|
225
|
+
}
|
|
226
|
+
|
|
214
227
|
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
215
228
|
const message = args.join(', ');
|
|
216
229
|
let consoleMessage = message;
|
|
@@ -231,7 +244,13 @@ class IssueReporter {
|
|
|
231
244
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
232
245
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
233
246
|
|
|
234
|
-
this.
|
|
247
|
+
if (this._callback) {
|
|
248
|
+
this._callback(level, consoleMessage);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
if (!skipSendToRemote) {
|
|
252
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
253
|
+
}
|
|
235
254
|
}
|
|
236
255
|
|
|
237
256
|
logRequest(url , options , response , start ) {
|
|
@@ -376,7 +395,11 @@ class IssueReporter {
|
|
|
376
395
|
},
|
|
377
396
|
// $FlowFixMe
|
|
378
397
|
body,
|
|
379
|
-
}).catch(() => {
|
|
398
|
+
}).catch((e ) => {
|
|
399
|
+
// $FlowFixMe
|
|
400
|
+
e.skipSendToRemote = true;
|
|
401
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
402
|
+
|
|
380
403
|
setTimeout(() => {
|
|
381
404
|
if (isArray) {
|
|
382
405
|
payload = payload.map(message => {
|
|
@@ -1514,6 +1537,9 @@ class Contact {
|
|
|
1514
1537
|
}
|
|
1515
1538
|
|
|
1516
1539
|
static parseMany(response ) {
|
|
1540
|
+
if (!response || !response.results) {
|
|
1541
|
+
return [];
|
|
1542
|
+
}
|
|
1517
1543
|
return response.results.map(r => Contact.parse(r, response.column_types));
|
|
1518
1544
|
}
|
|
1519
1545
|
|
|
@@ -2620,11 +2646,27 @@ class Meeting {
|
|
|
2620
2646
|
});
|
|
2621
2647
|
}
|
|
2622
2648
|
|
|
2649
|
+
static parseMany(items ) {
|
|
2650
|
+
if (!items) {
|
|
2651
|
+
return [];
|
|
2652
|
+
}
|
|
2653
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2654
|
+
}
|
|
2655
|
+
|
|
2623
2656
|
static newFrom(meeting ) {
|
|
2624
2657
|
return newFrom(meeting, Meeting);
|
|
2625
2658
|
}
|
|
2626
2659
|
|
|
2627
|
-
constructor({
|
|
2660
|
+
constructor({
|
|
2661
|
+
uuid,
|
|
2662
|
+
name,
|
|
2663
|
+
guestSipAuthorization,
|
|
2664
|
+
ownerUuids,
|
|
2665
|
+
port,
|
|
2666
|
+
uri,
|
|
2667
|
+
number,
|
|
2668
|
+
persistent,
|
|
2669
|
+
} = {}) {
|
|
2628
2670
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2629
2671
|
this.uri = uri;
|
|
2630
2672
|
this.name = name;
|
|
@@ -2710,8 +2752,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2710
2752
|
}
|
|
2711
2753
|
},
|
|
2712
2754
|
|
|
2713
|
-
|
|
2714
|
-
client.
|
|
2755
|
+
getMyMeetings: () =>
|
|
2756
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2757
|
+
|
|
2758
|
+
createMyMeeting: (name , persistent ) =>
|
|
2759
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2715
2760
|
|
|
2716
2761
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2717
2762
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2807,6 +2852,10 @@ class ChatMessage {
|
|
|
2807
2852
|
|
|
2808
2853
|
|
|
2809
2854
|
static parseMany(plain ) {
|
|
2855
|
+
if (!plain || !plain.items) {
|
|
2856
|
+
return [];
|
|
2857
|
+
}
|
|
2858
|
+
|
|
2810
2859
|
return plain.items.map(item => ChatMessage.parse(item));
|
|
2811
2860
|
}
|
|
2812
2861
|
|
|
@@ -2916,6 +2965,9 @@ class Voicemail {
|
|
|
2916
2965
|
}
|
|
2917
2966
|
|
|
2918
2967
|
static parseMany(plain ) {
|
|
2968
|
+
if (!plain) {
|
|
2969
|
+
return [];
|
|
2970
|
+
}
|
|
2919
2971
|
const plainUnread = plain.folders.filter(folder => folder.type === 'new')[0].messages;
|
|
2920
2972
|
const plainRead = plain.folders.filter(folder => folder.type === 'old')[0].messages;
|
|
2921
2973
|
|
|
@@ -3025,6 +3077,9 @@ class Call {
|
|
|
3025
3077
|
|
|
3026
3078
|
|
|
3027
3079
|
static parseMany(plain ) {
|
|
3080
|
+
if (!plain) {
|
|
3081
|
+
return [];
|
|
3082
|
+
}
|
|
3028
3083
|
return plain.map((plainCall ) => Call.parse(plainCall));
|
|
3029
3084
|
}
|
|
3030
3085
|
|
|
@@ -3197,6 +3252,9 @@ class Recording {
|
|
|
3197
3252
|
|
|
3198
3253
|
|
|
3199
3254
|
static parseMany(recordings = []) {
|
|
3255
|
+
if (!recordings) {
|
|
3256
|
+
return [];
|
|
3257
|
+
}
|
|
3200
3258
|
return recordings.map(item => Recording.parse(item));
|
|
3201
3259
|
}
|
|
3202
3260
|
|
|
@@ -3298,6 +3356,10 @@ class CallLog {
|
|
|
3298
3356
|
}
|
|
3299
3357
|
|
|
3300
3358
|
static parseMany(plain ) {
|
|
3359
|
+
if (!plain || !plain.items) {
|
|
3360
|
+
return [];
|
|
3361
|
+
}
|
|
3362
|
+
|
|
3301
3363
|
return plain.items.map(item => CallLog.parse(item));
|
|
3302
3364
|
}
|
|
3303
3365
|
|
|
@@ -3870,6 +3932,9 @@ class ChatRoom {
|
|
|
3870
3932
|
|
|
3871
3933
|
|
|
3872
3934
|
static parseMany(plain ) {
|
|
3935
|
+
if (!plain || !plain.items) {
|
|
3936
|
+
return [];
|
|
3937
|
+
}
|
|
3873
3938
|
return plain.items.map(item => ChatRoom.parse(item));
|
|
3874
3939
|
}
|
|
3875
3940
|
|
package/lib/checker/Checker.js
CHANGED
|
@@ -158,6 +158,7 @@ class IssueReporter {
|
|
|
158
158
|
|
|
159
159
|
|
|
160
160
|
|
|
161
|
+
|
|
161
162
|
|
|
162
163
|
constructor() {
|
|
163
164
|
addLevelsTo(this);
|
|
@@ -169,12 +170,17 @@ class IssueReporter {
|
|
|
169
170
|
this.bufferTimeout = null;
|
|
170
171
|
this._boundProcessBuffer = this._processBuffer.bind(this);
|
|
171
172
|
this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
|
|
173
|
+
this._callback = null;
|
|
172
174
|
}
|
|
173
175
|
|
|
174
176
|
init() {
|
|
175
177
|
this._catchConsole();
|
|
176
178
|
}
|
|
177
179
|
|
|
180
|
+
setCallback(cb ) {
|
|
181
|
+
this._callback = cb;
|
|
182
|
+
}
|
|
183
|
+
|
|
178
184
|
configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
|
|
179
185
|
this.remoteClientConfiguration = configuration;
|
|
180
186
|
}
|
|
@@ -210,6 +216,7 @@ class IssueReporter {
|
|
|
210
216
|
|
|
211
217
|
// Handle category label
|
|
212
218
|
let category = null;
|
|
219
|
+
let skipSendToRemote = false;
|
|
213
220
|
let extra = {};
|
|
214
221
|
if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
|
|
215
222
|
category = args[0].split('=')[1];
|
|
@@ -225,6 +232,7 @@ class IssueReporter {
|
|
|
225
232
|
errorMessage: lastArg.message,
|
|
226
233
|
errorStack: lastArg.stack,
|
|
227
234
|
errorType: lastArg.constructor.name,
|
|
235
|
+
skipSendToRemote: lastArg.skipSendToRemote,
|
|
228
236
|
};
|
|
229
237
|
} else {
|
|
230
238
|
extra = lastArg;
|
|
@@ -233,6 +241,11 @@ class IssueReporter {
|
|
|
233
241
|
args.splice(1, 1);
|
|
234
242
|
}
|
|
235
243
|
|
|
244
|
+
if (extra.skipSendToRemote) {
|
|
245
|
+
skipSendToRemote = true;
|
|
246
|
+
delete extra.skipSendToRemote;
|
|
247
|
+
}
|
|
248
|
+
|
|
236
249
|
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
237
250
|
const message = args.join(', ');
|
|
238
251
|
let consoleMessage = message;
|
|
@@ -253,7 +266,13 @@ class IssueReporter {
|
|
|
253
266
|
const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
|
|
254
267
|
oldMethod.apply(oldMethod, [date, consoleMessage]);
|
|
255
268
|
|
|
256
|
-
this.
|
|
269
|
+
if (this._callback) {
|
|
270
|
+
this._callback(level, consoleMessage);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
if (!skipSendToRemote) {
|
|
274
|
+
this._sendToRemoteLogger(level, { date, message, category, ...extra });
|
|
275
|
+
}
|
|
257
276
|
}
|
|
258
277
|
|
|
259
278
|
logRequest(url , options , response , start ) {
|
|
@@ -398,7 +417,11 @@ class IssueReporter {
|
|
|
398
417
|
},
|
|
399
418
|
// $FlowFixMe
|
|
400
419
|
body,
|
|
401
|
-
}).catch(() => {
|
|
420
|
+
}).catch((e ) => {
|
|
421
|
+
// $FlowFixMe
|
|
422
|
+
e.skipSendToRemote = true;
|
|
423
|
+
this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
|
|
424
|
+
|
|
402
425
|
setTimeout(() => {
|
|
403
426
|
if (isArray) {
|
|
404
427
|
payload = payload.map(message => {
|
|
@@ -1536,6 +1559,9 @@ class Contact {
|
|
|
1536
1559
|
}
|
|
1537
1560
|
|
|
1538
1561
|
static parseMany(response ) {
|
|
1562
|
+
if (!response || !response.results) {
|
|
1563
|
+
return [];
|
|
1564
|
+
}
|
|
1539
1565
|
return response.results.map(r => Contact.parse(r, response.column_types));
|
|
1540
1566
|
}
|
|
1541
1567
|
|
|
@@ -2642,11 +2668,27 @@ class Meeting {
|
|
|
2642
2668
|
});
|
|
2643
2669
|
}
|
|
2644
2670
|
|
|
2671
|
+
static parseMany(items ) {
|
|
2672
|
+
if (!items) {
|
|
2673
|
+
return [];
|
|
2674
|
+
}
|
|
2675
|
+
return items.map(plain => Meeting.parse(plain));
|
|
2676
|
+
}
|
|
2677
|
+
|
|
2645
2678
|
static newFrom(meeting ) {
|
|
2646
2679
|
return newFrom(meeting, Meeting);
|
|
2647
2680
|
}
|
|
2648
2681
|
|
|
2649
|
-
constructor({
|
|
2682
|
+
constructor({
|
|
2683
|
+
uuid,
|
|
2684
|
+
name,
|
|
2685
|
+
guestSipAuthorization,
|
|
2686
|
+
ownerUuids,
|
|
2687
|
+
port,
|
|
2688
|
+
uri,
|
|
2689
|
+
number,
|
|
2690
|
+
persistent,
|
|
2691
|
+
} = {}) {
|
|
2650
2692
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
2651
2693
|
this.uri = uri;
|
|
2652
2694
|
this.name = name;
|
|
@@ -2732,8 +2774,11 @@ var confdMethods = (client , baseUrl ) => ({
|
|
|
2732
2774
|
}
|
|
2733
2775
|
},
|
|
2734
2776
|
|
|
2735
|
-
|
|
2736
|
-
client.
|
|
2777
|
+
getMyMeetings: () =>
|
|
2778
|
+
client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
|
|
2779
|
+
|
|
2780
|
+
createMyMeeting: (name , persistent ) =>
|
|
2781
|
+
client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
|
|
2737
2782
|
|
|
2738
2783
|
deleteMyMeeting: (meetingUuid ) =>
|
|
2739
2784
|
client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
|
|
@@ -2829,6 +2874,10 @@ class ChatMessage {
|
|
|
2829
2874
|
|
|
2830
2875
|
|
|
2831
2876
|
static parseMany(plain ) {
|
|
2877
|
+
if (!plain || !plain.items) {
|
|
2878
|
+
return [];
|
|
2879
|
+
}
|
|
2880
|
+
|
|
2832
2881
|
return plain.items.map(item => ChatMessage.parse(item));
|
|
2833
2882
|
}
|
|
2834
2883
|
|
|
@@ -2938,6 +2987,9 @@ class Voicemail {
|
|
|
2938
2987
|
}
|
|
2939
2988
|
|
|
2940
2989
|
static parseMany(plain ) {
|
|
2990
|
+
if (!plain) {
|
|
2991
|
+
return [];
|
|
2992
|
+
}
|
|
2941
2993
|
const plainUnread = plain.folders.filter(folder => folder.type === 'new')[0].messages;
|
|
2942
2994
|
const plainRead = plain.folders.filter(folder => folder.type === 'old')[0].messages;
|
|
2943
2995
|
|
|
@@ -3047,6 +3099,9 @@ class Call {
|
|
|
3047
3099
|
|
|
3048
3100
|
|
|
3049
3101
|
static parseMany(plain ) {
|
|
3102
|
+
if (!plain) {
|
|
3103
|
+
return [];
|
|
3104
|
+
}
|
|
3050
3105
|
return plain.map((plainCall ) => Call.parse(plainCall));
|
|
3051
3106
|
}
|
|
3052
3107
|
|
|
@@ -3245,6 +3300,9 @@ class Recording {
|
|
|
3245
3300
|
|
|
3246
3301
|
|
|
3247
3302
|
static parseMany(recordings = []) {
|
|
3303
|
+
if (!recordings) {
|
|
3304
|
+
return [];
|
|
3305
|
+
}
|
|
3248
3306
|
return recordings.map(item => Recording.parse(item));
|
|
3249
3307
|
}
|
|
3250
3308
|
|
|
@@ -3346,6 +3404,10 @@ class CallLog {
|
|
|
3346
3404
|
}
|
|
3347
3405
|
|
|
3348
3406
|
static parseMany(plain ) {
|
|
3407
|
+
if (!plain || !plain.items) {
|
|
3408
|
+
return [];
|
|
3409
|
+
}
|
|
3410
|
+
|
|
3349
3411
|
return plain.items.map(item => CallLog.parse(item));
|
|
3350
3412
|
}
|
|
3351
3413
|
|
|
@@ -3918,6 +3980,9 @@ class ChatRoom {
|
|
|
3918
3980
|
|
|
3919
3981
|
|
|
3920
3982
|
static parseMany(plain ) {
|
|
3983
|
+
if (!plain || !plain.items) {
|
|
3984
|
+
return [];
|
|
3985
|
+
}
|
|
3921
3986
|
return plain.items.map(item => ChatRoom.parse(item));
|
|
3922
3987
|
}
|
|
3923
3988
|
|
|
@@ -4913,6 +4978,7 @@ const AGENT_PAUSED = 'agent_paused';
|
|
|
4913
4978
|
const AGENT_UNPAUSED = 'agent_unpaused';
|
|
4914
4979
|
const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
|
|
4915
4980
|
const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
|
|
4981
|
+
const MEETING_USER_PROGRESS = 'meeting_user_progress';
|
|
4916
4982
|
|
|
4917
4983
|
const BLACKLIST_EVENTS = [
|
|
4918
4984
|
CHAT_MESSAGE_SENT,
|
|
@@ -5263,6 +5329,7 @@ WebSocketClient.eventLists = [
|
|
|
5263
5329
|
AGENT_UNPAUSED,
|
|
5264
5330
|
CONFERENCE_ADHOC_PARTICIPANT_LEFT,
|
|
5265
5331
|
CONFERENCE_ADHOC_DELETED,
|
|
5332
|
+
MEETING_USER_PROGRESS,
|
|
5266
5333
|
];
|
|
5267
5334
|
|
|
5268
5335
|
var wazoWebsocket = {
|
|
@@ -5318,10 +5385,6 @@ const getSrflxOrRelay = (candidates ) =>
|
|
|
5318
5385
|
candidates
|
|
5319
5386
|
.filter(candidate => candidate && (candidate.type === 'srflx' || candidate.type === 'relay'));
|
|
5320
5387
|
|
|
5321
|
-
const areCandidateValid = (candidates ) =>
|
|
5322
|
-
getSrflxOrRelay(candidates)
|
|
5323
|
-
.length > 0;
|
|
5324
|
-
|
|
5325
5388
|
const getVideoDirection = (sdp ) => {
|
|
5326
5389
|
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
5327
5390
|
const videoMedia = parsedSdp.media.find(media => media.type === 'video');
|
|
@@ -5374,8 +5437,6 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
5374
5437
|
/* global RTCSessionDescriptionInit, navigator */
|
|
5375
5438
|
|
|
5376
5439
|
const wazoLogger = IssueReporter$1 ? IssueReporter$1.loggerFor('webrtc-sdh') : console;
|
|
5377
|
-
const MAX_WAIT_FOR_ICE_TRIES = 20;
|
|
5378
|
-
const WAIT_FOR_ICE_TIMEOUT = 500;
|
|
5379
5440
|
|
|
5380
5441
|
// Customized mediaStreamFactory allowing to send screensharing stream directory when upgrading
|
|
5381
5442
|
const wazoMediaStreamFactory = (constraints ) => {
|
|
@@ -5565,38 +5626,6 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
5565
5626
|
this._peerConnection = undefined;
|
|
5566
5627
|
}
|
|
5567
5628
|
|
|
5568
|
-
async _waitForValidGatheredIce() {
|
|
5569
|
-
let tries = 0;
|
|
5570
|
-
|
|
5571
|
-
while (!areCandidateValid(this.gatheredCandidates) && tries < MAX_WAIT_FOR_ICE_TRIES) {
|
|
5572
|
-
wazoLogger.trace('SessionDescriptionHandler._waitForValidGatheredIce, waiting for ice', {
|
|
5573
|
-
tries,
|
|
5574
|
-
max: MAX_WAIT_FOR_ICE_TRIES,
|
|
5575
|
-
});
|
|
5576
|
-
|
|
5577
|
-
tries++;
|
|
5578
|
-
|
|
5579
|
-
// eslint-disable-next-line no-await-in-loop
|
|
5580
|
-
await new Promise(resolve => setTimeout(resolve, WAIT_FOR_ICE_TIMEOUT));
|
|
5581
|
-
}
|
|
5582
|
-
|
|
5583
|
-
if (tries >= MAX_WAIT_FOR_ICE_TRIES) {
|
|
5584
|
-
const errorMsg = 'No valid candidates found, can\'t answer the call';
|
|
5585
|
-
const error = new Error(errorMsg);
|
|
5586
|
-
wazoLogger.error(errorMsg, { tries, max: MAX_WAIT_FOR_ICE_TRIES });
|
|
5587
|
-
|
|
5588
|
-
// Emit an error, because sip.js catches the exception and switch to status Terminated.
|
|
5589
|
-
this.eventEmitter.emit('error', error);
|
|
5590
|
-
|
|
5591
|
-
wazoLogger.error('No valid candidates found', { tries, candidates: JSON.stringify(this.gatheredCandidates) });
|
|
5592
|
-
}
|
|
5593
|
-
|
|
5594
|
-
// eslint-disable-next-line
|
|
5595
|
-
wazoLogger.trace('Found valid candidates', { tries, candidates: JSON.stringify(this.gatheredCandidates) });
|
|
5596
|
-
|
|
5597
|
-
return this.getLocalSessionDescription();
|
|
5598
|
-
}
|
|
5599
|
-
|
|
5600
5629
|
// Overridden to send `inactive` in conference
|
|
5601
5630
|
updateDirection(options , isConference = false,
|
|
5602
5631
|
audioOnly = false) {
|
|
@@ -6291,7 +6320,9 @@ class WebRTCClient extends Emitter {
|
|
|
6291
6320
|
const inviteOptions = {
|
|
6292
6321
|
requestDelegate: {
|
|
6293
6322
|
onAccept: (response ) => {
|
|
6294
|
-
session.sessionDescriptionHandler.peerConnection
|
|
6323
|
+
if (session.sessionDescriptionHandler.peerConnection) {
|
|
6324
|
+
session.sessionDescriptionHandler.peerConnection.sfu = conference;
|
|
6325
|
+
}
|
|
6295
6326
|
this._onAccepted(session, response.session, true);
|
|
6296
6327
|
},
|
|
6297
6328
|
onReject: (response ) => {
|
|
@@ -7163,6 +7194,16 @@ class WebRTCClient extends Emitter {
|
|
|
7163
7194
|
return this.hasRemoteVideo(sessionId) ? this.getRemoteStream(sessionId) : null;
|
|
7164
7195
|
}
|
|
7165
7196
|
|
|
7197
|
+
// Useful in a react-native environment when remoteMediaStream is not updated
|
|
7198
|
+
getRemoteVideoStreamFromPc(sessionId ) {
|
|
7199
|
+
const pc = this.getPeerConnection(sessionId);
|
|
7200
|
+
if (!pc) {
|
|
7201
|
+
return null;
|
|
7202
|
+
}
|
|
7203
|
+
|
|
7204
|
+
return pc.getRemoteStreams().find(stream => !!stream.getVideoTracks().length);
|
|
7205
|
+
}
|
|
7206
|
+
|
|
7166
7207
|
hasVideo(sessionId ) {
|
|
7167
7208
|
return this.hasLocalVideo(sessionId) || this.hasRemoteVideo(sessionId);
|
|
7168
7209
|
}
|
|
@@ -7673,6 +7714,7 @@ class WebRTCClient extends Emitter {
|
|
|
7673
7714
|
session.sessionDescriptionHandler.remoteMediaStream.onaddtrack = onTrack;
|
|
7674
7715
|
|
|
7675
7716
|
pc.oniceconnectionstatechange = () => {
|
|
7717
|
+
logger$1.info('on ice connection state changed', { state: pc.iceConnectionState });
|
|
7676
7718
|
if (pc.iceConnectionState === 'disconnected') {
|
|
7677
7719
|
this.eventEmitter.emit(ON_DISCONNECTED);
|
|
7678
7720
|
}
|
|
@@ -7901,25 +7943,25 @@ class WebRTCClient extends Emitter {
|
|
|
7901
7943
|
|
|
7902
7944
|
stats.forEach(report => {
|
|
7903
7945
|
if (report.type === 'outbound-rtp' && report.kind === 'audio') {
|
|
7904
|
-
audioBytesSent += report.bytesSent + report.headerBytesSent;
|
|
7946
|
+
audioBytesSent += Number(report.bytesSent) + Number(report.headerBytesSent);
|
|
7905
7947
|
}
|
|
7906
7948
|
if (report.type === 'remote-outbound-rtp' && report.kind === 'audio') {
|
|
7907
|
-
audioBytesSent += report.bytesSent;
|
|
7949
|
+
audioBytesSent += Number(report.bytesSent);
|
|
7908
7950
|
}
|
|
7909
7951
|
if (report.type === 'outbound-rtp' && report.kind === 'video') {
|
|
7910
|
-
videoBytesSent += report.bytesSent + report.headerBytesSent;
|
|
7952
|
+
videoBytesSent += Number(report.bytesSent) + Number(report.headerBytesSent);
|
|
7911
7953
|
}
|
|
7912
7954
|
if (report.type === 'inbound-rtp' && report.kind === 'audio') {
|
|
7913
|
-
packetsLost += report.packetsLost;
|
|
7914
|
-
networkStats.packetsReceived = report.packetsReceived;
|
|
7915
|
-
audioBytesReceived += report.bytesReceived + report.headerBytesReceived;
|
|
7955
|
+
packetsLost += Number(report.packetsLost);
|
|
7956
|
+
networkStats.packetsReceived = Number(report.packetsReceived);
|
|
7957
|
+
audioBytesReceived += Number(report.bytesReceived) + Number(report.headerBytesReceived);
|
|
7916
7958
|
}
|
|
7917
7959
|
if (report.type === 'inbound-rtp' && report.kind === 'video') {
|
|
7918
|
-
videoBytesReceived += report.bytesReceived + report.headerBytesReceived;
|
|
7960
|
+
videoBytesReceived += Number(report.bytesReceived) + Number(report.headerBytesReceived);
|
|
7919
7961
|
}
|
|
7920
7962
|
if (report.type === 'outbound-rtp' && report.kind === 'video') {
|
|
7921
7963
|
if ('framesPerSecond' in report) {
|
|
7922
|
-
networkStats.framesPerSecond = report.framesPerSecond;
|
|
7964
|
+
networkStats.framesPerSecond = Number(report.framesPerSecond);
|
|
7923
7965
|
}
|
|
7924
7966
|
if ('framerateMean' in report) {
|
|
7925
7967
|
// framerateMean is only available in FF
|
|
@@ -7927,32 +7969,36 @@ class WebRTCClient extends Emitter {
|
|
|
7927
7969
|
}
|
|
7928
7970
|
}
|
|
7929
7971
|
if (report.type === 'remote-inbound-rtp' && report.kind === 'audio') {
|
|
7930
|
-
packetsLost += report.packetsLost;
|
|
7931
|
-
networkStats.roundTripTime = report.roundTripTime;
|
|
7932
|
-
networkStats.jitter = report.jitter;
|
|
7972
|
+
packetsLost += Number(report.packetsLost);
|
|
7973
|
+
networkStats.roundTripTime = Number(report.roundTripTime);
|
|
7974
|
+
networkStats.jitter = Number(report.jitter);
|
|
7933
7975
|
}
|
|
7934
7976
|
if (report.type === 'remote-inbound-rtp' && report.kind === 'video') {
|
|
7935
|
-
packetsLost += report.packetsLost;
|
|
7977
|
+
packetsLost += Number(report.packetsLost);
|
|
7936
7978
|
}
|
|
7937
7979
|
if (report.type === 'transport') {
|
|
7938
|
-
transportSent += report.bytesSent;
|
|
7939
|
-
transportReceived += report.bytesReceived;
|
|
7980
|
+
transportSent += Number(report.bytesSent);
|
|
7981
|
+
transportReceived += Number(report.bytesReceived);
|
|
7940
7982
|
}
|
|
7941
7983
|
});
|
|
7942
7984
|
|
|
7943
7985
|
networkStats.packetsLost = packetsLost;
|
|
7944
|
-
networkStats.
|
|
7986
|
+
networkStats.totalAudioBytesSent = audioBytesSent;
|
|
7987
|
+
networkStats.audioBytesSent = audioBytesSent - lastAudioSent;
|
|
7988
|
+
networkStats.totalAudioBytesReceived = audioBytesReceived - lastAudioReceived;
|
|
7945
7989
|
networkStats.audioBytesReceived = audioBytesReceived;
|
|
7946
|
-
networkStats.
|
|
7947
|
-
networkStats.
|
|
7990
|
+
networkStats.totalVideoBytesSent = videoBytesSent;
|
|
7991
|
+
networkStats.videoBytesSent = videoBytesSent - lastVideoSent;
|
|
7992
|
+
networkStats.totalVideoBytesReceived = videoBytesReceived;
|
|
7993
|
+
networkStats.videoBytesReceived = videoBytesReceived - lastVideoReceived;
|
|
7994
|
+
networkStats.totalTransportSent = transportSent - lastTransportSent;
|
|
7948
7995
|
networkStats.transportSent = transportSent;
|
|
7949
|
-
networkStats.
|
|
7950
|
-
|
|
7951
|
-
const bandwidth = (networkStats.audioBytesSent - lastAudioSent) + (networkStats.videoBytesSent - lastVideoSent)
|
|
7952
|
-
+ (networkStats.audioBytesReceived - lastAudioReceived) + (networkStats.videoBytesReceived - lastVideoReceived)
|
|
7953
|
-
+ (networkStats.transportReceived - lastTransportReceived) + (networkStats.transportSent - lastTransportSent);
|
|
7996
|
+
networkStats.totalTransportReceived = transportReceived;
|
|
7997
|
+
networkStats.transportReceived = transportReceived - lastTransportReceived;
|
|
7954
7998
|
|
|
7955
|
-
networkStats.bandwidth =
|
|
7999
|
+
networkStats.bandwidth = networkStats.audioBytesSent + networkStats.audioBytesReceived
|
|
8000
|
+
+ networkStats.videoBytesSent + networkStats.videoBytesReceived + networkStats.transportReceived
|
|
8001
|
+
+ networkStats.transportSent;
|
|
7956
8002
|
|
|
7957
8003
|
this.eventEmitter.emit(ON_NETWORK_STATS, session, networkStats, this.sessionNetworkStats[sessionId]);
|
|
7958
8004
|
this.sessionNetworkStats[sessionId].push(networkStats);
|