@wazo/sdk 0.37.18 → 0.37.19
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 +13 -5
- package/esm/__tests__/api-client.test.js +9 -5
- package/esm/__tests__/web-rtc-client.test.js +10 -6
- package/esm/api/agentd.js +2 -2
- package/esm/api/amid.js +2 -2
- package/esm/api/application.js +2 -2
- package/esm/api/auth.js +4 -3
- package/esm/api/call-logd.js +4 -4
- package/esm/api/calld.js +2 -2
- package/esm/api/chatd.js +2 -2
- package/esm/api/confd.js +8 -4
- package/esm/api/ctid-ng.js +2 -2
- package/esm/api/dird.js +2 -2
- package/esm/api/webhookd.js +2 -2
- package/esm/api-client.js +11 -7
- package/esm/checker/Checker.js +11 -7
- package/esm/checker/checks/aor.js +11 -7
- package/esm/checker/checks/api.js +11 -7
- package/esm/checker/checks/ice-ipv4.js +1 -1
- package/esm/checker/checks/index.js +12 -8
- package/esm/checker/checks/symmetric-nat.js +1 -1
- package/esm/checker/checks/wazo-websocket.js +2 -2
- package/esm/checker/checks/webrtc-transport.js +12 -8
- package/esm/checker/checks/webrtc.js +12 -8
- package/esm/domain/AdHocAPIConference.js +11 -7
- package/esm/domain/Agent.js +1 -1
- package/esm/domain/BadResponse.js +1 -1
- package/esm/domain/Call.js +1 -1
- package/esm/domain/CallLog.js +3 -3
- package/esm/domain/CallSession.js +1 -1
- package/esm/domain/ChatMessage.js +1 -1
- package/esm/domain/ChatRoom.js +1 -1
- package/esm/domain/Contact.js +2 -1
- package/esm/domain/Country.js +1 -1
- package/esm/domain/Device/DebugDevice.js +1 -1
- package/esm/domain/ExternalApp.js +1 -1
- package/esm/domain/Features.js +11 -6
- package/esm/domain/ForwardOption.js +2 -1
- package/esm/domain/IndirectTransfer.js +1 -1
- package/esm/domain/Line.js +1 -1
- package/esm/domain/Meeting.js +7 -3
- package/esm/domain/NotificationOptions.js +1 -1
- package/esm/domain/Phone/CTIPhone.js +12 -7
- package/esm/domain/Phone/WebRTCPhone.js +3 -2
- package/esm/domain/Profile.js +2 -1
- package/esm/domain/Recording.js +2 -2
- package/esm/domain/Relocation.js +1 -1
- package/esm/domain/Room.js +1 -1
- package/esm/domain/ServerError.js +1 -1
- package/esm/domain/Session.js +2 -2
- package/esm/domain/SipLine.js +1 -1
- package/esm/domain/Subscription.js +1 -1
- package/esm/domain/SwitchboardCall.js +1 -1
- package/esm/domain/Voicemail.js +1 -1
- package/esm/domain/__tests__/CallLog.test.js +2 -2
- package/esm/index.js +12 -8
- package/esm/lib/WazoSessionDescriptionHandler.js +3 -2
- package/esm/service/CallApi.js +11 -7
- package/esm/service/IssueReporter.js +2 -2
- package/esm/service/__tests__/IssueReporter.test.js +1 -1
- package/esm/service/getApiClient.js +12 -7
- package/esm/simple/Auth.js +12 -7
- package/esm/simple/Configuration.js +11 -7
- package/esm/simple/Directory.js +10 -6
- package/esm/simple/Phone.js +11 -7
- package/esm/simple/Websocket.js +2 -2
- package/esm/simple/index.js +11 -7
- package/esm/simple/room/LocalParticipant.js +24 -24
- package/esm/simple/room/Participant.js +23 -21
- package/esm/simple/room/RemoteParticipant.js +25 -25
- package/esm/simple/room/Room.js +24 -21
- package/esm/simple/room/SipRoom.js +12 -10
- package/esm/simple/room/Stream.js +12 -10
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +10 -6
- package/esm/simple/utils.js +10 -6
- package/esm/utils/Emitter.js +1 -1
- package/esm/utils/Heartbeat.js +1 -1
- package/esm/utils/__tests__/api-requester.test.js +1 -1
- package/esm/utils/api-requester.js +3 -2
- package/esm/utils/compare-version.js +1 -1
- package/esm/utils/isMobile.js +1 -1
- package/esm/utils/new-from.js +1 -1
- package/esm/utils/once.js +1 -1
- package/esm/utils/update-from.js +1 -1
- package/esm/web-rtc-client.js +13 -8
- package/esm/websocket-client.js +3 -2
- package/lib/__tests__/api-client.test.js +18 -14
- package/lib/__tests__/web-rtc-client.test.js +27 -23
- package/lib/api/agentd.js +2 -2
- package/lib/api/amid.js +2 -2
- package/lib/api/application.js +2 -2
- package/lib/api/auth.js +3 -3
- package/lib/api/call-logd.js +9 -9
- package/lib/api/calld.js +5 -5
- package/lib/api/chatd.js +3 -3
- package/lib/api/confd.js +8 -4
- package/lib/api/ctid-ng.js +5 -5
- package/lib/api/dird.js +2 -2
- package/lib/api/webhookd.js +2 -2
- package/lib/api-client.js +18 -14
- package/lib/checker/Checker.js +28 -24
- package/lib/checker/checks/aor.js +18 -14
- package/lib/checker/checks/api.js +18 -14
- package/lib/checker/checks/index.js +28 -24
- package/lib/checker/checks/wazo-websocket.js +4 -4
- package/lib/checker/checks/webrtc-transport.js +27 -23
- package/lib/checker/checks/webrtc.js +27 -23
- package/lib/domain/AdHocAPIConference.js +18 -14
- package/lib/domain/Call.js +1 -1
- package/lib/domain/CallLog.js +7 -7
- package/lib/domain/ChatMessage.js +1 -1
- package/lib/domain/Contact.js +1 -1
- package/lib/domain/Features.js +19 -15
- package/lib/domain/ForwardOption.js +1 -1
- package/lib/domain/Meeting.js +6 -2
- package/lib/domain/Phone/CTIPhone.js +20 -16
- package/lib/domain/Phone/WebRTCPhone.js +4 -4
- package/lib/domain/Profile.js +1 -1
- package/lib/domain/Recording.js +3 -3
- package/lib/domain/Voicemail.js +1 -1
- package/lib/domain/__tests__/Call.test.js +1 -1
- package/lib/domain/__tests__/CallLog.test.js +13 -13
- package/lib/domain/__tests__/Voicemail.test.js +1 -1
- package/lib/index.js +31 -27
- package/lib/lib/WazoSessionDescriptionHandler.js +7 -7
- package/lib/service/CallApi.js +18 -14
- package/lib/service/IssueReporter.js +2 -2
- package/lib/service/__tests__/IssueReporter.test.js +2 -2
- package/lib/service/getApiClient.js +19 -15
- package/lib/simple/Auth.js +30 -26
- package/lib/simple/Configuration.js +29 -25
- package/lib/simple/Directory.js +18 -14
- package/lib/simple/Phone.js +29 -25
- package/lib/simple/Websocket.js +4 -4
- package/lib/simple/index.js +29 -25
- package/lib/simple/room/LocalParticipant.js +43 -43
- package/lib/simple/room/Participant.js +41 -39
- package/lib/simple/room/RemoteParticipant.js +44 -44
- package/lib/simple/room/Room.js +42 -40
- package/lib/simple/room/SipRoom.js +31 -29
- package/lib/simple/room/Stream.js +31 -29
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +29 -25
- package/lib/simple/utils.js +29 -25
- package/lib/utils/Emitter.js +1 -1
- package/lib/utils/PhoneNumberUtil.js +2 -2
- package/lib/utils/__tests__/PhoneNumberUtil.test.js +2 -2
- package/lib/utils/__tests__/api-requester.test.js +2 -2
- package/lib/utils/__tests__/sdp.test.js +12 -12
- package/lib/utils/api-requester.js +3 -3
- package/lib/utils/sdp.js +10 -10
- package/lib/web-rtc-client.js +28 -24
- package/lib/websocket-client.js +5 -5
- package/package.json +1 -1
- package/src/domain/CallLog.js +1 -1
- package/src/domain/Meeting.js +6 -2
- package/src/domain/Recording.js +1 -1
- package/src/service/IssueReporter.js +1 -1
- package/src/web-rtc-client.js +1 -1
package/lib/utils/sdp.js
CHANGED
|
@@ -15,7 +15,7 @@ const getCandidates = (rawSdp ) => {
|
|
|
15
15
|
return [];
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
const sdp = sdpParser__default[
|
|
18
|
+
const sdp = sdpParser__default['default'].parse(rawSdp);
|
|
19
19
|
if (!sdp || !sdp.media) {
|
|
20
20
|
return [];
|
|
21
21
|
}
|
|
@@ -27,7 +27,7 @@ const parseCandidate = (candidate ) => {
|
|
|
27
27
|
if (!candidate) {
|
|
28
28
|
return null;
|
|
29
29
|
}
|
|
30
|
-
const result = sdpParser__default[
|
|
30
|
+
const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
|
|
31
31
|
|
|
32
32
|
return result.candidates ? result.candidates[0] : null;
|
|
33
33
|
};
|
|
@@ -47,28 +47,28 @@ const isSdpValid = (sdp ) => {
|
|
|
47
47
|
};
|
|
48
48
|
|
|
49
49
|
const fixBundle = (sdp ) => {
|
|
50
|
-
const parsedSdp = sdpParser__default[
|
|
50
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
51
51
|
const bundleIndex = parsedSdp.groups.findIndex(group => group.type === 'BUNDLE');
|
|
52
52
|
if (bundleIndex !== -1) {
|
|
53
53
|
parsedSdp.groups[bundleIndex].mids = parsedSdp.media
|
|
54
54
|
.map((media, index) => ('mid' in media ? media.mid : index)).join(' ');
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
return sdpParser__default[
|
|
57
|
+
return sdpParser__default['default'].write(parsedSdp);
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
const toggleVideoDirection = (sdp , direction ) => {
|
|
61
|
-
const parsedSdp = sdpParser__default[
|
|
61
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
62
62
|
parsedSdp.media = parsedSdp.media.map(media => ({
|
|
63
63
|
...media,
|
|
64
64
|
...(media.type === 'video' ? { direction } : {}),
|
|
65
65
|
}));
|
|
66
66
|
|
|
67
|
-
return sdpParser__default[
|
|
67
|
+
return sdpParser__default['default'].write(parsedSdp);
|
|
68
68
|
};
|
|
69
69
|
|
|
70
70
|
const getVideoDirection = (sdp ) => {
|
|
71
|
-
const parsedSdp = sdpParser__default[
|
|
71
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
72
72
|
const videoMedia = parsedSdp.media.find(media => media.type === 'video');
|
|
73
73
|
if (!videoMedia) {
|
|
74
74
|
return null;
|
|
@@ -96,14 +96,14 @@ const hasAnActiveVideo = (sdp ) => {
|
|
|
96
96
|
return false;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
const parsedSdp = sdpParser__default[
|
|
99
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
100
100
|
|
|
101
101
|
return !!parsedSdp.media.find(media =>
|
|
102
102
|
media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
|
|
103
103
|
};
|
|
104
104
|
|
|
105
105
|
const fixSdp = (sdp , candidates , forcePort = true) => {
|
|
106
|
-
const parsedSdp = sdpParser__default[
|
|
106
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
107
107
|
const mainCandidate = getSrflxOrRelay(candidates)[0];
|
|
108
108
|
const ip = mainCandidate ? mainCandidate.ip : null;
|
|
109
109
|
|
|
@@ -121,7 +121,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
121
121
|
};
|
|
122
122
|
});
|
|
123
123
|
|
|
124
|
-
let fixed = sdpParser__default[
|
|
124
|
+
let fixed = sdpParser__default['default'].write(parsedSdp);
|
|
125
125
|
|
|
126
126
|
if (ip) {
|
|
127
127
|
fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
|
package/lib/web-rtc-client.js
CHANGED
|
@@ -498,7 +498,7 @@ class IssueReporter {
|
|
|
498
498
|
args.splice(1, 1);
|
|
499
499
|
}
|
|
500
500
|
|
|
501
|
-
const date = moment__default[
|
|
501
|
+
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
502
502
|
const message = args.join(', ');
|
|
503
503
|
let consoleMessage = message;
|
|
504
504
|
|
|
@@ -675,7 +675,7 @@ class IssueReporter {
|
|
|
675
675
|
payload._retry = retry + 1;
|
|
676
676
|
}
|
|
677
677
|
|
|
678
|
-
this._sendDebugToGrafana(
|
|
678
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
679
679
|
}, 5000 + retry * 1000);
|
|
680
680
|
});
|
|
681
681
|
}
|
|
@@ -703,7 +703,7 @@ const parseCandidate = (candidate ) => {
|
|
|
703
703
|
if (!candidate) {
|
|
704
704
|
return null;
|
|
705
705
|
}
|
|
706
|
-
const result = sdpParser__default[
|
|
706
|
+
const result = sdpParser__default['default'].parse(candidate.indexOf('a=') === 0 ? candidate : `a=${candidate}`);
|
|
707
707
|
|
|
708
708
|
return result.candidates ? result.candidates[0] : null;
|
|
709
709
|
};
|
|
@@ -717,7 +717,7 @@ const areCandidateValid = (candidates ) =>
|
|
|
717
717
|
.length > 0;
|
|
718
718
|
|
|
719
719
|
const getVideoDirection = (sdp ) => {
|
|
720
|
-
const parsedSdp = sdpParser__default[
|
|
720
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
721
721
|
const videoMedia = parsedSdp.media.find(media => media.type === 'video');
|
|
722
722
|
if (!videoMedia) {
|
|
723
723
|
return null;
|
|
@@ -731,14 +731,14 @@ const hasAnActiveVideo = (sdp ) => {
|
|
|
731
731
|
return false;
|
|
732
732
|
}
|
|
733
733
|
|
|
734
|
-
const parsedSdp = sdpParser__default[
|
|
734
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
735
735
|
|
|
736
736
|
return !!parsedSdp.media.find(media =>
|
|
737
737
|
media.type === 'video' && media.port > 10 && (!media.direction || media.direction !== 'inactive'));
|
|
738
738
|
};
|
|
739
739
|
|
|
740
740
|
const fixSdp = (sdp , candidates , forcePort = true) => {
|
|
741
|
-
const parsedSdp = sdpParser__default[
|
|
741
|
+
const parsedSdp = sdpParser__default['default'].parse(sdp);
|
|
742
742
|
const mainCandidate = getSrflxOrRelay(candidates)[0];
|
|
743
743
|
const ip = mainCandidate ? mainCandidate.ip : null;
|
|
744
744
|
|
|
@@ -756,7 +756,7 @@ const fixSdp = (sdp , candidates , forcePort = true)
|
|
|
756
756
|
};
|
|
757
757
|
});
|
|
758
758
|
|
|
759
|
-
let fixed = sdpParser__default[
|
|
759
|
+
let fixed = sdpParser__default['default'].write(parsedSdp);
|
|
760
760
|
|
|
761
761
|
if (ip) {
|
|
762
762
|
fixed = fixed.replace(/IN IP4 0.0.0.0/g, `IN IP4 ${ip}`);
|
|
@@ -802,7 +802,7 @@ class WazoSessionDescriptionHandler extends sessionDescriptionHandler.SessionDes
|
|
|
802
802
|
) {
|
|
803
803
|
super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration);
|
|
804
804
|
|
|
805
|
-
this.eventEmitter = new EventEmitter__default[
|
|
805
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
806
806
|
this.isWeb = isWeb;
|
|
807
807
|
this.session = session;
|
|
808
808
|
}
|
|
@@ -1241,7 +1241,7 @@ class Emitter {
|
|
|
1241
1241
|
|
|
1242
1242
|
|
|
1243
1243
|
constructor() {
|
|
1244
|
-
this.eventEmitter = new EventEmitter__default[
|
|
1244
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
1245
1245
|
}
|
|
1246
1246
|
|
|
1247
1247
|
on(event , callback ) {
|
|
@@ -3177,7 +3177,8 @@ class ExternalApp {
|
|
|
3177
3177
|
|
|
3178
3178
|
|
|
3179
3179
|
|
|
3180
|
-
|
|
3180
|
+
|
|
3181
|
+
|
|
3181
3182
|
|
|
3182
3183
|
|
|
3183
3184
|
class Meeting {
|
|
@@ -3189,6 +3190,7 @@ class Meeting {
|
|
|
3189
3190
|
|
|
3190
3191
|
|
|
3191
3192
|
|
|
3193
|
+
|
|
3192
3194
|
|
|
3193
3195
|
|
|
3194
3196
|
static parse(plain ) {
|
|
@@ -3200,6 +3202,7 @@ class Meeting {
|
|
|
3200
3202
|
port: plain.port,
|
|
3201
3203
|
uuid: plain.uuid,
|
|
3202
3204
|
number: plain.number,
|
|
3205
|
+
persistent: plain.persistent,
|
|
3203
3206
|
});
|
|
3204
3207
|
}
|
|
3205
3208
|
|
|
@@ -3207,7 +3210,7 @@ class Meeting {
|
|
|
3207
3210
|
return newFrom(meeting, Meeting);
|
|
3208
3211
|
}
|
|
3209
3212
|
|
|
3210
|
-
constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number } = {}) {
|
|
3213
|
+
constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
|
|
3211
3214
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
3212
3215
|
this.uri = uri;
|
|
3213
3216
|
this.name = name;
|
|
@@ -3215,6 +3218,7 @@ class Meeting {
|
|
|
3215
3218
|
this.port = port;
|
|
3216
3219
|
this.uuid = uuid;
|
|
3217
3220
|
this.number = number;
|
|
3221
|
+
this.persistent = persistent;
|
|
3218
3222
|
|
|
3219
3223
|
// Useful to compare instead of instanceof with minified code
|
|
3220
3224
|
this.type = 'Meeting';
|
|
@@ -3395,7 +3399,7 @@ class ChatMessage {
|
|
|
3395
3399
|
static parse(plain ) {
|
|
3396
3400
|
return new ChatMessage({
|
|
3397
3401
|
uuid: plain.uuid,
|
|
3398
|
-
date: moment__default[
|
|
3402
|
+
date: moment__default['default'](plain.created_at).toDate(),
|
|
3399
3403
|
content: plain.content,
|
|
3400
3404
|
alias: plain.alias,
|
|
3401
3405
|
userUuid: plain.user_uuid,
|
|
@@ -3487,7 +3491,7 @@ class Voicemail {
|
|
|
3487
3491
|
static parse(plain ) {
|
|
3488
3492
|
return new Voicemail({
|
|
3489
3493
|
id: plain.id,
|
|
3490
|
-
date: moment__default[
|
|
3494
|
+
date: moment__default['default'](plain.timestamp * 1000).toDate(),
|
|
3491
3495
|
duration: plain.duration * 1000,
|
|
3492
3496
|
caller: {
|
|
3493
3497
|
name: plain.caller_id_name,
|
|
@@ -3624,7 +3628,7 @@ class Call {
|
|
|
3624
3628
|
onHold: plain.on_hold,
|
|
3625
3629
|
status: plain.status,
|
|
3626
3630
|
lineId: plain.line_id,
|
|
3627
|
-
startingTime: moment__default[
|
|
3631
|
+
startingTime: moment__default['default'](plain.creation_time).toDate(),
|
|
3628
3632
|
talkingToIds: Object.keys(plain.talking_to || {}),
|
|
3629
3633
|
recording: plain.record_state === RECORD_STATE_ACTIVE,
|
|
3630
3634
|
});
|
|
@@ -3778,7 +3782,7 @@ class Recording {
|
|
|
3778
3782
|
|
|
3779
3783
|
|
|
3780
3784
|
|
|
3781
|
-
static parseMany(recordings
|
|
3785
|
+
static parseMany(recordings = []) {
|
|
3782
3786
|
return recordings.map(item => Recording.parse(item));
|
|
3783
3787
|
}
|
|
3784
3788
|
|
|
@@ -3786,8 +3790,8 @@ class Recording {
|
|
|
3786
3790
|
return new Recording({
|
|
3787
3791
|
deleted: plain.deleted,
|
|
3788
3792
|
fileName: plain.filename,
|
|
3789
|
-
end: plain.end_time ? moment__default[
|
|
3790
|
-
start: moment__default[
|
|
3793
|
+
end: plain.end_time ? moment__default['default'](plain.end_time).toDate() : null,
|
|
3794
|
+
start: moment__default['default'](plain.start_time).toDate(),
|
|
3791
3795
|
uuid: plain.uuid,
|
|
3792
3796
|
});
|
|
3793
3797
|
}
|
|
@@ -3885,7 +3889,7 @@ class CallLog {
|
|
|
3885
3889
|
|
|
3886
3890
|
static parse(plain ) {
|
|
3887
3891
|
return new CallLog({
|
|
3888
|
-
answer: plain.answer ? moment__default[
|
|
3892
|
+
answer: plain.answer ? moment__default['default'](plain.answer).toDate() : null,
|
|
3889
3893
|
answered: plain.answered,
|
|
3890
3894
|
callDirection: plain.call_direction,
|
|
3891
3895
|
destination: {
|
|
@@ -3902,9 +3906,9 @@ class CallLog {
|
|
|
3902
3906
|
},
|
|
3903
3907
|
id: plain.id,
|
|
3904
3908
|
duration: (plain.duration || 0) * 1000, // duration is in seconds
|
|
3905
|
-
start: moment__default[
|
|
3906
|
-
end: plain.end ? moment__default[
|
|
3907
|
-
recordings: Recording.parseMany(plain.recordings),
|
|
3909
|
+
start: moment__default['default'](plain.start).toDate(),
|
|
3910
|
+
end: plain.end ? moment__default['default'](plain.end).toDate() : null,
|
|
3911
|
+
recordings: Recording.parseMany(plain.recordings || []),
|
|
3908
3912
|
});
|
|
3909
3913
|
}
|
|
3910
3914
|
|
|
@@ -6044,7 +6048,7 @@ class WebRTCClient extends Emitter {
|
|
|
6044
6048
|
// We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
|
|
6045
6049
|
const transceivers = pc.getTransceivers();
|
|
6046
6050
|
const transceiverIdx = lastIndexOf(transceivers, transceiver =>
|
|
6047
|
-
transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
|
|
6051
|
+
transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
|
|
6048
6052
|
|
|
6049
6053
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
6050
6054
|
} else {
|
|
@@ -7249,7 +7253,7 @@ class WebRTCClient extends Emitter {
|
|
|
7249
7253
|
}
|
|
7250
7254
|
const sessionId = this.getSipSessionId(session);
|
|
7251
7255
|
|
|
7252
|
-
getStats__default[
|
|
7256
|
+
getStats__default['default'](pc, (result ) => {
|
|
7253
7257
|
const { results, internal, nomore, ...stats } = result;
|
|
7254
7258
|
this.statsIntervals[sessionId] = nomore;
|
|
7255
7259
|
|
|
@@ -7378,7 +7382,7 @@ class WebRTCClient extends Emitter {
|
|
|
7378
7382
|
}
|
|
7379
7383
|
|
|
7380
7384
|
exports.CanceledCallError = CanceledCallError;
|
|
7381
|
-
exports
|
|
7385
|
+
exports.default = WebRTCClient;
|
|
7382
7386
|
exports.events = events;
|
|
7383
7387
|
exports.replaceLocalIpModifier = replaceLocalIpModifier;
|
|
7384
7388
|
exports.transportEvents = transportEvents;
|
package/lib/websocket-client.js
CHANGED
|
@@ -19,7 +19,7 @@ class Emitter {
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
constructor() {
|
|
22
|
-
this.eventEmitter = new EventEmitter__default[
|
|
22
|
+
this.eventEmitter = new EventEmitter__default['default']();
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
on(event , callback ) {
|
|
@@ -206,7 +206,7 @@ class IssueReporter {
|
|
|
206
206
|
args.splice(1, 1);
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
-
const date = moment__default[
|
|
209
|
+
const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
|
|
210
210
|
const message = args.join(', ');
|
|
211
211
|
let consoleMessage = message;
|
|
212
212
|
|
|
@@ -383,7 +383,7 @@ class IssueReporter {
|
|
|
383
383
|
payload._retry = retry + 1;
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
this._sendDebugToGrafana(
|
|
386
|
+
this._sendDebugToGrafana(payload, retry + 1);
|
|
387
387
|
}, 5000 + retry * 1000);
|
|
388
388
|
});
|
|
389
389
|
}
|
|
@@ -647,7 +647,7 @@ class WebSocketClient extends Emitter {
|
|
|
647
647
|
|
|
648
648
|
connect() {
|
|
649
649
|
logger.info('connect method started', { host: this.host, token: this.token });
|
|
650
|
-
this.socket = new ReconnectingWebSocket__default[
|
|
650
|
+
this.socket = new ReconnectingWebSocket__default['default'](this._getUrl.bind(this), [], this.options);
|
|
651
651
|
if (this.options.binaryType) {
|
|
652
652
|
this.socket.binaryType = this.options.binaryType;
|
|
653
653
|
}
|
|
@@ -1007,4 +1007,4 @@ exports.USER_STATUS_UPDATE = USER_STATUS_UPDATE;
|
|
|
1007
1007
|
exports.USER_VOICEMAIL_MESSAGE_CREATED = USER_VOICEMAIL_MESSAGE_CREATED;
|
|
1008
1008
|
exports.USER_VOICEMAIL_MESSAGE_DELETED = USER_VOICEMAIL_MESSAGE_DELETED;
|
|
1009
1009
|
exports.USER_VOICEMAIL_MESSAGE_UPDATED = USER_VOICEMAIL_MESSAGE_UPDATED;
|
|
1010
|
-
exports
|
|
1010
|
+
exports.default = WebSocketClient;
|
package/package.json
CHANGED
package/src/domain/CallLog.js
CHANGED
|
@@ -108,7 +108,7 @@ export default class CallLog {
|
|
|
108
108
|
duration: (plain.duration || 0) * 1000, // duration is in seconds
|
|
109
109
|
start: moment(plain.start).toDate(),
|
|
110
110
|
end: plain.end ? moment(plain.end).toDate() : null,
|
|
111
|
-
recordings: Recording.parseMany(plain.recordings),
|
|
111
|
+
recordings: Recording.parseMany(plain.recordings || []),
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
114
|
|
package/src/domain/Meeting.js
CHANGED
|
@@ -8,7 +8,8 @@ export type MeetingCreationResponse = {
|
|
|
8
8
|
owner_uuids: Array<string>,
|
|
9
9
|
port: string,
|
|
10
10
|
uuid: string,
|
|
11
|
-
number: string
|
|
11
|
+
number: string,
|
|
12
|
+
persistent: boolean,
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export default class Meeting {
|
|
@@ -20,6 +21,7 @@ export default class Meeting {
|
|
|
20
21
|
name: string;
|
|
21
22
|
port: string;
|
|
22
23
|
number: string;
|
|
24
|
+
persistent: boolean;
|
|
23
25
|
ownerUuids: Array<string>;
|
|
24
26
|
|
|
25
27
|
static parse(plain: MeetingCreationResponse): Meeting {
|
|
@@ -31,6 +33,7 @@ export default class Meeting {
|
|
|
31
33
|
port: plain.port,
|
|
32
34
|
uuid: plain.uuid,
|
|
33
35
|
number: plain.number,
|
|
36
|
+
persistent: plain.persistent,
|
|
34
37
|
});
|
|
35
38
|
}
|
|
36
39
|
|
|
@@ -38,7 +41,7 @@ export default class Meeting {
|
|
|
38
41
|
return newFrom(meeting, Meeting);
|
|
39
42
|
}
|
|
40
43
|
|
|
41
|
-
constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number }: Object = {}) {
|
|
44
|
+
constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent }: Object = {}) {
|
|
42
45
|
this.guestSipAuthorization = guestSipAuthorization;
|
|
43
46
|
this.uri = uri;
|
|
44
47
|
this.name = name;
|
|
@@ -46,6 +49,7 @@ export default class Meeting {
|
|
|
46
49
|
this.port = port;
|
|
47
50
|
this.uuid = uuid;
|
|
48
51
|
this.number = number;
|
|
52
|
+
this.persistent = persistent;
|
|
49
53
|
|
|
50
54
|
// Useful to compare instead of instanceof with minified code
|
|
51
55
|
this.type = 'Meeting';
|
package/src/domain/Recording.js
CHANGED
|
@@ -24,7 +24,7 @@ export default class Recording {
|
|
|
24
24
|
start: Date;
|
|
25
25
|
uuid: string;
|
|
26
26
|
|
|
27
|
-
static parseMany(recordings: RecordingResponse[]): Recording[] {
|
|
27
|
+
static parseMany(recordings: RecordingResponse[] = []): Recording[] {
|
|
28
28
|
return recordings.map(item => Recording.parse(item));
|
|
29
29
|
}
|
|
30
30
|
|
package/src/web-rtc-client.js
CHANGED
|
@@ -814,7 +814,7 @@ export default class WebRTCClient extends Emitter {
|
|
|
814
814
|
// We search for the last transceiver without `video-` in the mid (video- means remote transceiver)
|
|
815
815
|
const transceivers = pc.getTransceivers();
|
|
816
816
|
const transceiverIdx = lastIndexOf(transceivers, transceiver =>
|
|
817
|
-
transceiver.sender.track === null && transceiver.mid.indexOf('video') === -1);
|
|
817
|
+
transceiver.sender.track === null && transceiver.mid && transceiver.mid.indexOf('video') === -1);
|
|
818
818
|
|
|
819
819
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
820
820
|
} else {
|